1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
/* The resizelgwin routine updates the line graphics window in response to a */
/* ConfigureNotify event. */
/* Sam Southard, Jr. */
/* Created: 29-Mar-1991 (from figdisp/resizewin) */
/* Modification History: */
/* 2-Apr-1991 SNS/CIT Modified to use a Pixmap the same size as the window, */
/* instead of always having a LG_MAX_xxx sized pixmap. */
/* 8-Oct-1991 SNS/CIT Globals now in globals.h */
/* 11-Feb-1992 SNS/CIT Elimincated some unnecessary code. */
/* 14-Feb-1992 SNS/CIT Now clears the line graphics window to lg.pix[0] */
/* instead of BlackPixel */
/* 10-Apr-1992 SNS/CIT No longer uses minimum or maximum window sizes. Now */
/* uses lg.imwidth & lg.imheight as the width & height */
/* of the pixmap. */
/* The program include files */
#include "figdisp.h"
#include "globals.h"
void resizelgwin(event)
XConfigureEvent event;
{
int changed=0; /* whether or not we need to resize the window again */
static int lastchanged=0; /* if we changed last time through */
Pixmap temppixmap; /* pixmap to hold old data */
Pixmap XCreatePixmap();
lg.width=lg.imwidth=event.width;
lg.height=lg.imheight=event.height;
/* I know that this won't work right now (changed never gets set). */
/* However, I'm keeping it around until I know how to detect if */
/* XCreatePixmap failed */
if (changed && !lastchanged) {
lastchanged=1;
XResizeWindow(display,lg.win,lg.width,lg.height);
} else {
lastchanged=0;
temppixmap=XCreatePixmap(display, RootWindow(display,screen),
lg.width, lg.height, linedepth);
/* Clear the pixmap */
XSetForeground(display, linegcclear, lg.pix[0]);
XFillRectangle(display, temppixmap, linegcclear, 0, 0,
lg.width, lg.height);
XCopyArea(display, lg.pixmap, temppixmap, linegc, 0, 0,
lg.width, lg.height, 0, 0);
XFreePixmap(display, lg.pixmap);
lg.pixmap=temppixmap;
XCopyArea(display, lg.pixmap, lg.win, linegc, 0, 0,
lg.width, lg.height, 0, 0);
}
return;
}
|