#include #include "wraster.h" #include #include #include "tile.xpm" Display *dpy; Window win; RContext *ctx; RImage *img; Pixmap pix; void main(int argc, char **argv) { RContextAttributes attr; dpy = XOpenDisplay(""); if (!dpy) { puts("cant open display"); exit(1); } attr.flags = RC_RenderMode | RC_ColorsPerChannel; attr.render_mode = RM_DITHER; attr.colors_per_channel = 4; ctx = RCreateContext(dpy, DefaultScreen(dpy), &attr); if (argc<2) img = RGetImageFromXPMData(ctx, image_name); else img = RLoadImage(ctx, argv[1], argc>2 ? atol(argv[2]) : 0); if (!img) { puts(RMessageForError(RErrorCode)); exit(1); } if (!RConvertImage(ctx, img, &pix)) { puts(RMessageForError(RErrorCode)); exit(1); } win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 10, 10, img->width, img->height, 0, 0, 0); XSelectInput(dpy, win, ExposureMask); XMapRaised(dpy, win); XSync(dpy, False); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, 0, 0); XSync(dpy, False); while (1) { XEvent ev; XNextEvent(dpy, &ev); if (ev.type==Expose) XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, 0, 0); } XFlush(dpy); getchar(); }