xref: /reactos/win32ss/include/ntgdibad.h (revision 7eead935)
1 #ifndef WIN32K_NTGDI_BAD_INCLUDED
2 #define WIN32K_NTGDI_BAD_INCLUDED
3 
4 /*
5  *
6  * If you want to help, please read this:
7  *
8  * This file contains NtGdi APIs which are specific to ROS, including
9  * a short comment describing the solution on how to use the actual NtGdi
10  * call documented in ntgdi.h. Here are the main cases and information on
11  * how to remove them from this header.
12  *
13  * - Simple rename. This deals with an API simply having a different name,
14  *                  with absolutely no other changes needed.
15  * - Rename and new parameters. This deals with a case similar to the one
16  *                              above, except that new parameters have now
17  *                              been added. This is also usually extremly
18  *                              simple to fix. Either pass the right params
19  *                              or pass null/0 values that you ignore.
20  * - Rename and new structure. This is similar to the above, except that the
21  *                             information is now passed in a differently
22  *                             named and organized structure. Ask Alex for
23  *                             the structure you need and he will add it to
24  *                             ntgdityp.h
25  * - Rename and different semantics. Similar to the previous examples, except
26  *                                   that parameters have usually been removed
27  *                                   or need to be converted in user-mode in
28  *                                   one form of another.
29  * - Does not exist: user-mode. This means that the API can be fully done in
30  *                              user mode. In 80% of cases, our API was already
31  *                              returning NOT_IMPLEMENTED in kernel-mode, so
32  *                              the work to be done is minimal. A good example
33  *                              are the ICM and Metafile APIs, which can simply
34  *                              be removed and added into gdi32.
35  * - Does not exist: GDI Shared Objects. This is by far the hardest case. This
36  *                                       class cannot be fixed until ReactOS
37  *                                       has a working Shared GDI Object table
38  *                                       and a DC_ATTR structure in which the
39  *                                       attributes, selection and deletion of
40  *                                       objects can be quickly done from user-
41  *                                       mode without requiring a kernel mode
42  *                                       call.
43  */
44 /* Should be using ENUMFONTDATAW */
45 typedef struct tagFONTFAMILYINFO
46 {
47   ENUMLOGFONTEXW EnumLogFontEx;
48   NEWTEXTMETRICEXW NewTextMetricEx;
49   DWORD FontType;
50 } FONTFAMILYINFO, *PFONTFAMILYINFO;
51 
52 /* Should be using NtGdiEnumFontChunk */
53 LONG
54 NTAPI
55 NtGdiGetFontFamilyInfo(
56     HDC Dc,
57     const LOGFONTW *LogFont,
58     PFONTFAMILYINFO Info,
59     LPLONG UnsafeInfoCount);
60 
61 /* Use NtGdiGetDCPoint with GdiGetViewPortExt */
62 BOOL APIENTRY  NtGdiGetViewportExtEx(HDC  hDC, LPSIZE viewportExt);
63 
64 /* Needs to be done in user-mode. */
65 BOOL APIENTRY  NtGdiGetViewportOrgEx(HDC  hDC, LPPOINT viewportOrg);
66 
67 /* Needs to be done in user-mode. */
68 BOOL APIENTRY  NtGdiGetWindowExtEx(HDC  hDC, LPSIZE windowExt);
69 
70 /* Needs to be done in user-mode. */
71 BOOL APIENTRY  NtGdiGetWindowOrgEx(HDC  hDC, LPPOINT windowOrg);
72 
73 /* Needs to be done in user-mode. */
74 BOOL
75 APIENTRY
76 NtGdiOffsetViewportOrgEx (
77     HDC hDC,
78     int XOffset,
79     int YOffset,
80     LPPOINT Point
81     );
82 
83 /* Needs to be done in user-mode. */
84 BOOL
85 APIENTRY
86 NtGdiOffsetWindowOrgEx (
87     HDC hDC,
88     int XOffset,
89     int YOffset,
90     LPPOINT Point
91     );
92 
93 /* Needs to be done in user-mode. */
94 BOOL
95 APIENTRY
96 NtGdiSetViewportOrgEx (
97     HDC hDC,
98     int X,
99     int Y,
100     LPPOINT Point
101     );
102 
103 /* Needs to be done in user-mode. */
104 BOOL
105 APIENTRY
106 NtGdiSetWindowOrgEx (
107     HDC hDC,
108     int X,
109     int Y,
110     LPPOINT Point
111     );
112 
113 #endif /* WIN32K_NTGDI_BAD_INCLUDED */
114 
115 
116 /* Follow thing need be rewriten
117  *
118  * Opengl icd are complete hacked in reactos and are using own way, this need be rewriten and be setup with the correct syscall
119  * and the opengl32 shall using correct syscall to optain then driver interface or using the correct version in gdi32.
120  * it mean whole icd are hacked in frist place and need be rewtiten from scrash. and it need enum the opengl correct way and
121  * export the driver correct
122  *
123  * DirectX aka ReactX alot api that have been implement in reactos win32k for ReactX shall move to a file call dxg.sys
124  * there from it will really doing the stuff. And we should setup loading of dxg.sys
125  *
126  *  The Init of Gdi subsystem shall move into NtGdiInit()
127  *
128  *  The Init of spooler are done in NtGdiInitSpool()
129  *
130  *  The Init of the User subsystem shall move into NtUserInit()
131  */
132