|
|
BSD 4.3
/************************************************************************/
/************************************************************************/
/* */
/* 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;
/*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 /* fill with a halftone */
{
register BITMAP *bm = (BITMAP *) tile->data;
src_type = VSTA$K_SRC_HT_BITMAP;
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);
};
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.