ReactOS  0.4.14-dev-49-gfb4591c
painting.c
Go to the documentation of this file.
1 #include <precomp.h>
2 
3 
4 /*
5  * @implemented
6  */
7 BOOL
8 WINAPI
10  _In_ HDC hdc,
11  _In_ INT x,
12  _In_ INT y )
13 {
15 
16  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
17 
18  return NtGdiLineTo(hdc, x, y);
19 }
20 
21 
22 BOOL
23 WINAPI
25  _In_ HDC hdc,
26  _In_ INT x,
27  _In_ INT y,
28  _Out_opt_ LPPOINT ppt)
29 {
30  PDC_ATTR pdcattr;
31 
32  HANDLE_METADC(BOOL, MoveTo, FALSE, hdc, x, y, ppt);
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 }
64 
65 
66 /*
67  * @implemented
68  */
69 BOOL
70 WINAPI
72  _In_ HDC hdc,
73  _In_ INT left,
74  _In_ INT top,
75  _In_ INT right,
76  _In_ INT bottom)
77 {
79 
80  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
81 
82  return NtGdiEllipse(hdc, left, top, right, bottom);
83 }
84 
85 
86 /*
87  * @implemented
88  */
89 BOOL
90 WINAPI
92  _In_ HDC hdc,
93  _In_ INT left,
94  _In_ INT top,
95  _In_ INT right,
96  _In_ INT bottom)
97 {
99 
100  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
101 
102  return NtGdiRectangle(hdc, left, top, right, bottom);
103 }
104 
105 
106 /*
107  * @implemented
108  */
109 BOOL
110 WINAPI
112  _In_ HDC hdc,
113  _In_ INT left,
114  _In_ INT top,
115  _In_ INT right,
116  _In_ INT bottom,
117  _In_ INT width,
118  _In_ INT height)
119 {
121 
122  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
123 
125 }
126 
127 
128 /*
129  * @implemented
130  */
131 COLORREF
132 WINAPI
134  _In_ HDC hdc,
135  _In_ INT x,
136  _In_ INT y)
137 {
139  if (!GdiValidateHandle((HGDIOBJ) hdc)) return CLR_INVALID;
140  return NtGdiGetPixel(hdc, x, y);
141 }
142 
143 
144 /*
145  * @implemented
146  */
147 COLORREF
148 WINAPI
150  _In_ HDC hdc,
151  _In_ INT x,
152  _In_ INT y,
153  _In_ COLORREF crColor)
154 {
156 
157  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
158 
159  return NtGdiSetPixel(hdc, x, y, crColor);
160 }
161 
162 
163 /*
164  * @implemented
165  */
166 BOOL
167 WINAPI
169  _In_ HDC hdc,
170  _In_ INT x,
171  _In_ INT y,
172  _In_ COLORREF crColor)
173 {
174  return SetPixel(hdc, x, y, crColor) != CLR_INVALID;
175 }
176 
177 
178 /*
179  * @implemented
180  */
181 BOOL
182 WINAPI
184  _In_ HDC hdc,
185  _In_ HRGN hrgn,
186  _In_ HBRUSH hbr)
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 }
198 
199 
200 /*
201  * @implemented
202  */
203 BOOL
204 WINAPI
206  _In_ HDC hdc,
207  _In_ HRGN hrgn,
208  _In_ HBRUSH hbr,
209  _In_ INT nWidth,
210  _In_ INT nHeight)
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 }
222 
223 
224 /*
225  * @implemented
226  */
227 BOOL
228 WINAPI
230  _In_ HDC hdc,
231  _In_ HRGN hrgn)
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 }
243 
244 
245 /*
246  * @implemented
247  */
248 BOOL
249 WINAPI
251  _In_ HDC hdc,
252  _In_ HRGN hrgn)
253 {
255 }
256 
257 
258 /*
259  * @implemented
260  */
261 BOOL
262 WINAPI
264  _In_ HDC hdc,
265  _In_reads_(cpt) const POINT *apt,
266  _In_ DWORD cpt)
267 {
268  HANDLE_METADC(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 }
274 
275 
276 /*
277  * @implemented
278  */
279 BOOL
280 WINAPI
282  _In_ HDC hdc,
283  _In_reads_(cpt) const POINT *apt,
284  _In_ DWORD cpt)
285 {
286  HANDLE_METADC(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 }
292 
293 
294 /*
295  * @implemented
296  */
297 BOOL
298 WINAPI
300  _In_ HDC hdc,
301  _In_reads_(cpt) const POINT *apt,
302  _In_reads_(cpt) const BYTE *aj,
303  _In_ INT cpt)
304 {
305  HANDLE_METADC(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 }
311 
312 
313 /*
314  * @implemented
315  */
316 BOOL
317 WINAPI
319  _In_ HDC hdc,
320  _In_reads_(cpt) const POINT *apt,
321  _In_ INT cpt)
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 }
329 
330 
331 /*
332  * @implemented
333  */
334 BOOL
335 WINAPI
337  _In_ HDC hdc,
338  _In_reads_(cpt) const POINT *apt,
339  _In_ INT cpt)
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 }
347 
348 
349 /*
350  * @implemented
351  */
352 BOOL
353 WINAPI
355  _In_ HDC hdc,
356  _In_reads_(cpt) const POINT *apt,
357  _In_ DWORD cpt)
358 {
359  HANDLE_METADC(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 }
365 
366 
367 /*
368  * @implemented
369  */
370 BOOL
371 WINAPI
373  _In_ HDC hdc,
374  _In_ const POINT *apt,
375  _In_reads_(csz) const INT *asz,
376  _In_ INT csz)
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 }
384 
385 
386 /*
387  * @implemented
388  */
389 BOOL
390 WINAPI
392  _In_ HDC hdc,
393  _In_ CONST POINT *apt,
394  _In_reads_(csz) CONST DWORD *asz,
395  _In_ DWORD csz)
396 {
398  return FALSE;
399 
400  HANDLE_METADC(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 }
406 
407 
408 /*
409  * @implemented
410  */
411 BOOL
412 WINAPI
414  _In_ HDC hdc,
415  _In_ INT xStart,
416  _In_ INT yStart,
417  _In_ COLORREF crFill,
418  _In_ UINT fuFillType)
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 }
426 
427 
428 /*
429  * @implemented
430  */
431 BOOL
432 WINAPI
434  _In_ HDC hdc,
435  _In_ INT xStart,
436  _In_ INT yStart,
437  _In_ COLORREF crFill)
438 {
439  return ExtFloodFill(hdc, xStart, yStart, crFill, FLOODFILLBORDER);
440 }
441 
442 /*
443  * @implemented
444  */
445 BOOL
446 WINAPI
448  _In_ HDC hdcDest,
449  _In_ INT xDest,
450  _In_ INT yDest,
451  _In_ INT cx,
452  _In_ INT cy,
454  _In_ INT xSrc,
455  _In_ INT ySrc,
456  _In_ DWORD dwRop)
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 */
466  StretchBlt,
467  FALSE,
468  hdcDest,
469  xDest,
470  yDest,
471  cx,
472  cx,
473  hdcSrc,
474  xSrc,
475  ySrc,
476  cx,
477  cx,
478  dwRop);
479 
480  if ( GdiConvertAndCheckDC(hdcDest) == NULL ) return FALSE;
481 
482  return NtGdiBitBlt(hdcDest, xDest, yDest, cx, cy, hdcSrc, xSrc, ySrc, dwRop, 0, 0);
483 }
484 
485 BOOL
486 WINAPI
488  _In_ HDC hdc,
489  _In_ INT nXLeft,
490  _In_ INT nYLeft,
491  _In_ INT nWidth,
492  _In_ INT nHeight,
493  _In_ DWORD dwRop)
494 {
495  PDC_ATTR pdcattr;
496 
497  HANDLE_METADC(BOOL, PatBlt, FALSE, hdc, nXLeft, nYLeft, nWidth, nHeight, dwRop);
498 
499  if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
500 
501  /* Get the DC attribute */
502  pdcattr = GdiGetDcAttr(hdc);
503  if (pdcattr && !(pdcattr->ulDirty_ & DC_DIBSECTION))
504  {
505  PGDIBSPATBLT pgO;
506 
508  if (pgO)
509  {
510  pdcattr->ulDirty_ |= DC_MODE_DIRTY;
511  pgO->nXLeft = nXLeft;
512  pgO->nYLeft = nYLeft;
513  pgO->nWidth = nWidth;
514  pgO->nHeight = nHeight;
515  pgO->dwRop = dwRop;
516  /* Snapshot attributes */
517  pgO->hbrush = pdcattr->hbrush;
518  pgO->crForegroundClr = pdcattr->crForegroundClr;
519  pgO->crBackgroundClr = pdcattr->crBackgroundClr;
520  pgO->crBrushClr = pdcattr->crBrushClr;
521  pgO->ulForegroundClr = pdcattr->ulForegroundClr;
522  pgO->ulBackgroundClr = pdcattr->ulBackgroundClr;
523  pgO->ulBrushClr = pdcattr->ulBrushClr;
524  return TRUE;
525  }
526  }
527  return NtGdiPatBlt( hdc, nXLeft, nYLeft, nWidth, nHeight, dwRop);
528 }
529 
530 BOOL
531 WINAPI
533  _In_ HDC hdc,
534  _In_ DWORD dwRop,
535  _In_ PPOLYPATBLT pPoly,
536  _In_ DWORD nCount,
537  _In_ DWORD dwMode)
538 {
539  UINT i;
540  BOOL bResult;
541  HBRUSH hbrOld;
542  PDC_ATTR pdcattr;
543 
544  /* Handle meta DCs */
547  {
548  if (!GdiValidateHandle(hdc))
549  {
550  return FALSE;
551  }
552 
553  /* Save the current DC brush */
554  hbrOld = SelectObject(hdc, GetStockObject(DC_BRUSH));
555 
556  /* Assume success */
557  bResult = TRUE;
558 
559  /* Loop all rect */
560  for (i = 0; i < nCount; i++)
561  {
562  /* Select the brush for this rect */
563  SelectObject(hdc, pPoly[i].hBrush);
564 
565  /* Do the PatBlt operation for this rect */
566  bResult &= PatBlt(hdc,
567  pPoly[i].nXLeft,
568  pPoly[i].nYLeft,
569  pPoly[i].nWidth,
570  pPoly[i].nHeight,
571  dwRop);
572  }
573 
574  /* Restore the old brush */
575  SelectObject(hdc, hbrOld);
576 
577  return bResult;
578  }
579 
580  /* Get the DC attribute */
581  pdcattr = GdiGetDcAttr(hdc);
582  if (nCount && pdcattr && !(pdcattr->ulDirty_ & DC_DIBSECTION))
583  {
584  PGDIBSPPATBLT pgO;
585  PTEB pTeb = NtCurrentTeb();
586 
588  if (pgO)
589  {
590  USHORT cjSize = 0;
591  if (nCount > 1) cjSize = (nCount-1) * sizeof(PATRECT);
592 
593  if ((pTeb->GdiTebBatch.Offset + cjSize) <= GDIBATCHBUFSIZE)
594  {
595  pdcattr->ulDirty_ |= DC_MODE_DIRTY;
596  pgO->Count = nCount;
597  pgO->Mode = dwMode;
598  pgO->rop4 = dwRop;
599  /* Snapshot attributes */
600  pgO->crForegroundClr = pdcattr->crForegroundClr;
601  pgO->crBackgroundClr = pdcattr->crBackgroundClr;
602  pgO->crBrushClr = pdcattr->crBrushClr;
603  pgO->ulForegroundClr = pdcattr->ulForegroundClr;
604  pgO->ulBackgroundClr = pdcattr->ulBackgroundClr;
605  pgO->ulBrushClr = pdcattr->ulBrushClr;
606  RtlCopyMemory(pgO->pRect, pPoly, nCount * sizeof(PATRECT));
607  // Recompute offset and return size, remember one is already accounted for in the structure.
608  pTeb->GdiTebBatch.Offset += cjSize;
609  ((PGDIBATCHHDR)pgO)->Size += cjSize;
610  return TRUE;
611  }
612  // Reset offset and count then fall through
613  pTeb->GdiTebBatch.Offset -= sizeof(GDIBSPPATBLT);
614  pTeb->GdiBatchCount--;
615  }
616  }
617  return NtGdiPolyPatBlt(hdc, dwRop, pPoly, nCount, dwMode);
618 }
619 
620 /*
621  * @implemented
622  */
623 BOOL
624 WINAPI
626  _In_ HDC hdcDest,
627  _In_ INT xDest,
628  _In_ INT yDest,
629  _In_ INT cxDest,
630  _In_ INT cyDest,
632  _In_ INT xSrc,
633  _In_ INT ySrc,
634  _In_ INT cxSrc,
635  _In_ INT cySrc,
636  _In_ DWORD dwRop)
637 {
639  StretchBlt,
640  FALSE,
641  hdcDest,
642  xDest,
643  yDest,
644  cxDest,
645  cyDest,
646  hdcSrc,
647  xSrc,
648  ySrc,
649  cxSrc,
650  cySrc,
651  dwRop);
652 
653  if ( GdiConvertAndCheckDC(hdcDest) == NULL ) return FALSE;
654 
655  return NtGdiStretchBlt(hdcDest,
656  xDest,
657  yDest,
658  cxDest,
659  cyDest,
660  hdcSrc,
661  xSrc,
662  ySrc,
663  cxSrc,
664  cySrc,
665  dwRop,
666  0);
667 }
668 
669 
670 /*
671  * @implemented
672  */
673 BOOL
674 WINAPI
676  _In_ HDC hdcDest,
677  _In_ INT xDest,
678  _In_ INT yDest,
679  _In_ INT cx,
680  _In_ INT cy,
681  _In_ HDC hdcSrc,
682  _In_ INT xSrc,
683  _In_ INT ySrc,
684  _In_ HBITMAP hbmMask,
685  _In_ INT xMask,
686  _In_ INT yMask,
687  _In_ DWORD dwRop)
688 {
690  MaskBlt,
691  FALSE,
692  hdcDest,
693  xDest,
694  yDest,
695  cx,
696  cy,
697  hdcSrc,
698  xSrc,
699  ySrc,
700  hbmMask,
701  xMask,
702  yMask,
703  dwRop);
704 
705  if ( GdiConvertAndCheckDC(hdcDest) == NULL ) return FALSE;
706 
707  return NtGdiMaskBlt(hdcDest,
708  xDest,
709  yDest,
710  cx,
711  cy,
712  hdcSrc,
713  xSrc,
714  ySrc,
715  hbmMask,
716  xMask,
717  yMask,
718  dwRop,
719  GetBkColor(hdcSrc));
720 }
721 
722 
723 /*
724  * @implemented
725  */
726 BOOL
727 WINAPI
729  _In_ HDC hdcDest,
730  _In_reads_(3) const POINT * ppt,
731  _In_ HDC hdcSrc,
732  _In_ INT xSrc,
733  _In_ INT ySrc,
734  _In_ INT cx,
735  _In_ INT cy,
736  _In_opt_ HBITMAP hbmMask,
737  _In_ INT xMask,
738  _In_ INT yMask)
739 {
741  PlgBlt,
742  FALSE,
743  hdcDest,
744  ppt,
745  hdcSrc,
746  xSrc,
747  ySrc,
748  cx,
749  cy,
750  hbmMask,
751  xMask,
752  yMask);
753 
754  if ( GdiConvertAndCheckDC(hdcDest) == NULL ) return FALSE;
755 
756  return NtGdiPlgBlt(hdcDest,
757  (LPPOINT)ppt,
758  hdcSrc,
759  xSrc,
760  ySrc,
761  cx,
762  cy,
763  hbmMask,
764  xMask,
765  yMask,
766  GetBkColor(hdcSrc));
767 }
768 
769 BOOL
770 WINAPI
772  _In_ HDC hdcDst,
773  _In_ INT xDst,
774  _In_ INT yDst,
775  _In_ INT cxDst,
776  _In_ INT cyDst,
777  _In_ HDC hdcSrc,
778  _In_ INT xSrc,
779  _In_ INT ySrc,
780  _In_ INT cxSrc,
781  _In_ INT cySrc,
782  _In_ BLENDFUNCTION blendfn)
783 {
784  if (hdcSrc == NULL ) return FALSE;
785 
787 
789  AlphaBlend,
790  FALSE,
791  hdcDst,
792  xDst,
793  yDst,
794  cxDst,
795  cyDst,
796  hdcSrc,
797  xSrc,
798  ySrc,
799  cxSrc,
800  cySrc,
801  blendfn);
802 
803  if ( GdiConvertAndCheckDC(hdcDst) == NULL ) return FALSE;
804 
805  return NtGdiAlphaBlend(hdcDst,
806  xDst,
807  yDst,
808  cxDst,
809  cyDst,
810  hdcSrc,
811  xSrc,
812  ySrc,
813  cxSrc,
814  cySrc,
815  blendfn,
816  0);
817 }
818 
819 
820 /*
821  * @implemented
822  */
823 BOOL
824 WINAPI
826  _In_ HDC hdcDst,
827  _In_ INT xDst,
828  _In_ INT yDst,
829  _In_ INT cxDst,
830  _In_ INT cyDst,
831  _In_ HDC hdcSrc,
832  _In_ INT xSrc,
833  _In_ INT ySrc,
834  _In_ INT cxSrc,
835  _In_ INT cySrc,
836  _In_ UINT crTransparent)
837 {
840  FALSE,
841  hdcDst,
842  xDst,
843  yDst,
844  cxDst,
845  cyDst,
846  hdcSrc,
847  xSrc,
848  ySrc,
849  cxSrc,
850  cySrc,
851  crTransparent);
852 
853  if ( GdiConvertAndCheckDC(hdcDst) == NULL ) return FALSE;
854 
855  return NtGdiTransparentBlt(hdcDst, xDst, yDst, cxDst, cyDst, hdcSrc, xSrc, ySrc, cxSrc, cySrc, crTransparent);
856 }
857 
858 /*
859  * @implemented
860  */
861 BOOL
862 WINAPI
864  _In_ HDC hdc,
867  _In_ PVOID pMesh,
868  _In_ ULONG nCount,
869  _In_ ULONG ulMode)
870 {
871  HANDLE_METADC(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 }
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define ERROR_INVALID_PARAMETER
Definition: compat.h:91
BOOL WINAPI FillRgn(_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbr)
Definition: painting.c:183
DWORD rop4
Definition: ntgdityp.h:490
__kernel_entry W32KAPI BOOL APIENTRY NtGdiPolyDraw(_In_ HDC hdc, _In_reads_(cpt) LPPOINT ppt, _In_reads_(cpt) LPBYTE pjAttr, _In_ ULONG cpt)
#define TransparentBlt
Definition: misc.c:292
GLint GLint GLsizei width
Definition: gl.h:1546
COLORREF WINAPI GetBkColor(_In_ HDC)
Definition: dc.c:954
COLORREF crBackgroundClr
Definition: ntgdityp.h:494
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID pMesh
Definition: winddi.h:3649
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
Definition: dc.c:414
#define TRUE
Definition: types.h:120
NTSYSAPI VOID NTAPI RtlCopyMemory(VOID UNALIGNED *Destination, CONST VOID UNALIGNED *Source, ULONG Length)
PATRECT pRect[1]
Definition: ntgdityp.h:500
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
ULONG ulBrushClr
Definition: ntgdityp.h:498
__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:924
COLORREF crBackgroundClr
Definition: ntgdityp.h:471
BOOL WINAPI PolyPolygon(_In_ HDC hdc, _In_ const POINT *apt, _In_reads_(csz) const INT *asz, _In_ INT csz)
Definition: painting.c:372
HANDLE hbrush
Definition: ntgdihdl.h:299
__kernel_entry W32KAPI BOOL APIENTRY NtGdiRectangle(_In_ HDC hdc, _In_ INT xLeft, _In_ INT yTop, _In_ INT xRight, _In_ INT yBottom)
COLORREF crForegroundClr
Definition: ntgdityp.h:493
DWORD dwRop
Definition: ntgdityp.h:469
#define _In_reads_(size)
Definition: no_sal2.h:228
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:487
COLORREF crForegroundClr
Definition: ntgdityp.h:470
static HDC
Definition: imagelist.c:92
#define CLR_INVALID
Definition: wingdi.h:882
#define DC_DIBSECTION
Definition: ntgdihdl.h:159
struct _GDIBATCHHDR * PGDIBATCHHDR
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1497
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:1452
BOOL WINAPI Rectangle(_In_ HDC hdc, _In_ INT left, _In_ INT top, _In_ INT right, _In_ INT bottom)
Definition: painting.c:91
COLORREF crBrushClr
Definition: ntgdityp.h:472
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:728
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
BOOL WINAPI DPtoLP(_In_ HDC hdc, _Inout_updates_(c) LPPOINT lppt, _In_ int c)
__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)
int32_t INT
Definition: typedefs.h:56
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
BOOL WINAPI PolyBezier(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
Definition: painting.c:263
#define _In_opt_
Definition: no_sal2.h:213
LONG y
Definition: windef.h:315
ULONG ulBackgroundClr
Definition: ntgdihdl.h:302
#define DIRTY_PTFXCURRENT
Definition: ntgdihdl.h:154
HANDLE hbrush
Definition: ntgdityp.h:468
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:625
__kernel_entry W32KAPI BOOL APIENTRY NtGdiLineTo(_In_ HDC hdc, _In_ INT x, _In_ INT y)
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
COLORREF WINAPI SetPixel(_In_ HDC hdc, _In_ INT x, _In_ INT y, _In_ COLORREF crColor)
Definition: painting.c:149
__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
__kernel_entry W32KAPI BOOL APIENTRY NtGdiFillRgn(_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbrush)
Definition: bitblt.c:1235
DWORD Count
Definition: ntgdityp.h:492
struct _GDIBSPPATBLT GDIBSPPATBLT
#define GDIBATCHBUFSIZE
Definition: ntgdityp.h:199
ULONG ulBackgroundClr
Definition: ntgdityp.h:497
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:570
BOOL WINAPI Polygon(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ INT cpt)
Definition: painting.c:318
BOOL WINAPI InvertRgn(_In_ HDC hdc, _In_ HRGN hrgn)
Definition: painting.c:229
__kernel_entry W32KAPI ULONG_PTR APIENTRY NtGdiPolyPolyDraw(_In_ HDC hdc, _In_ PPOINT ppt, _In_reads_(ccpt) PULONG pcpt, _In_ ULONG ccpt, _In_ INT iFunc)
smooth NULL
Definition: ftsmooth.c:416
BOOL WINAPI Polyline(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ INT cpt)
Definition: painting.c:336
__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)
GLint GLint bottom
Definition: glext.h:7726
__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:495
BOOL WINAPI GdiGradientFill(_In_ HDC hdc, _In_reads_(nVertex) PTRIVERTEX pVertex, _In_ ULONG nVertex, _In_ PVOID pMesh, _In_ ULONG nCount, _In_ ULONG ulMode)
Definition: painting.c:863
ULONG ulDirty_
Definition: ntgdihdl.h:298
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: painting.c:825
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX * pVertex
Definition: winddi.h:3649
#define _Out_opt_
Definition: no_sal2.h:339
#define DIRTY_STYLESTATE
Definition: ntgdihdl.h:155
COLORREF crBackgroundClr
Definition: ntgdihdl.h:301
BOOL WINAPI SetPixelV(_In_ HDC hdc, _In_ INT x, _In_ INT y, _In_ COLORREF crColor)
Definition: painting.c:168
BOOL WINAPI MoveToEx(_In_ HDC hdc, _In_ INT x, _In_ INT y, _Out_opt_ LPPOINT ppt)
Definition: painting.c:24
DWORD COLORREF
Definition: windef.h:285
__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)
#define WINAPI
Definition: msvc.h:8
COLORREF crBrushClr
Definition: ntgdihdl.h:305
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint left
Definition: glext.h:7726
LONG x
Definition: windef.h:314
#define SetLastError(x)
Definition: compat.h:409
#define GDI_OBJECT_TYPE_METADC
Definition: gdi.h:57
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
GDI_TEB_BATCH GdiTebBatch
Definition: compat.h:506
#define GDI_OBJECT_TYPE_DC
Definition: gdi.h:46
BOOL WINAPI LineTo(_In_ HDC hdc, _In_ INT x, _In_ INT y)
Definition: painting.c:9
ULONG GdiBatchCount
Definition: compat.h:536
#define ROP_USES_SOURCE(Rop)
Definition: gdi32p.h:88
__kernel_entry W32KAPI BOOL APIENTRY NtGdiFrameRgn(_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbrush, _In_ INT xWidth, _In_ INT yHeight)
Definition: bitblt.c:1292
HDC hdc
Definition: main.c:9
__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 HRGN hrgn
Definition: win.c:55
#define DC_MODE_DIRTY
Definition: ntgdihdl.h:166
ULONG ulBackgroundClr
Definition: ntgdityp.h:476
unsigned char BYTE
Definition: mem.h:68
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:675
POINTL ptfxCurrent
Definition: ntgdihdl.h:316
BOOL WINAPI FrameRgn(_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbr, _In_ INT nWidth, _In_ INT nHeight)
Definition: painting.c:205
BOOL WINAPI PolyPatBlt(_In_ HDC hdc, _In_ DWORD dwRop, _In_ PPOLYPATBLT pPoly, _In_ DWORD nCount, _In_ DWORD dwMode)
Definition: painting.c:532
__kernel_entry W32KAPI COLORREF APIENTRY NtGdiSetPixel(_In_ HDC hdcDst, _In_ INT x, _In_ INT y, _In_ COLORREF crColor)
Definition: bitblt.c:1363
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
COLORREF WINAPI GetPixel(_In_ HDC hdc, _In_ INT x, _In_ INT y)
Definition: painting.c:133
ULONG ulBrushClr
Definition: ntgdityp.h:477
#define _In_
Definition: no_sal2.h:204
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
Definition: compat.h:484
ULONG Offset
Definition: compat.h:480
BOOL WINAPI ExtFloodFill(_In_ HDC hdc, _In_ INT xStart, _In_ INT yStart, _In_ COLORREF crFill, _In_ UINT fuFillType)
Definition: painting.c:413
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG _In_ PVOID _In_ ULONG _In_ RECTL _In_ POINTL _In_ ULONG ulMode
Definition: winddi.h:3649
static HDC hdcDst
Definition: xlate.c:32
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
Definition: psfuncs.h:420
#define OBJ_BRUSH
Definition: objidl.idl:1410
#define DIRTY_PTLCURRENT
Definition: ntgdihdl.h:153
unsigned short USHORT
Definition: pedump.c:61
ULONG ulForegroundClr
Definition: ntgdihdl.h:304
ULONG ulBrushClr
Definition: ntgdihdl.h:306
ULONG ulForegroundClr
Definition: ntgdityp.h:475
BOOL WINAPI PolylineTo(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
Definition: painting.c:354
unsigned int * PULONG
Definition: retypes.h:1
unsigned int UINT
Definition: ndis.h:50
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
__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)
COLORREF crForegroundClr
Definition: ntgdihdl.h:303
_Out_opt_ int * cx
Definition: commctrl.h:570
#define AlphaBlend
Definition: misc.c:293
__kernel_entry W32KAPI BOOL APIENTRY NtGdiExtFloodFill(_In_ HDC hdc, _In_ INT x, _In_ INT y, _In_ COLORREF crColor, _In_ UINT iFillType)
unsigned int ULONG
Definition: retypes.h:1
_In_ ULONG cjSize
Definition: winddi.h:3634
__kernel_entry W32KAPI BOOL APIENTRY NtGdiGradientFill(_In_ HDC hdc, _In_ PTRIVERTEX pVertex, _In_ ULONG nVertex, _In_ PVOID pMesh, _In_ ULONG nMesh, _In_ ULONG ulMode)
DWORD Mode
Definition: ntgdityp.h:491
__kernel_entry W32KAPI BOOL APIENTRY NtGdiEllipse(_In_ HDC hdc, _In_ INT xLeft, _In_ INT yTop, _In_ INT xRight, _In_ INT yBottom)
BOOL WINAPI FloodFill(_In_ HDC hdc, _In_ INT xStart, _In_ INT yStart, _In_ COLORREF crFill)
Definition: painting.c:433
BOOL WINAPI PolyPolyline(_In_ HDC hdc, _In_ CONST POINT *apt, _In_reads_(csz) CONST DWORD *asz, _In_ DWORD csz)
Definition: painting.c:391
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX _In_ ULONG nVertex
Definition: winddi.h:3649
static HBITMAP
Definition: button.c:44
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: painting.c:771
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
BOOL WINAPI PaintRgn(_In_ HDC hdc, _In_ HRGN hrgn)
Definition: painting.c:250
FORCEINLINE PVOID GdiAllocBatchCommand(HDC hdc, USHORT Cmd)
Definition: gdi32p.h:381
POINTL ptlCurrent
Definition: ntgdihdl.h:315
BYTE * PBYTE
Definition: pedump.c:66
#define CONST
Definition: pedump.c:81
#define FLOODFILLBORDER
Definition: wingdi.h:643
BOOL WINAPI PolyBezierTo(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
Definition: painting.c:281
HGDIOBJ WINAPI GetCurrentObject(_In_ HDC, _In_ UINT)
Definition: dc.c:439
BOOL WINAPI GdiValidateHandle(HGDIOBJ)
Definition: misc.c:712
ULONG ulForegroundClr
Definition: ntgdityp.h:496
__kernel_entry W32KAPI BOOL APIENTRY NtGdiInvertRgn(_In_ HDC hdc, _In_ HRGN hrgn)
Definition: bitblt.c:1316
__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)