typedef enum { GAN_GREY_LEVEL_IMAGE, /* grey-level images */
GAN_GREY_LEVEL_ALPHA_IMAGE, /* grey-level images with alpha
channel */
GAN_RGB_COLOUR_IMAGE, /* RGB colour images */
GAN_RGB_COLOUR_ALPHA_IMAGE, /* RGB colour images with alpha
channel */
GAN_VECTOR_FIELD_2D, /* 2D image of 2D vectors */
GAN_VECTOR_FIELD_3D } /* 2D image of 3D vectors */
Gan_ImageFormat;
The formats are (hopefully) self-explanatory, and allow Gandalf to represent
most useful kinds of image data. Along with the format there is also an
image type, which determines what type of data is stored in each pixel
of the image. The Gan_Type enumerated type is used to distinguish
the image type. It allows for instance boolean, unsigned character, short
integer or floating point types to be defined, and is described in
Section 2.1.1.
Note that not all types are supported by each format.
For instance boolean images (GAN_BOOL type) are only supported as
grey-level format images (format GAN_GREY_LEVEL_IMAGE), and
the vector field formats GAN_VECTOR_FIELD_2D and
GAN_VECTOR_FIELD_3D are currently supported only for signed types.
Support for extra types can be added when required.
There is also a structure to represent a rectangular sub-window of an image, useful in many situations:
/* Definition of a rectangular sub-part of an image.
*/
typedef struct Gan_ImageWindow
{
/* offset of window relative to top-left corner of the image */
unsigned c0, r0;
/* dimensions of window */
unsigned width, height;
} Gan_ImageWindow;
Apart from the standard simple C types, boolean and pointer image types are supported. These are described in Sections 4.4 and 4.5.