#ifdef USE_IMLIB
#include "image.h"
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/extensions/shape.h>
#include <Imlib.h>
int imIdent(char *fullname, char *name)
{
return 1;
}
Image *imLoad(char *fullname, char *name, unsigned int verbose)
{
static Display *disp = NULL;
Image *image;
static ImlibData *id;
ImlibImage *im;
ImlibColor shape;
unsigned int w,h, size;
if (disp == NULL) {
disp=XOpenDisplay(NULL);
}
if (id == NULL) id=Imlib_init(disp);
im=Imlib_load_image(id, fullname);
if (im == NULL) {
return NULL;
}
w = im->rgb_width;
h = im->rgb_height;
size = w * h * 3;
image = newTrueImage(w, h);
memcpy(image->data, im->rgb_data, size);
Imlib_get_image_shape(id, im, &shape);
/*
* bug fix for transparent gif handling
* suggested by Jose Geraldo Alves Brito Neto <jgabrito@iq.usp.br>
*/
if ((shape.r >=0) && (shape.g >= 0) && (shape.b >= 0))
image->trans = \
((shape.r & 0xff) << 16) |
((shape.g & 0xff) << 8) |
((shape.b & 0xff) << 0);
image->title = dupString(name);
Imlib_kill_image(id, im);
return image;
}
#endif
syntax highlighted by Code2HTML, v. 0.9.1