2 * Copyright 2021 Jacek Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
24 typedef struct _GDI_HANDLE_ENTRY
50 } GDI_HANDLE_ENTRY
, *PGDI_HANDLE_ENTRY
;
52 #define GDI_MAX_HANDLE_COUNT 0x10000
54 #define NTGDI_OBJ_DC 0x01
55 #define NTGDI_OBJ_ENHMETADC 0x21
56 #define NTGDI_OBJ_REGION 0x04
57 #define NTGDI_OBJ_METAFILE 0x26
58 #define NTGDI_OBJ_ENHMETAFILE 0x46
59 #define NTGDI_OBJ_METADC 0x66
60 #define NTGDI_OBJ_PAL 0x08
61 #define NTGDI_OBJ_BITMAP 0x09
62 #define NTGDI_OBJ_FONT 0x0a
63 #define NTGDI_OBJ_BRUSH 0x10
64 #define NTGDI_OBJ_PEN 0x30
65 #define NTGDI_OBJ_EXTPEN 0x50
67 /* Wine extension, native uses NTGDI_OBJ_DC */
68 #define NTGDI_OBJ_MEMDC 0x41
70 #define NTGDI_HANDLE_TYPE_SHIFT 16
71 #define NTGDI_HANDLE_TYPE_MASK 0x007f0000
72 #define NTGDI_HANDLE_STOCK_OBJECT 0x00800000
74 typedef struct _GDI_SHARED_MEMORY
76 GDI_HANDLE_ENTRY Handles
[GDI_MAX_HANDLE_COUNT
];
77 } GDI_SHARED_MEMORY
, *PGDI_SHARED_MEMORY
;
108 /* structs not compatible with native Windows */
111 typedef struct DC_ATTR
113 HDC hdc
; /* handle to self */
114 LONG disabled
; /* disabled flag, controled by DCHF_(DISABLE|ENABLE)DC */
115 COLORREF background_color
;
116 COLORREF brush_color
;
124 WORD background_mode
;
128 WORD stretch_blt_mode
;
131 DWORD mapper_flags
; /* font mapper flags */
132 RECT vis_rect
; /* visible rectangle in screen coords */
134 POINT brush_org
; /* brush origin */
135 POINT wnd_org
; /* window origin */
136 SIZE wnd_ext
; /* window extent */
137 POINT vport_org
; /* viewport origin */
138 SIZE vport_ext
; /* viewport extent */
144 #endif /* __WINESRC__ */
146 INT WINAPI
NtGdiAbortDoc( HDC hdc
);
147 BOOL WINAPI
NtGdiAbortPath( HDC hdc
);
148 BOOL WINAPI
NtGdiAlphaBlend( HDC hdc_dst
, int x_dst
, int y_dst
, int width_dst
, int height_dst
,
149 HDC hdc_src
, int x_src
, int y_src
, int width_src
, int height_src
,
150 BLENDFUNCTION blend_function
, HANDLE xform
);
151 BOOL WINAPI
NtGdiAngleArc( HDC hdc
, INT x
, INT y
, DWORD radius
, FLOAT start_angle
,
153 BOOL WINAPI
NtGdiArcInternal( UINT type
, HDC hdc
, INT left
, INT top
, INT right
, INT bottom
,
154 INT xstart
, INT ystart
, INT xend
, INT yend
);
155 BOOL WINAPI
NtGdiBeginPath( HDC hdc
);
156 BOOL WINAPI
NtGdiBitBlt( HDC hdc_dst
, INT x_dst
, INT y_dst
, INT width
, INT height
, HDC hdc_src
,
157 INT x_src
, INT y_src
, DWORD rop
, DWORD bk_color
, FLONG fl
);
158 BOOL WINAPI
NtGdiCancelDC( HDC hdc
);
159 BOOL WINAPI
NtGdiCloseFigure( HDC hdc
);
160 INT WINAPI
NtGdiCombineRgn( HRGN dest
, HRGN src1
, HRGN src2
, INT mode
);
161 BOOL WINAPI
NtGdiComputeXformCoefficients( HDC hdc
);
162 HBITMAP WINAPI
NtGdiCreateBitmap( INT width
, INT height
, UINT planes
,
163 UINT bpp
, const void *bits
);
164 HBRUSH WINAPI
NtGdiCreateHatchBrushInternal( INT style
, COLORREF color
, BOOL pen
);
165 BOOL WINAPI
NtGdiEllipse( HDC hdc
, INT left
, INT top
, INT right
, INT bottom
);
166 INT WINAPI
NtGdiEndDoc(HDC hdc
);
167 BOOL WINAPI
NtGdiEndPath( HDC hdc
);
168 HANDLE WINAPI
NtGdiCreateClientObj( ULONG type
);
169 HFONT WINAPI
NtGdiHfontCreate( const ENUMLOGFONTEXDVW
*enumex
, ULONG unk2
, ULONG unk3
,
170 ULONG unk4
, void *data
);
171 HDC WINAPI
NtGdiCreateCompatibleDC( HDC hdc
);
172 HBRUSH WINAPI
NtGdiCreateDIBBrush( const void* data
, UINT coloruse
);
173 HRGN WINAPI
NtGdiCreateEllipticRgn( INT left
, INT top
, INT right
, INT bottom
);
174 HBRUSH WINAPI
NtGdiCreatePatternBrushInternal( HBITMAP hbitmap
, BOOL pen
);
175 HPEN WINAPI
NtGdiCreatePen( INT style
, INT width
, COLORREF color
, HBRUSH brush
);
176 HRGN WINAPI
NtGdiCreateRectRgn( INT left
, INT top
, INT right
, INT bottom
);
177 HRGN WINAPI
NtGdiCreateRoundRectRgn( INT left
, INT top
, INT right
, INT bottom
,
178 INT ellipse_width
, INT ellipse_height
);
179 HBRUSH WINAPI
NtGdiCreateSolidBrush( COLORREF color
);
180 BOOL WINAPI
NtGdiDeleteClientObj( HGDIOBJ obj
);
181 BOOL WINAPI
NtGdiDeleteObjectApp( HGDIOBJ obj
);
182 LONG WINAPI
NtGdiDoPalette( HGDIOBJ handle
, WORD start
, WORD count
, void *entries
,
183 DWORD func
, BOOL inbound
);
184 INT WINAPI
NtGdiEndPage( HDC hdc
);
185 HPEN WINAPI
NtGdiExtCreatePen( DWORD style
, DWORD width
, const LOGBRUSH
*brush
,
186 DWORD style_count
, const DWORD
*style_bits
);
187 HRGN WINAPI
NtGdiExtCreateRegion( const XFORM
*xform
, DWORD count
, const RGNDATA
*data
);
188 INT WINAPI
NtGdiExtGetObjectW( HGDIOBJ handle
, INT count
, void *buffer
);
189 INT WINAPI
NtGdiExtSelectClipRgn( HDC hdc
, HRGN region
, INT mode
);
190 BOOL WINAPI
NtGdiFillRgn( HDC hdc
, HRGN hrgn
, HBRUSH hbrush
);
191 INT WINAPI
NtGdiExtEscape( HDC hdc
, INT escape
, INT input_size
, const char *input
,
192 INT output_size
, char *output
);
193 BOOL WINAPI
NtGdiExtFloodFill( HDC hdc
, INT x
, INT y
, COLORREF color
, UINT type
);
194 BOOL WINAPI
NtGdiFrameRgn( HDC hdc
, HRGN hrgn
, HBRUSH brush
,
195 INT width
, INT height
);
196 BOOL WINAPI
NtGdiFillPath( HDC hdc
);
197 BOOL WINAPI
NtGdiGetAndSetDCDword( HDC hdc
, UINT method
, DWORD value
, DWORD
*result
);
198 INT WINAPI
NtGdiGetAppClipBox( HDC hdc
, RECT
*rect
);
199 BOOL WINAPI
NtGdiGetBitmapDimension( HBITMAP bitmap
, SIZE
*size
);
200 UINT WINAPI
NtGdiGetBoundsRect( HDC hdc
, RECT
*rect
, UINT flags
);
201 BOOL WINAPI
NtGdiGetCharABCWidthsW( HDC hdc
, UINT first_char
, UINT last_char
, ABC
*abc
);
202 BOOL WINAPI
NtGdiGetCharWidthW( HDC hdc
, UINT first_char
, UINT last_char
, INT
*buffer
);
203 BOOL WINAPI
NtGdiGetDCDword( HDC hdc
, UINT method
, DWORD
*result
);
204 BOOL WINAPI
NtGdiGetDCPoint( HDC hdc
, UINT method
, POINT
*result
);
205 INT WINAPI
NtGdiGetDeviceCaps( HDC hdc
, INT cap
);
206 BOOL WINAPI
NtGdiGetDeviceGammaRamp( HDC hdc
, void *ptr
);
207 BOOL WINAPI
NtGdiExtTextOutW( HDC hdc
, INT x
, INT y
, UINT flags
, const RECT
*rect
,
208 const WCHAR
*str
, UINT count
, const INT
*dx
, DWORD cp
);
209 BOOL WINAPI
NtGdiGetMiterLimit( HDC hdc
, FLOAT
*limit
);
210 COLORREF WINAPI
NtGdiGetNearestColor( HDC hdc
, COLORREF color
);
211 UINT WINAPI
NtGdiGetNearestPaletteIndex( HPALETTE hpalette
, COLORREF color
);
212 UINT WINAPI
NtGdiGetOutlineTextMetricsInternalW( HDC hdc
, UINT cbData
,
213 OUTLINETEXTMETRICW
*otm
, ULONG opts
);
214 INT WINAPI
NtGdiGetPath( HDC hdc
, POINT
*points
, BYTE
*types
, INT size
);
215 COLORREF WINAPI
NtGdiGetPixel( HDC hdc
, INT x
, INT y
);
216 INT WINAPI
NtGdiGetRandomRgn( HDC hdc
, HRGN region
, INT code
);
217 DWORD WINAPI
NtGdiGetRegionData( HRGN hrgn
, DWORD count
, RGNDATA
*data
);
218 INT WINAPI
NtGdiGetRgnBox( HRGN hrgn
, RECT
*rect
);
219 UINT WINAPI
NtGdiGetTextCharsetInfo( HDC hdc
, FONTSIGNATURE
*fs
, DWORD flags
);
220 INT WINAPI
NtGdiGetTextFaceW( HDC hdc
, INT count
, WCHAR
*name
);
221 BOOL WINAPI
NtGdiGetTextMetricsW( HDC hdc
, TEXTMETRICW
*metrics
);
222 BOOL WINAPI
NtGdiGetTransform( HDC hdc
, DWORD which
, XFORM
*xform
);
223 BOOL WINAPI
NtGdiGradientFill( HDC hdc
, TRIVERTEX
*vert_array
, ULONG nvert
,
224 void *grad_array
, ULONG ngrad
, ULONG mode
);
225 BOOL WINAPI
NtGdiEqualRgn( HRGN hrgn1
, HRGN hrgn2
);
226 INT WINAPI
NtGdiExcludeClipRect( HDC hdc
, INT left
, INT top
, INT right
, INT bottom
);
227 BOOL WINAPI
NtGdiFlattenPath( HDC hdc
);
228 BOOL WINAPI
NtGdiFontIsLinked( HDC hdc
);
229 INT WINAPI
NtGdiIntersectClipRect( HDC hdc
, INT left
, INT top
, INT right
, INT bottom
);
230 BOOL WINAPI
NtGdiInvertRgn( HDC hdc
, HRGN hrgn
);
231 BOOL WINAPI
NtGdiLineTo( HDC hdc
, INT x
, INT y
);
232 BOOL WINAPI
NtGdiModifyWorldTransform( HDC hdc
, const XFORM
*xform
, DWORD mode
);
233 BOOL WINAPI
NtGdiMoveTo( HDC hdc
, INT x
, INT y
, POINT
*pt
);
234 INT WINAPI
NtGdiOffsetClipRgn( HDC hdc
, INT x
, INT y
);
235 INT WINAPI
NtGdiOffsetRgn( HRGN hrgn
, INT x
, INT y
);
236 BOOL WINAPI
NtGdiPatBlt( HDC hdc
, INT left
, INT top
, INT width
, INT height
, DWORD rop
);
237 HRGN WINAPI
NtGdiPathToRegion( HDC hdc
);
238 BOOL WINAPI
NtGdiPolyDraw(HDC hdc
, const POINT
*points
, const BYTE
*types
, DWORD count
);
239 ULONG WINAPI
NtGdiPolyPolyDraw( HDC hdc
, const POINT
*points
, const UINT
*counts
,
240 DWORD count
, UINT function
);
241 BOOL WINAPI
NtGdiPtInRegion( HRGN hrgn
, INT x
, INT y
);
242 BOOL WINAPI
NtGdiPtVisible( HDC hdc
, INT x
, INT y
);
243 BOOL WINAPI
NtGdiRectInRegion( HRGN hrgn
, const RECT
*rect
);
244 BOOL WINAPI
NtGdiRectVisible( HDC hdc
, const RECT
*rect
);
245 BOOL WINAPI
NtGdiRectangle( HDC hdc
, INT left
, INT top
, INT right
, INT bottom
);
246 HDC WINAPI
NtGdiResetDC( HDC hdc
, const DEVMODEW
*devmode
);
247 BOOL WINAPI
NtGdiRestoreDC( HDC hdc
, INT level
);
248 BOOL WINAPI
NtGdiRoundRect( HDC hdc
, INT left
, INT top
, INT right
,
249 INT bottom
, INT ell_width
, INT ell_height
);
250 INT WINAPI
NtGdiSaveDC( HDC hdc
);
251 BOOL WINAPI
NtGdiScaleViewportExtEx( HDC hdc
, INT x_num
, INT x_denom
,
252 INT y_num
, INT y_denom
, SIZE
*size
);
253 BOOL WINAPI
NtGdiScaleWindowExtEx( HDC hdc
, INT x_num
, INT x_denom
,
254 INT y_num
, INT y_denom
, SIZE
*size
);
255 HGDIOBJ WINAPI
NtGdiSelectBitmap( HDC hdc
, HGDIOBJ handle
);
256 HGDIOBJ WINAPI
NtGdiSelectBrush( HDC hdc
, HGDIOBJ handle
);
257 BOOL WINAPI
NtGdiSelectClipPath( HDC hdc
, INT mode
);
258 HGDIOBJ WINAPI
NtGdiSelectFont( HDC hdc
, HGDIOBJ handle
);
259 HGDIOBJ WINAPI
NtGdiSelectPen( HDC hdc
, HGDIOBJ handle
);
260 LONG WINAPI
NtGdiSetBitmapBits( HBITMAP hbitmap
, LONG count
, const void *bits
);
261 BOOL WINAPI
NtGdiSetBitmapDimension( HBITMAP hbitmap
, INT x
, INT y
, SIZE
*prev_size
);
262 BOOL WINAPI
NtGdiSetBrushOrg( HDC hdc
, INT x
, INT y
, POINT
*prev_org
);
263 UINT WINAPI
NtGdiSetBoundsRect( HDC hdc
, const RECT
*rect
, UINT flags
);
264 BOOL WINAPI
NtGdiSetDeviceGammaRamp( HDC hdc
, void *ptr
);
265 DWORD WINAPI
NtGdiSetLayout( HDC hdc
, LONG wox
, DWORD layout
);
266 INT WINAPI
NtGdiSetMetaRgn( HDC hdc
);
267 BOOL WINAPI
NtGdiSetMiterLimit( HDC hdc
, FLOAT limit
, FLOAT
*prev_limit
);
268 COLORREF WINAPI
NtGdiSetPixel( HDC hdc
, INT x
, INT y
, COLORREF color
);
269 BOOL WINAPI
NtGdiSetPixelFormat( HDC hdc
, INT format
);
270 BOOL WINAPI
NtGdiSetRectRgn( HRGN hrgn
, INT left
, INT top
, INT right
, INT bottom
);
271 BOOL WINAPI
NtGdiSetTextJustification( HDC hdc
, INT extra
, INT breaks
);
272 BOOL WINAPI
NtGdiSetVirtualResolution( HDC hdc
, DWORD horz_res
, DWORD vert_res
,
273 DWORD horz_size
, DWORD vert_size
);
274 INT WINAPI
NtGdiStartDoc( HDC hdc
, const DOCINFOW
*doc
);
275 INT WINAPI
NtGdiStartPage( HDC hdc
);
276 BOOL WINAPI
NtGdiStretchBlt( HDC hdc
, INT x_dst
, INT y_dst
, INT width_dst
, INT height_dst
,
277 HDC hdc_src
, INT x_src
, INT y_src
, INT width_src
, INT height_src
,
278 DWORD rop
, COLORREF bk_color
);
279 BOOL WINAPI
NtGdiStrokePath( HDC hdc
);
280 BOOL WINAPI
NtGdiStrokeAndFillPath( HDC hdc
);
281 BOOL WINAPI
NtGdiTransformPoints( HDC hdc
, const POINT
*points_in
, POINT
*points_out
,
282 INT count
, UINT mode
);
283 BOOL WINAPI
NtGdiUnrealizeObject( HGDIOBJ obj
);
284 BOOL WINAPI
NtGdiWidenPath( HDC hdc
);