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
25 #include <ddk/d3dkmthk.h>
28 # if defined(_WIN32U_) || defined(WINE_UNIX_LIB)
29 # define W32KAPI DECLSPEC_EXPORT
31 # define W32KAPI DECLSPEC_IMPORT
35 typedef struct _GDI_HANDLE_ENTRY
61 } GDI_HANDLE_ENTRY
, *PGDI_HANDLE_ENTRY
;
63 #define GDI_MAX_HANDLE_COUNT 0x10000
65 #define NTGDI_OBJ_DC 0x010000
66 #define NTGDI_OBJ_ENHMETADC 0x210000
67 #define NTGDI_OBJ_REGION 0x040000
68 #define NTGDI_OBJ_SURF 0x050000
69 #define NTGDI_OBJ_METAFILE 0x260000
70 #define NTGDI_OBJ_ENHMETAFILE 0x460000
71 #define NTGDI_OBJ_METADC 0x660000
72 #define NTGDI_OBJ_PAL 0x080000
73 #define NTGDI_OBJ_BITMAP 0x090000
74 #define NTGDI_OBJ_FONT 0x0a0000
75 #define NTGDI_OBJ_BRUSH 0x100000
76 #define NTGDI_OBJ_PEN 0x300000
77 #define NTGDI_OBJ_EXTPEN 0x500000
79 /* Wine extension, native uses NTGDI_OBJ_DC */
80 #define NTGDI_OBJ_MEMDC 0x410000
82 #define NTGDI_HANDLE_TYPE_SHIFT 16
83 #define NTGDI_HANDLE_TYPE_MASK 0x007f0000
84 #define NTGDI_HANDLE_STOCK_OBJECT 0x00800000
86 typedef struct _GDI_SHARED_MEMORY
88 GDI_HANDLE_ENTRY Handles
[GDI_MAX_HANDLE_COUNT
];
89 } GDI_SHARED_MEMORY
, *PGDI_SHARED_MEMORY
;
101 NtGdiPolyPolygon
= 1,
118 /* not compatible with Windows */
119 NtGdiSetBkColor
= 100,
122 NtGdiSetDCBrushColor
,
124 NtGdiSetGraphicsMode
,
129 /* NtGdiGetDCDword parameter, not compatible with Windows */
132 NtGdiGetArcDirection
,
135 NtGdiGetDCBrushColor
,
137 NtGdiGetGraphicsMode
,
139 NtGdiGetPolyFillMode
,
145 /* NtGdiGetDCPoint parameter, not compatible with Windows */
149 NtGdiGetCurrentPosition
,
156 NtGdiSetPaletteEntries
,
157 NtGdiGetPaletteEntries
,
158 NtGdiGetSystemPaletteEntries
,
159 NtGdiGetDIBColorTable
,
160 NtGdiSetDIBColorTable
,
163 #define NTGDI_GETCHARWIDTH_INT 0x02
164 #define NTGDI_GETCHARWIDTH_INDICES 0x08
166 #define NTGDI_GETCHARABCWIDTHS_INT 0x01
167 #define NTGDI_GETCHARABCWIDTHS_INDICES 0x02
171 /* structs not compatible with native Windows */
174 typedef struct DC_ATTR
176 UINT hdc
; /* handle to self */
177 LONG disabled
; /* disabled flag, controlled by DCHF_(DISABLE|ENABLE)DC */
179 COLORREF background_color
;
180 COLORREF brush_color
;
188 WORD background_mode
;
192 WORD stretch_blt_mode
;
195 DWORD mapper_flags
; /* font mapper flags */
196 RECT vis_rect
; /* visible rectangle in screen coords */
198 POINT brush_org
; /* brush origin */
199 POINT wnd_org
; /* window origin */
200 SIZE wnd_ext
; /* window extent */
201 POINT vport_org
; /* viewport origin */
202 SIZE vport_ext
; /* viewport extent */
207 UINT64 emf
; /* client EMF record pointer */
208 UINT64 abort_proc
; /* AbortProc for printing */
209 UINT64 print
; /* client printer info pointer */
212 struct font_enum_entry
219 /* flag for NtGdiGetRandomRgn to respect LAYOUT_RTL */
220 #define NTGDI_RGN_MIRROR_RTL 0x80000000
222 /* magic driver version that we use for win16 DCs with DIB surfaces */
223 #define NTGDI_WIN16_DIB 0xfafa000
225 #endif /* __WINESRC__ */
227 struct font_realization_info
229 DWORD size
; /* could be 16 or 24 */
230 DWORD flags
; /* 1 for bitmap fonts, 3 for scalable fonts */
231 DWORD cache_num
; /* keeps incrementing */
232 DWORD instance_id
; /* identifies a realized font instance */
233 DWORD file_count
; /* number of files that make up this font */
234 WORD face_index
; /* face index in case of font collections */
235 WORD simulations
; /* 0 bit - bold simulation, 1 bit - oblique simulation */
238 struct char_width_info
240 INT lsb
; /* minimum left side bearing */
241 INT rsb
; /* minimum right side bearing */
242 INT unk
; /* unknown */
253 W32KAPI INT WINAPI
NtGdiAbortDoc( HDC hdc
);
254 W32KAPI BOOL WINAPI
NtGdiAbortPath( HDC hdc
);
255 W32KAPI HANDLE WINAPI
NtGdiAddFontMemResourceEx( void *ptr
, DWORD size
, void *dv
, ULONG dv_size
,
257 W32KAPI INT WINAPI
NtGdiAddFontResourceW( const WCHAR
*str
, ULONG size
, ULONG files
, DWORD flags
,
258 DWORD tid
, void *dv
);
259 W32KAPI BOOL WINAPI
NtGdiAlphaBlend( HDC hdc_dst
, int x_dst
, int y_dst
, int width_dst
, int height_dst
,
260 HDC hdc_src
, int x_src
, int y_src
, int width_src
, int height_src
,
261 DWORD blend_function
, HANDLE xform
);
262 W32KAPI BOOL WINAPI
NtGdiAngleArc( HDC hdc
, INT x
, INT y
, DWORD radius
, DWORD start_angle
,
264 W32KAPI BOOL WINAPI
NtGdiArcInternal( UINT type
, HDC hdc
, INT left
, INT top
, INT right
, INT bottom
,
265 INT xstart
, INT ystart
, INT xend
, INT yend
);
266 W32KAPI BOOL WINAPI
NtGdiBeginPath( HDC hdc
);
267 W32KAPI BOOL WINAPI
NtGdiBitBlt( HDC hdc_dst
, INT x_dst
, INT y_dst
, INT width
, INT height
, HDC hdc_src
,
268 INT x_src
, INT y_src
, DWORD rop
, DWORD bk_color
, FLONG fl
);
269 W32KAPI BOOL WINAPI
NtGdiCancelDC( HDC hdc
);
270 W32KAPI BOOL WINAPI
NtGdiCloseFigure( HDC hdc
);
271 W32KAPI INT WINAPI
NtGdiCombineRgn( HRGN dest
, HRGN src1
, HRGN src2
, INT mode
);
272 W32KAPI BOOL WINAPI
NtGdiComputeXformCoefficients( HDC hdc
);
273 W32KAPI HBITMAP WINAPI
NtGdiCreateBitmap( INT width
, INT height
, UINT planes
,
274 UINT bpp
, const void *bits
);
275 W32KAPI HANDLE WINAPI
NtGdiCreateClientObj( ULONG type
);
276 W32KAPI HBITMAP WINAPI
NtGdiCreateCompatibleBitmap( HDC hdc
, INT width
, INT height
);
277 W32KAPI HDC WINAPI
NtGdiCreateCompatibleDC( HDC hdc
);
278 W32KAPI HBRUSH WINAPI
NtGdiCreateDIBBrush( const void *data
, UINT coloruse
, UINT size
,
279 BOOL is_8x8
, BOOL pen
, const void *client
);
280 W32KAPI HBITMAP WINAPI
NtGdiCreateDIBSection( HDC hdc
, HANDLE section
, DWORD offset
, const BITMAPINFO
*bmi
,
281 UINT usage
, UINT header_size
, ULONG flags
,
282 ULONG_PTR color_space
, void **bits
);
283 W32KAPI HBITMAP WINAPI
NtGdiCreateDIBitmapInternal( HDC hdc
, INT width
, INT height
, DWORD init
,
284 const void *bits
, const BITMAPINFO
*data
,
285 UINT coloruse
, UINT max_info
, UINT max_bits
,
286 ULONG flags
, HANDLE xform
);
287 W32KAPI HRGN WINAPI
NtGdiCreateEllipticRgn( INT left
, INT top
, INT right
, INT bottom
);
288 W32KAPI HPALETTE WINAPI
NtGdiCreateHalftonePalette( HDC hdc
);
289 W32KAPI HBRUSH WINAPI
NtGdiCreateHatchBrushInternal( INT style
, COLORREF color
, BOOL pen
);
290 W32KAPI HDC WINAPI
NtGdiCreateMetafileDC( HDC hdc
);
291 W32KAPI HPALETTE WINAPI
NtGdiCreatePaletteInternal( const LOGPALETTE
*palette
, UINT count
);
292 W32KAPI HBRUSH WINAPI
NtGdiCreatePatternBrushInternal( HBITMAP hbitmap
, BOOL pen
, BOOL is_8x8
);
293 W32KAPI HPEN WINAPI
NtGdiCreatePen( INT style
, INT width
, COLORREF color
, HBRUSH brush
);
294 W32KAPI HRGN WINAPI
NtGdiCreateRectRgn( INT left
, INT top
, INT right
, INT bottom
);
295 W32KAPI HRGN WINAPI
NtGdiCreateRoundRectRgn( INT left
, INT top
, INT right
, INT bottom
,
296 INT ellipse_width
, INT ellipse_height
);
297 W32KAPI HBRUSH WINAPI
NtGdiCreateSolidBrush( COLORREF color
, HBRUSH brush
);
298 W32KAPI BOOL WINAPI
NtGdiDeleteClientObj( HGDIOBJ obj
);
299 W32KAPI BOOL WINAPI
NtGdiDeleteObjectApp( HGDIOBJ obj
);
300 W32KAPI INT WINAPI
NtGdiDescribePixelFormat( HDC hdc
, INT format
, UINT size
,
301 PIXELFORMATDESCRIPTOR
*descr
);
302 W32KAPI LONG WINAPI
NtGdiDoPalette( HGDIOBJ handle
, WORD start
, WORD count
, void *entries
,
303 DWORD func
, BOOL inbound
);
304 W32KAPI BOOL WINAPI
NtGdiDrawStream( HDC hdc
, ULONG in
, void *pvin
);
305 W32KAPI BOOL WINAPI
NtGdiEllipse( HDC hdc
, INT left
, INT top
, INT right
, INT bottom
);
306 W32KAPI INT WINAPI
NtGdiEndDoc( HDC hdc
);
307 W32KAPI BOOL WINAPI
NtGdiEndPath( HDC hdc
);
308 W32KAPI INT WINAPI
NtGdiEndPage( HDC hdc
);
309 W32KAPI BOOL WINAPI
NtGdiEnumFonts( HDC hdc
, ULONG type
, ULONG win32_compat
, ULONG face_name_len
,
310 const WCHAR
*face_name
, ULONG charset
, ULONG
*count
, void *buf
);
311 W32KAPI BOOL WINAPI
NtGdiEqualRgn( HRGN hrgn1
, HRGN hrgn2
);
312 W32KAPI INT WINAPI
NtGdiExcludeClipRect( HDC hdc
, INT left
, INT top
, INT right
, INT bottom
);
313 W32KAPI HPEN WINAPI
NtGdiExtCreatePen( DWORD style
, DWORD width
, ULONG brush_style
, ULONG color
,
314 ULONG_PTR client_hatch
, ULONG_PTR hatch
, DWORD style_count
,
315 const DWORD
*style_bits
, ULONG dib_size
, BOOL old_style
,
317 W32KAPI INT WINAPI
NtGdiExtEscape( HDC hdc
, WCHAR
*driver
, INT driver_id
, INT escape
, INT input_size
,
318 const char *input
, INT output_size
, char *output
);
319 W32KAPI BOOL WINAPI
NtGdiExtFloodFill( HDC hdc
, INT x
, INT y
, COLORREF color
, UINT type
);
320 W32KAPI BOOL WINAPI
NtGdiExtTextOutW( HDC hdc
, INT x
, INT y
, UINT flags
, const RECT
*rect
,
321 const WCHAR
*str
, UINT count
, const INT
*dx
, DWORD cp
);
322 W32KAPI HRGN WINAPI
NtGdiExtCreateRegion( const XFORM
*xform
, DWORD count
, const RGNDATA
*data
);
323 W32KAPI INT WINAPI
NtGdiExtGetObjectW( HGDIOBJ handle
, INT count
, void *buffer
);
324 W32KAPI INT WINAPI
NtGdiExtSelectClipRgn( HDC hdc
, HRGN region
, INT mode
);
325 W32KAPI BOOL WINAPI
NtGdiFillPath( HDC hdc
);
326 W32KAPI BOOL WINAPI
NtGdiFillRgn( HDC hdc
, HRGN hrgn
, HBRUSH hbrush
);
327 W32KAPI BOOL WINAPI
NtGdiFlattenPath( HDC hdc
);
328 W32KAPI BOOL WINAPI
NtGdiFontIsLinked( HDC hdc
);
329 W32KAPI BOOL WINAPI
NtGdiFlush(void);
330 W32KAPI BOOL WINAPI
NtGdiFrameRgn( HDC hdc
, HRGN hrgn
, HBRUSH brush
, INT width
, INT height
);
331 W32KAPI BOOL WINAPI
NtGdiGetAndSetDCDword( HDC hdc
, UINT method
, DWORD value
, DWORD
*result
);
332 W32KAPI INT WINAPI
NtGdiGetAppClipBox( HDC hdc
, RECT
*rect
);
333 W32KAPI LONG WINAPI
NtGdiGetBitmapBits( HBITMAP bitmap
, LONG count
, void *bits
);
334 W32KAPI BOOL WINAPI
NtGdiGetBitmapDimension( HBITMAP bitmap
, SIZE
*size
);
335 W32KAPI UINT WINAPI
NtGdiGetBoundsRect( HDC hdc
, RECT
*rect
, UINT flags
);
336 W32KAPI BOOL WINAPI
NtGdiGetCharABCWidthsW( HDC hdc
, UINT first
, UINT last
, WCHAR
*chars
,
337 ULONG flags
, void *buffer
);
338 W32KAPI BOOL WINAPI
NtGdiGetCharWidthW( HDC hdc
, UINT first_char
, UINT last_char
, WCHAR
*chars
,
339 ULONG flags
, void *buffer
);
340 W32KAPI BOOL WINAPI
NtGdiGetCharWidthInfo( HDC hdc
, struct char_width_info
*info
);
341 W32KAPI BOOL WINAPI
NtGdiGetColorAdjustment( HDC hdc
, COLORADJUSTMENT
*ca
);
342 W32KAPI BOOL WINAPI
NtGdiGetDCDword( HDC hdc
, UINT method
, DWORD
*result
);
343 W32KAPI HANDLE WINAPI
NtGdiGetDCObject( HDC hdc
, UINT type
);
344 W32KAPI BOOL WINAPI
NtGdiGetDCPoint( HDC hdc
, UINT method
, POINT
*result
);
345 W32KAPI INT WINAPI
NtGdiGetDIBitsInternal( HDC hdc
, HBITMAP hbitmap
, UINT startscan
, UINT lines
,
346 void *bits
, BITMAPINFO
*info
, UINT coloruse
,
347 UINT max_bits
, UINT max_info
);
348 W32KAPI INT WINAPI
NtGdiGetDeviceCaps( HDC hdc
, INT cap
);
349 W32KAPI BOOL WINAPI
NtGdiGetDeviceGammaRamp( HDC hdc
, void *ptr
);
350 W32KAPI DWORD WINAPI
NtGdiGetFontData( HDC hdc
, DWORD table
, DWORD offset
, void *buffer
, DWORD length
);
351 W32KAPI BOOL WINAPI
NtGdiGetFontFileData( DWORD instance_id
, DWORD file_index
, UINT64
*offset
,
352 void *buff
, SIZE_T buff_size
);
353 W32KAPI BOOL WINAPI
NtGdiGetFontFileInfo( DWORD instance_id
, DWORD file_index
, struct font_fileinfo
*info
,
354 SIZE_T size
, SIZE_T
*needed
);
355 W32KAPI DWORD WINAPI
NtGdiGetFontUnicodeRanges( HDC hdc
, GLYPHSET
*lpgs
);
356 W32KAPI DWORD WINAPI
NtGdiGetGlyphIndicesW( HDC hdc
, const WCHAR
*str
, INT count
,
357 WORD
*indices
, DWORD flags
);
358 W32KAPI DWORD WINAPI
NtGdiGetGlyphOutline( HDC hdc
, UINT ch
, UINT format
, GLYPHMETRICS
*metrics
,
359 DWORD size
, void *buffer
, const MAT2
*mat2
,
360 BOOL ignore_rotation
);
361 W32KAPI DWORD WINAPI
NtGdiGetKerningPairs( HDC hdc
, DWORD count
, KERNINGPAIR
*kern_pair
);
362 W32KAPI BOOL WINAPI
NtGdiGetMiterLimit( HDC hdc
, DWORD
*limit
);
363 W32KAPI COLORREF WINAPI
NtGdiGetNearestColor( HDC hdc
, COLORREF color
);
364 W32KAPI UINT WINAPI
NtGdiGetNearestPaletteIndex( HPALETTE hpalette
, COLORREF color
);
365 W32KAPI UINT WINAPI
NtGdiGetOutlineTextMetricsInternalW( HDC hdc
, UINT cbData
,
366 OUTLINETEXTMETRICW
*otm
, ULONG opts
);
367 W32KAPI INT WINAPI
NtGdiGetPath( HDC hdc
, POINT
*points
, BYTE
*types
, INT size
);
368 W32KAPI COLORREF WINAPI
NtGdiGetPixel( HDC hdc
, INT x
, INT y
);
369 W32KAPI INT WINAPI
NtGdiGetRandomRgn( HDC hdc
, HRGN region
, INT code
);
370 W32KAPI BOOL WINAPI
NtGdiGetRasterizerCaps( RASTERIZER_STATUS
*status
, UINT size
);
371 W32KAPI BOOL WINAPI
NtGdiGetRealizationInfo( HDC hdc
, struct font_realization_info
*info
);
372 W32KAPI DWORD WINAPI
NtGdiGetRegionData( HRGN hrgn
, DWORD count
, RGNDATA
*data
);
373 W32KAPI INT WINAPI
NtGdiGetRgnBox( HRGN hrgn
, RECT
*rect
);
374 W32KAPI DWORD WINAPI
NtGdiGetSpoolMessage( void *ptr1
, DWORD data2
, void *ptr3
, DWORD data4
);
375 W32KAPI UINT WINAPI
NtGdiGetSystemPaletteUse( HDC hdc
);
376 W32KAPI UINT WINAPI
NtGdiGetTextCharsetInfo( HDC hdc
, FONTSIGNATURE
*fs
, DWORD flags
);
377 W32KAPI BOOL WINAPI
NtGdiGetTextExtentExW( HDC hdc
, const WCHAR
*str
, INT count
, INT max_ext
,
378 INT
*nfit
, INT
*dxs
, SIZE
*size
, UINT flags
);
379 W32KAPI INT WINAPI
NtGdiGetTextFaceW( HDC hdc
, INT count
, WCHAR
*name
, BOOL alias_name
);
380 W32KAPI BOOL WINAPI
NtGdiGetTextMetricsW( HDC hdc
, TEXTMETRICW
*metrics
, ULONG flags
);
381 W32KAPI BOOL WINAPI
NtGdiGetTransform( HDC hdc
, DWORD which
, XFORM
*xform
);
382 W32KAPI BOOL WINAPI
NtGdiGradientFill( HDC hdc
, TRIVERTEX
*vert_array
, ULONG nvert
,
383 void *grad_array
, ULONG ngrad
, ULONG mode
);
384 W32KAPI HFONT WINAPI
NtGdiHfontCreate( const void *logfont
, ULONG unk2
, ULONG unk3
,
385 ULONG unk4
, void *data
);
386 W32KAPI BOOL WINAPI
NtGdiIcmBrushInfo( HDC hdc
, HBRUSH handle
, BITMAPINFO
*info
, void *bits
,
387 ULONG
*bits_size
, UINT
*usage
, BOOL
*unk
, UINT mode
);
388 W32KAPI DWORD WINAPI
NtGdiInitSpool(void);
389 W32KAPI INT WINAPI
NtGdiIntersectClipRect( HDC hdc
, INT left
, INT top
, INT right
, INT bottom
);
390 W32KAPI BOOL WINAPI
NtGdiInvertRgn( HDC hdc
, HRGN hrgn
);
391 W32KAPI BOOL WINAPI
NtGdiLineTo( HDC hdc
, INT x
, INT y
);
392 W32KAPI BOOL WINAPI
NtGdiMaskBlt( HDC hdc
, INT x_dst
, INT y_dst
, INT width_dst
, INT height_dst
,
393 HDC hdc_src
, INT x_src
, INT y_src
, HBITMAP mask
,
394 INT x_mask
, INT y_mask
, DWORD rop
, DWORD bk_color
);
395 W32KAPI BOOL WINAPI
NtGdiModifyWorldTransform( HDC hdc
, const XFORM
*xform
, DWORD mode
);
396 W32KAPI BOOL WINAPI
NtGdiMoveTo( HDC hdc
, INT x
, INT y
, POINT
*pt
);
397 W32KAPI INT WINAPI
NtGdiOffsetClipRgn( HDC hdc
, INT x
, INT y
);
398 W32KAPI INT WINAPI
NtGdiOffsetRgn( HRGN hrgn
, INT x
, INT y
);
399 W32KAPI HDC WINAPI
NtGdiOpenDCW( UNICODE_STRING
*device
, const DEVMODEW
*devmode
,
400 UNICODE_STRING
*output
, ULONG type
, BOOL is_display
,
401 HANDLE hspool
, DRIVER_INFO_2W
*driver_info
, void *pdev
);
402 W32KAPI BOOL WINAPI
NtGdiPatBlt( HDC hdc
, INT left
, INT top
, INT width
, INT height
, DWORD rop
);
403 W32KAPI HRGN WINAPI
NtGdiPathToRegion( HDC hdc
);
404 W32KAPI BOOL WINAPI
NtGdiPlgBlt( HDC hdc
, const POINT
*point
, HDC hdc_src
, INT x_src
, INT y_src
,
405 INT width
, INT height
, HBITMAP mask
, INT x_mask
, INT y_mask
,
407 W32KAPI BOOL WINAPI
NtGdiPolyDraw(HDC hdc
, const POINT
*points
, const BYTE
*types
, DWORD count
);
408 W32KAPI ULONG WINAPI
NtGdiPolyPolyDraw( HDC hdc
, const POINT
*points
, const ULONG
*counts
,
409 DWORD count
, UINT function
);
410 W32KAPI BOOL WINAPI
NtGdiPtInRegion( HRGN hrgn
, INT x
, INT y
);
411 W32KAPI BOOL WINAPI
NtGdiPtVisible( HDC hdc
, INT x
, INT y
);
412 W32KAPI BOOL WINAPI
NtGdiRectInRegion( HRGN hrgn
, const RECT
*rect
);
413 W32KAPI BOOL WINAPI
NtGdiRectVisible( HDC hdc
, const RECT
*rect
);
414 W32KAPI BOOL WINAPI
NtGdiRectangle( HDC hdc
, INT left
, INT top
, INT right
, INT bottom
);
415 W32KAPI BOOL WINAPI
NtGdiRemoveFontMemResourceEx( HANDLE handle
);
416 W32KAPI BOOL WINAPI
NtGdiRemoveFontResourceW( const WCHAR
*str
, ULONG size
, ULONG files
,
417 DWORD flags
, DWORD tid
, void *dv
);
418 W32KAPI BOOL WINAPI
NtGdiResetDC( HDC hdc
, const DEVMODEW
*devmode
, BOOL
*banding
,
419 DRIVER_INFO_2W
*driver_info
, void *dev
);
420 W32KAPI BOOL WINAPI
NtGdiResizePalette( HPALETTE palette
, UINT count
);
421 W32KAPI BOOL WINAPI
NtGdiRestoreDC( HDC hdc
, INT level
);
422 W32KAPI BOOL WINAPI
NtGdiRoundRect( HDC hdc
, INT left
, INT top
, INT right
,
423 INT bottom
, INT ell_width
, INT ell_height
);
424 W32KAPI INT WINAPI
NtGdiSaveDC( HDC hdc
);
425 W32KAPI BOOL WINAPI
NtGdiScaleViewportExtEx( HDC hdc
, INT x_num
, INT x_denom
,
426 INT y_num
, INT y_denom
, SIZE
*size
);
427 W32KAPI BOOL WINAPI
NtGdiScaleWindowExtEx( HDC hdc
, INT x_num
, INT x_denom
,
428 INT y_num
, INT y_denom
, SIZE
*size
);
429 W32KAPI HGDIOBJ WINAPI
NtGdiSelectBitmap( HDC hdc
, HGDIOBJ handle
);
430 W32KAPI HGDIOBJ WINAPI
NtGdiSelectBrush( HDC hdc
, HGDIOBJ handle
);
431 W32KAPI BOOL WINAPI
NtGdiSelectClipPath( HDC hdc
, INT mode
);
432 W32KAPI HGDIOBJ WINAPI
NtGdiSelectFont( HDC hdc
, HGDIOBJ handle
);
433 W32KAPI HGDIOBJ WINAPI
NtGdiSelectPen( HDC hdc
, HGDIOBJ handle
);
434 W32KAPI LONG WINAPI
NtGdiSetBitmapBits( HBITMAP hbitmap
, LONG count
, const void *bits
);
435 W32KAPI BOOL WINAPI
NtGdiSetBitmapDimension( HBITMAP hbitmap
, INT x
, INT y
, SIZE
*prev_size
);
436 W32KAPI BOOL WINAPI
NtGdiSetBrushOrg( HDC hdc
, INT x
, INT y
, POINT
*prev_org
);
437 W32KAPI UINT WINAPI
NtGdiSetBoundsRect( HDC hdc
, const RECT
*rect
, UINT flags
);
438 W32KAPI BOOL WINAPI
NtGdiSetColorAdjustment( HDC hdc
, const COLORADJUSTMENT
*ca
);
439 W32KAPI INT WINAPI
NtGdiSetDIBitsToDeviceInternal( HDC hdc
, INT x_dst
, INT y_dst
, DWORD cx
,
440 DWORD cy
, INT x_src
, INT y_src
, UINT startscan
,
441 UINT lines
, const void *bits
, const BITMAPINFO
*bmi
,
442 UINT coloruse
, UINT max_bits
, UINT max_info
,
443 BOOL xform_coords
, HANDLE xform
);
444 W32KAPI BOOL WINAPI
NtGdiSetDeviceGammaRamp( HDC hdc
, void *ptr
);
445 W32KAPI DWORD WINAPI
NtGdiSetLayout( HDC hdc
, LONG wox
, DWORD layout
);
446 W32KAPI BOOL WINAPI
NtGdiSetMagicColors( HDC hdc
, DWORD magic
, ULONG index
);
447 W32KAPI INT WINAPI
NtGdiSetMetaRgn( HDC hdc
);
448 W32KAPI BOOL WINAPI
NtGdiSetMiterLimit( HDC hdc
, DWORD limit
, DWORD
*prev_limit
);
449 W32KAPI COLORREF WINAPI
NtGdiSetPixel( HDC hdc
, INT x
, INT y
, COLORREF color
);
450 W32KAPI BOOL WINAPI
NtGdiSetPixelFormat( HDC hdc
, INT format
);
451 W32KAPI BOOL WINAPI
NtGdiSetRectRgn( HRGN hrgn
, INT left
, INT top
, INT right
, INT bottom
);
452 W32KAPI UINT WINAPI
NtGdiSetSystemPaletteUse( HDC hdc
, UINT use
);
453 W32KAPI BOOL WINAPI
NtGdiSetTextJustification( HDC hdc
, INT extra
, INT breaks
);
454 W32KAPI BOOL WINAPI
NtGdiSetVirtualResolution( HDC hdc
, DWORD horz_res
, DWORD vert_res
,
455 DWORD horz_size
, DWORD vert_size
);
456 W32KAPI INT WINAPI
NtGdiStartDoc( HDC hdc
, const DOCINFOW
*doc
, BOOL
*banding
, INT job
);
457 W32KAPI INT WINAPI
NtGdiStartPage( HDC hdc
);
458 W32KAPI BOOL WINAPI
NtGdiStretchBlt( HDC hdc
, INT x_dst
, INT y_dst
, INT width_dst
, INT height_dst
,
459 HDC hdc_src
, INT x_src
, INT y_src
, INT width_src
, INT height_src
,
460 DWORD rop
, COLORREF bk_color
);
461 W32KAPI INT WINAPI
NtGdiStretchDIBitsInternal( HDC hdc
, INT x_dst
, INT y_dst
, INT width_dst
,
462 INT height_dst
, INT x_src
, INT y_src
, INT width_src
,
463 INT height_src
, const void *bits
, const BITMAPINFO
*bmi
,
464 UINT coloruse
, DWORD rop
, UINT max_info
, UINT max_bits
,
466 W32KAPI BOOL WINAPI
NtGdiStrokeAndFillPath( HDC hdc
);
467 W32KAPI BOOL WINAPI
NtGdiStrokePath( HDC hdc
);
468 W32KAPI BOOL WINAPI
NtGdiSwapBuffers( HDC hdc
);
469 W32KAPI BOOL WINAPI
NtGdiTransparentBlt( HDC hdc
, int x_dst
, int y_dst
, int width_dst
, int height_dst
,
470 HDC hdc_src
, int x_src
, int y_src
, int width_src
, int height_src
,
472 W32KAPI BOOL WINAPI
NtGdiTransformPoints( HDC hdc
, const POINT
*points_in
, POINT
*points_out
,
473 INT count
, UINT mode
);
474 W32KAPI BOOL WINAPI
NtGdiUnrealizeObject( HGDIOBJ obj
);
475 W32KAPI BOOL WINAPI
NtGdiUpdateColors( HDC hdc
);
476 W32KAPI BOOL WINAPI
NtGdiWidenPath( HDC hdc
);
478 W32KAPI NTSTATUS WINAPI
NtGdiDdDDICheckVidPnExclusiveOwnership( const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP
*desc
);
479 W32KAPI NTSTATUS WINAPI
NtGdiDdDDICloseAdapter( const D3DKMT_CLOSEADAPTER
*desc
);
480 W32KAPI NTSTATUS WINAPI
NtGdiDdDDICreateDCFromMemory( D3DKMT_CREATEDCFROMMEMORY
*desc
);
481 W32KAPI NTSTATUS WINAPI
NtGdiDdDDICreateDevice( D3DKMT_CREATEDEVICE
*desc
);
482 W32KAPI NTSTATUS WINAPI
NtGdiDdDDIDestroyDCFromMemory( const D3DKMT_DESTROYDCFROMMEMORY
*desc
);
483 W32KAPI NTSTATUS WINAPI
NtGdiDdDDIDestroyDevice( const D3DKMT_DESTROYDEVICE
*desc
);
484 W32KAPI NTSTATUS WINAPI
NtGdiDdDDIEnumAdapters2( D3DKMT_ENUMADAPTERS2
*desc
);
485 W32KAPI NTSTATUS WINAPI
NtGdiDdDDIEscape( const D3DKMT_ESCAPE
*desc
);
486 W32KAPI NTSTATUS WINAPI
NtGdiDdDDIOpenAdapterFromHdc( D3DKMT_OPENADAPTERFROMHDC
*desc
);
487 W32KAPI NTSTATUS WINAPI
NtGdiDdDDIOpenAdapterFromDeviceName( D3DKMT_OPENADAPTERFROMDEVICENAME
*desc
);
488 W32KAPI NTSTATUS WINAPI
NtGdiDdDDIOpenAdapterFromLuid( D3DKMT_OPENADAPTERFROMLUID
*desc
);
489 W32KAPI NTSTATUS WINAPI
NtGdiDdDDIQueryAdapterInfo( D3DKMT_QUERYADAPTERINFO
*desc
);
490 W32KAPI NTSTATUS WINAPI
NtGdiDdDDIQueryStatistics( D3DKMT_QUERYSTATISTICS
*stats
);
491 W32KAPI NTSTATUS WINAPI
NtGdiDdDDIQueryVideoMemoryInfo( D3DKMT_QUERYVIDEOMEMORYINFO
*desc
);
492 W32KAPI NTSTATUS WINAPI
NtGdiDdDDISetQueuedLimit( D3DKMT_SETQUEUEDLIMIT
*desc
);
493 W32KAPI NTSTATUS WINAPI
NtGdiDdDDISetVidPnSourceOwner( const D3DKMT_SETVIDPNSOURCEOWNER
*desc
);
495 /* Wine extensions */
496 W32KAPI
const struct vulkan_funcs
* __wine_get_vulkan_driver(UINT version
);
497 W32KAPI
const struct opengl_funcs
*__wine_get_wgl_driver( HDC hdc
, UINT version
);
498 W32KAPI BOOL WINAPI
__wine_get_icm_profile( HDC hdc
, BOOL allow_default
, DWORD
*size
, WCHAR
*filename
);
499 W32KAPI BOOL WINAPI
__wine_get_file_outline_text_metric( const WCHAR
*path
, TEXTMETRICW
*otm
,
500 UINT
*em_square
, WCHAR
*face_name
);