1: /* tile.c Perform a raster operation involving a pattern 2: * 3: * TileFill Patterns a portion of the screen 4: * 5: * Modification History 6: * 7: * Carver 8601.27 Added line to PixmapPut to adjust the func to compensate 8: * for the reverse flag being set in the pixmap descriptor. 9: * 10: * Carver 8510.25 Removed error checking in calls to copyrmsk 11: * and copybmsk. No errors are ever return. 12: */ 13: 14: #include "ddxqvss.h" 15: #include "qvss.h" 16: #include "vstagbl.h" 17: 18: extern BITMAP pbm; 19: 20: /*ARGSUSED*/ 21: TileFill (tile, xoff, yoff, xymask, dstx, dsty, width, height, 22: clips, clipcount, func, zmask) 23: register PIXMAP *tile; 24: register BITMAP *xymask; 25: int xoff, yoff, dstx, dsty, width, height, zmask; 26: register int func; 27: CLIP *clips; 28: { 29: register BITMAP *bm = (BITMAP *) tile->data; 30: extern char SSMap[]; 31: 32: /* ADJUST MAP FOR REVERSE PIXMAP */ 33: 34: func = SSMap[ func | (tile->kind & InvertFlag)]; 35: 36: if (!(zmask & 1)) return; 37: if (PTYPE(tile) == BitmapPixmap) 38: { 39: if (xymask == 0) 40: { 41: copyrmsk (VSTA$K_SRC_HT_BITMAP, (short *)bm->data, bm->width, 42: bm->height, xoff, yoff, 43: width, height, 44: (short *)pbm.data, pbm.width, pbm.height, 45: dstx, dsty, func, clipcount, clips); 46: } 47: else 48: { 49: copybmsk (VSTA$K_SRC_HT_BITMAP, (short *)bm->data, bm->width, 50: bm->height, xoff, yoff, 51: (short *) xymask->data, xymask->width, xymask->height, 52: 0, 0, width, height, 53: (short *)pbm.data, pbm.width, pbm.height, 54: dstx, dsty, func, clipcount, clips); 55: }; 56: } 57: else 58: { 59: copyrmsk(VSTA$K_SRC_CONST, tile->data, 0, 0, 0, 0, 60: width, height, 61: (short *)pbm.data, pbm.width, pbm.height, 62: dstx, dsty, func, clipcount, clips); 63: }; 64: 65: return; 66: }