typedef struct _ImlibBorder
{
int left,right;
int top,bottom;
} ImlibBorder;
typedef struct _GdkImlibBorder
{
gint left,right;
gint top,bottom;
} GdkImlibBorder;
This is the structure containing the border pixel settings in pixels from their respective sides. Normally all images have borders of 0,0,0,0.
typedef struct _ImlibColor
{
int r,g,b;
} ImlibColor;
typedef struct _GdkImlibColor
{
gint r,g,b;
} GdkImlibColor;
The r,g and b members are ints in the range 0 - 255. If any value is -1, and this is used to set or get that shape color, the shape color is either off, or will be turned off.
typedef struct _ImlibColorModifier
{
int gamma;
int brightness;
int contrast;
} ImlibColorModifier;
typedef struct _GdkImlibColorModifier
{
gint gamma;
gint brightness;
gint contrast;
} GdkImlibColorModifier;
The members of this structure are fairly self-evident. They are integers, with 256 being taken as a value of 1.0. Multiply your gamma, brightness and contrast values by 256 to get a value to put in these structures.
typedef struct _ImlibData
{
struct _xdata
{
Display *disp;
int screen;
Window root;
Visual *visual;
int depth;
} x;
} ImlibData;
This data structure is not visible in the GDK version of Imlib. It is expected for the Xlib version, that all applications that will place pixmaps in their windows, create those windows with the depth and visual in Imlib's ImlibData - Imlib hunts and chooses the best quality visual on the Xserver for its rendering. If you do not use this visual and depth the results are implementation dependent - ie, may vary between Xservers.
typedef struct _ImlibImage
{
int rgb_width,rgb_height;
unsigned char *rgb_data;
unsigned char *alpha_data;
char *filename;
} ImlibImage;
typedef struct _GdkImlibImage
{
gint rgb_width,rgb_height;
unsigned char *rgb_data;
unsigned char *alpha_data;
gchar *filename;
} GdkImlibImage;
These are the image data structures. You may read all these data members, and you may edit the data that rgb_data and alpha_data point to. Remember that if you modify this data to call Imlib_apply_modifiers_to_rgb or gdk_imlib_apply_modifiers_to_rgb to dirty the pixmaps in the cache. You may not free this data or change the pointer. Currently the alpha_data member is unused and will remain NULL. Setting it to anything else may produce unexpected results.
typedef struct _ImlibSaveInfo
{
int quality;
int scaling;
int xjustification;
int yjustification;
int page_size;
char color;
} ImlibSaveInfo;
typedef struct _GdkImlibSaveInfo
{
int quality;
int scaling;
int xjustification;
int yjustification;
int page_size;
char color;
} GdkImlibSaveInfo;
These are the ImlibSaveInfo data structs - they may be expanded in future. Their use is described above in the imlib_save_image function.