ReactOS  0.4.14-dev-41-g31d7680
gradient.c File Reference
#include <win32k.h>
#include <debug.h>
Include dependency graph for gradient.c:

Go to the source code of this file.

Macros

#define NDEBUG
 
#define VERTEX(n)   (pVertex + gt->n)
 
#define COMPAREVERTEX(a, b)   ((a)->x == (b)->x && (a)->y == (b)->y)
 
#define VCMPCLR(a, b, c, color)   (a->color != b->color || a->color != c->color)
 
#define VCMPCLRS(a, b, c)   !(!VCMPCLR(a,b,c,Red) || !VCMPCLR(a,b,c,Green) || !VCMPCLR(a,b,c,Blue))
 
#define HVINITCOL(Col, id)
 
#define HVSTEPCOL(id)
 
#define S_FILLLINE(linefrom, lineto)
 
#define S_DOLINE(a, b, line)
 
#define S_GOLINE(a, b, line)
 
#define S_ENDLINE(a, b, line)   }
 
#define S_INITLINE(a, b, line)
 
#define INITCOL(a, b, line, col, id)
 
#define STEPCOL(a, b, line, col, id)
 
#define FINITCOL(linefrom, lineto, colid)
 
#define FDOCOL(linefrom, lineto, colid)
 
#define FILLLINE(linefrom, lineto)
 
#define DOLINE(a, b, line)
 
#define GOLINE(a, b, line)
 
#define ENDLINE(a, b, line)   }
 
#define INITLINE(a, b, line)
 
#define DOINIT(a, b, line)
 
#define SMALLER(a, b)   (a->y < b->y) || (a->y == b->y && a->x < b->x)
 
#define SWAP(a, b, c)
 
#define NLINES   3
 

Functions

BOOL FASTCALL IntEngGradientFillRect (IN SURFOBJ *psoDest, IN CLIPOBJ *pco, IN XLATEOBJ *pxlo, IN TRIVERTEX *pVertex, IN ULONG nVertex, IN PGRADIENT_RECT gRect, IN RECTL *prclExtents, IN POINTL *pptlDitherOrg, IN BOOL Horizontal)
 
BOOL FASTCALL IntEngGradientFillTriangle (IN SURFOBJ *psoDest, IN CLIPOBJ *pco, IN XLATEOBJ *pxlo, IN TRIVERTEX *pVertex, IN ULONG nVertex, IN PGRADIENT_TRIANGLE gTriangle, IN RECTL *prclExtents, IN POINTL *pptlDitherOrg)
 
static BOOL IntEngIsNULLTriangle (TRIVERTEX *pVertex, GRADIENT_TRIANGLE *gt)
 
BOOL APIENTRY EngGradientFill (_Inout_ SURFOBJ *psoDest, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ TRIVERTEX *pVertex, _In_ ULONG nVertex, _In_ PVOID pMesh, _In_ ULONG nMesh, _In_ RECTL *prclExtents, _In_ POINTL *pptlDitherOrg, _In_ ULONG ulMode)
 
BOOL APIENTRY IntEngGradientFill (IN SURFOBJ *psoDest, IN CLIPOBJ *pco, IN XLATEOBJ *pxlo, IN TRIVERTEX *pVertex, IN ULONG nVertex, IN PVOID pMesh, IN ULONG nMesh, IN RECTL *prclExtents, IN POINTL *pptlDitherOrg, IN ULONG ulMode)
 

Variables

const LONG LINC [2] = {-1, 1}
 

Macro Definition Documentation

◆ COMPAREVERTEX

#define COMPAREVERTEX (   a,
  b 
)    ((a)->x == (b)->x && (a)->y == (b)->y)

Definition at line 19 of file gradient.c.

◆ DOINIT

#define DOINIT (   a,
  b,
  line 
)
Value:
INITCOL(a, b, line, Red, 0); \
INITCOL(a, b, line, Green, 1); \
INITCOL(a, b, line, Blue, 2);
Definition: bl.h:202
Definition: bl.h:199
#define INITLINE(a, b, line)
Definition: gradient.c:285
Definition: parser.c:48
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
Definition: bl.h:200
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 294 of file gradient.c.

◆ DOLINE

#define DOLINE (   a,
  b,
  line 
)
Value:
STEPCOL(a, b, line, Red, 0); \
STEPCOL(a, b, line, Green, 1); \
STEPCOL(a, b, line, Blue, 2); \
ex[line] += dx[line]; \
while(ex[line] > 0 && x[line] != destx[line]) \
{ \
x[line] += incx[line]; \
sx[line] += incx[line]; \
ex[line] -= dy[line]; \
}
Definition: bl.h:202
Definition: comerr.c:44
#define STEPCOL(a, b, line, col, id)
Definition: gradient.c:226
GLint dy
Definition: linetemp.h:97
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
Definition: bl.h:199
Definition: parser.c:48
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
Definition: bl.h:200
char line[200]
Definition: main.c:97
GLint dx
Definition: linetemp.h:97
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 266 of file gradient.c.

◆ ENDLINE

#define ENDLINE (   a,
  b,
  line 
)    }

Definition at line 282 of file gradient.c.

◆ FDOCOL

#define FDOCOL (   linefrom,
  lineto,
  colid 
)
Value:
ge[colid] += gd[colid]; \
while(ge[colid] > 0) \
{ \
gc[colid] += gi[colid]; \
ge[colid] -= gx; \
}

Definition at line 240 of file gradient.c.

◆ FILLLINE

#define FILLLINE (   linefrom,
  lineto 
)
Value:
gx = abs(sx[lineto] - sx[linefrom]); \
gxi = LINC[sx[linefrom] < sx[lineto]]; \
FINITCOL(linefrom, lineto, 0); \
FINITCOL(linefrom, lineto, 1); \
FINITCOL(linefrom, lineto, 2); \
for(g = sx[linefrom]; g != sx[lineto]; g += gxi) \
{ \
if(InY && g >= FillRect.left && g < FillRect.right) \
{ \
Color = XLATEOBJ_iXlate(pxlo, RGB(gc[0], gc[1], gc[2])); \
DibFunctionsForBitmapFormat[psoOutput->iBitmapFormat].DIB_PutPixel(psoOutput, g, sy, Color); \
} \
FDOCOL(linefrom, lineto, 0); \
FDOCOL(linefrom, lineto, 1); \
FDOCOL(linefrom, lineto, 2); \
}
#define abs(i)
Definition: fconv.c:206
GLboolean GLboolean g
Definition: glext.h:6204
#define RGB(r, g, b)
Definition: wingdi.h:2935
const LONG LINC[2]
Definition: gradient.c:16
ENGAPI ULONG APIENTRY XLATEOBJ_iXlate(_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)
Definition: xlateobj.c:664
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ * pxlo
Definition: winddi.h:3414

Definition at line 248 of file gradient.c.

◆ FINITCOL

#define FINITCOL (   linefrom,
  lineto,
  colid 
)
Value:
gc[colid] = c[linefrom][colid]; \
gd[colid] = abs(c[lineto][colid] - gc[colid]); \
ge[colid] = -(gx >> 1); \
gi[colid] = LINC[c[lineto][colid] > gc[colid]]
#define abs(i)
Definition: fconv.c:206
const GLubyte * c
Definition: glext.h:8905
const LONG LINC[2]
Definition: gradient.c:16

Definition at line 234 of file gradient.c.

◆ GOLINE

#define GOLINE (   a,
  b,
  line 
)
Value:
if(y >= a->y && y <= b->y) \
{
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 278 of file gradient.c.

◆ HVINITCOL

#define HVINITCOL (   Col,
  id 
)
Value:
c[id] = v1->Col >> 8; \
dc[id] = abs((v2->Col >> 8) - c[id]); \
ec[id] = -(dy >> 1); \
ic[id] = LINC[(v2->Col >> 8) > c[id]]
#define abs(i)
Definition: fconv.c:206
GLint dy
Definition: linetemp.h:97
const GLubyte * c
Definition: glext.h:8905
const LONG LINC[2]
Definition: gradient.c:16
GLfloat GLfloat GLfloat v2
Definition: glext.h:6063
GLenum GLuint id
Definition: glext.h:5579
GLfloat GLfloat v1
Definition: glext.h:6062

Definition at line 26 of file gradient.c.

◆ HVSTEPCOL

#define HVSTEPCOL (   id)
Value:
ec[id] += dc[id]; \
while(ec[id] > 0) \
{ \
c[id] += ic[id]; \
ec[id] -= dy; \
}
GLint dy
Definition: linetemp.h:97
HDC dc
Definition: cylfrac.c:34
GLenum GLuint id
Definition: glext.h:5579

Definition at line 31 of file gradient.c.

◆ INITCOL

#define INITCOL (   a,
  b,
  line,
  col,
  id 
)
Value:
c[line][id] = a->col >> 8; \
dc[line][id] = abs((b->col >> 8) - c[line][id]); \
ec[line][id] = -(dy[line]>>1); \
ic[line][id] = LINC[(b->col >> 8) > c[line][id]]
#define abs(i)
Definition: fconv.c:206
GLint dy
Definition: linetemp.h:97
Definition: parser.c:48
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
const GLubyte * c
Definition: glext.h:8905
char line[200]
Definition: main.c:97
const LONG LINC[2]
Definition: gradient.c:16
GLenum GLuint id
Definition: glext.h:5579
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 220 of file gradient.c.

◆ INITLINE

#define INITLINE (   a,
  b,
  line 
)
Value:
x[line] = a->x; \
sx[line] = a->x + pptlDitherOrg->x; \
dx[line] = abs(b->x - a->x); \
dy[line] = max(abs(b->y - a->y),1); \
incx[line] = LINC[b->x > a->x]; \
ex[line] = -(dy[line]>>1); \
destx[line] = b->x
#define abs(i)
Definition: fconv.c:206
#define max(a, b)
Definition: svc.c:63
GLint dy
Definition: linetemp.h:97
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
char line[200]
Definition: main.c:97
const LONG LINC[2]
Definition: gradient.c:16
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL _In_ POINTL * pptlDitherOrg
Definition: winddi.h:3649
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 285 of file gradient.c.

◆ NDEBUG

#define NDEBUG

Definition at line 11 of file gradient.c.

◆ NLINES

#define NLINES   3

Definition at line 306 of file gradient.c.

◆ S_DOLINE

#define S_DOLINE (   a,
  b,
  line 
)
Value:
ex[line] += dx[line]; \
while(ex[line] > 0 && x[line] != destx[line]) \
{ \
x[line] += incx[line]; \
sx[line] += incx[line]; \
ex[line] -= dy[line]; \
}
Definition: comerr.c:44
GLint dy
Definition: linetemp.h:97
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
Definition: parser.c:48
char line[200]
Definition: main.c:97
GLint dx
Definition: linetemp.h:97

Definition at line 194 of file gradient.c.

◆ S_ENDLINE

#define S_ENDLINE (   a,
  b,
  line 
)    }

Definition at line 207 of file gradient.c.

◆ S_FILLLINE

#define S_FILLLINE (   linefrom,
  lineto 
)
Value:
if(sx[lineto] < sx[linefrom]) \
DibFunctionsForBitmapFormat[psoOutput->iBitmapFormat].DIB_HLine(psoOutput, max(sx[lineto], FillRect.left), min(sx[linefrom], FillRect.right), sy, Color); \
else \
DibFunctionsForBitmapFormat[psoOutput->iBitmapFormat].DIB_HLine(psoOutput, max(sx[linefrom], FillRect.left), min(sx[lineto], FillRect.right), sy, Color);
#define max(a, b)
Definition: svc.c:63
#define min(a, b)
Definition: monoChain.cc:55
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)

Definition at line 188 of file gradient.c.

◆ S_GOLINE

#define S_GOLINE (   a,
  b,
  line 
)
Value:
if(y >= a->y && y <= b->y) \
{
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 203 of file gradient.c.

◆ S_INITLINE

#define S_INITLINE (   a,
  b,
  line 
)
Value:
x[line] = a->x; \
sx[line] = a->x + pptlDitherOrg->x; \
dx[line] = abs(b->x - a->x); \
dy[line] = abs(b->y - a->y); \
incx[line] = LINC[b->x > a->x]; \
ex[line] = -(dy[line]>>1); \
destx[line] = b->x
#define abs(i)
Definition: fconv.c:206
GLint dy
Definition: linetemp.h:97
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
char line[200]
Definition: main.c:97
const LONG LINC[2]
Definition: gradient.c:16
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL _In_ POINTL * pptlDitherOrg
Definition: winddi.h:3649
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 210 of file gradient.c.

◆ SMALLER

#define SMALLER (   a,
  b 
)    (a->y < b->y) || (a->y == b->y && a->x < b->x)

Definition at line 300 of file gradient.c.

◆ STEPCOL

#define STEPCOL (   a,
  b,
  line,
  col,
  id 
)
Value:
ec[line][id] += dc[line][id]; \
while(ec[line][id] > 0) \
{ \
c[line][id] += ic[line][id]; \
ec[line][id] -= dy[line]; \
}
GLint dy
Definition: linetemp.h:97
HDC dc
Definition: cylfrac.c:34
Definition: parser.c:48
char line[200]
Definition: main.c:97
GLenum GLuint id
Definition: glext.h:5579

Definition at line 226 of file gradient.c.

◆ SWAP

#define SWAP (   a,
  b,
  c 
)
Value:
c = a;\
a = b;\
b = c
#define a
Definition: ke_i.h:78
#define b
Definition: ke_i.h:79
const GLubyte * c
Definition: glext.h:8905

Definition at line 302 of file gradient.c.

◆ VCMPCLR

#define VCMPCLR (   a,
  b,
  c,
  color 
)    (a->color != b->color || a->color != c->color)

Definition at line 21 of file gradient.c.

◆ VCMPCLRS

#define VCMPCLRS (   a,
  b,
  c 
)    !(!VCMPCLR(a,b,c,Red) || !VCMPCLR(a,b,c,Green) || !VCMPCLR(a,b,c,Blue))

Definition at line 22 of file gradient.c.

◆ VERTEX

#define VERTEX (   n)    (pVertex + gt->n)

Definition at line 18 of file gradient.c.

Function Documentation

◆ EngGradientFill()

BOOL APIENTRY EngGradientFill ( _Inout_ SURFOBJ psoDest,
_In_ CLIPOBJ pco,
_In_opt_ XLATEOBJ pxlo,
_In_ TRIVERTEX pVertex,
_In_ ULONG  nVertex,
_In_ PVOID  pMesh,
_In_ ULONG  nMesh,
_In_ RECTL prclExtents,
_In_ POINTL pptlDitherOrg,
_In_ ULONG  ulMode 
)

Definition at line 475 of file gradient.c.

486 {
487  ULONG i;
488  BOOL ret = FALSE;
489 
490  /* Check for NULL clip object */
491  if (pco == NULL)
492  {
493  /* Use the trivial one instead */
494  pco = (CLIPOBJ *)&gxcoTrivial;//.coClient;
495  }
496 
497  switch(ulMode)
498  {
499  case GRADIENT_FILL_RECT_H:
500  case GRADIENT_FILL_RECT_V:
501  {
503  for (i = 0; i < nMesh; i++, gr++)
504  {
505  if (!IntEngGradientFillRect(psoDest,
506  pco,
507  pxlo,
508  pVertex,
509  nVertex,
510  gr,
511  prclExtents,
513  (ulMode == GRADIENT_FILL_RECT_H)))
514  {
515  break;
516  }
517  }
518  ret = TRUE;
519  break;
520  }
521  case GRADIENT_FILL_TRIANGLE:
522  {
524  for (i = 0; i < nMesh; i++, gt++)
525  {
526  if (IntEngIsNULLTriangle(pVertex, gt))
527  {
528  /* skip empty triangles */
529  continue;
530  }
531  if (!IntEngGradientFillTriangle(psoDest,
532  pco,
533  pxlo,
534  pVertex,
535  nVertex,
536  gt,
537  prclExtents,
538  pptlDitherOrg))
539  {
540  break;
541  }
542  }
543  ret = TRUE;
544  break;
545  }
546  }
547 
548  return ret;
549 }
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG nMesh
Definition: winddi.h:3649
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID pMesh
Definition: winddi.h:3649
#define TRUE
Definition: types.h:120
XCLIPOBJ gxcoTrivial
Definition: bitblt.c:15
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL * prclExtents
Definition: winddi.h:3649
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
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
struct _GRADIENT_RECT * PGRADIENT_RECT
smooth NULL
Definition: ftsmooth.c:416
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX * pVertex
Definition: winddi.h:3649
int ret
_In_ SURFOBJ _In_ CLIPOBJ * pco
Definition: winddi.h:3414
BOOL FASTCALL IntEngGradientFillTriangle(IN SURFOBJ *psoDest, IN CLIPOBJ *pco, IN XLATEOBJ *pxlo, IN TRIVERTEX *pVertex, IN ULONG nVertex, IN PGRADIENT_TRIANGLE gTriangle, IN RECTL *prclExtents, IN POINTL *pptlDitherOrg)
Definition: gradient.c:310
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL _In_ POINTL _In_ ULONG ulMode
Definition: winddi.h:3649
BOOL FASTCALL IntEngGradientFillRect(IN SURFOBJ *psoDest, IN CLIPOBJ *pco, IN XLATEOBJ *pxlo, IN TRIVERTEX *pVertex, IN ULONG nVertex, IN PGRADIENT_RECT gRect, IN RECTL *prclExtents, IN POINTL *pptlDitherOrg, IN BOOL Horizontal)
Definition: gradient.c:43
unsigned int ULONG
Definition: retypes.h:1
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG nVertex
Definition: winddi.h:3649
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL _In_ POINTL * pptlDitherOrg
Definition: winddi.h:3649
static BOOL IntEngIsNULLTriangle(TRIVERTEX *pVertex, GRADIENT_TRIANGLE *gt)
Definition: gradient.c:461
struct _GRADIENT_TRIANGLE * PGRADIENT_TRIANGLE
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ * pxlo
Definition: winddi.h:3414

Referenced by IntEngGradientFill().

◆ IntEngGradientFill()

BOOL APIENTRY IntEngGradientFill ( IN SURFOBJ psoDest,
IN CLIPOBJ pco,
IN XLATEOBJ pxlo,
IN TRIVERTEX pVertex,
IN ULONG  nVertex,
IN PVOID  pMesh,
IN ULONG  nMesh,
IN RECTL prclExtents,
IN POINTL pptlDitherOrg,
IN ULONG  ulMode 
)

Definition at line 553 of file gradient.c.

564 {
565  BOOL Ret;
566  SURFACE *psurf;
567  ASSERT(psoDest);
568 
569  psurf = CONTAINING_RECORD(psoDest, SURFACE, SurfObj);
570  ASSERT(psurf);
571 
572  if (psurf->flags & HOOK_GRADIENTFILL)
573  {
574  Ret = GDIDEVFUNCS(psoDest).GradientFill(psoDest,
575  pco,
576  pxlo,
577  pVertex,
578  nVertex,
579  pMesh,
580  nMesh,
581  prclExtents,
583  ulMode);
584  }
585  else
586  {
587  Ret = EngGradientFill(psoDest,
588  pco,
589  pxlo,
590  pVertex,
591  nVertex,
592  pMesh,
593  nMesh,
594  prclExtents,
596  ulMode);
597  }
598 
599  return Ret;
600 }
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG nMesh
Definition: winddi.h:3649
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID pMesh
Definition: winddi.h:3649
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL * prclExtents
Definition: winddi.h:3649
#define HOOK_GRADIENTFILL
Definition: winddi.h:1436
unsigned int BOOL
Definition: ntddk_ex.h:94
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX * pVertex
Definition: winddi.h:3649
#define GDIDEVFUNCS(SurfObj)
Definition: surface.h:106
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
_In_ SURFOBJ _In_ CLIPOBJ * pco
Definition: winddi.h:3414
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL _In_ POINTL _In_ ULONG ulMode
Definition: winddi.h:3649
FLONG flags
Definition: surface.h:10
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG nVertex
Definition: winddi.h:3649
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL _In_ POINTL * pptlDitherOrg
Definition: winddi.h:3649
BOOL APIENTRY EngGradientFill(_Inout_ SURFOBJ *psoDest, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ TRIVERTEX *pVertex, _In_ ULONG nVertex, _In_ PVOID pMesh, _In_ ULONG nMesh, _In_ RECTL *prclExtents, _In_ POINTL *pptlDitherOrg, _In_ ULONG ulMode)
Definition: gradient.c:475
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ * pxlo
Definition: winddi.h:3414

Referenced by GreGradientFill().

◆ IntEngGradientFillRect()

BOOL FASTCALL IntEngGradientFillRect ( IN SURFOBJ psoDest,
IN CLIPOBJ pco,
IN XLATEOBJ pxlo,
IN TRIVERTEX pVertex,
IN ULONG  nVertex,
IN PGRADIENT_RECT  gRect,
IN RECTL prclExtents,
IN POINTL pptlDitherOrg,
IN BOOL  Horizontal 
)

Definition at line 43 of file gradient.c.

53 {
54  SURFOBJ *psoOutput;
55  TRIVERTEX *v1, *v2;
56  RECTL rcGradient, rcSG;
57  RECT_ENUM RectEnum;
58  BOOL EnumMore;
59  ULONG i;
60  POINTL Translate;
61  INTENG_ENTER_LEAVE EnterLeave;
62  LONG y, dy, c[3], dc[3], ec[3], ic[3];
63 
64  v1 = (pVertex + gRect->UpperLeft);
65  v2 = (pVertex + gRect->LowerRight);
66 
67  rcGradient.left = min(v1->x, v2->x);
68  rcGradient.right = max(v1->x, v2->x);
69  rcGradient.top = min(v1->y, v2->y);
70  rcGradient.bottom = max(v1->y, v2->y);
71  rcSG = rcGradient;
73 
74  if(Horizontal)
75  {
76  dy = abs(rcGradient.right - rcGradient.left);
77  }
78  else
79  {
80  dy = abs(rcGradient.bottom - rcGradient.top);
81  }
82 
83  if(!IntEngEnter(&EnterLeave, psoDest, &rcSG, FALSE, &Translate, &psoOutput))
84  {
85  return FALSE;
86  }
87 
88  if((v1->Red != v2->Red || v1->Green != v2->Green || v1->Blue != v2->Blue) && dy > 1)
89  {
91  do
92  {
94  ULONG Color;
95 
96  if (Horizontal)
97  {
98  EnumMore = CLIPOBJ_bEnum(pco, (ULONG) sizeof(RectEnum), (PVOID) &RectEnum);
99  for (i = 0; i < RectEnum.c && RectEnum.arcl[i].top <= rcSG.bottom; i++)
100  {
101  if (RECTL_bIntersectRect(&FillRect, &RectEnum.arcl[i], &rcSG))
102  {
103  HVINITCOL(Red, 0);
104  HVINITCOL(Green, 1);
105  HVINITCOL(Blue, 2);
106 
107  for (y = rcSG.left; y < FillRect.right; y++)
108  {
109  if (y >= FillRect.left)
110  {
111  Color = XLATEOBJ_iXlate(pxlo, RGB(c[0], c[1], c[2]));
113  psoOutput, y + Translate.x, FillRect.top + Translate.y, FillRect.bottom + Translate.y, Color);
114  }
115  HVSTEPCOL(0);
116  HVSTEPCOL(1);
117  HVSTEPCOL(2);
118  }
119  }
120  }
121 
122  continue;
123  }
124 
125  /* vertical */
126  EnumMore = CLIPOBJ_bEnum(pco, (ULONG) sizeof(RectEnum), (PVOID) &RectEnum);
127  for (i = 0; i < RectEnum.c && RectEnum.arcl[i].top <= rcSG.bottom; i++)
128  {
129  if (RECTL_bIntersectRect(&FillRect, &RectEnum.arcl[i], &rcSG))
130  {
131  HVINITCOL(Red, 0);
132  HVINITCOL(Green, 1);
133  HVINITCOL(Blue, 2);
134 
135  for (y = rcSG.top; y < FillRect.bottom; y++)
136  {
137  if (y >= FillRect.top)
138  {
139  Color = XLATEOBJ_iXlate(pxlo, RGB(c[0], c[1], c[2]));
141  FillRect.left + Translate.x,
142  FillRect.right + Translate.x,
143  y + Translate.y,
144  Color);
145  }
146  HVSTEPCOL(0);
147  HVSTEPCOL(1);
148  HVSTEPCOL(2);
149  }
150  }
151  }
152 
153  }
154  while (EnumMore);
155 
156  return IntEngLeave(&EnterLeave);
157  }
158 
159  /* rectangle has only one color, no calculation required */
161  do
162  {
163  RECTL FillRect;
164  ULONG Color = XLATEOBJ_iXlate(pxlo, RGB(v1->Red >> 8, v1->Green >> 8, v1->Blue >> 8));
165 
166  EnumMore = CLIPOBJ_bEnum(pco, (ULONG) sizeof(RectEnum), (PVOID) &RectEnum);
167  for (i = 0; i < RectEnum.c && RectEnum.arcl[i].top <= rcSG.bottom; i++)
168  {
169  if (RECTL_bIntersectRect(&FillRect, &RectEnum.arcl[i], &rcSG))
170  {
171  for (; FillRect.top < FillRect.bottom; FillRect.top++)
172  {
174  FillRect.left + Translate.x,
175  FillRect.right + Translate.x,
176  FillRect.top + Translate.y,
177  Color);
178  }
179  }
180  }
181  }
182  while (EnumMore);
183 
184  return IntEngLeave(&EnterLeave);
185 }
#define abs(i)
Definition: fconv.c:206
Definition: bl.h:202
#define HVSTEPCOL(id)
Definition: gradient.c:31
#define max(a, b)
Definition: svc.c:63
GLint dy
Definition: linetemp.h:97
long bottom
Definition: polytest.cpp:53
HDC dc
Definition: cylfrac.c:34
Definition: bl.h:199
ULONG iBitmapFormat
Definition: winddi.h:1215
ULONG c
Definition: vgaddi.h:78
struct Color Color
LONG y
Definition: windef.h:315
long right
Definition: polytest.cpp:53
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
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
#define CD_RIGHTDOWN
Definition: winddi.h:1320
long top
Definition: polytest.cpp:53
#define CT_RECTANGLES
Definition: winddi.h:1317
long left
Definition: polytest.cpp:53
#define HVINITCOL(Col, id)
Definition: gradient.c:26
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX * pVertex
Definition: winddi.h:3649
ENGAPI ULONG APIENTRY CLIPOBJ_cEnumStart(_Inout_ CLIPOBJ *pco, _In_ BOOL bAll, _In_ ULONG iType, _In_ ULONG iDirection, _In_ ULONG cLimit)
Definition: clip.c:255
#define RGB(r, g, b)
Definition: wingdi.h:2935
const GLubyte * c
Definition: glext.h:8905
BOOL FASTCALL RECTL_bIntersectRect(_Out_ RECTL *prclDst, _In_ const RECTL *prcl1, _In_ const RECTL *prcl2)
Definition: rect.c:55
LONG x
Definition: windef.h:314
BOOL APIENTRY IntEngEnter(PINTENG_ENTER_LEAVE EnterLeave, SURFOBJ *psoDest, RECTL *DestRect, BOOL ReadOnly, POINTL *Translate, SURFOBJ **ppsoOutput)
Definition: engmisc.c:15
Definition: bl.h:200
PFN_DIB_VLine DIB_VLine
Definition: dib.h:48
_In_ SURFOBJ _In_ CLIPOBJ * pco
Definition: winddi.h:3414
PFN_DIB_HLine DIB_HLine
Definition: dib.h:47
RECTL arcl[ENUM_RECT_LIMIT]
Definition: vgaddi.h:79
GLfloat GLfloat GLfloat v2
Definition: glext.h:6063
FORCEINLINE VOID RECTL_vOffsetRect(_Inout_ RECTL *prcl, _In_ INT cx, _In_ INT cy)
Definition: rect.h:31
DIB_FUNCTIONS DibFunctionsForBitmapFormat[]
Definition: dib.c:20
#define min(a, b)
Definition: monoChain.cc:55
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
unsigned int ULONG
Definition: retypes.h:1
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL _In_ POINTL * pptlDitherOrg
Definition: winddi.h:3649
BOOL APIENTRY IntEngLeave(PINTENG_ENTER_LEAVE EnterLeave)
Definition: engmisc.c:162
ENGAPI ULONG APIENTRY XLATEOBJ_iXlate(_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)
Definition: xlateobj.c:664
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
GLfloat GLfloat v1
Definition: glext.h:6062
ENGAPI BOOL APIENTRY CLIPOBJ_bEnum(_In_ CLIPOBJ *pco, _In_ ULONG cj, _Out_bytecap_(cj) ULONG *pul)
Definition: clip.c:319
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ * pxlo
Definition: winddi.h:3414

Referenced by EngGradientFill().

◆ IntEngGradientFillTriangle()

BOOL FASTCALL IntEngGradientFillTriangle ( IN SURFOBJ psoDest,
IN CLIPOBJ pco,
IN XLATEOBJ pxlo,
IN TRIVERTEX pVertex,
IN ULONG  nVertex,
IN PGRADIENT_TRIANGLE  gTriangle,
IN RECTL prclExtents,
IN POINTL pptlDitherOrg 
)

Definition at line 310 of file gradient.c.

319 {
320  SURFOBJ *psoOutput;
321  PTRIVERTEX v1, v2, v3;
322  RECT_ENUM RectEnum;
323  BOOL EnumMore;
324  ULONG i;
325  POINTL Translate;
326  INTENG_ENTER_LEAVE EnterLeave;
327  RECTL FillRect = { 0, 0, 0, 0 };
328  ULONG Color;
329 
330  BOOL sx[NLINES];
331  LONG x[NLINES], dx[NLINES], dy[NLINES], incx[NLINES], ex[NLINES], destx[NLINES];
332  LONG c[NLINES][3], dc[NLINES][3], ec[NLINES][3], ic[NLINES][3]; /* colors on lines */
333  LONG g, gx, gxi, gc[3], gd[3], ge[3], gi[3]; /* colors in triangle */
334  LONG sy, y, bt;
335 
336  v1 = (pVertex + gTriangle->Vertex1);
337  v2 = (pVertex + gTriangle->Vertex2);
338  v3 = (pVertex + gTriangle->Vertex3);
339 
340  /* bubble sort */
341  if (SMALLER(v2, v1))
342  {
343  TRIVERTEX *t;
344  SWAP(v1, v2, t);
345  }
346 
347  if (SMALLER(v3, v2))
348  {
349  TRIVERTEX *t;
350  SWAP(v2, v3, t);
351  if (SMALLER(v2, v1))
352  {
353  SWAP(v1, v2, t);
354  }
355  }
356 
357  DPRINT("Triangle: (%i,%i) (%i,%i) (%i,%i)\n", v1->x, v1->y, v2->x, v2->y, v3->x, v3->y);
358  /* FIXME: commented out because of an endless loop - fix triangles first */
359  DPRINT("FIXME: IntEngGradientFillTriangle is broken\n");
360 
361  if (!IntEngEnter(&EnterLeave, psoDest, &FillRect, FALSE, &Translate, &psoOutput))
362  {
363  return FALSE;
364  }
365 
366  if (VCMPCLRS(v1, v2, v3))
367  {
369  do
370  {
371  EnumMore = CLIPOBJ_bEnum(pco, (ULONG) sizeof(RectEnum), (PVOID) &RectEnum);
372  for (i = 0; i < RectEnum.c && RectEnum.arcl[i].top <= prclExtents->bottom; i++)
373  {
374  if (RECTL_bIntersectRect(&FillRect, &RectEnum.arcl[i], prclExtents))
375  {
376  BOOL InY;
377 
378  DOINIT(v1, v3, 0);
379  DOINIT(v1, v2, 1);
380  DOINIT(v2, v3, 2);
381 
382  y = v1->y;
383  sy = v1->y + pptlDitherOrg->y;
384  bt = min(v3->y + pptlDitherOrg->y, FillRect.bottom);
385 
386  while (sy < bt)
387  {
388  InY = !(sy < FillRect.top || sy >= FillRect.bottom);
389  GOLINE(v1, v3, 0);
390  DOLINE(v1, v3, 0);
391  ENDLINE(v1, v3, 0);
392 
393  GOLINE(v1, v2, 1);
394  DOLINE(v1, v2, 1);
395  FILLLINE(0, 1);
396  ENDLINE(v1, v2, 1);
397 
398  GOLINE(v2, v3, 2);
399  DOLINE(v2, v3, 2);
400  FILLLINE(0, 2);
401  ENDLINE(23, v3, 2);
402 
403  y++;
404  sy++;
405  }
406  }
407  }
408  } while (EnumMore);
409 
410  return IntEngLeave(&EnterLeave);
411  }
412 
413  /* fill triangle with one solid color */
414 
415  Color = XLATEOBJ_iXlate(pxlo, RGB(v1->Red >> 8, v1->Green >> 8, v1->Blue >> 8));
417  do
418  {
419  EnumMore = CLIPOBJ_bEnum(pco, (ULONG) sizeof(RectEnum), (PVOID) &RectEnum);
420  for (i = 0; i < RectEnum.c && RectEnum.arcl[i].top <= prclExtents->bottom; i++)
421  {
422  if (RECTL_bIntersectRect(&FillRect, &RectEnum.arcl[i], prclExtents))
423  {
424  S_INITLINE(v1, v3, 0);
425  S_INITLINE(v1, v2, 1);
426  S_INITLINE(v2, v3, 2);
427 
428  y = v1->y;
429  sy = v1->y + pptlDitherOrg->y;
430  bt = min(v3->y + pptlDitherOrg->y, FillRect.bottom);
431 
432  while (sy < bt)
433  {
434  S_GOLINE(v1, v3, 0);
435  S_DOLINE(v1, v3, 0);
436  S_ENDLINE(v1, v3, 0);
437 
438  S_GOLINE(v1, v2, 1);
439  S_DOLINE(v1, v2, 1);
440  S_FILLLINE(0, 1);
441  S_ENDLINE(v1, v2, 1);
442 
443  S_GOLINE(v2, v3, 2);
444  S_DOLINE(v2, v3, 2);
445  S_FILLLINE(0, 2);
446  S_ENDLINE(23, v3, 2);
447 
448  y++;
449  sy++;
450  }
451  }
452  }
453  } while (EnumMore);
454 
455  return IntEngLeave(&EnterLeave);
456 }
#define S_ENDLINE(a, b, line)
Definition: gradient.c:207
Definition: comerr.c:44
#define FILLLINE(linefrom, lineto)
Definition: gradient.c:248
#define SWAP(a, b, c)
Definition: gradient.c:302
#define DOINIT(a, b, line)
Definition: gradient.c:294
GLint dy
Definition: linetemp.h:97
GLdouble GLdouble t
Definition: gl.h:2047
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
HDC dc
Definition: cylfrac.c:34
ULONG c
Definition: vgaddi.h:78
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL * prclExtents
Definition: winddi.h:3649
struct Color Color
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
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
#define CD_RIGHTDOWN
Definition: winddi.h:1320
long top
Definition: polytest.cpp:53
#define VCMPCLRS(a, b, c)
Definition: gradient.c:22
#define S_FILLLINE(linefrom, lineto)
Definition: gradient.c:188
#define CT_RECTANGLES
Definition: winddi.h:1317
void DPRINT(...)
Definition: polytest.cpp:61
#define S_GOLINE(a, b, line)
Definition: gradient.c:203
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX * pVertex
Definition: winddi.h:3649
GLboolean GLboolean g
Definition: glext.h:6204
ENGAPI ULONG APIENTRY CLIPOBJ_cEnumStart(_Inout_ CLIPOBJ *pco, _In_ BOOL bAll, _In_ ULONG iType, _In_ ULONG iDirection, _In_ ULONG cLimit)
Definition: clip.c:255
#define RGB(r, g, b)
Definition: wingdi.h:2935
const GLubyte * c
Definition: glext.h:8905
BOOL FASTCALL RECTL_bIntersectRect(_Out_ RECTL *prclDst, _In_ const RECTL *prcl1, _In_ const RECTL *prcl2)
Definition: rect.c:55
BOOL APIENTRY IntEngEnter(PINTENG_ENTER_LEAVE EnterLeave, SURFOBJ *psoDest, RECTL *DestRect, BOOL ReadOnly, POINTL *Translate, SURFOBJ **ppsoOutput)
Definition: engmisc.c:15
#define NLINES
Definition: gradient.c:306
#define ENDLINE(a, b, line)
Definition: gradient.c:282
_In_ SURFOBJ _In_ CLIPOBJ * pco
Definition: winddi.h:3414
GLfloat GLfloat GLfloat GLfloat v3
Definition: glext.h:6064
RECTL arcl[ENUM_RECT_LIMIT]
Definition: vgaddi.h:79
GLfloat GLfloat GLfloat v2
Definition: glext.h:6063
#define DOLINE(a, b, line)
Definition: gradient.c:266
#define S_INITLINE(a, b, line)
Definition: gradient.c:210
#define min(a, b)
Definition: monoChain.cc:55
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLint dx
Definition: linetemp.h:97
unsigned int ULONG
Definition: retypes.h:1
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL _In_ POINTL * pptlDitherOrg
Definition: winddi.h:3649
BOOL APIENTRY IntEngLeave(PINTENG_ENTER_LEAVE EnterLeave)
Definition: engmisc.c:162
#define S_DOLINE(a, b, line)
Definition: gradient.c:194
ENGAPI ULONG APIENTRY XLATEOBJ_iXlate(_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)
Definition: xlateobj.c:664
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
GLfloat GLfloat v1
Definition: glext.h:6062
#define GOLINE(a, b, line)
Definition: gradient.c:278
ENGAPI BOOL APIENTRY CLIPOBJ_bEnum(_In_ CLIPOBJ *pco, _In_ ULONG cj, _Out_bytecap_(cj) ULONG *pul)
Definition: clip.c:319
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ * pxlo
Definition: winddi.h:3414
#define SMALLER(a, b)
Definition: gradient.c:300

Referenced by EngGradientFill().

◆ IntEngIsNULLTriangle()

static BOOL IntEngIsNULLTriangle ( TRIVERTEX pVertex,
GRADIENT_TRIANGLE gt 
)
static

Definition at line 461 of file gradient.c.

462 {
463  if(COMPAREVERTEX(VERTEX(Vertex1), VERTEX(Vertex2)))
464  return TRUE;
465  if(COMPAREVERTEX(VERTEX(Vertex1), VERTEX(Vertex3)))
466  return TRUE;
467  if(COMPAREVERTEX(VERTEX(Vertex2), VERTEX(Vertex3)))
468  return TRUE;
469  return FALSE;
470 }
#define TRUE
Definition: types.h:120
#define COMPAREVERTEX(a, b)
Definition: gradient.c:19
#define VERTEX(n)
Definition: gradient.c:18

Referenced by EngGradientFill().

Variable Documentation

◆ LINC

const LONG LINC[2] = {-1, 1}

Definition at line 16 of file gradient.c.