]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/pixelformat.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / core / pixelformat.h
index 65331c99901fcd5aefee7b78e1fef5727579af9e..13bc03a8c059325d7272120f5a486b58e7e5d01e 100644 (file)
@@ -9,8 +9,9 @@ namespace Msp {
 namespace GL {
 
 /**
-Identifies the components of a pixel, without type information.  The values
-are bitfields laid as follows:
+Identifies the components of a pixel, without type information.
+
+The values are bitfields laid as follows:
 
 _grs dccc
  │││ │  └╴Number of components
@@ -20,7 +21,7 @@ _grs dccc
  └───────╴Grayscale flag
 
 This information is presented for internal documentation purposes only; it is
-inadvisable for programs to rely on it.
+inadvisable for applications to rely on it.
 */
 enum PixelComponents
 {
@@ -37,8 +38,21 @@ enum PixelComponents
 };
 
 /**
-Identifies a pixel format, with components and type.  The values are bitfields
-laid as follows:
+Describes a mapping from one set of components to another.
+*/
+enum ComponentSwizzle
+{
+       NO_SWIZZLE,
+       R_TO_LUMINANCE,
+       RG_TO_LUMINANCE_ALPHA,
+       RGB_TO_BGR,
+       RGBA_TO_RGB
+};
+
+/**
+Identifies a pixel format, with components and type.
+
+The values are bitfields laid as follows:
 
 tnfg ssss cccc cccc
 ││││    │         └╴Components (see PixelComponents)
@@ -49,7 +63,7 @@ tnfg ssss cccc cccc
 └──────────────────╴sRGB flag
 
 This information is presented for internal documentation purposes only; it is
-inadvisable for programs to rely on it.
+inadvisable for applications to rely on it.
 */
 enum PixelFormat
 {
@@ -87,6 +101,10 @@ void operator>>(const LexicalConverter &, PixelFormat &);
 PixelComponents components_from_graphics(Graphics::PixelFormat);
 PixelFormat pixelformat_from_image(const Graphics::Image &, bool = false);
 
+ComponentSwizzle get_required_swizzle(PixelComponents);
+PixelComponents swizzle_components(PixelComponents, ComponentSwizzle);
+PixelComponents unswizzle_components(PixelComponents, ComponentSwizzle);
+
 PixelFormat make_pixelformat(PixelComponents, DataType, bool = false);
 inline PixelComponents get_components(PixelFormat f) { return static_cast<PixelComponents>(f&0xFF); }
 inline unsigned get_component_count(PixelComponents c) { return c&7; }
@@ -98,10 +116,9 @@ inline unsigned get_pixel_size(PixelFormat f) { return get_component_count(f)*ge
 
 void require_pixelformat(PixelFormat);
 
-unsigned get_gl_components(PixelComponents);
-unsigned get_gl_pixelformat(PixelFormat);
-
 } // namespace GL
 } // namespace Msp
 
+#include "pixelformat_backend.h"
+
 #endif