diff options
author | rws <empty> | 1992-06-11 15:26:22 +0000 |
---|---|---|
committer | rws <empty> | 1992-06-11 15:26:22 +0000 |
commit | 7119bb6a712c6a90a34bc9b719b6a67f24fab749 (patch) | |
tree | 0270049c8da9aa012abad319784f28b716d718c2 /xc/test/xsuite/xtest/src/lib/pattern.c | |
parent | c3ebc3539110bc7ed3118c49860ca8a5d3ac1a26 (diff) |
initial external version
Diffstat (limited to 'xc/test/xsuite/xtest/src/lib/pattern.c')
-rw-r--r-- | xc/test/xsuite/xtest/src/lib/pattern.c | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/xc/test/xsuite/xtest/src/lib/pattern.c b/xc/test/xsuite/xtest/src/lib/pattern.c new file mode 100644 index 000000000..e0e450c3b --- /dev/null +++ b/xc/test/xsuite/xtest/src/lib/pattern.c @@ -0,0 +1,88 @@ +/* + * Copyright 1990, 1991 by the Massachusetts Institute of Technology and + * UniSoft Group Limited. + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation, and that the names of MIT and UniSoft not be + * used in advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. MIT and UniSoft + * make no representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * $XConsortium$ + */ + +#include "xtest.h" +#include "Xlib.h" +#include "Xutil.h" +#include "xtestlib.h" +#include "pixval.h" + +/* + * Scribble on the drawable. A series of vertical lines are drawn starting + * at (0,0) then at (5,0) (10,0) etc. + */ +void +pattern(disp, d) +Display *disp; +Drawable d; +{ +unsigned int width; +unsigned int height; +int x; +GC gc; + + gc = XCreateGC(disp, d, 0, (XGCValues*)0); + XSetState(disp, gc, W_FG, W_BG, GXcopy, AllPlanes); + + getsize(disp, d, &width, &height); + + for (x = 0; x < width; x += 5) + XDrawLine(disp, d, gc, x, 0, x, height); + + XFreeGC(disp, gc); +} + +/* + * Check that the pattern that is drawn in pattern() is unchanged. + * This is done by direct pixel validation with GetImage. + * If ap is non-NULL then validation is restricted to that area + * with the origin the origin of the area. + */ +Status +checkpattern(disp, d, ap) +Display *disp; +Drawable d; +struct area *ap; +{ +XImage *imp; +int x, y; +unsigned long pix; +struct area area; + + if (ap == (struct area *)0) { + ap = &area; + ap->x = ap->y = 0; + getsize(disp, d, &ap->width, &ap->height); + } + + imp = XGetImage(disp, d, ap->x, ap->y, ap->width, ap->height, AllPlanes, ZPixmap); + if (imp == (XImage*)0) { + report("Get Image failed in checkpattern()"); + return(False); + } + + for (y = 0; y < ap->height; y++) { + for (x = 0; x < ap->width; x++) { + pix = XGetPixel(imp, x, y); + if (pix != ((x%5 == 0)? W_FG: W_BG)) { + report("Bad pixel in pattern at (%d, %d)", x, y); + return(False); + } + } + } + return(True); +} |