## Common Types Common Types |

## Synopsis

    void                (*CoglFuncPtr)                      (void);
    enum                CoglPixelFormat;
    enum                CoglBufferTarget;
    enum                CoglBufferBit;
    enum                CoglAttributeType;
    enum                CoglColorMask;

## Description

## Details

### CoglFuncPtr ()

    void                (*CoglFuncPtr)                      (void);

The type used by cogl for function pointers, note that this type is used as a generic catch-all cast for function pointers and the actual arguments and return type may be different.

### enum CoglPixelFormat

    typedef enum { /*< prefix=COGL_PIXEL_FORMAT >*/
      COGL_PIXEL_FORMAT_ANY           = 0,
      COGL_PIXEL_FORMAT_A_8           = 1 | COGL_A_BIT,

      COGL_PIXEL_FORMAT_RGB_565       = 4,
      COGL_PIXEL_FORMAT_RGBA_4444     = 5 | COGL_A_BIT,
      COGL_PIXEL_FORMAT_RGBA_5551     = 6 | COGL_A_BIT,
      COGL_PIXEL_FORMAT_YUV           = 7,
      COGL_PIXEL_FORMAT_G_8           = 8,

      COGL_PIXEL_FORMAT_RGB_888       =  COGL_PIXEL_FORMAT_24,
      COGL_PIXEL_FORMAT_BGR_888       = (COGL_PIXEL_FORMAT_24 | COGL_BGR_BIT),

      COGL_PIXEL_FORMAT_RGBA_8888     = (COGL_PIXEL_FORMAT_32 | COGL_A_BIT),
      COGL_PIXEL_FORMAT_BGRA_8888     = (COGL_PIXEL_FORMAT_32 | COGL_A_BIT | COGL_BGR_BIT),
      COGL_PIXEL_FORMAT_ARGB_8888     = (COGL_PIXEL_FORMAT_32 | COGL_A_BIT | COGL_AFIRST_BIT),
      COGL_PIXEL_FORMAT_ABGR_8888     = (COGL_PIXEL_FORMAT_32 | COGL_A_BIT | COGL_BGR_BIT | COGL_AFIRST_BIT),

      COGL_PIXEL_FORMAT_RGBA_8888_PRE = (COGL_PIXEL_FORMAT_32 | COGL_A_BIT | COGL_PREMULT_BIT),
      COGL_PIXEL_FORMAT_BGRA_8888_PRE = (COGL_PIXEL_FORMAT_32 | COGL_A_BIT | COGL_PREMULT_BIT | COGL_BGR_BIT),
      COGL_PIXEL_FORMAT_ARGB_8888_PRE = (COGL_PIXEL_FORMAT_32 | COGL_A_BIT | COGL_PREMULT_BIT | COGL_AFIRST_BIT),
      COGL_PIXEL_FORMAT_ABGR_8888_PRE = (COGL_PIXEL_FORMAT_32 | COGL_A_BIT | COGL_PREMULT_BIT | COGL_BGR_BIT | COGL_AFIRST_BIT),
      COGL_PIXEL_FORMAT_RGBA_4444_PRE = (COGL_PIXEL_FORMAT_RGBA_4444 | COGL_A_BIT | COGL_PREMULT_BIT),
      COGL_PIXEL_FORMAT_RGBA_5551_PRE = (COGL_PIXEL_FORMAT_RGBA_5551 | COGL_A_BIT | COGL_PREMULT_BIT)
    } CoglPixelFormat;

Pixel formats used by COGL. For the formats with a byte per component, the order of the components specify the order in increasing memory addresses. So for example `COGL_PIXEL_FORMAT_RGB_888` would have the red component in the lowest address, green in the next address and blue after that regardless of the endinanness of the system.

For the 16-bit formats the component order specifies the order within a 16-bit number from most significant bit to least significant. So for `COGL_PIXEL_FORMAT_RGB_565`, the red component would be in bits 11-15, the green component would be in 6-11 and the blue component would be in 1-5. Therefore the order in memory depends on the endianness of the system.

When uploading a texture `COGL_PIXEL_FORMAT_ANY` can be used as the internal format. Cogl will try to pick the best format to use internally and convert the texture data if necessary.

`COGL_PIXEL_FORMAT_ANY` | Any format
`COGL_PIXEL_FORMAT_A_8` | 8 bits alpha mask
`COGL_PIXEL_FORMAT_RGB_565` | RGB, 16 bits
`COGL_PIXEL_FORMAT_RGBA_4444` | RGBA, 16 bits
`COGL_PIXEL_FORMAT_RGBA_5551` | RGBA, 16 bits
`COGL_PIXEL_FORMAT_YUV` | Not currently supported
`COGL_PIXEL_FORMAT_G_8` | Single luminance component
`COGL_PIXEL_FORMAT_RGB_888` | RGB, 24 bits
`COGL_PIXEL_FORMAT_BGR_888` | BGR, 24 bits
`COGL_PIXEL_FORMAT_RGBA_8888` | RGBA, 32 bits
`COGL_PIXEL_FORMAT_BGRA_8888` | BGRA, 32 bits
`COGL_PIXEL_FORMAT_ARGB_8888` | ARGB, 32 bits
`COGL_PIXEL_FORMAT_ABGR_8888` | ABGR, 32 bits
`COGL_PIXEL_FORMAT_RGBA_8888_PRE` | Premultiplied RGBA, 32 bits
`COGL_PIXEL_FORMAT_BGRA_8888_PRE` | Premultiplied BGRA, 32 bits
`COGL_PIXEL_FORMAT_ARGB_8888_PRE` | Premultiplied ARGB, 32 bits
`COGL_PIXEL_FORMAT_ABGR_8888_PRE` | Premultiplied ABGR, 32 bits
`COGL_PIXEL_FORMAT_RGBA_4444_PRE` | Premultiplied RGBA, 16 bits
`COGL_PIXEL_FORMAT_RGBA_5551_PRE` | Premultiplied RGBA, 16 bits

Since 0.8

### enum CoglBufferTarget

    typedef enum
    {
      COGL_WINDOW_BUFFER      = (1 << 1),
      COGL_OFFSCREEN_BUFFER   = (1 << 2)
    } CoglBufferTarget;

Target flags for FBOs.

`COGL_WINDOW_BUFFER` | FIXME
`COGL_OFFSCREEN_BUFFER` | FIXME

Since 0.8

### enum CoglBufferBit

    typedef enum {
      COGL_BUFFER_BIT_COLOR   = 1L<<0,
      COGL_BUFFER_BIT_DEPTH   = 1L<<1,
      COGL_BUFFER_BIT_STENCIL = 1L<<2
    } CoglBufferBit;

Types of auxiliary buffers

`COGL_BUFFER_BIT_COLOR` | Selects the primary color buffer
`COGL_BUFFER_BIT_DEPTH` | Selects the depth buffer
`COGL_BUFFER_BIT_STENCIL` | Selects the stencil buffer

Since 1.0

### enum CoglAttributeType

    typedef enum {
      COGL_ATTRIBUTE_TYPE_BYTE           = 0x1400,
      COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE  = 0x1401,
      COGL_ATTRIBUTE_TYPE_SHORT          = 0x1402,
      COGL_ATTRIBUTE_TYPE_UNSIGNED_SHORT = 0x1403,
      COGL_ATTRIBUTE_TYPE_FLOAT          = 0x1406
    } CoglAttributeType;

Data types for the components of a vertex attribute.

`COGL_ATTRIBUTE_TYPE_BYTE` | Data is the same size of a byte
`COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE` | Data is the same size of an unsigned byte
`COGL_ATTRIBUTE_TYPE_SHORT` | Data is the same size of a short integer
`COGL_ATTRIBUTE_TYPE_UNSIGNED_SHORT` | Data is the same size of an unsigned short integer
`COGL_ATTRIBUTE_TYPE_FLOAT` | Data is the same size of a float

Since 1.0

### enum CoglColorMask

    typedef enum
    {
      COGL_COLOR_MASK_NONE = 0,
      COGL_COLOR_MASK_RED = 1L<<0,
      COGL_COLOR_MASK_GREEN = 1L<<1,
      COGL_COLOR_MASK_BLUE = 1L<<2,
      COGL_COLOR_MASK_ALPHA = 1L<<3,
      /* XXX: glib-mkenums is a perl script that can't cope if we split
       * this onto multiple lines! *sigh* */
      COGL_COLOR_MASK_ALL = (COGL_COLOR_MASK_RED | COGL_COLOR_MASK_GREEN | COGL_COLOR_MASK_BLUE | COGL_COLOR_MASK_ALPHA)
    } CoglColorMask;

Defines a bit mask of color channels. This can be used with `cogl_pipeline_set_color_mask()` for example to define which color channels should be written to the current framebuffer when drawing something.

`COGL_COLOR_MASK_NONE` | None of the color channels are masked
`COGL_COLOR_MASK_RED` | Masks the red color channel
`COGL_COLOR_MASK_GREEN` | Masks the green color channel
`COGL_COLOR_MASK_BLUE` | Masks the blue color channel
`COGL_COLOR_MASK_ALPHA` | Masks the alpha color channel
`COGL_COLOR_MASK_ALL` | All of the color channels are masked