|
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: 2880 (0xb40) Types: TextFile Names: »ddxdrawfill.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z« └─⟦2109abc41⟧ └─⟦this⟧ »./X.V10R4/libqvss/ddxdrawfill.c«
/************************************************************************/ /************************************************************************/ /* */ /* DDX FILL INTERFACE */ /* */ /* written by : MATT CORKUM 09-25-85 */ /* */ /* */ /* The ddx fill interface code */ /* */ /* */ /* Modification History: */ /* */ /* 8511.04 (Carver) When filling with constant make sure to mask */ /* srcpix to one bit. */ /* */ /* 8509.30 (Corkum) Make the code work in a test environment. */ /* */ /* */ /************************************************************************/ /************************************************************************/ #include "ddxqvss.h" #include "qvss.h" #include "extern.h" #include "vstagbl.h" extern BITMAP pbm; \f /*ARGSUSED*/ DrawFilled (verts, vertcount, xbase, ybase, srcpix, tile, xoff, yoff, clips, clipcount, func, zmask) Vertex *verts; register PIXMAP *tile; int vertcount, xbase, ybase, srcpix, xoff, yoff, clipcount, zmask; register int func; CLIP *clips; { long error; /* error value to be returned*/ short *newvert; /* new vertex list */ int newvertcnt; /* new vertex count */ int src, src_type; /* source information */ if (!(zmask & 0x0001)) return; /* pre-process the specified path list ..... create another one containing only absolute straight line drawing */ /* for a fill operation the destination offsets are zero, however we call the pathlist converter routine to make an absolute, (pertaining to not relative), and straight line pathlist */ error = path_list_converter( &verts, &vertcount, xbase, ybase, &newvert, &newvertcnt ); if ( error ) return (error); if ( tile == 0 ) /* if no halftone pattern exists then use the constant source to perform the fill */ { src_type = VSTA$K_SRC_CONST; error = fillhalf ( src_type, (srcpix & 1), 0, 0, 0, 0, (short *)pbm.data, pbm.width, pbm.height, 0, 0, func, newvertcnt, newvert, clipcount, clips); } else if (PTYPE(tile) == BitmapPixmap) /* fill with a halftone */ { register BITMAP *bm = (BITMAP *) tile->data; extern char SSMap[]; src_type = VSTA$K_SRC_HT_BITMAP; func = SSMap[ func | (tile->kind & InvertFlag)]; error = fillhalf ( src_type, (short *)bm->data, bm->width, bm->height, xoff, yoff, (short *)pbm.data, pbm.width, pbm.height, 0, 0, func, newvertcnt, newvert, clipcount, clips); } else /* the pixmap is actually a constant source */ { src_type = VSTA$K_SRC_CONST; error = fillhalf ( src_type, tile->data, 0, 0, 0, 0, (short *)pbm.data, pbm.width, pbm.height, 0, 0, func, newvertcnt, newvert, clipcount, clips); } }