Annotation of 43BSD/contrib/X/libqvss/ddxput.c, revision 1.1.1.1

1.1       root        1: /* Copyright 1985, Massachusetts Institute of Technology */
                      2: 
                      3: /* put.c       Perform a raster operation with a source bitmap
                      4:  *
                      5:  *     PixmapPut       Puts a pixmap up on the screen
                      6:  *     PixmapBitsPut   Puts a pixmap up on the screen
                      7:  *     BitmapBitsPut   Puts a pixmap up on the screen
                      8:  *
                      9:  * Modification History:
                     10:  *
                     11:  *   Carver 8601.13 Added extern statement for SSmap
                     12:  *
                     13:  *   Carver 8601.06 Added line to PixmapPut to adjust the func to compensate
                     14:  *                 for the reverse flag being set in the pixmap descriptor.
                     15:  *
                     16:  *   Carver 8510.10 Put in support for source bitmap/sub-bitmap mask
                     17:  *                 copy areas.
                     18:  *
                     19:  *   Carver 8510.09 In PixmapBitsPut fixed the table lookup on foreground
                     20:  *                 and background.
                     21:  */
                     22: 
                     23: #include "ddxqvss.h"
                     24: #include "vstagbl.h"
                     25: 
                     26: extern BITMAP pbm;
                     27: 
                     28: PixmapPut (src, srcx, srcy, width, height, dstx, dsty, clips, clipcount,
                     29:           func, zmask)
                     30:        register PIXMAP *src;
                     31:        int srcx, srcy, width, height, dstx, dsty, clipcount, zmask;
                     32:        register int func;
                     33:        CLIP *clips;
                     34: {
                     35:        BITMAP *bm = (BITMAP *) src->data;
                     36:        extern char SSMap[];
                     37: 
                     38:        if (!(zmask & 1))  return;
                     39: 
                     40:        /* ADJUST MAP FOR REVERSE PIXMAP */
                     41: 
                     42:        func = SSMap[ func | (src->kind & InvertFlag)];
                     43: 
                     44:        copyrmsk( VSTA$K_SRC_BITMAP, (short *)bm->data, bm->width, bm->height,
                     45:                srcx, srcy, width, height, 
                     46:                (short *)pbm.data, pbm.width, pbm.height,
                     47:                dstx, dsty, func, clipcount, clips);
                     48:        return;
                     49: }
                     50: 
                     51: 
                     52: /*ARGSUSED*/
                     53: PixmapBitsPut (width, height, format, data, xymask, dstx, dsty,
                     54:               clips, clipcount, func, zmask)
                     55:        char *data;
                     56:        int width, height, format, dstx, dsty, clipcount, zmask;
                     57:        BITMAP *xymask;
                     58:        CLIP *clips;
                     59:        int func;
                     60: {
                     61:        BitmapBitsPut (width, height, data, 1, 0, xymask, dstx, dsty,
                     62:                       clips, clipcount, func, zmask);
                     63: }
                     64: 
                     65: 
                     66: BitmapBitsPut (width, height, data, fore, back, xymask, dstx, dsty,
                     67:               clips, clipcount, func, zmask)
                     68:        char *data;
                     69:        int width, height, fore, back, dstx, dsty, clipcount, zmask;
                     70:        register BITMAP *xymask;
                     71:        CLIP *clips;
                     72:        register int func;
                     73: {
                     74:        int mask_x = pbm.width, mask_y = pbm.height;
                     75:        extern char FBMap[];
                     76: 
                     77:        if (!(zmask & 1))  return;
                     78: 
                     79:        /* USE FBMap TABLE TO CONVERT FORE/BACK INTO A SINGLE SOURCE
                     80:           MAPPING FUNCTION */
                     81: 
                     82:        if (fore & 1) func += 0x20;
                     83:        if (back & 1) func += 0x10;
                     84: 
                     85:        func = FBMap[func];
                     86: 
                     87:        if (xymask == NULL) 
                     88:                {
                     89:                copyrmsk (VSTA$K_SRC_BITMAP, (short *) data, width, height,
                     90:                          0, 0, mask_x, mask_y, (short *) pbm.data, pbm.width,
                     91:                          pbm.height, dstx, dsty, func, clipcount, clips);
                     92:                }
                     93:        else
                     94:                {
                     95:                        
                     96:                copybmsk (
                     97:                        VSTA$K_SRC_BITMAP, (short *)data, width, height, 
                     98:                        0, 0, 
                     99:                        (short *) xymask->data, xymask->width, xymask->height,
                    100:                        0, 0, width, height,
                    101:                        (short *)pbm.data, pbm.width, pbm.height,
                    102:                        dstx, dsty, func, clipcount, clips);
                    103:                };
                    104: 
                    105: 
                    106: 
                    107:        return;
                    108: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.