#define NDEBUG
#include <debug.h>
+BOOL FASTCALL
+GreDPtoLP(HDC hdc, LPPOINT lpPoints, INT nCount)
+{
+ PDC dc;
+ if (!(dc = DC_LockDc(hdc)))
+ {
+ EngSetLastError(ERROR_INVALID_HANDLE);
+ return FALSE;
+ }
+ IntDPtoLP(dc, lpPoints, nCount);
+ DC_UnlockDc(dc);
+ return TRUE;
+}
+
+BOOL FASTCALL
+GreLPtoDP(HDC hdc, LPPOINT lpPoints, INT nCount)
+{
+ PDC dc;
+ if (!(dc = DC_LockDc(hdc)))
+ {
+ EngSetLastError(ERROR_INVALID_HANDLE);
+ return FALSE;
+ }
+ IntLPtoDP(dc, lpPoints, nCount);
+ DC_UnlockDc(dc);
+ return TRUE;
+}
+
+int FASTCALL
+GreGetBkMode(HDC hdc)
+{
+ PDC dc;
+ LONG lBkMode;
+ if (!(dc = DC_LockDc(hdc)))
+ {
+ EngSetLastError(ERROR_INVALID_HANDLE);
+ return CLR_INVALID;
+ }
+ lBkMode = dc->pdcattr->lBkMode;
+ DC_UnlockDc(dc);
+ return lBkMode;
+}
+
+int FASTCALL
+GreGetMapMode(HDC hdc)
+{
+ PDC dc;
+ INT iMapMode;
+ if (!(dc = DC_LockDc(hdc)))
+ {
+ EngSetLastError(ERROR_INVALID_HANDLE);
+ return CLR_INVALID;
+ }
+ iMapMode = dc->pdcattr->iMapMode;
+ DC_UnlockDc(dc);
+ return iMapMode;
+}
+
+COLORREF FASTCALL
+GreGetTextColor(HDC hdc)
+{
+ PDC dc;
+ ULONG ulForegroundClr;
+ if (!(dc = DC_LockDc(hdc)))
+ {
+ EngSetLastError(ERROR_INVALID_HANDLE);
+ return CLR_INVALID;
+ }
+ ulForegroundClr = dc->pdcattr->ulForegroundClr;
+ DC_UnlockDc(dc);
+ return ulForegroundClr;
+}
+
COLORREF FASTCALL
IntGdiSetBkColor(HDC hDC, COLORREF color)
{
return crOldColor;
}
+COLORREF FASTCALL
+IntSetDCBrushColor(HDC hdc, COLORREF crColor)
+{
+ COLORREF OldColor = CLR_INVALID;
+ PDC dc;
+ if (!(dc = DC_LockDc(hdc)))
+ {
+ EngSetLastError(ERROR_INVALID_HANDLE);
+ return CLR_INVALID;
+ }
+ else
+ {
+ OldColor = (COLORREF) dc->pdcattr->ulBrushClr;
+ dc->pdcattr->ulBrushClr = (ULONG) crColor;
+
+ if ( dc->pdcattr->crBrushClr != crColor )
+ {
+ dc->pdcattr->ulDirty_ |= DIRTY_FILL;
+ dc->pdcattr->crBrushClr = crColor;
+ }
+ }
+ DC_UnlockDc(dc);
+ return OldColor;
+}
+
+COLORREF FASTCALL
+IntSetDCPenColor(HDC hdc, COLORREF crColor)
+{
+ COLORREF OldColor;
+ PDC dc;
+ if (!(dc = DC_LockDc(hdc)))
+ {
+ EngSetLastError(ERROR_INVALID_PARAMETER);
+ return CLR_INVALID;
+ }
+
+ OldColor = (COLORREF)dc->pdcattr->ulPenClr;
+ dc->pdcattr->ulPenClr = (ULONG)crColor;
+
+ if (dc->pdcattr->crPenClr != crColor)
+ {
+ dc->pdcattr->ulDirty_ |= DIRTY_LINE;
+ dc->pdcattr->crPenClr = crColor;
+ }
+ DC_UnlockDc(dc);
+ return OldColor;
+}
+
int
FASTCALL
GreSetStretchBltMode(HDC hDC, int iStretchMode)
// Wine returns an error here. We set the default.
if ((iStretchMode <= 0) || (iStretchMode > MAXSTRETCHBLTMODE)) iStretchMode = WHITEONBLACK;
-
+
pdcattr->jStretchBltMode = iStretchMode;
+ DC_UnlockDc(pdc);
}
return oSMode;
}
+int FASTCALL
+GreGetGraphicsMode(HDC hdc)
+{
+ PDC dc;
+ int GraphicsMode;
+ if (!(dc = DC_LockDc(hdc)))
+ {
+ EngSetLastError(ERROR_INVALID_HANDLE);
+ return CLR_INVALID;
+ }
+ GraphicsMode = dc->pdcattr->iGraphicsMode;;
+ DC_UnlockDc(dc);
+ return GraphicsMode;
+}
+
VOID
FASTCALL
DCU_SetDcUndeletable(HDC hDC)
IntSetDefaultRegion(PDC pdc)
{
PSURFACE pSurface;
- PROSRGNDATA prgn;
+ PREGION prgn;
RECTL rclWnd, rclClip;
IntGdiReleaseRaoRgn(pdc);
}
else if (Flags & DCHF_VALIDATEVISRGN || 0 == Flags)
{
- dc->fs &= ~DC_FLAG_DIRTY_RAO;
+ //dc->fs &= ~DC_FLAG_DIRTY_RAO;
}
DC_UnlockDc(dc);
break;
case GdiGetEMFRestorDc:
+ SafeResult = pdc->dclevel.lSaveDepth;
break;
case GdiGetFontLanguageInfo:
return Ret;
}
-BOOL _Success_(return != FALSE)
+_Success_(return != FALSE)
+BOOL
APIENTRY
NtGdiGetAndSetDCDword(
_In_ HDC hdc,
RECTL_vSetEmptyRect(&pdc->erclBoundsApp);
}
- if (flags & DCB_ACCUMULATE)
+ if (flags & DCB_ACCUMULATE && prc != NULL)
{
/* Capture the rect */
_SEH2_TRY