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