📄 xpol_5.h
字号:
/*************************************************************************/
/* */
/* Copyright (c) 1997 - 1999 Accelerated Technology, Inc. */
/* */
/* PROPRIETARY RIGHTS of Accelerated Technology are involved in the */
/* subject matter of this material. All manufacturing, reproduction, */
/* use, and sales rights pertaining to this subject matter are governed */
/* by the license agreement. The recipient of this software implicitly */
/* accepts the terms of the license. */
/* */
/*************************************************************************/
/*************************************************************************/
/* */
/* FILE NAME VERSION */
/* */
/* XPOL_5.h 1.9 */
/* */
/* COMPONENT */
/* */
/* All */
/* */
/* DESCRIPTION */
/* */
/* This file contains polygon common stack data. */
/* */
/* AUTHOR */
/* */
/* Robert G. Burrill, Accelerated Technology, Inc. */
/* */
/* DATA STRUCTURES */
/* */
/* None */
/* */
/* FUNCTIONS */
/* */
/* None */
/* */
/* DEPENDENCIES */
/* */
/* None */
/* */
/* HISTORY */
/* */
/* NAME DATE REMARKS */
/* */
/* BobB 11/16/99 Got rid of ANSI compiler warnings */
/* */
/*************************************************************************/
/* Common stack frame for XPOL4, XPOL5, and XPOL7, so that routines can be
shared among those modules. */
extern int currentY; /* scan line currently being scanned */
extern int rectCount; /* # of rects in blitRcd */
extern rect *highWater; /* last address at which a rect can start in the blitRcd
and not be the last rect in the list */
extern blitRcd *lclFillRcd; /* local copy of fillRcd */
extern rect *rectPtr; /* pointer to next free rect in the fillRcd */
extern rect *rectBase; /* pointer to beginning of rect list in the fillRcd */
extern rect clpR; /* clip rect */
extern char sameAsLast; /* 1 if the current line has exactly the same edges as
the preceding line, 0 else */
extern rect *lastScanPtr; /* points to rect that started the last scan line */
extern char localTToB; /* 1 if the coord system is local top->bottom, 0 else */
extern char firstSegment; /* 1 if the first edge is being put into the GET */
extern char finalWrap; /* 1 if the last and first points are to be connected */
extern char allLineEdges; /* 1 if all edges in GET are lines, 0 if other
entities are present */
extern short startX; /* start coordinates for current line */
extern short startY;
extern short nextStartX; /* start coordinates for next edge */
extern short nextStartY;
extern short endX; /* end coordinates for current line */
extern short endY;
extern short addStartX; /* start coordinates for added edge */
extern short addStartY;
extern short addEndX; /* end coordinates for added edge */
extern short addEndY;
extern short startInX; /* start and end points of the two edges formed around */
extern short startInY; /* each line segment for wide lines */
extern short startOutX;
extern short startOutY;
extern short endInX;
extern short endInY;
extern short endOutX;
extern short endOutY;
extern short lastInX; /* end points of the two edges formed around the last*/
extern short lastInY; /* line segment for wide lines */
extern short lastOutX;
extern short lastOutY;
extern lineEdgeV **ptrToGETPtr; /* offset of global edge table ptr in GET buffer */
extern metaPort *thePortPtr; /* pointer to the current port */
extern point *vertexListPtr; /* pointer to current vertex */
extern short rawLastX; /* user coordinates of last vertex */
extern short rawLastY;
extern short finalRawX; /* user coordinates of last vertex connected to in polyline */
extern short finalRawY;
extern short finalGblX; /* global coordinates of last vertex connected to in polyline */
extern short finalGblY;
extern int lcl2GblXAdj; /* in general polygon filler, adjustments to convert from */
extern int lcl2GblYAdj; /* local top->bottom to global */
extern int direction; /* current, last line direction */
extern int lastDirection; /*0 = 90 degrees
1 = between 0 and 90 degrees
2 = 0 degrees
3 = between 270 and 0 degrees
4 = 270 degrees
5 = between 180 and 270 degrees
6 = 180 degrees
7 = between 90 and 180 degrees */
extern short halfWidth[4]; /* offsets to edges of square pen */
#define halfWidthLeft halfWidth[0];
#define halfWidthRight halfWidth[1];
#define halfHeightUp halfWidth[2];
#define halfHeightDown halfWidth[3];
extern int deltaX; /* line segment deltas */
extern int deltaY;
extern long endAvailForGET; /* pointer to byte after last byte available for edge struc
storage */
extern short (*addEdgeVector)(void); /* vector called when building the GET to add each
edge to the GET */
extern char GETEmpty; /* 1 if GET is empty, 0 else */
extern sbyte lclFillRule; /* 1 for winding rule fill, 0 for odd/even fill */
extern int numLinesUntilNext; /* # of lines until the next edge starts */
extern lineEdgeV **AETPtrPtr; /* pointer to AET pointer in low-memory case (at start of
working buffer) */
extern int lclNpointsparm; /* local copy of npointsparm for counting down */
extern int lclModeparm; /* local copy of modeparm */
extern int maxY; /* highest Y coord to be drawn */
extern short (*updateAETVector)(void); /* vector called to update the AET each time in
low-memory operation */
extern int countTemp; /* temporary storage for winding edge counts in double
winding rule scanner */
extern byte buf1[STACK_BUFFER_SIZE]; /* working storage space */
extern byte *buf1Ptr; /* pointer into buffer */
extern long bufCntr; /* buffer counter */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -