|
|
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: 2665 (0xa69)
Types: TextFile
Names: »ddxput.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z«
└─⟦2109abc41⟧
└─⟦this⟧ »./X.V10R4/libqvss/ddxput.c«
/* Copyright 1985, Massachusetts Institute of Technology */
/* put.c Perform a raster operation with a source bitmap
*
* PixmapPut Puts a pixmap up on the screen
* PixmapBitsPut Puts a pixmap up on the screen
* BitmapBitsPut Puts a pixmap up on the screen
*
* Modification History:
*
* Carver 8601.13 Added extern statement for SSmap
*
* Carver 8601.06 Added line to PixmapPut to adjust the func to compensate
* for the reverse flag being set in the pixmap descriptor.
*
* Carver 8510.10 Put in support for source bitmap/sub-bitmap mask
* copy areas.
*
* Carver 8510.09 In PixmapBitsPut fixed the table lookup on foreground
* and background.
*/
#include "ddxqvss.h"
#include "vstagbl.h"
extern BITMAP pbm;
PixmapPut (src, srcx, srcy, width, height, dstx, dsty, clips, clipcount,
func, zmask)
register PIXMAP *src;
int srcx, srcy, width, height, dstx, dsty, clipcount, zmask;
register int func;
CLIP *clips;
{
BITMAP *bm = (BITMAP *) src->data;
extern char SSMap[];
if (!(zmask & 1)) return;
/* ADJUST MAP FOR REVERSE PIXMAP */
func = SSMap[ func | (src->kind & InvertFlag)];
copyrmsk( VSTA$K_SRC_BITMAP, (short *)bm->data, bm->width, bm->height,
srcx, srcy, width, height,
(short *)pbm.data, pbm.width, pbm.height,
dstx, dsty, func, clipcount, clips);
return;
}
/*ARGSUSED*/
PixmapBitsPut (width, height, format, data, xymask, dstx, dsty,
clips, clipcount, func, zmask)
char *data;
int width, height, format, dstx, dsty, clipcount, zmask;
BITMAP *xymask;
CLIP *clips;
int func;
{
BitmapBitsPut (width, height, data, 1, 0, xymask, dstx, dsty,
clips, clipcount, func, zmask);
}
BitmapBitsPut (width, height, data, fore, back, xymask, dstx, dsty,
clips, clipcount, func, zmask)
char *data;
int width, height, fore, back, dstx, dsty, clipcount, zmask;
register BITMAP *xymask;
CLIP *clips;
register int func;
{
int mask_x = pbm.width, mask_y = pbm.height;
extern char FBMap[];
if (!(zmask & 1)) return;
/* USE FBMap TABLE TO CONVERT FORE/BACK INTO A SINGLE SOURCE
MAPPING FUNCTION */
if (fore & 1) func += 0x20;
if (back & 1) func += 0x10;
func = FBMap[func];
if (xymask == NULL)
{
copyrmsk (VSTA$K_SRC_BITMAP, (short *) data, width, height,
0, 0, mask_x, mask_y, (short *) pbm.data, pbm.width,
pbm.height, dstx, dsty, func, clipcount, clips);
}
else
{
copybmsk (
VSTA$K_SRC_BITMAP, (short *)data, width, height,
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;
}