1 /*
2 * $Id: getimage.c,v 0.11 1993/12/16 00:06:58 king Exp king $
3 * Saves a bit image of the specified region into memory.
4 *
5 * $Log: getimage.c,v $
6 * Revision 0.11 1993/12/16 00:06:58 king
7 * getimage() provided by Tero and Juki.
8 *
9 * Revision 0.1 1993/12/10 00:15:31 king
10 * Initial version.
11 *
12 */
13 #include "graphics.h"
14
getimage(int left,int top,int right,int bottom,void * bitmap)15 void getimage(int left, int top, int right, int bottom, void *bitmap)
16 {
17 int X;
18 int Y;
19 int width;
20 int height;
21 bgi_image *bm = (bgi_image*)bitmap;
22 Pixmap pixmap;
23 XGCValues op_gcv;
24 GC op_gc;
25
26 X = left + VPorigin.x;
27 Y = top + VPorigin.y;
28 width = right - left + 1;
29 height = bottom - top + 1;
30
31 pixmap = XCreatePixmap(dpy, window, width, height,
32 XDefaultDepth(dpy, DefaultScreen(dpy)));
33 op_gc = XCreateGC(dpy, drawable, 0, NULL);
34 XCopyGC(dpy, gc, (GCBackground | GCForeground | GCPlaneMask),
35 op_gc);
36 op_gcv.function = GXcopy;
37 XChangeGC(dpy, op_gc, GCFunction, &op_gcv);
38
39 XCopyArea(dpy, drawable, pixmap, op_gc, X, Y, width, height, 0, 0);
40 bm->width = width;
41 bm->height = height;
42 bm->pixmap = pixmap;
43 XFreeGC(dpy, op_gc);
44 }
45