ggi_pixelformat(3)

ggi_pixelformat3

Libggi pixel format description

Usage

#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

Overview

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

Releases

4 releases since Debian 3.1 (Sarge); the text changed 2 times.

  1. 3.1
  2. 4.0
  3. 5.0–6.0

From libggi2-dev 1:2.2.2-5 in Debian 6.0 (Squeeze). Parsed by carta from the page's man source.