[NTGDI] Fix PatBlt with negative values (#6038) When I am implementing the IME soft keyboard (#6021 and #6036), I noticed an issue with PatBlt function. - Fix the rectangle coordinates when the value was negative in NtGdiPatBlt function. - Fix NC_DrawFrame function. - Fix UserDrawWindowFrame function. CORE-19334
[NTOSKRNL][NTGDI] Formatting addendum, no functional change I intend to port back the combined work of Thomas Faber and Serge Gautherie in context of CORE 14271. Both developers fixed wrong retval evaluations for SeSinglePrivilegeCheck() and RtlCreateUnicodeString(). Both functions do return a BOOLEAN, and therefore using NTSTATUS() on them is wrong. Those bugs have been fixed at multiple places. That is long gone. But Serge fixed his locations a bit more elegantly, without the need for additional variables. Therefore this addendum adapts a few of Thomas locations to the improved Serge-ified style. Yes: I intentionally used a space instead of a minus after the mentioned CORE 14271, as I don't want that pure stylistic addendum to be linked with the initial ticket anymore. That would be overkill.
[NTGDI][NTUSER] Load DirectX graphics driver at system startup (#4551) CORE-18221 Load the DirectX graphics kernel driver (dxg.sys) by win32k at WINSRV initialization time, in NtUserInitialize(). Keep it always loaded in memory, as on Windows, instead of loading it only by DirectX dlls. This fixes the problem of acessing this driver: we need only to call DxDdEnableDirectDraw() and do other stuff when DirectDraw/Direct3D is required by anything. In other cases, it is called from win32k PDEV functions when changing display mode (as in Windows). Since it's used by other things too, it needs to be always loaded. Otherwise, if it's not loaded, its APIs are not accessible when needed, and execution fails. For example, it fixes display mode change problem in VMWare, when a new mode fails to be applied. Indeed, when it manages DirectDraw stuff, it calls DXG routines, and therefore fails if dxg.sys isn't loaded in memory at this moment. - Implement InitializeGreCSRSS() initialization routine, that initializes supplemental NTGDI/GRE data once CSRSS and WINSRV are loaded: * Call DxDdStartupDxGraphics() inside it, which loads dxg.sys. * Additionally, move fonts and language ID initialization there, from win32k!DriverEntry. Confirmed by analysis on Windows. - Call InitializeGreCSRSS() in NtUserInitialize() main initialization routine (called by WINSRV initialization). Moved to NTGDI from previously NTUSER place: Co-authored-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
[NTGDI][FREETYPE] Follow-up of #4920 (e316d61); Rename functions Follow the naming policy. - ftGdiGetRealGlyph --> IntGetRealGlyph - ftGdiGlyphCacheGet --> IntFindGlyphCache - ftGdiGlyphSet --> IntGetBitmapGlyphNoCache - ftGdiGlyphCacheSet --> IntGetBitmapGlyphWithCache - FtMatrixFromMx --> IntMatrixFromMx CORE-11848
[NTGDI][FREETYPE] lfEscapement for TextOut (#4920) Rotation and shearing transformation of font/text is now available. Retrial of PR #1207. - Rename ftGdiGetTextWidth as IntGetTextDisposition and add a Y parameter. - Apply lfEscapement values (by multiplying matrices). - Add IntEngFillPolygon and IntEngFillBox helper functions. CORE-11848
[NTGDI][FREETYPE] lfWidth for GetTextMetrics and GetCharWidth (#4919) - Add lfWidth member into FONTGDI structure. - Delete IntWidthMatrix function. - Fix IntRequestFontSize behavior for processing lfWidth value. - Apply lfWidth in GetTextMetrics and GetCharWidth. - Ignore the XFORM values in GetTextMetrics and GetCharWidth. CORE-11848