ReactOS  0.4.15-dev-4863-gba0d16f
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);
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_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 }
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_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 }
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_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 }
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_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 }
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_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 }
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 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 }
482 
483 BOOL
484 WINAPI
486  _In_ HDC hdc,
487  _In_ INT nXLeft,
488  _In_ INT nYLeft,
489  _In_ INT nWidth,
490  _In_ INT nHeight,
491  _In_ DWORD dwRop)
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 }
527 
528 BOOL
529 WINAPI
531  _In_ HDC hdc,
532  _In_ DWORD dwRop,
533  _In_ PPOLYPATBLT pPoly,
534  _In_ DWORD nCount,
535  _In_ DWORD dwMode)
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 }
617 
618 /*
619  * @implemented
620  */
621 BOOL
622 WINAPI
624  _In_ HDC hdcDest,
625  _In_ INT xDest,
626  _In_ INT yDest,
627  _In_ INT cxDest,
628  _In_ INT cyDest,
630  _In_ INT xSrc,
631  _In_ INT ySrc,
632  _In_ INT cxSrc,
633  _In_ INT cySrc,
634  _In_ DWORD dwRop)
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 }
666 
667 
668 /*
669  * @implemented
670  */
671 BOOL
672 WINAPI
674  _In_ HDC hdcDest,
675  _In_ INT xDest,
676  _In_ INT yDest,
677  _In_ INT cx,
678  _In_ INT cy,
679  _In_ HDC hdcSrc,
680  _In_ INT xSrc,
681  _In_ INT ySrc,
682  _In_ HBITMAP hbmMask,
683  _In_ INT xMask,
684  _In_ INT yMask,
685  _In_ DWORD dwRop)
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 }
719 
720 
721 /*
722  * @implemented
723  */
724 BOOL
725 WINAPI
727  _In_ HDC hdcDest,
728  _In_reads_(3) const POINT * ppt,
729  _In_ HDC hdcSrc,
730  _In_ INT xSrc,
731  _In_ INT ySrc,
732  _In_ INT cx,
733  _In_ INT cy,
734  _In_opt_ HBITMAP hbmMask,
735  _In_ INT xMask,
736  _In_ INT yMask)
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 }
766 
767 BOOL
768 WINAPI
770  _In_ HDC hdcDst,
771  _In_ INT xDst,
772  _In_ INT yDst,
773  _In_ INT cxDst,
774  _In_ INT cyDst,
775  _In_ HDC hdcSrc,
776  _In_ INT xSrc,
777  _In_ INT ySrc,
778  _In_ INT cxSrc,
779  _In_ INT cySrc,
780  _In_ BLENDFUNCTION blendfn)
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 }
816 
817 
818 /*
819  * @implemented
820  */
821 BOOL
822 WINAPI
824  _In_ HDC hdcDst,
825  _In_ INT xDst,
826  _In_ INT yDst,
827  _In_ INT cxDst,
828  _In_ INT cyDst,
829  _In_ HDC hdcSrc,
830  _In_ INT xSrc,
831  _In_ INT ySrc,
832  _In_ INT cxSrc,
833  _In_ INT cySrc,
834  _In_ UINT crTransparent)
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 }
855 
856 /*
857  * @implemented
858  */
859 BOOL
860 WINAPI
862  _In_ HDC hdc,
865  _In_ PVOID pMesh,
866  _In_ ULONG nCount,
867  _In_ ULONG ulMode)
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 }
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
BOOL WINAPI FillRgn(_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbr)
Definition: painting.c:183
DWORD rop4
Definition: ntgdityp.h:491
__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:978
COLORREF crBackgroundClr
Definition: ntgdityp.h:495
_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
PATRECT pRect[1]
Definition: ntgdityp.h:501
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:499
#define _In_opt_
Definition: ms_sal.h:309
__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
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:291
#define TRUE
Definition: types.h:120
__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:494
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
static HDC
Definition: imagelist.c:92
#define CLR_INVALID
Definition: wingdi.h:883
#define DC_DIBSECTION
Definition: ntgdihdl.h:137
struct _GDIBATCHHDR * PGDIBATCHHDR
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1539
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
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:473
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
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:58
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
BOOL WINAPI PolyBezier(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
Definition: painting.c:263
LONG y
Definition: windef.h:330
ULONG ulBackgroundClr
Definition: ntgdihdl.h:294
#define DIRTY_PTFXCURRENT
Definition: ntgdihdl.h:132
HANDLE hbrush
Definition: ntgdityp.h:469
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
__kernel_entry W32KAPI BOOL APIENTRY NtGdiLineTo(_In_ HDC hdc, _In_ INT x, _In_ INT y)
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
__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:1295
DWORD Count
Definition: ntgdityp.h:493
struct _GDIBSPPATBLT GDIBSPPATBLT
#define GDIBATCHBUFSIZE
Definition: ntgdityp.h:200
ULONG ulBackgroundClr
Definition: ntgdityp.h:498
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:585
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)
BOOL WINAPI Polyline(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ INT cpt)
Definition: painting.c:336
#define _In_
Definition: ms_sal.h:308
__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:496
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:861
ULONG ulDirty_
Definition: ntgdihdl.h:290
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:823
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
_In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ TRIVERTEX * pVertex
Definition: winddi.h:3649
#define DIRTY_STYLESTATE
Definition: ntgdihdl.h:133
COLORREF crBackgroundClr
Definition: ntgdihdl.h:293
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:300
__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:6
COLORREF crBrushClr
Definition: ntgdihdl.h:297
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint left
Definition: glext.h:7726
LONG x
Definition: windef.h:329
#define SetLastError(x)
Definition: compat.h:611
#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:716
#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:746
#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:1352
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:144
ULONG ulBackgroundClr
Definition: ntgdityp.h:477
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
POINTL ptfxCurrent
Definition: ntgdihdl.h:308
#define _In_reads_(size)
Definition: ms_sal.h:319
unsigned char BYTE
Definition: xxhash.c:193
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:530
__kernel_entry W32KAPI COLORREF APIENTRY NtGdiSetPixel(_In_ HDC hdcDst, _In_ INT x, _In_ INT y, _In_ COLORREF crColor)
Definition: bitblt.c:1423
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:478
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:694
ULONG Offset
Definition: compat.h:690
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
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
#define OBJ_BRUSH
Definition: objidl.idl:1410
#define DIRTY_PTLCURRENT
Definition: ntgdihdl.h:131
unsigned short USHORT
Definition: pedump.c:61
ULONG ulForegroundClr
Definition: ntgdihdl.h:296
ULONG ulBrushClr
Definition: ntgdihdl.h:298
ULONG ulForegroundClr
Definition: ntgdityp.h:476
BOOL WINAPI PolylineTo(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
Definition: painting.c:354
#define _Out_opt_
Definition: ms_sal.h:346
unsigned int * PULONG
Definition: retypes.h:1
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
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:295
_Out_opt_ int * cx
Definition: commctrl.h:585
#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:492
__kernel_entry W32KAPI BOOL APIENTRY NtGdiEllipse(_In_ HDC hdc, _In_ INT xLeft, _In_ INT yTop, _In_ INT xRight, _In_ INT yBottom)
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
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:769
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:307
BYTE * PBYTE
Definition: pedump.c:66
#define CONST
Definition: pedump.c:81
#define FLOODFILLBORDER
Definition: wingdi.h:644
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:428
BOOL WINAPI GdiValidateHandle(HGDIOBJ)
Definition: misc.c:712
ULONG ulForegroundClr
Definition: ntgdityp.h:497
__kernel_entry W32KAPI BOOL APIENTRY NtGdiInvertRgn(_In_ HDC hdc, _In_ HRGN hrgn)
Definition: bitblt.c:1376
__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)