33 SURFACE *BitmapDest, *BitmapSrc;
34 RECTL DestRect, SourceRect;
40 if (WidthDest < 0 || HeightDest < 0 || WidthSrc < 0 || HeightSrc < 0)
46 if ((hDCDest ==
NULL) || (hDCSrc ==
NULL))
52 TRACE(
"Locking DCs\n");
57 WARN(
"Invalid dc handle (dest=0x%p, src=0x%p) passed to NtGdiAlphaBlend\n", hDCDest, hDCSrc);
72 DestRect.
left = XOriginDest;
73 DestRect.
top = YOriginDest;
74 DestRect.
right = XOriginDest + WidthDest;
75 DestRect.
bottom = YOriginDest + HeightDest;
78 DestRect.
left += DCDest->ptlDCOrig.x;
79 DestRect.
top += DCDest->ptlDCOrig.y;
80 DestRect.
right += DCDest->ptlDCOrig.x;
81 DestRect.
bottom += DCDest->ptlDCOrig.y;
88 SourceRect.
left = XOriginSrc;
89 SourceRect.
top = YOriginSrc;
90 SourceRect.
right = XOriginSrc + WidthSrc;
91 SourceRect.
bottom = YOriginSrc + HeightSrc;
94 SourceRect.
left += DCSrc->ptlDCOrig.x;
95 SourceRect.
top += DCSrc->ptlDCOrig.y;
96 SourceRect.
right += DCSrc->ptlDCOrig.x;
97 SourceRect.
bottom += DCSrc->ptlDCOrig.y;
99 if (!DestRect.
right ||
110 TRACE(
"Preparing DCs for blit\n");
114 BitmapDest = DCDest->dclevel.pSurface;
121 BitmapSrc = DCSrc->dclevel.pSurface;
132 TRACE(
"Performing the alpha blend\n");
143 TRACE(
"Finishing blit\n");
220 ULONG TransparentColor = 0;
230 TRACE(
"Locking DCs\n");
235 WARN(
"Invalid dc handle (dest=0x%p, src=0x%p) passed to NtGdiAlphaBlend\n",
hdcDst,
hdcSrc);
256 rcDest.
left += DCDest->ptlDCOrig.x;
257 rcDest.
top += DCDest->ptlDCOrig.y;
258 rcDest.
right += DCDest->ptlDCOrig.x;
259 rcDest.
bottom += DCDest->ptlDCOrig.y;
267 rcSrc.
left += DCSrc->ptlDCOrig.x;
268 rcSrc.
top += DCSrc->ptlDCOrig.y;
269 rcSrc.
right += DCSrc->ptlDCOrig.x;
270 rcSrc.
bottom += DCSrc->ptlDCOrig.y;
280 BitmapDest = DCDest->dclevel.pSurface;
286 BitmapSrc = DCSrc->dclevel.pSurface;
300 (
CLIPOBJ *)&DCDest->co, &exlo.
xlo, &rcDest, &rcSrc,
301 TransparentColor, 0);
335 RECTL DestRect, SourceRect;
336 POINTL SourcePoint, MaskPoint;
340 BOOL UsesSource, UsesPattern;
353 if (!
hdcSrc && (UsesSource || UsesPattern))
361 if (psurfMask ==
NULL)
386 TRACE(
"Locking DCs\n");
391 WARN(
"Invalid dc handle (dest=0x%p, src=0x%p) passed to NtGdiMaskBlt\n", hdcDest,
hdcSrc);
403 WARN(
"Invalid destination dc handle (0x%p) passed to NtGdiMaskBlt\n", hdcDest);
431 pdcattr = DCDest->pdcattr;
433 DestRect.
left = nXDest;
434 DestRect.
top = nYDest;
435 DestRect.
right = nXDest + nWidth;
436 DestRect.
bottom = nYDest + nHeight;
439 DestRect.
left += DCDest->ptlDCOrig.x;
440 DestRect.
top += DCDest->ptlDCOrig.y;
441 DestRect.
right += DCDest->ptlDCOrig.x;
442 DestRect.
bottom += DCDest->ptlDCOrig.y;
449 SourcePoint.
x = nXSrc;
450 SourcePoint.
y = nYSrc;
456 SourcePoint.
x += DCSrc->ptlDCOrig.x;
457 SourcePoint.
y += DCSrc->ptlDCOrig.y;
459 SourceRect.
left = SourcePoint.
x;
460 SourceRect.
top = SourcePoint.
y;
468 SourceRect.
right = 0;
479 BitmapDest = DCDest->dclevel.pSurface;
485 BitmapSrc = DCSrc->dclevel.pSurface;
491 XlateObj = &exlo.
xlo;
494 DPRINT(
"DestRect: (%d,%d)-(%d,%d) and SourcePoint is (%d,%d)\n",
496 SourcePoint.
x, SourcePoint.
y);
498 DPRINT(
"nWidth is '%d' and nHeight is '%d'.\n", nWidth, nHeight);
501 if ((DestRect.
left > DestRect.
right) && (nWidth < 0))
503 SourcePoint.
x += nWidth;
508 if ((DestRect.
top > DestRect.
bottom) && (nHeight < 0))
510 SourcePoint.
y += nHeight;
520 psurfMask ? &psurfMask->SurfObj :
NULL,
526 &DCDest->eboFill.BrushObject,
527 &DCDest->dclevel.pbrFill->ptOrigin,
562 FIXME(
"NtGdiPlgBlt: unimplemented.\n");
603 BOOL Case0000, Case0101, Case1010, CaseExcept;
610 if (0 == WidthDest || 0 == HeightDest || 0 == WidthSrc || 0 == HeightSrc)
616 if (!hDCDest || (UsesSource && !hDCSrc) || (UsesMask && !hDCMask))
623 ahDC[1] = UsesSource ? hDCSrc :
NULL;
624 ahDC[2] = UsesMask ? hDCMask :
NULL;
627 WARN(
"Invalid dc handle (dest=0x%p, src=0x%p) passed to GreStretchBltMask\n", hDCDest, hDCSrc);
657 Case0000 = ((WidthDest < 0) && (HeightDest < 0) && (WidthSrc < 0) && (HeightSrc < 0));
658 Case0101 = ((WidthDest < 0) && (HeightDest > 0) && (WidthSrc < 0) && (HeightSrc > 0));
659 Case1010 = ((WidthDest > 0) && (HeightDest < 0) && (WidthSrc > 0) && (HeightSrc < 0));
660 CaseExcept = (Case0000 || Case0101 || Case1010);
662 pdcattr = DCDest->pdcattr;
664 DestRect.
left = XOriginDest;
665 DestRect.
top = YOriginDest;
666 DestRect.
right = XOriginDest+WidthDest;
667 DestRect.
bottom = YOriginDest+HeightDest;
670 if ((WidthDest < 0) && !CaseExcept)
675 if ((HeightDest < 0) && !CaseExcept)
683 DestRect.
left += DCDest->ptlDCOrig.x;
684 DestRect.
top += DCDest->ptlDCOrig.y;
685 DestRect.
right += DCDest->ptlDCOrig.x;
686 DestRect.
bottom += DCDest->ptlDCOrig.y;
693 SourceRect.
left = XOriginSrc;
694 SourceRect.
top = YOriginSrc;
695 SourceRect.
right = XOriginSrc+WidthSrc;
696 SourceRect.
bottom = YOriginSrc+HeightSrc;
699 if ((WidthSrc < 0) && !CaseExcept)
704 if ((HeightSrc < 0) && !CaseExcept)
714 SourceRect.left += DCSrc->ptlDCOrig.x;
715 SourceRect.top += DCSrc->ptlDCOrig.y;
716 SourceRect.right += DCSrc->ptlDCOrig.x;
717 SourceRect.bottom += DCSrc->ptlDCOrig.y;
730 BitmapDest = DCDest->dclevel.pSurface;
731 if (BitmapDest ==
NULL)
735 BitmapSrc = DCSrc->dclevel.pSurface;
736 if (BitmapSrc ==
NULL)
741 XlateObj = &exlo.
xlo;
745 BrushOrigin.
x += DCDest->ptlDCOrig.x;
746 BrushOrigin.
y += DCDest->ptlDCOrig.y;
749 if (BitmapSrc && DCMask)
751 BitmapMask = DCMask->dclevel.pSurface;
756 WARN(
"%dx%d mask is smaller than %dx%d bitmap\n",
758 WidthSrc, HeightSrc);
763 MaskPoint.
x = XOriginMask;
764 MaskPoint.
y = YOriginMask;
766 MaskPoint.
x += DCMask->ptlDCOrig.x;
767 MaskPoint.
y += DCMask->ptlDCOrig.y;
770 DPRINT(
"Calling IntEngStrethBlt SourceRect: (%d,%d)-(%d,%d) and DestRect: (%d,%d)-(%d,%d).\n",
783 BitmapMask ? &MaskPoint :
NULL,
784 &DCDest->eboFill.BrushObject,
836 MAKEROP4(dwRop3 & 0xFF0000, dwRop3),
871 DestRect.
left = XLeft;
877 DestRect.
right = XLeft;
882 DestRect.
top = YLeft;
893 DestRect.
left += pdc->ptlDCOrig.x;
894 DestRect.
top += pdc->ptlDCOrig.y;
895 DestRect.
right += pdc->ptlDCOrig.x;
896 DestRect.
bottom += pdc->ptlDCOrig.y;
904 BrushOrigin.
x = pbrush->ptOrigin.x + pdc->ptlDCOrig.x + XLeft;
905 BrushOrigin.
y = pbrush->ptOrigin.y + pdc->ptlDCOrig.y + YLeft;
907 BrushOrigin.
x = pbrush->ptOrigin.x + pdc->ptlDCOrig.x;
908 BrushOrigin.
y = pbrush->ptOrigin.y + pdc->ptlDCOrig.y;
913 psurf = pdc->dclevel.pSurface;
959 for (
i = 0;
i < cRects;
i++)
1004 dwRop =
MAKEROP4(dwRop & 0xFF0000, dwRop);
1022 if (pdc->dclevel.pSurface ==
NULL)
1122 if (pdc->dclevel.pSurface ==
NULL)
1129 if (prgnClip ==
NULL)
1172 bResult =
IntEngBitBlt(&pdc->dclevel.pSurface->SurfObj,
1208 if (pdc->dclevel.pSurface ==
NULL)
1214 if (prgnClip ==
NULL)
1254 mix = rop2Fg | (pdc->pdcattr->jBkMode ==
OPAQUE ? rop2Fg :
R2_NOP) << 8;
1260 if (pbrFill !=
NULL)
1274 pbo = &pdc->eboFill.BrushObject;
1278 bRet =
IntEngPaint(&pdc->dclevel.pSurface->SurfObj,
1281 &pdc->pdcattr->ptlBrushOrigin,
1317 ERR(
"Failed to lock hdc %p\n",
hdc);
1322 if (pdc->dclevel.pSurface ==
NULL)
1332 ERR(
"Failed to lock hrgn %p\n",
hrgn);
1339 if (pbrFill ==
NULL)
1341 ERR(
"Failed to lock hbrush %p\n",
hbrush);
1371 if (hrgnFrame ==
NULL)
1401 if (pdc->dclevel.pSurface ==
NULL)
1438 ULONG iOldColor, iSolidColor;
1453 if (pdc->dclevel.pSurface ==
NULL)
1468 rcDst.
left += pdc->ptlDCOrig.x;
1469 rcDst.
top += pdc->ptlDCOrig.y;
1470 rcDst.
right += pdc->ptlDCOrig.x;
1471 rcDst.
bottom += pdc->ptlDCOrig.y;
1480 pebo = &pdc->eboText;
1486 ulDirty = pdc->pdcattr->ulDirty_;
1487 pdc->pdcattr->ulDirty_ &= ~DIRTY_TEXT;
1494 pdc->pdcattr->ulDirty_ = ulDirty;
1499 pdc->dclevel.pSurface->ppal,
1502 pdc->pdcattr->crBackgroundClr,
1503 pdc->pdcattr->crForegroundClr);
1515 return bResult ? crColor : -1;
1540 if (pdc->dclevel.pSurface ==
NULL)
1552 ptlSrc.
x += pdc->ptlDCOrig.x;
1553 ptlSrc.
y += pdc->ptlDCOrig.y;
1564 psurfSrc = pdc->dclevel.pSurface;
1585 RECTL rclDest = {0, 0, 1, 1};
1593 RGB(0xff,0xff,0xff),
1611 ulRGBColor &= 0x00FFFFFF;
#define DBG_DEFAULT_CHANNEL(ch)
FORCEINLINE PMATRIX DC_pmxWorldToDevice(PDC pdc)
static BOOLEAN IntLPtoDP(DC *pdc, PPOINTL ppt, UINT count)
VOID FASTCALL DC_vPrepareDCsForBlit(PDC pdcDest, const RECT *rcDest, PDC pdcSrc, const RECT *rcSrc)
VOID FASTCALL DC_vFinishBlit(PDC pdc1, PDC pdc2)
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
VOID FASTCALL IntUpdateBoundsRect(PDC, PRECTL)
VOID FASTCALL DC_vUpdateFillBrush(PDC pdc)
ULONG TranslateCOLORREF(PDC pdc, COLORREF crColor)
FORCEINLINE PDC DC_LockDc(HDC hdc)
#define ERROR_NOT_ENOUGH_MEMORY
#define NT_SUCCESS(StatCode)
static const BLENDFUNCTION BlendFunc
#define ERROR_INVALID_PARAMETER
#define ERROR_INVALID_HANDLE
static void cleanup(void)
VOID NTAPI EBRUSHOBJ_vInitFromDC(EBRUSHOBJ *pebo, PBRUSH pbrush, PDC pdc)
VOID NTAPI EBRUSHOBJ_vCleanup(EBRUSHOBJ *pebo)
VOID NTAPI EBRUSHOBJ_vInit(EBRUSHOBJ *pebo, PBRUSH pbrush, PSURFACE psurf, COLORREF crBackgroundClr, COLORREF crForegroundClr, PPALETTE ppalDC)
#define ExAllocatePoolWithTag(hernya, size, tag)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
#define BRUSH_ShareLockBrush(hBrush)
#define BRUSH_ShareUnlockBrush(pBrush)
FORCEINLINE ULONG EBRUSHOBJ_iSetSolidColor(EBRUSHOBJ *pebo, ULONG iSolidColor)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint 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
#define EXCEPTION_EXECUTE_HANDLER
#define ROP4_USES_PATTERN(Rop4)
BOOL FASTCALL IntEngTransparentBlt(SURFOBJ *Dest, SURFOBJ *Source, CLIPOBJ *Clip, XLATEOBJ *ColorTranslation, PRECTL DestRect, PRECTL SourceRect, ULONG iTransColor, ULONG Reserved)
BOOL APIENTRY IntEngStretchBlt(SURFOBJ *DestObj, SURFOBJ *SourceObj, SURFOBJ *Mask, CLIPOBJ *ClipRegion, XLATEOBJ *ColorTranslation, COLORADJUSTMENT *pca, RECTL *DestRect, RECTL *SourceRect, POINTL *pMaskOrigin, BRUSHOBJ *Brush, POINTL *BrushOrigin, ULONG Mode)
#define ROP4_USES_MASK(Rop4)
#define ROP4_USES_SOURCE(Rop4)
BOOL APIENTRY IntEngPaint(_In_ SURFOBJ *pso, _In_ CLIPOBJ *pco, _In_ BRUSHOBJ *pbo, _In_ POINTL *pptlBrushOrg, _In_ __in_data_source(USER_MODE) MIX mix)
#define WIN32_ROP3_TO_ENG_ROP4(dwRop4)
#define WIN32_ROP4_USES_SOURCE(Rop)
#define WIN32_ROP4_TO_ENG_ROP4(dwRop4)
#define ExFreePoolWithTag(_P, _T)
_Out_opt_ int _Out_opt_ int * cy
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
BLENDFUNCTION BlendFunction
struct _PALETTE *const ppal
#define RtlCopyMemory(Destination, Source, Length)
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
_In_ HFONT _Out_ PUINT Height
BOOL APIENTRY IntEngAlphaBlend(_Inout_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSource, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ RECTL *prclDest, _In_ RECTL *prclSrc, _In_ BLENDOBJ *pBlendObj)
BOOL APIENTRY IntEngBitBlt(SURFOBJ *psoTrg, SURFOBJ *psoSrc, SURFOBJ *psoMask, CLIPOBJ *pco, XLATEOBJ *pxlo, RECTL *prclTrg, POINTL *pptlSrc, POINTL *pptlMask, BRUSHOBJ *pbo, POINTL *pptlBrush, ROP4 Rop4)
VOID FASTCALL IntEngUpdateClipRegion(XCLIPOBJ *Clip, ULONG count, const RECTL *pRect, const RECTL *rcBounds)
VOID FASTCALL IntEngFreeClipResources(XCLIPOBJ *Clip)
VOID FASTCALL IntEngInitClipObj(XCLIPOBJ *Clip)
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
UCHAR gajBitsPerFormat[11]
PSURFACE NTAPI SURFACE_AllocSurface(_In_ USHORT iType, _In_ ULONG cx, _In_ ULONG cy, _In_ ULONG iFormat, _In_ ULONG fjBitmap, _In_opt_ ULONG cjWidth, _In_opt_ ULONG cjBufSize, _In_opt_ PVOID pvBits)
#define SURFACE_ShareUnlockSurface(pBMObj)
#define SURFACE_ShareLockSurface(hBMObj)
BOOL APIENTRY NtGdiPolyPatBlt(HDC hDC, DWORD dwRop, IN PPOLYPATBLT pRects, IN DWORD cRects, IN DWORD Mode)
BOOL APIENTRY IntGdiBitBltRgn(_In_ PDC pdc, _In_ PREGION prgn, _In_opt_ BRUSHOBJ *pbo, _In_opt_ POINTL *pptlBrush, _In_ ROP4 rop4)
BOOL APIENTRY NtGdiPatBlt(_In_ HDC hdcDest, _In_ INT x, _In_ INT y, _In_ INT cx, _In_ INT cy, _In_ DWORD dwRop)
BOOL FASTCALL IntGdiPaintRgn(_In_ PDC pdc, _In_ PREGION prgn)
BOOL FASTCALL IntGdiPolyPatBlt(HDC hDC, DWORD dwRop, PPATRECT pRects, INT cRects, ULONG Reserved)
static BOOL FASTCALL REGION_LPTODP(_In_ PDC pdc, _Inout_ PREGION prgnDest, _In_ PREGION prgnSrc)
BOOL APIENTRY NtGdiInvertRgn(_In_ HDC hdc, _In_ HRGN hrgn)
COLORREF APIENTRY NtGdiGetPixel(_In_ HDC hdc, _In_ INT x, _In_ INT y)
BOOL APIENTRY NtGdiStretchBlt(HDC hDCDest, INT XOriginDest, INT YOriginDest, INT WidthDest, INT HeightDest, HDC hDCSrc, INT XOriginSrc, INT YOriginSrc, INT WidthSrc, INT HeightSrc, DWORD dwRop3, IN DWORD dwBackColor)
BOOL IntGdiFillRgn(_In_ PDC pdc, _In_ PREGION prgn, _In_opt_ PBRUSH pbrFill)
BOOL APIENTRY NtGdiMaskBlt(HDC hdcDest, INT nXDest, INT nYDest, INT nWidth, INT nHeight, HDC hdcSrc, INT nXSrc, INT nYSrc, HBITMAP hbmMask, INT xMask, INT yMask, DWORD dwRop4, IN DWORD crBackColor)
BOOL APIENTRY NtGdiFrameRgn(_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbrush, _In_ INT xWidth, _In_ INT yHeight)
BOOL FASTCALL IntPatBlt(PDC pdc, INT XLeft, INT YLeft, INT Width, INT Height, DWORD dwRop3, PEBRUSHOBJ pebo)
BOOL APIENTRY NtGdiTransparentBlt(HDC hdcDst, INT xDst, INT yDst, INT cxDst, INT cyDst, HDC hdcSrc, INT xSrc, INT ySrc, INT cxSrc, INT cySrc, COLORREF TransColor)
BOOL NTAPI GreStretchBltMask(HDC hDCDest, INT XOriginDest, INT YOriginDest, INT WidthDest, INT HeightDest, HDC hDCSrc, INT XOriginSrc, INT YOriginSrc, INT WidthSrc, INT HeightSrc, DWORD dwRop4, IN DWORD dwBackColor, HDC hDCMask, INT XOriginMask, INT YOriginMask)
BOOL APIENTRY NtGdiAlphaBlend(HDC hDCDest, LONG XOriginDest, LONG YOriginDest, LONG WidthDest, LONG HeightDest, HDC hDCSrc, LONG XOriginSrc, LONG YOriginSrc, LONG WidthSrc, LONG HeightSrc, BLENDFUNCTION BlendFunc, HANDLE hcmXform)
BOOL APIENTRY NtGdiPlgBlt(IN HDC hdcTrg, IN LPPOINT pptlTrg, IN HDC hdcSrc, IN INT xSrc, IN INT ySrc, IN INT cxSrc, IN INT cySrc, IN HBITMAP hbmMask, IN INT xMask, IN INT yMask, IN DWORD crBackColor)
COLORREF APIENTRY NtGdiSetPixel(_In_ HDC hdc, _In_ INT x, _In_ INT y, _In_ COLORREF crColor)
BOOL APIENTRY NtGdiFillRgn(_In_ HDC hdc, _In_ HRGN hrgn, _In_ HBRUSH hbrush)
BOOL APIENTRY NtGdiBitBlt(HDC hDCDest, INT XDest, INT YDest, INT Width, INT Height, HDC hDCSrc, INT XSrc, INT YSrc, DWORD dwRop, IN DWORD crBackColor, IN FLONG fl)
BOOL NTAPI GreDeleteObject(HGDIOBJ hobj)
BOOL NTAPI GDIOBJ_bLockMultipleObjects(IN ULONG ulCount, IN HGDIOBJ *ahObj, OUT PGDIOBJ *apObj, IN UCHAR objt)
VOID NTAPI GDIOBJ_vUnlockObject(POBJ pobj)
VOID NTAPI GDIOBJ_vDeleteObject(POBJ pobj)
VOID FASTCALL RECTL_vMakeWellOrdered(_Inout_ RECTL *prcl)
FORCEINLINE VOID RECTL_vSetRect(_Out_ RECTL *prcl, _In_ LONG left, _In_ LONG top, _In_ LONG right, _In_ LONG bottom)
VOID FASTCALL REGION_Delete(PREGION pRgn)
PREGION FASTCALL REGION_LockRgn(_In_ HRGN hrgn)
BOOL FASTCALL REGION_bXformRgn(_Inout_ PREGION prgn, _In_ PMATRIX pmx)
VOID FASTCALL REGION_UnlockRgn(_In_ PREGION prgn)
INT FASTCALL REGION_GetRgnBox(PREGION Rgn, PRECTL pRect)
PREGION FASTCALL IntSysCreateRectpRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect)
HRGN FASTCALL GreCreateFrameRgn(HRGN hrgn, INT cx, INT cy)
BOOL FASTCALL REGION_bOffsetRgn(_Inout_ PREGION prgn, _In_ INT cx, _In_ INT cy)
INT FASTCALL IntGdiCombineRgn(PREGION prgnDest, PREGION prgnSrc1, PREGION prgnSrc2, INT iCombineMode)
_In_ PATHOBJ _In_ CLIPOBJ _In_ BRUSHOBJ _In_ POINTL _In_ MIX mix
ENGAPI ULONG APIENTRY XLATEOBJ_iXlate(_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL _In_opt_ BRUSHOBJ _In_opt_ POINTL _In_ ROP4 rop4
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL _In_opt_ BRUSHOBJ _In_opt_ POINTL * pptlBrush
ENGAPI BOOL APIENTRY EngCopyBits(_In_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSrc, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ __in_data_source(USER_MODE) RECTL *prclDest, _In_ __in_data_source(USER_MODE) POINTL *pptlSrc)
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL _In_opt_ BRUSHOBJ * pbo
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
_Reserved_ PVOID Reserved
VOID NTAPI EXLATEOBJ_vInitialize(_Out_ PEXLATEOBJ pexlo, _In_opt_ PALETTE *ppalSrc, _In_opt_ PALETTE *ppalDst, _In_ COLORREF crSrcBackColor, _In_ COLORREF crDstBackColor, _In_ COLORREF crDstForeColor)
VOID NTAPI EXLATEOBJ_vCleanup(_Inout_ PEXLATEOBJ pexlo)
VOID NTAPI EXLATEOBJ_vInitXlateFromDCs(_Out_ EXLATEOBJ *pexlo, _In_ PDC pdcSrc, _In_ PDC pdcDst)