49 #define TRANSFORMSPACE 0 56 unsigned char type,
width,height;
61 unsigned char ll,lr,ul,
ur;
96 #define isBox(BOX) ((BOX.delta.x >= 0)&&(BOX.delta.y >= 0)) 183 #define MINIMUM(x,y) (((x) > (y))? (y) : (x)) 184 #define MAXIMUM(x,y) (((x) < (y))? (y) : (x)) 186 #define OUTSIDE(MAP,VPF_POINT_STRUCT)\ 187 ((VPF_POINT_STRUCT.x < 0)|| \ 188 (VPF_POINT_STRUCT.y < 0)|| \ 189 (VPF_POINT_STRUCT.x > MAP.bounding.x)|| \ 190 (VPF_POINT_STRUCT.y > MAP.bounding.y)) 192 #define OUTSIDE_X(MAP,value) (((value)< 0)||((value)> MAP.bounding.x)) 193 #define OUTSIDE_Y(MAP,value) (((value)< 0)||((value)> MAP.bounding.y)) 195 #define GETBIT(MAP,VPF_POINT_STRUCT) \ 196 (((MAP.array[(((VPF_POINT_STRUCT.y)*(MAP.rowcount))+((VPF_POINT_STRUCT.x)>>3))])&(1<<((VPF_POINT_STRUCT.x)%8)))? 1: 0) 198 #define SETBIT(MAP,VPF_POINT_STRUCT) \ 199 ((MAP.array[(((VPF_POINT_STRUCT.y)*(MAP.rowcount))+((VPF_POINT_STRUCT.x)>>3))]) |= (1<<((VPF_POINT_STRUCT.x)%8))) 201 #define CLEARBIT(MAP,VPF_POINT_STRUCT) \ 202 ((MAP.array[(((VPF_POINT_STRUCT.y)*(MAP.rowcount))+((VPF_POINT_STRUCT.x)>>3))]) &= ~(1<<((VPF_POINT_STRUCT.x)%8))) 204 #define TOGGLEBIT(MAP,VPF_POINT_STRUCT) \ 205 ((MAP.array[(((VPF_POINT_STRUCT.y)*(MAP.rowcount))+((VPF_POINT_STRUCT.x)>>3))]) ^= (1<<((VPF_POINT_STRUCT.x)%8))) 207 #define LEFTBITS(INDEX) (255&(~(255<<(1+(INDEX))))) 208 #define RIGHTBITS(INDEX) (255&(~(255>>(8-(INDEX))))) 210 #define FILLBRESSEG(bseg,seg) \ 213 bseg.signs.x = (seg.delta.x < 0) ? -1: 1; \ 214 bseg.signs.y = (seg.delta.y < 0) ? -1: 1; \ 215 tempx = seg.delta.x * bseg.signs.x; \ 216 tempy = seg.delta.y * bseg.signs.y; \ 217 bseg.at = seg.origin; \ 221 bseg.Eprim = (tempx<<1) - tempy; \ 222 bseg.errors.inc = (tempx<<1); \ 223 bseg.errors.step = (tempx<<1) - (tempy<<1); \ 224 bseg.maximum = tempy; \ 229 bseg.Eprim = (tempy<<1) - tempx; \ 230 bseg.errors.inc = (tempy<<1); \ 231 bseg.errors.step = (tempy<<1) - (tempx<<1); \ 232 bseg.maximum = tempx; \ 242 bseg.Eprim += bseg.errors.inc; \ 244 bseg.at.y += bseg.signs.y; \ 246 bseg.at.x += bseg.signs.x; \ 251 bseg.Eprim += bseg.errors.step; \ 252 bseg.at.x += bseg.signs.x; \ 253 bseg.at.y += bseg.signs.y; \ int BoxXorBit(ArrayOfBits map, IBox box, int value)
void TOGGLEROW(ArrayOfBits MAP, int XMIN, int XMAX, int Y)
IBox AndIBox(IBox a, IBox b)
int CloseLoop(Shademap *smap)
int PointXorBit(ArrayOfBits map, IPoint at, int value)
int TrapezoidAndBit(ArrayOfBits map, ISegment seg, int value)
ITransform MakeITransform(IBox from, IBox to)
int FreeArrayOfBits(ArrayOfBits map)
int PointSetBit(ArrayOfBits map, IPoint at, int value)
int XorArrayOfBits(ArrayOfBits map, ISegment seg, int value)
int LineXorBit(ArrayOfBits map, ISegment seg, int value)
int OutShade(Shademap *smap)
int LineOrBit(ArrayOfBits map, ISegment seg, int value)
int CloseShade(Shademap *smap)
int TrapezoidOrBit(ArrayOfBits map, ISegment seg, int value)
int ModifyShade(Shademap *smap, Color line, vpfPattern fill)
void SETROW(ArrayOfBits MAP, int XMIN, int XMAX, int Y)
void SETCOLUMN(ArrayOfBits MAP, int X, int YMIN, int YMAX)
int LineSetBit(ArrayOfBits map, ISegment seg, int value)
int LineAndBit(ArrayOfBits map, ISegment seg, int value)
int AndArrayOfBits(ArrayOfBits map, int value)
IBox TranslateIBox(ITransform transform, IBox a, int flag)
int BoxOrBit(ArrayOfBits map, IBox box, int value)
ISegment TranslateISegment(ITransform transform, ISegment a, int flay)
int PointGetBit(ArrayOfBits map, IPoint point)
void TOGGLECOLUMN(ArrayOfBits MAP, int X, int YMIN, int YMAX)
int TrapezoidSetBit(ArrayOfBits map, ISegment seg, int value)
int ClearArrayOfBits(ArrayOfBits map)
int OrArrayOfBits(ArrayOfBits map, ISegment seg, int value)
int BoxAndBit(ArrayOfBits map, IBox box, int value)
IBox MakeIBox(IPoint from, IPoint to)
int SetArrayOfBits(ArrayOfBits map, int value)
int PointOrBit(ArrayOfBits map, IPoint at, int value)
Shademap * OpenShade(IBox bounding, IBox window, Color line, vpfPattern fill)
int WriteShade(Shademap *smap, IPoint point)
IPoint TranslateIPoint(ITransform transform, IPoint a, int flag)
int BoxSetBit(ArrayOfBits map, IBox box, int value)
void CLEARROW(ArrayOfBits MAP, int XMIN, int XMAX, int Y)
int PointAndBit(ArrayOfBits map, IPoint at, int value)
int TrapezoidXorBit(ArrayOfBits map, ISegment seg, int value)
ArrayOfBits MakeArrayOfBits(int deltaX, int deltaY)
vpfPattern MakePattern(int ll, int lr, int ul, int ur)
ISegment MakeISegment(IPoint from, IPoint to)
void CLEARCOLUMN(ArrayOfBits MAP, int X, int YMIN, int YMAX)