| module scenic; |
| |
| // Information about a graphical image (texture) including its format and size. |
| struct ImageInfo { |
| // Specifies how pixels are represented in the image buffer. |
| enum PixelFormat { |
| // A 32-bit four-component unsigned integer format. |
| // Byte order: B, G, R, A (little-endian ARGB packed 32-bit word). |
| // Equivalent to Skia |kBGRA_8888_SkColorType| color type. |
| // Equivalent to Zircon |ARGB_8888| pixel format on little-endian arch. |
| BGRA_8 = 0, |
| // A 32-bit component that contains information for 2 pixels: |
| // Byte order: Y1, U, Y2, V |
| // Unpacks to 2 RGB pixels, where RGB1 = func(Y1, U, V) |
| // and RGB2 = func(Y2, U, V) |
| // Equivalent to YUV422 |
| YUY2 = 1, |
| }; |
| |
| // Specifies how pixel color information should be interpreted. |
| enum ColorSpace { |
| SRGB = 0, |
| }; |
| |
| // Specifies how pixels are arranged in memory. |
| enum Tiling { |
| // Pixels are packed linearly. |
| // Equivalent to |VK_IMAGE_TILING_LINEAR|. |
| LINEAR = 0, |
| |
| // Pixels are packed in a GPU-dependent optimal format. |
| // Equivalent to |VK_IMAGE_TILING_OPTIMAL|. |
| GPU_OPTIMAL = 1, |
| }; |
| |
| // Specifies how alpha information should be interpreted. |
| enum AlphaFormat { |
| // Image is considered to be opaque. Alpha channel is ignored. |
| // Blend function is: src.RGB |
| OPAQUE = 0, |
| // Color channels have been premultiplied by alpha. |
| // Blend function is: src.RGB + (dest.RGB * (1 - src.A)) |
| PREMULTIPLIED = 1, |
| // Color channels have not been premultiplied by alpha. |
| // Blend function is: (src.RGB * src.A) + (dest.RGB * (1 - src.A)) |
| NON_PREMULTIPLIED = 2, |
| }; |
| |
| enum Transform { |
| // Pixels are displayed normally. |
| NORMAL = 0, |
| |
| // Pixels are mirrored left-right. |
| FLIP_HORIZONTAL = 1, |
| |
| // Pixels are flipped vertically. |
| FLIP_VERTICAL = 2, |
| |
| // Pixels are flipped vertically and mirrored left-right. |
| FLIP_VERTICAL_AND_HORIZONTAL = 3, |
| }; |
| |
| // Specifies if the image should be mirrored before displaying. |
| Transform transform = Transform.NORMAL; |
| |
| // The width and height of the image in pixels. |
| uint32 width; |
| uint32 height; |
| |
| // The number of bytes per row in the image buffer. |
| uint32 stride; |
| |
| // The pixel format of the image. |
| PixelFormat pixel_format = PixelFormat.BGRA_8; |
| |
| // The pixel color space. |
| ColorSpace color_space = ColorSpace.SRGB; |
| |
| // The pixel arrangement in memory. |
| Tiling tiling = Tiling.LINEAR; |
| |
| // Specifies the interpretion of the alpha channel, if one exists. |
| AlphaFormat alpha_format = AlphaFormat.OPAQUE; |
| }; |