Author: jimtabor Date: Fri Aug 7 05:56:01 2015 New Revision: 68608
URL: http://svn.reactos.org/svn/reactos?rev=68608&view=rev Log: [NtGdi] - Add more function for NtUser.
Modified: trunk/reactos/win32ss/gdi/ntgdi/coord.c trunk/reactos/win32ss/gdi/ntgdi/coord.h trunk/reactos/win32ss/gdi/ntgdi/dc.h trunk/reactos/win32ss/gdi/ntgdi/dcutil.c trunk/reactos/win32ss/gdi/ntgdi/text.c trunk/reactos/win32ss/gdi/ntgdi/text.h
Modified: trunk/reactos/win32ss/gdi/ntgdi/coord.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/coord.c?r... ============================================================================== --- trunk/reactos/win32ss/gdi/ntgdi/coord.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/ntgdi/coord.c [iso-8859-1] Fri Aug 7 05:56:01 2015 @@ -894,6 +894,38 @@ return iPrevMapMode; }
+BOOL +FASTCALL +GreSetViewportOrgEx( + HDC hDC, + int X, + int Y, + LPPOINT Point) +{ + PDC dc; + PDC_ATTR pdcattr; + + dc = DC_LockDc(hDC); + if (!dc) + { + EngSetLastError(ERROR_INVALID_HANDLE); + return FALSE; + } + pdcattr = dc->pdcattr; + + if (Point) + { + Point->x = pdcattr->ptlViewportOrg.x; + Point->y = pdcattr->ptlViewportOrg.y; + } + + pdcattr->ptlViewportOrg.x = X; + pdcattr->ptlViewportOrg.y = Y; + pdcattr->flXform |= PAGE_XLATE_CHANGED; + + DC_UnlockDc(dc); + return TRUE; +}
BOOL APIENTRY @@ -1239,6 +1271,89 @@ }
BOOL APIENTRY +GreGetDCPoint( + HDC hDC, + UINT iPoint, + PPOINTL Point) +{ + BOOL Ret = TRUE; + DC *pdc; + SIZE Size; + PSIZEL pszlViewportExt; + + if (!Point) + { + EngSetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + pdc = DC_LockDc(hDC); + if (!pdc) + { + EngSetLastError(ERROR_INVALID_HANDLE); + return FALSE; + } + + switch (iPoint) + { + case GdiGetViewPortExt: + pszlViewportExt = DC_pszlViewportExt(pdc); + Point->x = pszlViewportExt->cx; + Point->y = pszlViewportExt->cy; + break; + + case GdiGetWindowExt: + Point->x = pdc->pdcattr->szlWindowExt.cx; + Point->y = pdc->pdcattr->szlWindowExt.cy; + break; + + case GdiGetViewPortOrg: + *Point = pdc->pdcattr->ptlViewportOrg; + break; + + case GdiGetWindowOrg: + *Point = pdc->pdcattr->ptlWindowOrg; + break; + + case GdiGetDCOrg: + *Point = pdc->ptlDCOrig; + break; + + case GdiGetAspectRatioFilter: + DC_vGetAspectRatioFilter(pdc, &Size); + Point->x = Size.cx; + Point->y = Size.cy; + break; + + default: + EngSetLastError(ERROR_INVALID_PARAMETER); + Ret = FALSE; + break; + } + + DC_UnlockDc(pdc); + return Ret; +} + +BOOL +WINAPI +GreGetWindowExtEx( + _In_ HDC hdc, + _Out_ LPSIZE lpSize) +{ + return GreGetDCPoint(hdc, GdiGetWindowExt, (PPOINTL)lpSize); +} + +BOOL +WINAPI +GreGetViewportExtEx( + _In_ HDC hdc, + _Out_ LPSIZE lpSize) +{ + return GreGetDCPoint(hdc, GdiGetViewPortExt, (PPOINTL)lpSize); +} + +BOOL APIENTRY NtGdiGetDCPoint( HDC hDC, UINT iPoint,
Modified: trunk/reactos/win32ss/gdi/ntgdi/coord.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/coord.h?r... ============================================================================== --- trunk/reactos/win32ss/gdi/ntgdi/coord.h [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/ntgdi/coord.h [iso-8859-1] Fri Aug 7 05:56:01 2015 @@ -156,3 +156,7 @@ int APIENTRY IntGdiSetMapMode(PDC, int); BOOL FASTCALL GreLPtoDP(HDC, LPPOINT, INT); BOOL FASTCALL GreDPtoLP(HDC, LPPOINT, INT); +BOOL APIENTRY GreGetDCPoint(HDC,UINT,PPOINTL); +BOOL WINAPI GreGetWindowExtEx( _In_ HDC hdc, _Out_ LPSIZE lpSize); +BOOL WINAPI GreGetViewportExtEx( _In_ HDC hdc, _Out_ LPSIZE lpSize); +BOOL FASTCALL GreSetViewportOrgEx(HDC,int,int,LPPOINT);
Modified: trunk/reactos/win32ss/gdi/ntgdi/dc.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/dc.h?rev=... ============================================================================== --- trunk/reactos/win32ss/gdi/ntgdi/dc.h [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/ntgdi/dc.h [iso-8859-1] Fri Aug 7 05:56:01 2015 @@ -181,7 +181,7 @@ COLORREF FASTCALL GreGetTextColor(HDC); COLORREF FASTCALL IntSetDCBrushColor(HDC,COLORREF); COLORREF FASTCALL IntSetDCPenColor(HDC,COLORREF); - +int FASTCALL GreGetGraphicsMode(HDC);
INIT_FUNCTION NTSTATUS NTAPI InitDcImpl(VOID); PPDEVOBJ FASTCALL IntEnumHDev(VOID);
Modified: trunk/reactos/win32ss/gdi/ntgdi/dcutil.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/dcutil.c?... ============================================================================== --- trunk/reactos/win32ss/gdi/ntgdi/dcutil.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/ntgdi/dcutil.c [iso-8859-1] Fri Aug 7 05:56:01 2015 @@ -239,6 +239,21 @@ 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
Modified: trunk/reactos/win32ss/gdi/ntgdi/text.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/text.c?re... ============================================================================== --- trunk/reactos/win32ss/gdi/ntgdi/text.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/ntgdi/text.c [iso-8859-1] Fri Aug 7 05:56:01 2015 @@ -146,6 +146,18 @@ return Result; }
+BOOL +WINAPI +GreGetTextMetricsW( + _In_ HDC hdc, + _Out_ LPTEXTMETRICW lptm) +{ + TMW_INTERNAL tmwi; + if (!ftGdiGetTextMetricsW(hdc, &tmwi)) return FALSE; + *lptm = tmwi.TextMetric; + return TRUE; +} + DWORD APIENTRY NtGdiGetCharSet(HDC hDC)
Modified: trunk/reactos/win32ss/gdi/ntgdi/text.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/text.h?re... ============================================================================== --- trunk/reactos/win32ss/gdi/ntgdi/text.h [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/ntgdi/text.h [iso-8859-1] Fri Aug 7 05:56:01 2015 @@ -132,6 +132,7 @@ BOOL FASTCALL GreGetTextExtentExW(HDC,LPWSTR,ULONG,ULONG,PULONG,PULONG,LPSIZE,FLONG); BOOL FASTCALL GreTextOutW(HDC,int,int,LPCWSTR,int); HFONT FASTCALL GreCreateFontIndirectW( LOGFONTW * ); +BOOL WINAPI GreGetTextMetricsW( _In_ HDC hdc, _Out_ LPTEXTMETRICW lptm);
#define IntLockProcessPrivateFonts(W32Process) \ ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&W32Process->PrivateFontListLock)