ggi_pixelformat

Langue: en

Autres versions - même langue

Version: 276011 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

ggi_pixelformat - LibGGI pixel format description

SYNOPSIS

 #include <ggi/ggi.h>
 
 typedef struct {
       int             depth;          /* Number of significant bits */
       int             size;           /* Physical size in bits */
 
       /* 
        * Simple and common things first :
        * 
        * Usage of the mask/shift pairs:
        * If new_value is the _sizeof(ggi_pixel)*8bit_ value of the thing 
        * you want to set, you do
        *
        * *pointer &= ~???_mask;               // Mask out old bits 
        * *pointer |= (new_value>>shift) & ???_mask;
        * 
        * The reason to use 32 bit and "downshifting" is alignment
        * and extensibility. You can easily adjust to other datasizes
        * with a simple addition ...
        */
       
       /* Simple colors:
        */
       ggi_pixel       red_mask;       /* Bitmask of red bits */
       int             red_shift;      /* Shift  for red bits */
 
       ggi_pixel       green_mask;     /* Bitmask of green bits */
       int             green_shift;    /* Shift  for green bits */
 
       ggi_pixel       blue_mask;      /* Bitmask of blue bits */
       int             blue_shift;     /* Shift  for blue bits */
 
       /* A few common attributes :
        */
       ggi_pixel       alpha_mask;     /* Bitmask of alphachannel bits */
       int             alpha_shift;    /* Shift  for alpha bits */
 
       ggi_pixel       clut_mask;      /* Bitmask of bits for the clut */
       int             clut_shift;     /* Shift  for bits for the clut*/
 
       ggi_pixel       fg_mask;        /* Bitmask of foreground color */
       int             fg_shift;       /* Shift  for foreground color */
 
       ggi_pixel       bg_mask;        /* Bitmask of background color */
       int             bg_shift;       /* Shift  for background color */
 
       ggi_pixel       texture_mask;   /* Bitmask of the texture (for
                                          textmodes - the actual character) */
       int             texture_shift;  /* Shift  for texture */
 
       /*
        * Now if this doesn't suffice you might want to parse the following
        * to find out what each bit does:
        */
 
       uint32_t                bitmeaning[sizeof(ggi_pixel)*8];
 
       uint32_t                flags;          /* Pixelformat flags */
 
       uint32_t                stdformat;      /* Standard format identifier */
       /* This one has only one use for the usermode application:
        * To quickly check, if two buffers are identical. If both
        * stdformats are the same and _NOT_ 0 (which means "WEIRD"),
        * you may use things like memcpy between them which will have
        * the desired effect ...
        */
       
 } ggi_pixelformat;
 
 /* Pixelformat flags */
 #define GGI_PF_REVERSE_ENDIAN 0x01
 #define GGI_PF_HIGHBIT_RIGHT  0x02
 #define GGI_PF_HAM            0x04
 #define GGI_PF_EXTENDED               0x08
 

DESCRIPTION

This structure describes the internal format of pixel values for a visual.

SEE ALSO

ggiGetPixelFormat(3)