- unsigned char **imgdata, **imgmask;
- struct lbx_imginfo info;
- unsigned char *data;
- unsigned stride;
-
- lbximg_getinfo(image, &info);
- imgdata = lbximg_getframe(image, frame);
- if (!imgdata) {
- printf("failed to decode frame %u\n", frame);
- return -1;
- }
- imgmask = lbximg_getmask(image);
-
- data = gdk_pixbuf_get_pixels(buf);
- stride = gdk_pixbuf_get_rowstride(buf);
-
- for (unsigned i = 0; i < info.height; i++) {
- unsigned char (*p)[4] = (void *)(data + i*stride);
-
- for (unsigned j = 0; j < info.width; j++) {
- if (imgmask[i][j]) {
- get_colour(imgdata[i][j], p[j]);
- p[j][3] = -1;
- } else {
- p[j][3] = 0;
- }
- }
- }