14#define FILL_EDGE_ALLOC_TAG 0x45465044
68#define DEBUG_PRINT_ACTIVE_EDGELIST(x)
85 for (
i = 0;
i <
list->Count;
i++)
195 ASSERT(activehead && NewEdge);
200 *activehead = NewEdge;
208 NewEdge->
pNext = *activehead;
209 *activehead = NewEdge;
221 pThis = pThis->
pNext;
226 pPrev->
pNext = NewEdge;
242 if (0 == Points || 2 >
Count)
255 for (CurPt = 1; CurPt <
Count; ++CurPt)
370 for (
i = 0;
i <
list->Count;
i++)
374 if (pEdge->
FromY <= Scanline && pEdge->
ToY > Scanline)
403 pRight = pLeft->
pNext;
406 while (
NULL != pRight)
413 BoundRect.
top = ScanLine;
414 BoundRect.
bottom = ScanLine + 1;
429 pLeft = pRight->
pNext;
446 int x1,
x2, winding = 0;
452 BoundRect.
top = ScanLine;
453 BoundRect.
bottom = ScanLine + 1;
457 pRight = pLeft->
pNext;
465 pRight = pLeft->
pNext;
468 while (
NULL != pRight )
475 if ((newx1 >=
x1 && newx1 <=
x2) ||
476 (newx2 >=
x1 && newx2 <=
x2) ||
477 (
x1 >= newx1 &&
x1 <= newx2) ||
478 (
x2 >= newx2 &&
x2 <= newx2))
507 pRight = pLeft->
pNext;
576 for (ScanLine = BoundRect.
top; ScanLine < BoundRect.
bottom; ++ScanLine)
580 FillScanLine(
dc, ScanLine, ActiveHead, psurf, BrushObj, RopMode);
613 for (ScanLine = DestRect.
top; ScanLine < DestRect.
bottom; ++ScanLine)
625 pRight = pLeft->
pNext;
628 while (
NULL != pRight)
636 LineRect.
top = ScanLine;
637 LineRect.
bottom = ScanLine + 1;
654 pLeft = pRight->
pNext;
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define ROP4_FROM_INDEX(index)
static DWORD DWORD DWORD DWORD * steps
#define DEBUG_PRINT_ACTIVE_EDGELIST(x)
static FILL_EDGE *FASTCALL POLYGONFILL_MakeEdge(POINT From, POINT To)
static void APIENTRY POLYGONFILL_FillScanLineAlternate(PDC dc, int ScanLine, FILL_EDGE *ActiveHead, SURFACE *psurf, BRUSHOBJ *BrushObj, MIX RopMode)
static void APIENTRY POLYGONFILL_FillScanLineWinding(PDC dc, int ScanLine, FILL_EDGE *ActiveHead, SURFACE *psurf, BRUSHOBJ *BrushObj, MIX RopMode)
static FILL_EDGE_LIST *FASTCALL POLYGONFILL_MakeEdgeList(PPOINT Points, int Count)
struct _FILL_EDGE_LIST FILL_EDGE_LIST
#define FILL_EDGE_ALLOC_TAG
struct _tagFILL_EDGE FILL_EDGE
BOOL FASTCALL IntFillPolygon(PDC dc, SURFACE *psurf, BRUSHOBJ *BrushObj, CONST PPOINT Points, int Count, RECTL DestRect, POINTL *BrushOrigin)
static void FASTCALL POLYGONFILL_DestroyEdgeList(FILL_EDGE_LIST *list)
static void APIENTRY POLYGONFILL_BuildActiveList(int Scanline, FILL_EDGE_LIST *list, FILL_EDGE **ActiveHead)
static void FASTCALL POLYGONFILL_ActiveListInsert(FILL_EDGE **activehead, FILL_EDGE *NewEdge)
BOOL APIENTRY FillPolygon(PDC dc, SURFACE *psurf, BRUSHOBJ *BrushObj, MIX RopMode, CONST PPOINT Points, int Count, RECTL BoundRect)
static void FASTCALL POLYGONFILL_UpdateScanline(FILL_EDGE *pEdge, int Scanline)
static INT FASTCALL FILL_EDGE_Compare(FILL_EDGE *Edge1, FILL_EDGE *Edge2)
void IntEngLineTo(SURFOBJ *, CLIPOBJ, PBRUSHOBJ, int x1, int y1, int x2, int y2, RECTL *, MIX mix)
void * EngAllocMem(int zero, unsigned long size, int tag=0)
struct _tagFILL_EDGE * pNext
#define _PRAGMA_WARNING_SUPPRESS(x)
#define __WARNING_USING_UNINIT_VAR
BOOL APIENTRY IntEngBitBlt(SURFOBJ *psoTrg, SURFOBJ *psoSrc, SURFOBJ *psoMask, CLIPOBJ *pco, XLATEOBJ *pxlo, RECTL *prclTrg, POINTL *pptlSrc, POINTL *pptlMask, BRUSHOBJ *pbo, POINTL *pptlBrush, ROP4 Rop4)
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1