All pastes #152686 Raw Edit

bcessa

public c v1 · immutable
#152686 ·published 2006-08-29 01:46 UTC
rendered paste body
/USAGE: ./thumbnail 0x0000ea0 128 test.png#include <X11/Xlib.h>#include <Imlib2.h>#include <stdio.h>#include <string.h>int main(int argc, char **argv) {        Display *display;        XWindowAttributes windowattr;        Imlib_Image image;        int windowid, thumbwidth, thumbheight, w, h;        char *imageformat, *imagepath;        if ( argc != 4 ) return 1;        sscanf(argv[1], "%x", &windowid);        sscanf(argv[2], "%d", &thumbwidth);        imagepath = argv[3];        imageformat = strrchr(argv[3], '.');        if ( (display = XOpenDisplay(NULL)) == NULL ) return 1;        XGetWindowAttributes(display, windowid, &windowattr);        thumbheight = (int)((float)windowattr.height / ((float)windowattr.width/(float)thumbwidth));        imlib_context_set_anti_alias(1);        imlib_context_set_display(display);        imlib_context_set_visual(DefaultVisual(display, DefaultScreen(display)));        imlib_context_set_colormap(DefaultColormap(display, DefaultScreen(display)));        imlib_context_set_drawable(windowid);        if ( 4*thumbwidth >= windowattr.width || 4*thumbheight >= windowattr.height ) {                image = imlib_create_image_from_drawable((Pixmap)0, 0, 0,                        windowattr.width, windowattr.height, 1);                imlib_context_set_image(image);                image = imlib_create_cropped_scaled_image(0, 0, windowattr.width, windowattr.height,                        thumbwidth, thumbheight);        } else {                image = imlib_create_scaled_image_from_drawable((Pixmap)0, 0, 0,                        windowattr.width, windowattr.height, 4*thumbwidth, 4*thumbheight, 1, 1);                imlib_context_set_image(image);                image = imlib_create_cropped_scaled_image(0, 0, 4*thumbwidth, 4*thumbheight,                        thumbwidth, thumbheight);        }        imlib_context_set_image(image);        w = imlib_image_get_width();	h = imlib_image_get_height();	printf("%d, %d\n", w, h);         imlib_image_set_format(imageformat + 1);        imlib_save_image(argv[3]);        return 0;}