mirror of
https://github.com/reactos/reactos.git
synced 2024-12-13 22:23:32 +08:00
811faed421
Eliminate some bugs about font enumeration. CORE-15755 - Add "Microsoft Sans Serif" font substitution. - Fix and improve the treatment of the nominal font names. - Split IntGetFontFamilyInfo function from NtGdiGetFontFamilyInfo. - Add DoFontSystemUnittest function for font system unittest to GDI32. - Call DoFontSystemUnittest function at CreateFontIndirectW first call.
132 lines
4.7 KiB
C
132 lines
4.7 KiB
C
#ifndef WIN32K_NTGDI_BAD_INCLUDED
|
|
#define WIN32K_NTGDI_BAD_INCLUDED
|
|
|
|
/*
|
|
*
|
|
* If you want to help, please read this:
|
|
*
|
|
* This file contains NtGdi APIs which are specific to ROS, including
|
|
* a short comment describing the solution on how to use the actual NtGdi
|
|
* call documented in ntgdi.h. Here are the main cases and information on
|
|
* how to remove them from this header.
|
|
*
|
|
* - Simple rename. This deals with an API simply having a different name,
|
|
* with absolutely no other changes needed.
|
|
* - Rename and new parameters. This deals with a case similar to the one
|
|
* above, except that new parameters have now
|
|
* been added. This is also usually extremly
|
|
* simple to fix. Either pass the right params
|
|
* or pass null/0 values that you ignore.
|
|
* - Rename and new structure. This is similar to the above, except that the
|
|
* information is now passed in a differently
|
|
* named and organized structure. Ask Alex for
|
|
* the structure you need and he will add it to
|
|
* ntgdityp.h
|
|
* - Rename and different semantics. Similar to the previous examples, except
|
|
* that parameters have usually been removed
|
|
* or need to be converted in user-mode in
|
|
* one form of another.
|
|
* - Does not exist: user-mode. This means that the API can be fully done in
|
|
* user mode. In 80% of cases, our API was already
|
|
* returning NOT_IMPLEMENTED in kernel-mode, so
|
|
* the work to be done is minimal. A good example
|
|
* are the ICM and Metafile APIs, which can simply
|
|
* be removed and added into gdi32.
|
|
* - Does not exist: GDI Shared Objects. This is by far the hardest case. This
|
|
* class cannot be fixed until ReactOS
|
|
* has a working Shared GDI Object table
|
|
* and a DC_ATTR structure in which the
|
|
* attributes, selection and deletion of
|
|
* objects can be quickly done from user-
|
|
* mode without requiring a kernel mode
|
|
* call.
|
|
*/
|
|
/* Should be using ENUMFONTDATAW */
|
|
typedef struct tagFONTFAMILYINFO
|
|
{
|
|
ENUMLOGFONTEXW EnumLogFontEx;
|
|
NEWTEXTMETRICEXW NewTextMetricEx;
|
|
DWORD FontType;
|
|
} FONTFAMILYINFO, *PFONTFAMILYINFO;
|
|
|
|
/* Should be using NtGdiEnumFontChunk */
|
|
LONG
|
|
NTAPI
|
|
NtGdiGetFontFamilyInfo(
|
|
HDC Dc,
|
|
const LOGFONTW *LogFont,
|
|
PFONTFAMILYINFO Info,
|
|
LPLONG UnsafeInfoCount);
|
|
|
|
/* Use NtGdiGetDCPoint with GdiGetViewPortExt */
|
|
BOOL APIENTRY NtGdiGetViewportExtEx(HDC hDC, LPSIZE viewportExt);
|
|
|
|
/* Needs to be done in user-mode. */
|
|
BOOL APIENTRY NtGdiGetViewportOrgEx(HDC hDC, LPPOINT viewportOrg);
|
|
|
|
/* Needs to be done in user-mode. */
|
|
BOOL APIENTRY NtGdiGetWindowExtEx(HDC hDC, LPSIZE windowExt);
|
|
|
|
/* Needs to be done in user-mode. */
|
|
BOOL APIENTRY NtGdiGetWindowOrgEx(HDC hDC, LPPOINT windowOrg);
|
|
|
|
/* Needs to be done in user-mode. */
|
|
BOOL
|
|
APIENTRY
|
|
NtGdiOffsetViewportOrgEx (
|
|
HDC hDC,
|
|
int XOffset,
|
|
int YOffset,
|
|
LPPOINT Point
|
|
);
|
|
|
|
/* Needs to be done in user-mode. */
|
|
BOOL
|
|
APIENTRY
|
|
NtGdiOffsetWindowOrgEx (
|
|
HDC hDC,
|
|
int XOffset,
|
|
int YOffset,
|
|
LPPOINT Point
|
|
);
|
|
|
|
/* Needs to be done in user-mode. */
|
|
BOOL
|
|
APIENTRY
|
|
NtGdiSetViewportOrgEx (
|
|
HDC hDC,
|
|
int X,
|
|
int Y,
|
|
LPPOINT Point
|
|
);
|
|
|
|
/* Needs to be done in user-mode. */
|
|
BOOL
|
|
APIENTRY
|
|
NtGdiSetWindowOrgEx (
|
|
HDC hDC,
|
|
int X,
|
|
int Y,
|
|
LPPOINT Point
|
|
);
|
|
|
|
#endif /* WIN32K_NTGDI_BAD_INCLUDED */
|
|
|
|
|
|
/* Follow thing need be rewriten
|
|
*
|
|
* Opengl icd are complete hacked in reactos and are using own way, this need be rewriten and be setup with the correct syscall
|
|
* and the opengl32 shall using correct syscall to optain then driver interface or using the correct version in gdi32.
|
|
* it mean whole icd are hacked in frist place and need be rewtiten from scrash. and it need enum the opengl correct way and
|
|
* export the driver correct
|
|
*
|
|
* DirectX aka ReactX alot api that have been implement in reactos win32k for ReactX shall move to a file call dxg.sys
|
|
* there from it will really doing the stuff. And we should setup loading of dxg.sys
|
|
*
|
|
* The Init of Gdi subsystem shall move into NtGdiInit()
|
|
*
|
|
* The Init of spooler are done in NtGdiInitSpool()
|
|
*
|
|
* The Init of the User subsystem shall move into NtUserInit()
|
|
*/
|