#[non_exhaustive]pub enum MemoryFormat {
Show 71 variants
B8g8r8a8Premultiplied,
A8r8g8b8Premultiplied,
R8g8b8a8Premultiplied,
B8g8r8a8,
A8r8g8b8,
R8g8b8a8,
A8b8g8r8,
R8g8b8,
B8g8r8,
R16g16b16,
R16g16b16a16Premultiplied,
R16g16b16a16,
R16g16b16Float,
R16g16b16a16FloatPremultiplied,
R16g16b16a16Float,
R32g32b32Float,
R32g32b32a32FloatPremultiplied,
R32g32b32a32Float,
G8a8Premultiplied,
G8a8,
G8,
G16a16Premultiplied,
G16a16,
G16,
A8,
A16,
A16Float,
A32Float,
A8b8g8r8Premultiplied,
B8g8r8x8,
X8r8g8b8,
R8g8b8x8,
X8b8g8r8,
G8B8r8420,
G8R8b8420,
G8B8r8422,
G8R8b8422,
G8B8r8444,
G8R8b8444,
G10x6B10x6r10x6420,
G12x4B12x4r12x4420,
G16B16r16420,
G8B8R8410,
G8R8B8410,
G8B8R8411,
G8R8B8411,
G8B8R8420,
G8R8B8420,
G8B8R8422,
G8R8B8422,
G8B8R8444,
G8R8B8444,
G8b8g8r8422,
G8r8g8b8422,
R8g8b8g8422,
B8g8r8g8422,
X6g10X6b10X6r10420,
X6g10X6b10X6r10422,
X6g10X6b10X6r10444,
X4g12X4b12X4r12420,
X4g12X4b12X4r12422,
X4g12X4b12X4r12444,
G16B16R16420,
G16B16R16422,
G16B16R16444,
Argb2101010Premultiplied,
Argb2101010,
Xrgb2101010,
Abgr2101010Premultiplied,
Abgr2101010,
Xbgr2101010,
}Expand description
Describes formats that image data can have in memory.
It describes formats by listing the contents of the memory passed to it.
So GDK_MEMORY_A8R8G8B8 will be 1 byte (8 bits) of alpha, followed by a
byte each of red, green and blue. It is not endian-dependent, so
CAIRO_FORMAT_ARGB32 is represented by different GdkMemoryFormats
on architectures with different endiannesses.
§A note on naming
The format names are roughly modelled after
VkFormat.
A name follows GDK_MEMORY_<CHANNELS>_<DATA_TYPE>_<SUBSAMPLING> <PREMULTIPLIED>
where CHANNELS describe how the RGBA channels are layed out in memory, with an
X denoting padding. DATA_TYPE is unsigned normalized integer if not present, or
otherwise FLOAT. The optional SUBSAMPLING defines the subsampling method used.
The optional ENDIAN term describes the endianness if it is not
host-endian. Finally, an optional PREMULTIPLIED term indicates that the color
channels are premultiplied with the alpha value, if it is omitted, the data is
not premultiplied or there is no alpha channel.
The CHANNELS are given as a list of planes seperated by underscores where each plane is split into multiple elements describing one or more bytes of memory. Each element is given as the list of channels folowed by the amount of bits taken up.
So the fictional format RGB565_A8_PREMULTIPLIED would describe a format with 2
planes where the first plane is an unsigned 16 bit integer containing the RGB
channels with 5, 6, and 5 bits respectively while the 2nd plane contains the
alpha channel as an unisnged 8bit integer.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
B8g8r8a8Premultiplied
4 bytes; for blue, green, red, alpha. The color values are premultiplied with the alpha value.
A8r8g8b8Premultiplied
4 bytes; for alpha, red, green, blue. The color values are premultiplied with the alpha value.
R8g8b8a8Premultiplied
4 bytes; for red, green, blue, alpha The color values are premultiplied with the alpha value.
B8g8r8a8
4 bytes; for blue, green, red, alpha.
A8r8g8b8
4 bytes; for alpha, red, green, blue.
R8g8b8a8
4 bytes; for red, green, blue, alpha.
A8b8g8r8
4 bytes; for alpha, blue, green, red.
R8g8b8
3 bytes; for red, green, blue. The data is opaque.
B8g8r8
3 bytes; for blue, green, red. The data is opaque.
R16g16b16
v4_6 only.3 guint16 values; for red, green, blue.
R16g16b16a16Premultiplied
v4_6 only.4 guint16 values; for red, green, blue, alpha. The color values are premultiplied with the alpha value.
R16g16b16a16
v4_6 only.4 guint16 values; for red, green, blue, alpha.
R16g16b16Float
v4_6 only.3 half-float values; for red, green, blue. The data is opaque.
R16g16b16a16FloatPremultiplied
v4_6 only.4 half-float values; for red, green, blue and alpha. The color values are premultiplied with the alpha value.
R16g16b16a16Float
v4_6 only.4 half-float values; for red, green, blue and alpha.
R32g32b32Float
v4_6 only.3 float values; for red, green, blue.
R32g32b32a32FloatPremultiplied
v4_6 only.4 float values; for red, green, blue and alpha. The color values are premultiplied with the alpha value.
R32g32b32a32Float
v4_6 only.4 float values; for red, green, blue and alpha.
G8a8Premultiplied
v4_12 only.2 bytes; for grayscale, alpha. The color values are premultiplied with the alpha value.
G8a8
v4_12 only.2 bytes; for grayscale, alpha.
G8
v4_12 only.One byte; for grayscale. The data is opaque.
G16a16Premultiplied
v4_12 only.2 guint16 values; for grayscale, alpha. The color values are premultiplied with the alpha value.
G16a16
v4_12 only.2 guint16 values; for grayscale, alpha.
G16
v4_12 only.One guint16 value; for grayscale. The data is opaque.
A8
v4_12 only.One byte; for alpha.
A16
v4_12 only.One guint16 value; for alpha.
A16Float
v4_12 only.One half-float value; for alpha.
A32Float
v4_12 only.One float value; for alpha.
A8b8g8r8Premultiplied
v4_14 only.4 bytes; for alpha, blue, green, red, The color values are premultiplied with the alpha value.
B8g8r8x8
v4_14 only.4 bytes; for blue, green, red, unused.
X8r8g8b8
v4_14 only.4 bytes; for unused, red, green, blue.
R8g8b8x8
v4_14 only.4 bytes; for red, green, blue, unused.
X8b8g8r8
v4_14 only.4 bytes; for unused, blue, green, red.
G8B8r8420
v4_20 only.Multiplane format with 2 planes.
The first plane contains the first channel, usually containing luma values. The second plane with interleaved chroma values, Cb followed by Cr. Subsampled in both the X and Y direction.
Commonly known by the fourcc “NV12”.
G8R8b8420
v4_20 only.Multiplane format with 2 planes.
The first plane contains the first channel, usually containing luma values. The second plane with interleaved chroma values, Cr followed by Cb. Subsampled in both the X and Y direction.
Commonly known by the fourcc “NV21”.
G8B8r8422
v4_20 only.Multiplane format with 2 planes.
The first plane contains the first channel, usually containing luma values. The second plane with interleaved chroma values, Cb followed by Cr. Subsampled in the X direction.
Commonly known by the fourcc “NV16”.
G8R8b8422
v4_20 only.Multiplane format with 2 planes.
The first plane contains the first channel, usually containing luma values. The second plane with interleaved chroma values, Cr followed by Cb. Subsampled in the X direction.
Commonly known by the fourcc “NV61”.
G8B8r8444
v4_20 only.Multiplane format with 2 planes.
The first plane contains the first channel, usually containing luma values. The second plane with interleaved chroma values, Cb followed by Cr. This format is not subsampled.
Commonly known by the fourcc “NV24”.
G8R8b8444
v4_20 only.Multiplane format with 2 planes.
The first plane contains the first channel, usually containing luma values. The second plane with interleaved chroma values, Cr followed by Cb. This format is not subsampled.
Commonly known by the fourcc “NV42”.
G10x6B10x6r10x6420
v4_20 only.Multiplane format with 2 planes.
Each channel is a 16 bit integer, but only the highest 10 bits are used.
The first plane contains the first channel, usually containing luma values. The second plane with interleaved chroma values, Cr followed by Cb. This format is not subsampled.
Commonly known by the fourcc “P010”.
G12x4B12x4r12x4420
v4_20 only.Multiplane format with 2 planes.
Each channel is a 16 bit integer, but only the highest 10 bits are used.
The first plane contains the first channel, usually containing luma values. The second plane with interleaved chroma values, Cr followed by Cb. This format is not subsampled.
Commonly known by the fourcc “P012”.
G16B16r16420
v4_20 only.Multiplane format with 2 planes.
Each channel is a 16 bit integer.
The first plane contains the first channel, usually containing luma values. The second plane with interleaved chroma values, Cr followed by Cb. This format is not subsampled.
Commonly known by the fourcc “P016”.
G8B8R8410
v4_20 only.Multiplane format with 3 planes.
Each channel is a 8 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. Subsampled in both the X and Y direction with 4:1 ratio. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. Subsampled in both the X and Y direction with 4:1 ratio. It is mapped into the 1st channel.
Commonly known by the fourcc “YUV410”.
G8R8B8410
v4_20 only.Multiplane format with 3 planes.
Each channel is a 8 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the second chroma chanel. Subsampled in both the X and Y direction with 4:1 ratio. It is mapped into the 1st channel.
The third plane usually contains the first chroma channel. Subsampled in both the X and Y direction with 4:1 ratio. It is mapped into the 3rd channel.
Commonly known by the fourcc “YVU410”.
G8B8R8411
v4_20 only.Multiplane format with 3 planes.
Each channel is a 8 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. Subsampled in the X direction with 4:1 ratio. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. Subsampled in the X direction with 4:1 ratio. It is mapped into the 1st channel.
Commonly known by the fourcc “YUV411”.
G8R8B8411
v4_20 only.Multiplane format with 3 planes.
Each channel is a 8 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the second chroma chanel. Subsampled in the X direction with 4:1 ratio. It is mapped into the 1st channel.
The third plane usually contains the first chroma channel. Subsampled in the X direction with 4:1 ratio. It is mapped into the 3rd channel.
Commonly known by the fourcc “YVU411”.
G8B8R8420
v4_20 only.Multiplane format with 3 planes.
Each channel is a 8 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. Subsampled in both the X and Y direction. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. Subsampled in both the X and Y direction. It is mapped into the 1st channel.
Commonly known by the fourcc “YUV420”.
G8R8B8420
v4_20 only.Multiplane format with 3 planes.
Each channel is a 8 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the second chroma chanel. Subsampled in both the X and Y direction. It is mapped into the 1st channel.
The third plane usually contains the first chroma channel. Subsampled in both the X and Y direction. It is mapped into the 3rd channel.
Commonly known by the fourcc “YVU420”.
G8B8R8422
v4_20 only.Multiplane format with 3 planes.
Each channel is a 8 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. Subsampled in the X direction. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. Subsampled in the X direction. It is mapped into the 1st channel.
Commonly known by the fourcc “YUV422”.
G8R8B8422
v4_20 only.Multiplane format with 3 planes.
Each channel is a 8 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the second chroma chanel. Subsampled in the X direction. It is mapped into the 1st channel.
The third plane usually contains the first chroma channel. Subsampled in the X direction. It is mapped into the 3rd channel.
Commonly known by the fourcc “YVU422”.
G8B8R8444
v4_20 only.Multiplane format with 3 planes.
Each channel is a 8 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. It is mapped into the 1st channel.
Commonly known by the fourcc “YUV444”.
G8R8B8444
v4_20 only.Multiplane format with 3 planes.
Each channel is a 8 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the second chroma chanel. Subsampled in the X direction. It is mapped into the 1st channel.
The third plane usually contains the first chroma channel. Subsampled in the X direction. It is mapped into the 3rd channel.
Commonly known by the fourcc “YVU444”.
G8b8g8r8422
v4_20 only.Packed format with subsampled channels.
Each channel is a 8 bit integer. The red and blue/chroma channels are subsampled and interleaved with the green/luma channel.
Each block contains 2 pixels, so the width must be a multiple of 2.
Commonly known by the fourcc “YUYV”.
G8r8g8b8422
v4_20 only.Packed format with subsampled channels.
Each channel is a 8 bit integer. The red and blue/chroma channels are subsampled and interleaved with the green/luma channel.
Each block contains 2 pixels, so the width must be a multiple of 2.
Commonly known by the fourcc “YVYU”.
R8g8b8g8422
v4_20 only.Packed format with subsampled channels.
Each channel is a 8 bit integer. The red and blue/chroma channels are subsampled and interleaved with the green/luma channel.
Each block contains 2 pixels, so the width must be a multiple of 2.
Commonly known by the fourcc “VYUY”.
B8g8r8g8422
v4_20 only.Packed format with subsampled channels.
Each channel is a 8 bit integer. The red and blue/chroma channels are subsampled and interleaved with the green/luma channel.
Each block contains 2 pixels, so the width must be a multiple of 2.
Commonly known by the fourcc “UYVY”.
X6g10X6b10X6r10420
v4_20 only.Multiplane format with 3 planes.
Each channel is a 16 bit integer.
Only the 10 lower bits are used. The remaining ones must be set to 0 by the producer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. Subsampled in both the X and Y direction. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. Subsampled in both the X and Y direction. It is mapped into the 1st channel.
Commonly known by the fourcc “S010”.
X6g10X6b10X6r10422
v4_20 only.Multiplane format with 3 planes.
Each channel is a 16 bit integer.
Only the 10 lower bits are used. The remaining ones must be set to 0 by the producer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. Subsampled in the X direction. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. Subsampled in the X direction. It is mapped into the 1st channel.
Commonly known by the fourcc “S210”.
X6g10X6b10X6r10444
v4_20 only.Multiplane format with 3 planes.
Each channel is a 16 bit integer.
Only the 10 lower bits are used. The remaining ones must be set to 0 by the producer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. It is mapped into the 1st channel.
Commonly known by the fourcc “S410”.
X4g12X4b12X4r12420
v4_20 only.Multiplane format with 3 planes.
Each channel is a 16 bit integer.
Only the 12 lower bits are used. The remaining ones must be set to 0 by the producer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. Subsampled in both the X and Y direction. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. Subsampled in both the X and Y direction. It is mapped into the 1st channel.
Commonly known by the fourcc “S012”.
X4g12X4b12X4r12422
v4_20 only.Multiplane format with 3 planes.
Each channel is a 16 bit integer.
Only the 12 lower bits are used. The remaining ones must be set to 0 by the producer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. Subsampled in the X direction. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. Subsampled in the X direction. It is mapped into the 1st channel.
Commonly known by the fourcc “S212”.
X4g12X4b12X4r12444
v4_20 only.Multiplane format with 3 planes.
Each channel is a 16 bit integer.
Only the 12 lower bits are used. The remaining ones must be set to 0 by the producer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. It is mapped into the 1st channel.
Commonly known by the fourcc “S412”.
G16B16R16420
v4_20 only.Multiplane format with 3 planes.
Each channel is a 16 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. Subsampled in both the X and Y direction. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. Subsampled in both the X and Y direction. It is mapped into the 1st channel.
Commonly known by the fourcc “S016”.
G16B16R16422
v4_20 only.Multiplane format with 3 planes.
Each channel is a 16 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. Subsampled in the X direction. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. Subsampled in the X direction. It is mapped into the 1st channel.
Commonly known by the fourcc “S216”.
G16B16R16444
v4_20 only.Multiplane format with 3 planes.
Each channel is a 16 bit integer.
The first plane usually contains the luma channel. It is mapped into the 2nd channel.
The second plane usually contains the first chroma chanel. It is mapped into the 3rd channel.
The third plane usually contains the second chroma channel. It is mapped into the 1st channel.
Commonly known by the fourcc “S416”.
Argb2101010Premultiplied
v4_24 only.4 bytes per pixel
Bits 31..30 contain the alpha channel, 29..20 red, 19..10 green and 9..0 blue.
The color values are premultiplied with the alpha value.
Argb2101010
v4_24 only.4 bytes per pixel
Bits 31..30 contain the alpha channel, 29..20 red, 19..10 green and 9..0 blue.
Xrgb2101010
v4_24 only.4 bytes per pixel
Bits 31..30 are padding, bits 29..20 contain red, 19..10 green and 9..0 blue.
The format is opaque.
Abgr2101010Premultiplied
Abgr2101010
v4_24 only.4 bytes per pixel
Bits 31..30 contain the alpha channel, 29..20 blue, 19..10 green and 9..0 red.
Xbgr2101010
v4_24 only.4 bytes per pixel
Bits 31..30 are padding, bits 29..20 contain blue, 19..10 green and 9..0 red.
The format is opaque.
Trait Implementations§
Source§impl Clone for MemoryFormat
impl Clone for MemoryFormat
Source§fn clone(&self) -> MemoryFormat
fn clone(&self) -> MemoryFormat
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MemoryFormat
impl Debug for MemoryFormat
Source§impl From<MemoryFormat> for Value
impl From<MemoryFormat> for Value
Source§fn from(v: MemoryFormat) -> Self
fn from(v: MemoryFormat) -> Self
Source§impl<'a> FromValue<'a> for MemoryFormat
impl<'a> FromValue<'a> for MemoryFormat
Source§type Checker = GenericValueTypeChecker<MemoryFormat>
type Checker = GenericValueTypeChecker<MemoryFormat>
Source§unsafe fn from_value(value: &'a Value) -> Self
unsafe fn from_value(value: &'a Value) -> Self
Value. Read moreSource§impl HasParamSpec for MemoryFormat
impl HasParamSpec for MemoryFormat
type ParamSpec = ParamSpecEnum
Source§type SetValue = MemoryFormat
type SetValue = MemoryFormat
type BuilderFn = fn(&str, MemoryFormat) -> ParamSpecEnumBuilder<'_, MemoryFormat>
fn param_spec_builder() -> Self::BuilderFn
Source§impl Hash for MemoryFormat
impl Hash for MemoryFormat
Source§impl Ord for MemoryFormat
impl Ord for MemoryFormat
Source§fn cmp(&self, other: &MemoryFormat) -> Ordering
fn cmp(&self, other: &MemoryFormat) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for MemoryFormat
impl PartialEq for MemoryFormat
Source§impl PartialOrd for MemoryFormat
impl PartialOrd for MemoryFormat
Source§impl StaticType for MemoryFormat
impl StaticType for MemoryFormat
Source§fn static_type() -> Type
fn static_type() -> Type
Self.Source§impl ToValue for MemoryFormat
impl ToValue for MemoryFormat
Source§impl ValueType for MemoryFormat
impl ValueType for MemoryFormat
Source§type Type = MemoryFormat
type Type = MemoryFormat
Type from. Read moreimpl Copy for MemoryFormat
impl Eq for MemoryFormat
impl StructuralPartialEq for MemoryFormat
Auto Trait Implementations§
impl Freeze for MemoryFormat
impl RefUnwindSafe for MemoryFormat
impl Send for MemoryFormat
impl Sync for MemoryFormat
impl Unpin for MemoryFormat
impl UnsafeUnpin for MemoryFormat
impl UnwindSafe for MemoryFormat
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoClosureReturnValue for T
impl<T> IntoClosureReturnValue for T
fn into_closure_return_value(self) -> Option<Value>
Source§impl<T> PropertyGet for Twhere
T: HasParamSpec,
impl<T> PropertyGet for Twhere
T: HasParamSpec,
Source§impl<T> StaticTypeExt for Twhere
T: StaticType,
impl<T> StaticTypeExt for Twhere
T: StaticType,
Source§fn ensure_type()
fn ensure_type()
Source§impl<T> ToSendValue for T
impl<T> ToSendValue for T
Source§fn to_send_value(&self) -> SendValue
fn to_send_value(&self) -> SendValue
SendValue clone of self.