ReactOS  0.4.15-dev-3295-gaa8fc87
painting.c File Reference
#include <precomp.h>
Include dependency graph for painting.c:

Go to the source code of this file.

Functions

BOOL WINAPI LineTo (_In_ HDC hdc, _In_ INT x, _In_ INT y)
 
BOOL WINAPI MoveToEx (_In_ HDC hdc, _In_ INT x, _In_ INT y, _Out_opt_ LPPOINT ppt)
 
BOOL WINAPI Ellipse (_In_ HDC hdc, _In_ INT left, _In_ INT top, _In_ INT right, _In_ INT bottom)
 
BOOL WINAPI Rectangle (_In_ HDC hdc, _In_ INT left, _In_ INT top, _In_ INT right, _In_ INT bottom)
 
BOOL WINAPI RoundRect (_In_ HDC hdc, _In_ INT left, _In_ INT top, _In_ INT right, _In_ INT bottom, _In_ INT width, _In_ INT height)
 
COLORREF WINAPI GetPixel (_In_ HDC hdc, _In_ INT x, _In_ INT y)
 
COLORREF WINAPI SetPixel (_In_ HDC hdc, _In_ INT x, _In_ INT y, _In_ COLORREF crColor)
 
BOOL WINAPI SetPixelV (_In_ HDC hdc, _In_ INT x, _In_ INT y, _In_ COLORREF crColor)
 
BOOL WINAPI FillRgn (_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbr)
 
BOOL WINAPI FrameRgn (_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbr, _In_ INT nWidth, _In_ INT nHeight)
 
BOOL WINAPI InvertRgn (_In_ HDC hdc, _In_ HRGN hrgn)
 
BOOL WINAPI PaintRgn (_In_ HDC hdc, _In_ HRGN hrgn)
 
BOOL WINAPI PolyBezier (_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
 
BOOL WINAPI PolyBezierTo (_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
 
BOOL WINAPI PolyDraw (_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_reads_(cpt) const BYTE *aj, _In_ INT cpt)
 
BOOL WINAPI Polygon (_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ INT cpt)
 
BOOL WINAPI Polyline (_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ INT cpt)
 
BOOL WINAPI PolylineTo (_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
 
BOOL WINAPI PolyPolygon (_In_ HDC hdc, _In_ const POINT *apt, _In_reads_(csz) const INT *asz, _In_ INT csz)
 
BOOL WINAPI PolyPolyline (_In_ HDC hdc, _In_ CONST POINT *apt, _In_reads_(csz) CONST DWORD *asz, _In_ DWORD csz)
 
BOOL WINAPI ExtFloodFill (_In_ HDC hdc, _In_ INT xStart, _In_ INT yStart, _In_ COLORREF crFill, _In_ UINT fuFillType)
 
BOOL WINAPI FloodFill (_In_ HDC hdc, _In_ INT xStart, _In_ INT yStart, _In_ COLORREF crFill)
 
BOOL WINAPI BitBlt (_In_ HDC hdcDest, _In_ INT xDest, _In_ INT yDest, _In_ INT cx, _In_ INT cy, _In_opt_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ DWORD dwRop)
 
BOOL WINAPI PatBlt (_In_ HDC hdc, _In_ INT nXLeft, _In_ INT nYLeft, _In_ INT nWidth, _In_ INT nHeight, _In_ DWORD dwRop)
 
BOOL WINAPI PolyPatBlt (_In_ HDC hdc, _In_ DWORD dwRop, _In_ PPOLYPATBLT pPoly, _In_ DWORD nCount, _In_ DWORD dwMode)
 
BOOL WINAPI StretchBlt (_In_ HDC hdcDest, _In_ INT xDest, _In_ INT yDest, _In_ INT cxDest, _In_ INT cyDest, _In_opt_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ INT cxSrc, _In_ INT cySrc, _In_ DWORD dwRop)
 
BOOL WINAPI MaskBlt (_In_ HDC hdcDest, _In_ INT xDest, _In_ INT yDest, _In_ INT cx, _In_ INT cy, _In_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ HBITMAP hbmMask, _In_ INT xMask, _In_ INT yMask, _In_ DWORD dwRop)
 
BOOL WINAPI PlgBlt (_In_ HDC hdcDest, _In_reads_(3) const POINT *ppt, _In_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ INT cx, _In_ INT cy, _In_opt_ HBITMAP hbmMask, _In_ INT xMask, _In_ INT yMask)
 
BOOL WINAPI GdiAlphaBlend (_In_ HDC hdcDst, _In_ INT xDst, _In_ INT yDst, _In_ INT cxDst, _In_ INT cyDst, _In_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ INT cxSrc, _In_ INT cySrc, _In_ BLENDFUNCTION blendfn)
 
BOOL WINAPI GdiTransparentBlt (_In_ HDC hdcDst, _In_ INT xDst, _In_ INT yDst, _In_ INT cxDst, _In_ INT cyDst, _In_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ INT cxSrc, _In_ INT cySrc, _In_ UINT crTransparent)
 
BOOL WINAPI GdiGradientFill (_In_ HDC hdc, _In_reads_(nVertex) PTRIVERTEX pVertex, _In_ ULONG nVertex, _In_ PVOID pMesh, _In_ ULONG nCount, _In_ ULONG ulMode)
 

Function Documentation

◆ BitBlt()

BOOL WINAPI BitBlt ( _In_ HDC  hdcDest,
_In_ INT  xDest,
_In_ INT  yDest,
_In_ INT  cx,
_In_ INT  cy,
_In_opt_ HDC  hdcSrc,
_In_ INT  xSrc,
_In_ INT  ySrc,
_In_ DWORD  dwRop 
)

Definition at line 447 of file painting.c.

457 {
458  /* Use PatBlt for no source blt, like windows does */
459  if (!ROP_USES_SOURCE(dwRop))
460  {
461  return PatBlt(hdcDest, xDest, yDest, cx, cy, dwRop);
462  }
463 
464  /* For meta DCs we use StretchBlt via emfdc.c */
466  BitBlt,
467  FALSE,
468  hdcDest,
469  xDest,
470  yDest,
471  cx,
472  cy,
473  hdcSrc,
474  xSrc,
475  ySrc,
476  dwRop);
477 
478  if ( GdiConvertAndCheckDC(hdcDest) == NULL ) return FALSE;
479 
480  return NtGdiBitBlt(hdcDest, xDest, yDest, cx, cy, hdcSrc, xSrc, ySrc, dwRop, 0, 0);
481 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
BOOL WINAPI PatBlt(_In_ HDC hdc, _In_ INT nXLeft, _In_ INT nYLeft, _In_ INT nWidth, _In_ INT nHeight, _In_ DWORD dwRop)
Definition: painting.c:485
static HDC hdcSrc
Definition: xlate.c:32
BOOL WINAPI BitBlt(_In_ HDC hdcDest, _In_ INT xDest, _In_ INT yDest, _In_ INT cx, _In_ INT cy, _In_opt_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ DWORD dwRop)
Definition: painting.c:447
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:585
__kernel_entry W32KAPI BOOL APIENTRY NtGdiBitBlt(_In_ HDC hdcDst, _In_ INT x, _In_ INT y, _In_ INT cx, _In_ INT cy, _In_opt_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ DWORD rop4, _In_ DWORD crBackColor, _In_ FLONG fl)
#define ROP_USES_SOURCE(Rop)
Definition: gdi32p.h:88
#define NULL
Definition: types.h:112
_Out_opt_ int * cx
Definition: commctrl.h:585

◆ Ellipse()

BOOL WINAPI Ellipse ( _In_ HDC  hdc,
_In_ INT  left,
_In_ INT  top,
_In_ INT  right,
_In_ INT  bottom 
)

Definition at line 71 of file painting.c.

77 {
79 
80  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
81 
82  return NtGdiEllipse(hdc, left, top, right, bottom);
83 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
GLint GLint bottom
Definition: glext.h:7726
GLint left
Definition: glext.h:7726
GLdouble GLdouble right
Definition: glext.h:10859
BOOL WINAPI Ellipse(_In_ HDC hdc, _In_ INT left, _In_ INT top, _In_ INT right, _In_ INT bottom)
Definition: painting.c:71
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112
__kernel_entry W32KAPI BOOL APIENTRY NtGdiEllipse(_In_ HDC hdc, _In_ INT xLeft, _In_ INT yTop, _In_ INT xRight, _In_ INT yBottom)
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859

◆ ExtFloodFill()

BOOL WINAPI ExtFloodFill ( _In_ HDC  hdc,
_In_ INT  xStart,
_In_ INT  yStart,
_In_ COLORREF  crFill,
_In_ UINT  fuFillType 
)

Definition at line 413 of file painting.c.

419 {
420  HANDLE_METADC(BOOL, ExtFloodFill, FALSE, hdc, xStart, yStart, crFill, fuFillType);
421 
422  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
423 
424  return NtGdiExtFloodFill(hdc, xStart, yStart, crFill, fuFillType);
425 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
HDC hdc
Definition: main.c:9
BOOL WINAPI ExtFloodFill(_In_ HDC hdc, _In_ INT xStart, _In_ INT yStart, _In_ COLORREF crFill, _In_ UINT fuFillType)
Definition: painting.c:413
#define NULL
Definition: types.h:112
__kernel_entry W32KAPI BOOL APIENTRY NtGdiExtFloodFill(_In_ HDC hdc, _In_ INT x, _In_ INT y, _In_ COLORREF crColor, _In_ UINT iFillType)

Referenced by FloodFill().

◆ FillRgn()

BOOL WINAPI FillRgn ( _In_ HDC  hdc,
_In_ HRGN  hrgn,
_In_ HBRUSH  hbr 
)

Definition at line 183 of file painting.c.

187 {
188 
189  if ((hrgn == NULL) || (hbr == NULL))
190  return FALSE;
191 
193 
194  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
195 
196  return NtGdiFillRgn(hdc, hrgn, hbr);
197 }
BOOL WINAPI FillRgn(_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbr)
Definition: painting.c:183
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
__kernel_entry W32KAPI BOOL APIENTRY NtGdiFillRgn(_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbrush)
Definition: bitblt.c:1295
HDC hdc
Definition: main.c:9
static HRGN hrgn
Definition: win.c:55
#define NULL
Definition: types.h:112

Referenced by HEADER_DrawItem(), CardWindow::PaintCardRgn(), PaintRgn(), PlayEnhMetaFileRecord(), PlayMetaFileRecord(), print_preview(), Test_FrameRgn(), and TOOLTIPS_Refresh().

◆ FloodFill()

BOOL WINAPI FloodFill ( _In_ HDC  hdc,
_In_ INT  xStart,
_In_ INT  yStart,
_In_ COLORREF  crFill 
)

Definition at line 433 of file painting.c.

438 {
439  return ExtFloodFill(hdc, xStart, yStart, crFill, FLOODFILLBORDER);
440 }
HDC hdc
Definition: main.c:9
BOOL WINAPI ExtFloodFill(_In_ HDC hdc, _In_ INT xStart, _In_ INT yStart, _In_ COLORREF crFill, _In_ UINT fuFillType)
Definition: painting.c:413
#define FLOODFILLBORDER
Definition: wingdi.h:644

◆ FrameRgn()

BOOL WINAPI FrameRgn ( _In_ HDC  hdc,
_In_ HRGN  hrgn,
_In_ HBRUSH  hbr,
_In_ INT  nWidth,
_In_ INT  nHeight 
)

Definition at line 205 of file painting.c.

211 {
212 
213  if ((hrgn == NULL) || (hbr == NULL))
214  return FALSE;
215 
216  HANDLE_METADC(BOOL, FrameRgn, FALSE, hdc, hrgn, hbr, nWidth, nHeight);
217 
218  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
219 
220  return NtGdiFrameRgn(hdc, hrgn, hbr, nWidth, nHeight);
221 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
__kernel_entry W32KAPI BOOL APIENTRY NtGdiFrameRgn(_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbrush, _In_ INT xWidth, _In_ INT yHeight)
Definition: bitblt.c:1352
HDC hdc
Definition: main.c:9
static HRGN hrgn
Definition: win.c:55
BOOL WINAPI FrameRgn(_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbr, _In_ INT nWidth, _In_ INT nHeight)
Definition: painting.c:205
#define NULL
Definition: types.h:112

◆ GdiAlphaBlend()

BOOL WINAPI GdiAlphaBlend ( _In_ HDC  hdcDst,
_In_ INT  xDst,
_In_ INT  yDst,
_In_ INT  cxDst,
_In_ INT  cyDst,
_In_ HDC  hdcSrc,
_In_ INT  xSrc,
_In_ INT  ySrc,
_In_ INT  cxSrc,
_In_ INT  cySrc,
_In_ BLENDFUNCTION  blendfn 
)

Definition at line 769 of file painting.c.

781 {
782  if (hdcSrc == NULL ) return FALSE;
783 
785 
787  AlphaBlend,
788  FALSE,
789  hdcDst,
790  xDst,
791  yDst,
792  cxDst,
793  cyDst,
794  hdcSrc,
795  xSrc,
796  ySrc,
797  cxSrc,
798  cySrc,
799  blendfn);
800 
801  if ( GdiConvertAndCheckDC(hdcDst) == NULL ) return FALSE;
802 
803  return NtGdiAlphaBlend(hdcDst,
804  xDst,
805  yDst,
806  cxDst,
807  cyDst,
808  hdcSrc,
809  xSrc,
810  ySrc,
811  cxSrc,
812  cySrc,
813  blendfn,
814  0);
815 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
static HDC hdcSrc
Definition: xlate.c:32
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
#define GDI_OBJECT_TYPE_METADC
Definition: gdi.h:57
__kernel_entry W32KAPI BOOL APIENTRY NtGdiAlphaBlend(_In_ HDC hdcDst, _In_ LONG DstX, _In_ LONG DstY, _In_ LONG DstCx, _In_ LONG DstCy, _In_ HDC hdcSrc, _In_ LONG SrcX, _In_ LONG SrcY, _In_ LONG SrcCx, _In_ LONG SrcCy, _In_ BLENDFUNCTION BlendFunction, _In_ HANDLE hcmXform)
static HDC hdcDst
Definition: xlate.c:32
#define NULL
Definition: types.h:112
#define AlphaBlend
Definition: misc.c:293

◆ GdiGradientFill()

BOOL WINAPI GdiGradientFill ( _In_ HDC  hdc,
_In_reads_(nVertex) PTRIVERTEX  pVertex,
_In_ ULONG  nVertex,
_In_ PVOID  pMesh,
_In_ ULONG  nCount,
_In_ ULONG  ulMode 
)

Definition at line 861 of file painting.c.

868 {
870 
871  HANDLE_EMETAFDC(BOOL, GradientFill, FALSE, hdc, pVertex, nVertex, pMesh, nCount, ulMode);
872 
873  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
874 
875  return NtGdiGradientFill(hdc, pVertex, nVertex, pMesh, nCount, ulMode);
876 }
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID pMesh
Definition: winddi.h:3649
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX * pVertex
Definition: winddi.h:3649
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
HDC hdc
Definition: main.c:9
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL _In_ POINTL _In_ ULONG ulMode
Definition: winddi.h:3649
#define NULL
Definition: types.h:112
__kernel_entry W32KAPI BOOL APIENTRY NtGdiGradientFill(_In_ HDC hdc, _In_ PTRIVERTEX pVertex, _In_ ULONG nVertex, _In_ PVOID pMesh, _In_ ULONG nMesh, _In_ ULONG ulMode)
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG nVertex
Definition: winddi.h:3649

◆ GdiTransparentBlt()

BOOL WINAPI GdiTransparentBlt ( _In_ HDC  hdcDst,
_In_ INT  xDst,
_In_ INT  yDst,
_In_ INT  cxDst,
_In_ INT  cyDst,
_In_ HDC  hdcSrc,
_In_ INT  xSrc,
_In_ INT  ySrc,
_In_ INT  cxSrc,
_In_ INT  cySrc,
_In_ UINT  crTransparent 
)

Definition at line 823 of file painting.c.

835 {
838  FALSE,
839  hdcDst,
840  xDst,
841  yDst,
842  cxDst,
843  cyDst,
844  hdcSrc,
845  xSrc,
846  ySrc,
847  cxSrc,
848  cySrc,
849  crTransparent);
850 
851  if ( GdiConvertAndCheckDC(hdcDst) == NULL ) return FALSE;
852 
853  return NtGdiTransparentBlt(hdcDst, xDst, yDst, cxDst, cyDst, hdcSrc, xSrc, ySrc, cxSrc, cySrc, crTransparent);
854 }
#define TransparentBlt
Definition: misc.c:292
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
static HDC hdcSrc
Definition: xlate.c:32
#define FALSE
Definition: types.h:117
__kernel_entry W32KAPI BOOL APIENTRY NtGdiTransparentBlt(_In_ HDC hdcDst, _In_ INT xDst, _In_ INT yDst, _In_ INT cxDst, _In_ INT cyDst, _In_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ INT cxSrc, _In_ INT cySrc, _In_ COLORREF TransColor)
unsigned int BOOL
Definition: ntddk_ex.h:94
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
static HDC hdcDst
Definition: xlate.c:32
#define NULL
Definition: types.h:112

◆ GetPixel()

COLORREF WINAPI GetPixel ( _In_ HDC  hdc,
_In_ INT  x,
_In_ INT  y 
)

Definition at line 133 of file painting.c.

137 {
139  if (!GdiValidateHandle((HGDIOBJ) hdc)) return CLR_INVALID;
140  return NtGdiGetPixel(hdc, x, y);
141 }
#define CLR_INVALID
Definition: wingdi.h:883
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
__kernel_entry W32KAPI DWORD APIENTRY NtGdiGetPixel(_In_ HDC hdc, _In_ INT x, _In_ INT y)
Definition: bitblt.c:1512
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
#define GDI_OBJECT_TYPE_DC
Definition: gdi.h:46
HDC hdc
Definition: main.c:9
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
BOOL WINAPI GdiValidateHandle(HGDIOBJ)
Definition: misc.c:712

◆ InvertRgn()

BOOL WINAPI InvertRgn ( _In_ HDC  hdc,
_In_ HRGN  hrgn 
)

Definition at line 229 of file painting.c.

232 {
233 
234  if (hrgn == NULL)
235  return FALSE;
236 
238 
239  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
240 
241  return NtGdiInvertRgn(hdc, hrgn);
242 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL WINAPI InvertRgn(_In_ HDC hdc, _In_ HRGN hrgn)
Definition: painting.c:229
HDC hdc
Definition: main.c:9
static HRGN hrgn
Definition: win.c:55
#define NULL
Definition: types.h:112
__kernel_entry W32KAPI BOOL APIENTRY NtGdiInvertRgn(_In_ HDC hdc, _In_ HRGN hrgn)
Definition: bitblt.c:1376

Referenced by PaintSelectionRect(), PlayEnhMetaFileRecord(), and PlayMetaFileRecord().

◆ LineTo()

BOOL WINAPI LineTo ( _In_ HDC  hdc,
_In_ INT  x,
_In_ INT  y 
)

Definition at line 9 of file painting.c.

13 {
15 
16  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
17 
18  return NtGdiLineTo(hdc, x, y);
19 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
__kernel_entry W32KAPI BOOL APIENTRY NtGdiLineTo(_In_ HDC hdc, _In_ INT x, _In_ INT y)
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL WINAPI LineTo(_In_ HDC hdc, _In_ INT x, _In_ INT y)
Definition: painting.c:9
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548

◆ MaskBlt()

BOOL WINAPI MaskBlt ( _In_ HDC  hdcDest,
_In_ INT  xDest,
_In_ INT  yDest,
_In_ INT  cx,
_In_ INT  cy,
_In_ HDC  hdcSrc,
_In_ INT  xSrc,
_In_ INT  ySrc,
_In_ HBITMAP  hbmMask,
_In_ INT  xMask,
_In_ INT  yMask,
_In_ DWORD  dwRop 
)

Definition at line 673 of file painting.c.

686 {
688  MaskBlt,
689  FALSE,
690  hdcDest,
691  xDest,
692  yDest,
693  cx,
694  cy,
695  hdcSrc,
696  xSrc,
697  ySrc,
698  hbmMask,
699  xMask,
700  yMask,
701  dwRop);
702 
703  if ( GdiConvertAndCheckDC(hdcDest) == NULL ) return FALSE;
704 
705  return NtGdiMaskBlt(hdcDest,
706  xDest,
707  yDest,
708  cx,
709  cy,
710  hdcSrc,
711  xSrc,
712  ySrc,
713  hbmMask,
714  xMask,
715  yMask,
716  dwRop,
717  GetBkColor(hdcSrc));
718 }
COLORREF WINAPI GetBkColor(_In_ HDC)
Definition: dc.c:978
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
static HDC hdcSrc
Definition: xlate.c:32
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:585
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
BOOL WINAPI MaskBlt(_In_ HDC hdcDest, _In_ INT xDest, _In_ INT yDest, _In_ INT cx, _In_ INT cy, _In_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ HBITMAP hbmMask, _In_ INT xMask, _In_ INT yMask, _In_ DWORD dwRop)
Definition: painting.c:673
#define NULL
Definition: types.h:112
_Out_opt_ int * cx
Definition: commctrl.h:585
__kernel_entry W32KAPI BOOL APIENTRY NtGdiMaskBlt(_In_ HDC hdc, _In_ INT xDst, _In_ INT yDst, _In_ INT cx, _In_ INT cy, _In_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_opt_ HBITMAP hbmMask, _In_ INT xMask, _In_ INT yMask, _In_ DWORD dwRop4, _In_ DWORD crBackColor)

◆ MoveToEx()

BOOL WINAPI MoveToEx ( _In_ HDC  hdc,
_In_ INT  x,
_In_ INT  y,
_Out_opt_ LPPOINT  ppt 
)

Definition at line 24 of file painting.c.

29 {
30  PDC_ATTR pdcattr;
31 
32  HANDLE_METADC(BOOL, MoveTo, FALSE, hdc, x, y);
33 
34  /* Get the DC attribute */
35  pdcattr = GdiGetDcAttr(hdc);
36  if (pdcattr == NULL)
37  {
39  return FALSE;
40  }
41 
42  if (ppt)
43  {
44  if ( pdcattr->ulDirty_ & DIRTY_PTLCURRENT ) // Double hit!
45  {
46  ppt->x = pdcattr->ptfxCurrent.x; // ret prev before change.
47  ppt->y = pdcattr->ptfxCurrent.y;
48  DPtoLP (hdc, ppt, 1); // reconvert back.
49  }
50  else
51  {
52  ppt->x = pdcattr->ptlCurrent.x;
53  ppt->y = pdcattr->ptlCurrent.y;
54  }
55  }
56 
57  pdcattr->ptlCurrent.x = x;
58  pdcattr->ptlCurrent.y = y;
59 
60  pdcattr->ulDirty_ &= ~DIRTY_PTLCURRENT;
61  pdcattr->ulDirty_ |= ( DIRTY_PTFXCURRENT|DIRTY_STYLESTATE); // Set dirty
62  return TRUE;
63 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define TRUE
Definition: types.h:120
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
BOOL WINAPI DPtoLP(_In_ HDC hdc, _Inout_updates_(c) LPPOINT lppt, _In_ int c)
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
LONG y
Definition: windef.h:330
#define DIRTY_PTFXCURRENT
Definition: ntgdihdl.h:154
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
ULONG ulDirty_
Definition: ntgdihdl.h:312
#define DIRTY_STYLESTATE
Definition: ntgdihdl.h:155
LONG x
Definition: windef.h:329
#define SetLastError(x)
Definition: compat.h:611
HDC hdc
Definition: main.c:9
POINTL ptfxCurrent
Definition: ntgdihdl.h:330
#define DIRTY_PTLCURRENT
Definition: ntgdihdl.h:153
#define NULL
Definition: types.h:112
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
POINTL ptlCurrent
Definition: ntgdihdl.h:329

◆ PaintRgn()

BOOL WINAPI PaintRgn ( _In_ HDC  hdc,
_In_ HRGN  hrgn 
)

Definition at line 250 of file painting.c.

253 {
255 }
BOOL WINAPI FillRgn(_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbr)
Definition: painting.c:183
HDC hdc
Definition: main.c:9
static HRGN hrgn
Definition: win.c:55
#define OBJ_BRUSH
Definition: objidl.idl:1410
HGDIOBJ WINAPI GetCurrentObject(_In_ HDC, _In_ UINT)
Definition: dc.c:428

Referenced by draw_graphics(), PlayEnhMetaFileRecord(), PlayMetaFileRecord(), and Test_PaintRgn().

◆ PatBlt()

BOOL WINAPI PatBlt ( _In_ HDC  hdc,
_In_ INT  nXLeft,
_In_ INT  nYLeft,
_In_ INT  nWidth,
_In_ INT  nHeight,
_In_ DWORD  dwRop 
)

Definition at line 485 of file painting.c.

492 {
493  PDC_ATTR pdcattr;
494 
495  HANDLE_EMETAFDC(BOOL, PatBlt, FALSE, hdc, nXLeft, nYLeft, nWidth, nHeight, dwRop);
496 
497  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
498 
499  /* Get the DC attribute */
500  pdcattr = GdiGetDcAttr(hdc);
501  if (pdcattr && !(pdcattr->ulDirty_ & DC_DIBSECTION))
502  {
503  PGDIBSPATBLT pgO;
504 
506  if (pgO)
507  {
508  pdcattr->ulDirty_ |= DC_MODE_DIRTY;
509  pgO->nXLeft = nXLeft;
510  pgO->nYLeft = nYLeft;
511  pgO->nWidth = nWidth;
512  pgO->nHeight = nHeight;
513  pgO->dwRop = dwRop;
514  /* Snapshot attributes */
515  pgO->hbrush = pdcattr->hbrush;
516  pgO->crForegroundClr = pdcattr->crForegroundClr;
517  pgO->crBackgroundClr = pdcattr->crBackgroundClr;
518  pgO->crBrushClr = pdcattr->crBrushClr;
519  pgO->ulForegroundClr = pdcattr->ulForegroundClr;
520  pgO->ulBackgroundClr = pdcattr->ulBackgroundClr;
521  pgO->ulBrushClr = pdcattr->ulBrushClr;
522  return TRUE;
523  }
524  }
525  return NtGdiPatBlt( hdc, nXLeft, nYLeft, nWidth, nHeight, dwRop);
526 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
__kernel_entry W32KAPI BOOL APIENTRY NtGdiPatBlt(_In_ HDC hdcDest, _In_ INT x, _In_ INT y, _In_ INT cx, _In_ INT cy, _In_ DWORD dwRop)
Definition: bitblt.c:984
COLORREF crBackgroundClr
Definition: ntgdityp.h:472
HANDLE hbrush
Definition: ntgdihdl.h:313
#define TRUE
Definition: types.h:120
DWORD dwRop
Definition: ntgdityp.h:470
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
BOOL WINAPI PatBlt(_In_ HDC hdc, _In_ INT nXLeft, _In_ INT nYLeft, _In_ INT nWidth, _In_ INT nHeight, _In_ DWORD dwRop)
Definition: painting.c:485
COLORREF crForegroundClr
Definition: ntgdityp.h:471
#define DC_DIBSECTION
Definition: ntgdihdl.h:159
COLORREF crBrushClr
Definition: ntgdityp.h:473
ULONG ulBackgroundClr
Definition: ntgdihdl.h:316
HANDLE hbrush
Definition: ntgdityp.h:469
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
ULONG ulDirty_
Definition: ntgdihdl.h:312
COLORREF crBackgroundClr
Definition: ntgdihdl.h:315
COLORREF crBrushClr
Definition: ntgdihdl.h:319
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
HDC hdc
Definition: main.c:9
#define DC_MODE_DIRTY
Definition: ntgdihdl.h:166
ULONG ulBackgroundClr
Definition: ntgdityp.h:477
ULONG ulBrushClr
Definition: ntgdityp.h:478
ULONG ulForegroundClr
Definition: ntgdihdl.h:318
ULONG ulBrushClr
Definition: ntgdihdl.h:320
ULONG ulForegroundClr
Definition: ntgdityp.h:476
#define NULL
Definition: types.h:112
COLORREF crForegroundClr
Definition: ntgdihdl.h:317
FORCEINLINE PVOID GdiAllocBatchCommand(HDC hdc, USHORT Cmd)
Definition: gdi32p.h:381

Referenced by BitBlt(), and PolyPatBlt().

◆ PlgBlt()

BOOL WINAPI PlgBlt ( _In_ HDC  hdcDest,
_In_reads_(3) const POINT ppt,
_In_ HDC  hdcSrc,
_In_ INT  xSrc,
_In_ INT  ySrc,
_In_ INT  cx,
_In_ INT  cy,
_In_opt_ HBITMAP  hbmMask,
_In_ INT  xMask,
_In_ INT  yMask 
)

Definition at line 726 of file painting.c.

737 {
739  PlgBlt,
740  FALSE,
741  hdcDest,
742  ppt,
743  hdcSrc,
744  xSrc,
745  ySrc,
746  cx,
747  cy,
748  hbmMask,
749  xMask,
750  yMask);
751 
752  if ( GdiConvertAndCheckDC(hdcDest) == NULL ) return FALSE;
753 
754  return NtGdiPlgBlt(hdcDest,
755  (LPPOINT)ppt,
756  hdcSrc,
757  xSrc,
758  ySrc,
759  cx,
760  cy,
761  hbmMask,
762  xMask,
763  yMask,
764  GetBkColor(hdcSrc));
765 }
COLORREF WINAPI GetBkColor(_In_ HDC)
Definition: dc.c:978
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
static HDC hdcSrc
Definition: xlate.c:32
BOOL WINAPI PlgBlt(_In_ HDC hdcDest, _In_reads_(3) const POINT *ppt, _In_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ INT cx, _In_ INT cy, _In_opt_ HBITMAP hbmMask, _In_ INT xMask, _In_ INT yMask)
Definition: painting.c:726
__kernel_entry W32KAPI BOOL APIENTRY NtGdiPlgBlt(_In_ HDC hdcTrg, _In_reads_(3) LPPOINT pptlTrg, _In_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ INT cxSrc, _In_ INT cySrc, _In_opt_ HBITMAP hbmMask, _In_ INT xMask, _In_ INT yMask, _In_ DWORD crBackColor)
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:585
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
#define NULL
Definition: types.h:112
_Out_opt_ int * cx
Definition: commctrl.h:585

◆ PolyBezier()

BOOL WINAPI PolyBezier ( _In_ HDC  hdc,
_In_reads_(cpt) const POINT apt,
_In_ DWORD  cpt 
)

Definition at line 263 of file painting.c.

267 {
268  HANDLE_EMETAFDC(BOOL, PolyBezier, FALSE, hdc, apt, cpt);
269 
270  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
271 
272  return NtGdiPolyPolyDraw(hdc ,(PPOINT)apt, &cpt, 1, GdiPolyBezier);
273 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
BOOL WINAPI PolyBezier(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
Definition: painting.c:263
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
__kernel_entry W32KAPI ULONG_PTR APIENTRY NtGdiPolyPolyDraw(_In_ HDC hdc, _In_ PPOINT ppt, _In_reads_(ccpt) PULONG pcpt, _In_ ULONG ccpt, _In_ INT iFunc)
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112

Referenced by Bezier(), DrawPrimitive(), PlayEnhMetaFileRecord(), test_all_functions(), and test_emf_polybezier().

◆ PolyBezierTo()

BOOL WINAPI PolyBezierTo ( _In_ HDC  hdc,
_In_reads_(cpt) const POINT apt,
_In_ DWORD  cpt 
)

Definition at line 281 of file painting.c.

285 {
286  HANDLE_EMETAFDC(BOOL, PolyBezierTo, FALSE, hdc, apt, cpt);
287 
288  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
289 
290  return NtGdiPolyPolyDraw(hdc , (PPOINT)apt, &cpt, 1, GdiPolyBezierTo);
291 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
__kernel_entry W32KAPI ULONG_PTR APIENTRY NtGdiPolyPolyDraw(_In_ HDC hdc, _In_ PPOINT ppt, _In_reads_(ccpt) PULONG pcpt, _In_ ULONG ccpt, _In_ INT iFunc)
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112
BOOL WINAPI PolyBezierTo(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
Definition: painting.c:281

Referenced by MainWndProc(), PlayEnhMetaFileRecord(), test_all_functions(), and test_emf_polybezier().

◆ PolyDraw()

BOOL WINAPI PolyDraw ( _In_ HDC  hdc,
_In_reads_(cpt) const POINT apt,
_In_reads_(cpt) const BYTE aj,
_In_ INT  cpt 
)

Definition at line 299 of file painting.c.

304 {
305  HANDLE_EMETAFDC(BOOL, PolyDraw, FALSE, hdc, apt, aj, cpt);
306 
307  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
308 
309  return NtGdiPolyDraw(hdc, (PPOINT)apt, (PBYTE)aj, cpt);
310 }
__kernel_entry W32KAPI BOOL APIENTRY NtGdiPolyDraw(_In_ HDC hdc, _In_reads_(cpt) LPPOINT ppt, _In_reads_(cpt) LPBYTE pjAttr, _In_ ULONG cpt)
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
HDC hdc
Definition: main.c:9
BOOL WINAPI PolyDraw(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_reads_(cpt) const BYTE *aj, _In_ INT cpt)
Definition: painting.c:299
#define NULL
Definition: types.h:112
BYTE * PBYTE
Definition: pedump.c:66

◆ Polygon()

BOOL WINAPI Polygon ( _In_ HDC  hdc,
_In_reads_(cpt) const POINT apt,
_In_ INT  cpt 
)

Definition at line 318 of file painting.c.

322 {
323  HANDLE_METADC(BOOL, Polygon, FALSE, hdc, apt, cpt);
324 
325  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
326 
327  return NtGdiPolyPolyDraw(hdc , (PPOINT)apt, (PULONG)&cpt, 1, GdiPolyPolygon);
328 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL WINAPI Polygon(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ INT cpt)
Definition: painting.c:318
__kernel_entry W32KAPI ULONG_PTR APIENTRY NtGdiPolyPolyDraw(_In_ HDC hdc, _In_ PPOINT ppt, _In_reads_(ccpt) PULONG pcpt, _In_ ULONG ccpt, _In_ INT iFunc)
HDC hdc
Definition: main.c:9
unsigned int * PULONG
Definition: retypes.h:1
#define NULL
Definition: types.h:112

◆ Polyline()

BOOL WINAPI Polyline ( _In_ HDC  hdc,
_In_reads_(cpt) const POINT apt,
_In_ INT  cpt 
)

Definition at line 336 of file painting.c.

340 {
341  HANDLE_METADC(BOOL, Polyline, FALSE, hdc, apt, cpt);
342 
343  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
344 
345  return NtGdiPolyPolyDraw(hdc, (PPOINT)apt, (PULONG)&cpt, 1, GdiPolyPolyLine);
346 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
__kernel_entry W32KAPI ULONG_PTR APIENTRY NtGdiPolyPolyDraw(_In_ HDC hdc, _In_ PPOINT ppt, _In_reads_(ccpt) PULONG pcpt, _In_ ULONG ccpt, _In_ INT iFunc)
BOOL WINAPI Polyline(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ INT cpt)
Definition: painting.c:336
HDC hdc
Definition: main.c:9
unsigned int * PULONG
Definition: retypes.h:1
#define NULL
Definition: types.h:112

◆ PolylineTo()

BOOL WINAPI PolylineTo ( _In_ HDC  hdc,
_In_reads_(cpt) const POINT apt,
_In_ DWORD  cpt 
)

Definition at line 354 of file painting.c.

358 {
359  HANDLE_EMETAFDC(BOOL, PolylineTo, FALSE, hdc, apt, cpt);
360 
361  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
362 
363  return NtGdiPolyPolyDraw(hdc , (PPOINT)apt, &cpt, 1, GdiPolyLineTo);
364 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
__kernel_entry W32KAPI ULONG_PTR APIENTRY NtGdiPolyPolyDraw(_In_ HDC hdc, _In_ PPOINT ppt, _In_reads_(ccpt) PULONG pcpt, _In_ ULONG ccpt, _In_ INT iFunc)
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
HDC hdc
Definition: main.c:9
BOOL WINAPI PolylineTo(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
Definition: painting.c:354
#define NULL
Definition: types.h:112

Referenced by PlayEnhMetaFileRecord(), test_all_functions(), and test_emf_paths().

◆ PolyPatBlt()

BOOL WINAPI PolyPatBlt ( _In_ HDC  hdc,
_In_ DWORD  dwRop,
_In_ PPOLYPATBLT  pPoly,
_In_ DWORD  nCount,
_In_ DWORD  dwMode 
)

Definition at line 530 of file painting.c.

536 {
537  UINT i;
538  BOOL bResult;
539  HBRUSH hbrOld;
540  PDC_ATTR pdcattr;
541 
542  /* Handle meta DCs */
545  {
546  if (!GdiValidateHandle(hdc))
547  {
548  return FALSE;
549  }
550 
551  /* Save the current DC brush */
552  hbrOld = SelectObject(hdc, GetStockObject(DC_BRUSH));
553 
554  /* Assume success */
555  bResult = TRUE;
556 
557  /* Loop all rect */
558  for (i = 0; i < nCount; i++)
559  {
560  /* Select the brush for this rect */
561  SelectObject(hdc, pPoly[i].hBrush);
562 
563  /* Do the PatBlt operation for this rect */
564  bResult &= PatBlt(hdc,
565  pPoly[i].nXLeft,
566  pPoly[i].nYLeft,
567  pPoly[i].nWidth,
568  pPoly[i].nHeight,
569  dwRop);
570  }
571 
572  /* Restore the old brush */
573  SelectObject(hdc, hbrOld);
574 
575  return bResult;
576  }
577 
578  /* Get the DC attribute */
579  pdcattr = GdiGetDcAttr(hdc);
580  if (nCount && pdcattr && !(pdcattr->ulDirty_ & DC_DIBSECTION))
581  {
582  PGDIBSPPATBLT pgO;
583  PTEB pTeb = NtCurrentTeb();
584 
586  if (pgO)
587  {
588  USHORT cjSize = 0;
589  if (nCount > 1) cjSize = (nCount-1) * sizeof(PATRECT);
590 
591  if ((pTeb->GdiTebBatch.Offset + cjSize) <= GDIBATCHBUFSIZE)
592  {
593  pdcattr->ulDirty_ |= DC_MODE_DIRTY;
594  pgO->Count = nCount;
595  pgO->Mode = dwMode;
596  pgO->rop4 = dwRop;
597  /* Snapshot attributes */
598  pgO->crForegroundClr = pdcattr->crForegroundClr;
599  pgO->crBackgroundClr = pdcattr->crBackgroundClr;
600  pgO->crBrushClr = pdcattr->crBrushClr;
601  pgO->ulForegroundClr = pdcattr->ulForegroundClr;
602  pgO->ulBackgroundClr = pdcattr->ulBackgroundClr;
603  pgO->ulBrushClr = pdcattr->ulBrushClr;
604  RtlCopyMemory(pgO->pRect, pPoly, nCount * sizeof(PATRECT));
605  // Recompute offset and return size, remember one is already accounted for in the structure.
606  pTeb->GdiTebBatch.Offset += cjSize;
607  ((PGDIBATCHHDR)pgO)->Size += cjSize;
608  return TRUE;
609  }
610  // Reset offset and count then fall through
611  pTeb->GdiTebBatch.Offset -= sizeof(GDIBSPPATBLT);
612  pTeb->GdiBatchCount--;
613  }
614  }
615  return NtGdiPolyPatBlt(hdc, dwRop, pPoly, nCount, dwMode);
616 }
HGDIOBJ WINAPI GetStockObject(_In_ int)
DWORD rop4
Definition: ntgdityp.h:491
COLORREF crBackgroundClr
Definition: ntgdityp.h:495
PATRECT pRect[1]
Definition: ntgdityp.h:501
ULONG ulBrushClr
Definition: ntgdityp.h:499
#define TRUE
Definition: types.h:120
COLORREF crForegroundClr
Definition: ntgdityp.h:494
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
BOOL WINAPI PatBlt(_In_ HDC hdc, _In_ INT nXLeft, _In_ INT nYLeft, _In_ INT nWidth, _In_ INT nHeight, _In_ DWORD dwRop)
Definition: painting.c:485
#define DC_DIBSECTION
Definition: ntgdihdl.h:159
struct _GDIBATCHHDR * PGDIBATCHHDR
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1539
ULONG ulBackgroundClr
Definition: ntgdihdl.h:316
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
DWORD Count
Definition: ntgdityp.h:493
struct _GDIBSPPATBLT GDIBSPPATBLT
#define GDIBATCHBUFSIZE
Definition: ntgdityp.h:200
ULONG ulBackgroundClr
Definition: ntgdityp.h:498
__kernel_entry W32KAPI BOOL APIENTRY NtGdiPolyPatBlt(_In_ HDC hdc, _In_ DWORD rop4, _In_reads_(cPoly) PPOLYPATBLT pPoly, _In_ DWORD cPoly, _In_ DWORD dwMode)
COLORREF crBrushClr
Definition: ntgdityp.h:496
ULONG ulDirty_
Definition: ntgdihdl.h:312
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
COLORREF crBackgroundClr
Definition: ntgdihdl.h:315
COLORREF crBrushClr
Definition: ntgdihdl.h:319
GDI_TEB_BATCH GdiTebBatch
Definition: compat.h:716
ULONG GdiBatchCount
Definition: compat.h:746
HDC hdc
Definition: main.c:9
#define DC_MODE_DIRTY
Definition: ntgdihdl.h:166
Definition: compat.h:694
ULONG Offset
Definition: compat.h:690
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
Definition: psfuncs.h:420
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 short USHORT
Definition: pedump.c:61
ULONG ulForegroundClr
Definition: ntgdihdl.h:318
ULONG ulBrushClr
Definition: ntgdihdl.h:320
unsigned int UINT
Definition: ndis.h:50
COLORREF crForegroundClr
Definition: ntgdihdl.h:317
_In_ ULONG cjSize
Definition: winddi.h:3634
DWORD Mode
Definition: ntgdityp.h:492
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
FORCEINLINE PVOID GdiAllocBatchCommand(HDC hdc, USHORT Cmd)
Definition: gdi32p.h:381
BOOL WINAPI GdiValidateHandle(HGDIOBJ)
Definition: misc.c:712
ULONG ulForegroundClr
Definition: ntgdityp.h:497

◆ PolyPolygon()

BOOL WINAPI PolyPolygon ( _In_ HDC  hdc,
_In_ const POINT apt,
_In_reads_(csz) const INT asz,
_In_ INT  csz 
)

Definition at line 372 of file painting.c.

377 {
378  HANDLE_METADC(BOOL, PolyPolygon, FALSE, hdc, apt, asz, csz);
379 
380  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
381 
382  return NtGdiPolyPolyDraw(hdc, (PPOINT)apt, (PULONG)asz, csz, GdiPolyPolygon);
383 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
BOOL WINAPI PolyPolygon(_In_ HDC hdc, _In_ const POINT *apt, _In_reads_(csz) const INT *asz, _In_ INT csz)
Definition: painting.c:372
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
__kernel_entry W32KAPI ULONG_PTR APIENTRY NtGdiPolyPolyDraw(_In_ HDC hdc, _In_ PPOINT ppt, _In_reads_(ccpt) PULONG pcpt, _In_ ULONG ccpt, _In_ INT iFunc)
HDC hdc
Definition: main.c:9
unsigned int * PULONG
Definition: retypes.h:1
#define NULL
Definition: types.h:112

◆ PolyPolyline()

BOOL WINAPI PolyPolyline ( _In_ HDC  hdc,
_In_ CONST POINT apt,
_In_reads_(csz) CONST DWORD asz,
_In_ DWORD  csz 
)

Definition at line 391 of file painting.c.

396 {
398  return FALSE;
399 
400  HANDLE_EMETAFDC(BOOL, PolyPolyline, FALSE, hdc, apt, asz, csz);
401 
402  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
403 
404  return NtGdiPolyPolyDraw(hdc , (PPOINT)apt, (PULONG)asz, csz, GdiPolyPolyLine);
405 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
__kernel_entry W32KAPI ULONG_PTR APIENTRY NtGdiPolyPolyDraw(_In_ HDC hdc, _In_ PPOINT ppt, _In_reads_(ccpt) PULONG pcpt, _In_ ULONG ccpt, _In_ INT iFunc)
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
HDC hdc
Definition: main.c:9
unsigned int * PULONG
Definition: retypes.h:1
#define NULL
Definition: types.h:112
BOOL WINAPI PolyPolyline(_In_ HDC hdc, _In_ CONST POINT *apt, _In_reads_(csz) CONST DWORD *asz, _In_ DWORD csz)
Definition: painting.c:391

◆ Rectangle()

BOOL WINAPI Rectangle ( _In_ HDC  hdc,
_In_ INT  left,
_In_ INT  top,
_In_ INT  right,
_In_ INT  bottom 
)

Definition at line 91 of file painting.c.

97 {
99 
100  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
101 
102  return NtGdiRectangle(hdc, left, top, right, bottom);
103 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
__kernel_entry W32KAPI BOOL APIENTRY NtGdiRectangle(_In_ HDC hdc, _In_ INT xLeft, _In_ INT yTop, _In_ INT xRight, _In_ INT yBottom)
BOOL WINAPI Rectangle(_In_ HDC hdc, _In_ INT left, _In_ INT top, _In_ INT right, _In_ INT bottom)
Definition: painting.c:91
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
GLint GLint bottom
Definition: glext.h:7726
GLint left
Definition: glext.h:7726
GLdouble GLdouble right
Definition: glext.h:10859
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859

◆ RoundRect()

BOOL WINAPI RoundRect ( _In_ HDC  hdc,
_In_ INT  left,
_In_ INT  top,
_In_ INT  right,
_In_ INT  bottom,
_In_ INT  width,
_In_ INT  height 
)

Definition at line 111 of file painting.c.

119 {
121 
122  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
123 
125 }
GLint GLint GLsizei width
Definition: gl.h:1546
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
BOOL WINAPI RoundRect(_In_ HDC hdc, _In_ INT left, _In_ INT top, _In_ INT right, _In_ INT bottom, _In_ INT width, _In_ INT height)
Definition: painting.c:111
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
GLint GLint bottom
Definition: glext.h:7726
__kernel_entry W32KAPI BOOL APIENTRY NtGdiRoundRect(_In_ HDC hdc, _In_ INT x1, _In_ INT y1, _In_ INT x2, _In_ INT y2, _In_ INT x3, _In_ INT y3)
GLint left
Definition: glext.h:7726
GLdouble GLdouble right
Definition: glext.h:10859
HDC hdc
Definition: main.c:9
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
#define NULL
Definition: types.h:112
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859

◆ SetPixel()

COLORREF WINAPI SetPixel ( _In_ HDC  hdc,
_In_ INT  x,
_In_ INT  y,
_In_ COLORREF  crColor 
)

Definition at line 149 of file painting.c.

154 {
156 
157  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
158 
159  return NtGdiSetPixel(hdc, x, y, crColor);
160 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
#define CLR_INVALID
Definition: wingdi.h:883
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
COLORREF WINAPI SetPixel(_In_ HDC hdc, _In_ INT x, _In_ INT y, _In_ COLORREF crColor)
Definition: painting.c:149
#define FALSE
Definition: types.h:117
DWORD COLORREF
Definition: windef.h:300
HDC hdc
Definition: main.c:9
__kernel_entry W32KAPI COLORREF APIENTRY NtGdiSetPixel(_In_ HDC hdcDst, _In_ INT x, _In_ INT y, _In_ COLORREF crColor)
Definition: bitblt.c:1423
#define NULL
Definition: types.h:112
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548

Referenced by SetPixelV().

◆ SetPixelV()

BOOL WINAPI SetPixelV ( _In_ HDC  hdc,
_In_ INT  x,
_In_ INT  y,
_In_ COLORREF  crColor 
)

Definition at line 168 of file painting.c.

173 {
174  return SetPixel(hdc, x, y, crColor) != CLR_INVALID;
175 }
#define CLR_INVALID
Definition: wingdi.h:883
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
COLORREF WINAPI SetPixel(_In_ HDC hdc, _In_ INT x, _In_ INT y, _In_ COLORREF crColor)
Definition: painting.c:149
HDC hdc
Definition: main.c:9
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548

◆ StretchBlt()

BOOL WINAPI StretchBlt ( _In_ HDC  hdcDest,
_In_ INT  xDest,
_In_ INT  yDest,
_In_ INT  cxDest,
_In_ INT  cyDest,
_In_opt_ HDC  hdcSrc,
_In_ INT  xSrc,
_In_ INT  ySrc,
_In_ INT  cxSrc,
_In_ INT  cySrc,
_In_ DWORD  dwRop 
)

Definition at line 623 of file painting.c.

635 {
637  StretchBlt,
638  FALSE,
639  hdcDest,
640  xDest,
641  yDest,
642  cxDest,
643  cyDest,
644  hdcSrc,
645  xSrc,
646  ySrc,
647  cxSrc,
648  cySrc,
649  dwRop);
650 
651  if ( GdiConvertAndCheckDC(hdcDest) == NULL ) return FALSE;
652 
653  return NtGdiStretchBlt(hdcDest,
654  xDest,
655  yDest,
656  cxDest,
657  cyDest,
658  hdcSrc,
659  xSrc,
660  ySrc,
661  cxSrc,
662  cySrc,
663  dwRop,
664  0);
665 }
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:403
static HDC hdcSrc
Definition: xlate.c:32
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
BOOL WINAPI StretchBlt(_In_ HDC hdcDest, _In_ INT xDest, _In_ INT yDest, _In_ INT cxDest, _In_ INT cyDest, _In_opt_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ INT cxSrc, _In_ INT cySrc, _In_ DWORD dwRop)
Definition: painting.c:623
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define NULL
Definition: types.h:112
__kernel_entry W32KAPI BOOL APIENTRY NtGdiStretchBlt(_In_ HDC hdcDst, _In_ INT xDst, _In_ INT yDst, _In_ INT cxDst, _In_ INT cyDst, _In_opt_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ INT cxSrc, _In_ INT cySrc, _In_ DWORD dwRop, _In_ DWORD dwBackColor)