|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 2611 (0xa33) Types: TextFile Names: »ddxfill.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z« └─⟦2109abc41⟧ └─⟦this⟧ »./X.V10R4/libqvss/ddxfill.c«
/* fill.c Perform a simple raster operation a section of the screen * * PixFill Do a function on the screen * StippleFill Fill rectangle with a stipple pattern * * Modification History * * Carver 8510.25 Removed error checking in calls to copyrmsk * and copybmsk. No errors are ever return. * */ #include "ddxqvss.h" #include "qvss.h" #include "vstagbl.h" extern BITMAP pbm; /*ARGSUSED*/ PixFill (srcpix, xymask, dstx, dsty, width, height, clips, clipcount, func, zmask) int srcpix, dstx, dsty, width, height, clipcount, zmask; register BITMAP *xymask; register int func; CLIP *clips; { int constant = srcpix & 1; if (!(zmask & 1)) { return; } if (xymask == 0) { copyrmsk (VSTA$K_SRC_CONST, constant, 0, 0, 0, 0, width, height, (short *) pbm.data, pbm.width, pbm.height, dstx, dsty, func, clipcount, clips); return; } copybmsk (VSTA$K_SRC_CONST, constant, 0, 0, 0, 0, (short *) xymask->data, xymask->width, xymask->height, 0, 0, width, height, (short *) pbm.data, pbm.width, pbm.height, dstx, dsty, func, clipcount, clips); return; } extern int errno; #include <errno.h> int StippleFill (srcpix, xoff, yoff, stipmask, dstx, dsty, width, height, clips, clipcount, func, zmask) int srcpix; /* source pixel */ int xoff, yoff; /* stipple origin */ BITMAP *stipmask; /* stipple mask */ int dstx, dsty; /* destination */ int width, height; CLIP *clips; /* clipping rectangles */ int clipcount; int func; /* GX display function */ int zmask; /* plane mask */ { static char funcmap[16][2] = { {GXandInverted, GXandInverted}, /* GXclear */ {GXandInverted, GXnoop}, /* GXand */ {GXandInverted, GXxor}, /* GXandReverse */ {GXandInverted, GXor}, /* GXcopy */ {GXnoop, GXandInverted}, /* GXandInverted */ {GXnoop, GXnoop}, /* GXnoop */ {GXnoop, GXxor}, /* GXxor */ {GXnoop, GXor}, /* GXor */ {GXxor, GXandInverted}, /* GXnor */ {GXxor, GXnoop}, /* GXequiv */ {GXxor, GXxor}, /* GXinvert */ {GXxor, GXor}, /* GXorReverse */ {GXor, GXandInverted}, /* GXcopyInverted */ {GXor, GXnoop}, /* GXorInverted */ {GXor, GXxor}, /* GXnand */ {GXor, GXor} /* GXset */ }; int newfunc = funcmap [func][srcpix & 1]; if (!(zmask & 1)) { return (1); } if ((stipmask->width != 16) || (stipmask->height != 16)) { errno = EINVAL; return (0); } copyrmsk (VSTA$K_SRC_HT_BITMAP, (short *)stipmask->data, stipmask->width, stipmask->height, xoff, yoff, width, height, (short *)pbm.data, pbm.width, pbm.height, dstx, dsty, newfunc, clipcount, clips); return (1); }