pyglet 2.1.3__py3-none-any.whl → 2.1.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyglet/__init__.py +21 -9
- pyglet/__init__.pyi +3 -1
- pyglet/app/cocoa.py +6 -3
- pyglet/display/win32.py +14 -15
- pyglet/display/xlib_vidmoderestore.py +1 -1
- pyglet/extlibs/earcut.py +2 -2
- pyglet/font/__init__.py +3 -3
- pyglet/font/base.py +118 -51
- pyglet/font/dwrite/__init__.py +1381 -0
- pyglet/font/dwrite/d2d1_lib.py +637 -0
- pyglet/font/dwrite/d2d1_types_lib.py +60 -0
- pyglet/font/dwrite/dwrite_lib.py +1577 -0
- pyglet/font/fontconfig.py +79 -16
- pyglet/font/freetype.py +252 -77
- pyglet/font/freetype_lib.py +234 -125
- pyglet/font/harfbuzz/__init__.py +275 -0
- pyglet/font/harfbuzz/harfbuzz_lib.py +212 -0
- pyglet/font/quartz.py +432 -112
- pyglet/font/user.py +18 -11
- pyglet/font/win32.py +9 -1
- pyglet/gl/wgl.py +94 -87
- pyglet/gl/wglext_arb.py +472 -218
- pyglet/gl/wglext_nv.py +410 -188
- pyglet/gui/widgets.py +6 -1
- pyglet/image/codecs/bmp.py +3 -5
- pyglet/image/codecs/gdiplus.py +28 -9
- pyglet/image/codecs/wic.py +198 -489
- pyglet/image/codecs/wincodec_lib.py +413 -0
- pyglet/input/base.py +3 -2
- pyglet/input/macos/darwin_hid.py +28 -2
- pyglet/input/win32/directinput.py +2 -1
- pyglet/input/win32/xinput.py +10 -9
- pyglet/lib.py +14 -2
- pyglet/libs/darwin/cocoapy/cocoalibs.py +74 -3
- pyglet/libs/darwin/coreaudio.py +0 -2
- pyglet/libs/win32/__init__.py +4 -2
- pyglet/libs/win32/com.py +65 -12
- pyglet/libs/win32/constants.py +1 -0
- pyglet/libs/win32/dinput.py +1 -9
- pyglet/libs/win32/types.py +72 -8
- pyglet/media/codecs/coreaudio.py +1 -0
- pyglet/media/codecs/wmf.py +93 -72
- pyglet/media/devices/win32.py +5 -4
- pyglet/media/drivers/directsound/lib_dsound.py +4 -4
- pyglet/media/drivers/xaudio2/interface.py +21 -17
- pyglet/media/drivers/xaudio2/lib_xaudio2.py +42 -25
- pyglet/shapes.py +1 -1
- pyglet/text/document.py +7 -53
- pyglet/text/formats/attributed.py +3 -1
- pyglet/text/formats/plaintext.py +1 -1
- pyglet/text/formats/structured.py +1 -1
- pyglet/text/layout/base.py +76 -68
- pyglet/text/layout/incremental.py +38 -8
- pyglet/text/layout/scrolling.py +1 -1
- pyglet/text/runlist.py +2 -114
- pyglet/window/win32/__init__.py +1 -3
- {pyglet-2.1.3.dist-info → pyglet-2.1.4.dist-info}/METADATA +1 -1
- {pyglet-2.1.3.dist-info → pyglet-2.1.4.dist-info}/RECORD +60 -54
- pyglet/font/directwrite.py +0 -2798
- {pyglet-2.1.3.dist-info → pyglet-2.1.4.dist-info}/LICENSE +0 -0
- {pyglet-2.1.3.dist-info → pyglet-2.1.4.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,637 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import platform
|
|
5
|
+
from ctypes import (
|
|
6
|
+
HRESULT,
|
|
7
|
+
POINTER,
|
|
8
|
+
Structure,
|
|
9
|
+
c_void_p,
|
|
10
|
+
c_wchar_p,
|
|
11
|
+
windll,
|
|
12
|
+
)
|
|
13
|
+
from ctypes.wintypes import BOOL, FLOAT, UINT
|
|
14
|
+
|
|
15
|
+
from pyglet.font.dwrite.d2d1_types_lib import (
|
|
16
|
+
D2D1_COLOR_F,
|
|
17
|
+
D2D1_POINT_2F,
|
|
18
|
+
D2D1_RECT_F,
|
|
19
|
+
D2D1_SIZE_F,
|
|
20
|
+
D2D1_SIZE_U,
|
|
21
|
+
D2D_POINT_2F,
|
|
22
|
+
)
|
|
23
|
+
from pyglet.font.dwrite.dwrite_lib import (
|
|
24
|
+
DWRITE_GLYPH_IMAGE_FORMATS,
|
|
25
|
+
DWRITE_GLYPH_RUN,
|
|
26
|
+
DWRITE_GLYPH_RUN_DESCRIPTION,
|
|
27
|
+
DWRITE_MEASURING_MODE,
|
|
28
|
+
IDWriteTextFormat,
|
|
29
|
+
IDWriteTextLayout,
|
|
30
|
+
)
|
|
31
|
+
from pyglet.image.codecs.wincodec_lib import IWICBitmap, IWICBitmapSource
|
|
32
|
+
from pyglet.libs.win32 import c_void, com
|
|
33
|
+
from pyglet.libs.win32.types import BYTE, UINT32, UINT64
|
|
34
|
+
|
|
35
|
+
# --- Direct2D
|
|
36
|
+
try:
|
|
37
|
+
d2d1 = "d2d1"
|
|
38
|
+
|
|
39
|
+
# System32 and SysWOW64 folders are opposite perception in Windows x64.
|
|
40
|
+
# System32 = x64 dll's | SysWOW64 = x86 dlls
|
|
41
|
+
# By default ctypes only seems to look in system32 regardless of Python architecture, which has x64 dlls.
|
|
42
|
+
if platform.architecture()[0] == "32bit" and platform.machine().endswith("64"): # Machine is x64, Python is x86.
|
|
43
|
+
d2d1 = os.path.join(os.environ["WINDIR"], "SysWOW64", "d2d1.dll")
|
|
44
|
+
|
|
45
|
+
d2d_lib = windll.LoadLibrary(d2d1)
|
|
46
|
+
except OSError:
|
|
47
|
+
# Doesn't exist? Should stop import of library.
|
|
48
|
+
msg = "d2d1 Not Found"
|
|
49
|
+
raise ImportError(msg) # noqa: B904
|
|
50
|
+
|
|
51
|
+
D2D1_FACTORY_TYPE = UINT
|
|
52
|
+
D2D1_FACTORY_TYPE_SINGLE_THREADED = 0
|
|
53
|
+
D2D1_FACTORY_TYPE_MULTI_THREADED = 1
|
|
54
|
+
|
|
55
|
+
D2D1_COLOR_BITMAP_GLYPH_SNAP_OPTION = UINT
|
|
56
|
+
D2D1_COLOR_BITMAP_GLYPH_SNAP_OPTION_DEFAULT = 0
|
|
57
|
+
D2D1_COLOR_BITMAP_GLYPH_SNAP_OPTION_DISABLE = 1
|
|
58
|
+
D2D1_COLOR_BITMAP_GLYPH_SNAP_OPTION_FORCE_DWORD = 0xffffffff
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
D2D1_TEXT_ANTIALIAS_MODE = UINT
|
|
62
|
+
D2D1_TEXT_ANTIALIAS_MODE_DEFAULT = 0
|
|
63
|
+
D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE = 1
|
|
64
|
+
D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE = 2
|
|
65
|
+
D2D1_TEXT_ANTIALIAS_MODE_ALIASED = 3
|
|
66
|
+
|
|
67
|
+
D2D1_RENDER_TARGET_TYPE = UINT
|
|
68
|
+
D2D1_RENDER_TARGET_TYPE_DEFAULT = 0
|
|
69
|
+
D2D1_RENDER_TARGET_TYPE_SOFTWARE = 1
|
|
70
|
+
D2D1_RENDER_TARGET_TYPE_HARDWARE = 2
|
|
71
|
+
|
|
72
|
+
D2D1_FEATURE_LEVEL = UINT
|
|
73
|
+
D2D1_FEATURE_LEVEL_DEFAULT = 0
|
|
74
|
+
|
|
75
|
+
D2D1_RENDER_TARGET_USAGE = UINT
|
|
76
|
+
D2D1_RENDER_TARGET_USAGE_NONE = 0
|
|
77
|
+
D2D1_RENDER_TARGET_USAGE_FORCE_BITMAP_REMOTING = 1
|
|
78
|
+
D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE = 2
|
|
79
|
+
|
|
80
|
+
DXGI_FORMAT = UINT
|
|
81
|
+
DXGI_FORMAT_UNKNOWN = 0
|
|
82
|
+
|
|
83
|
+
D2D1_ALPHA_MODE = UINT
|
|
84
|
+
D2D1_ALPHA_MODE_UNKNOWN = 0
|
|
85
|
+
D2D1_ALPHA_MODE_PREMULTIPLIED = 1
|
|
86
|
+
D2D1_ALPHA_MODE_STRAIGHT = 2
|
|
87
|
+
D2D1_ALPHA_MODE_IGNORE = 3
|
|
88
|
+
|
|
89
|
+
D2D1_DRAW_TEXT_OPTIONS = UINT
|
|
90
|
+
D2D1_DRAW_TEXT_OPTIONS_NO_SNAP = 0x00000001
|
|
91
|
+
D2D1_DRAW_TEXT_OPTIONS_CLIP = 0x00000002
|
|
92
|
+
D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT = 0x00000004
|
|
93
|
+
D2D1_DRAW_TEXT_OPTIONS_DISABLE_COLOR_BITMAP_SNAPPING = 0x00000008
|
|
94
|
+
D2D1_DRAW_TEXT_OPTIONS_NONE = 0x00000000
|
|
95
|
+
D2D1_DRAW_TEXT_OPTIONS_FORCE_DWORD = 0xffffffff
|
|
96
|
+
|
|
97
|
+
DXGI_FORMAT_B8G8R8A8_UNORM = 87
|
|
98
|
+
|
|
99
|
+
D2D1_BITMAP_INTERPOLATION_MODE = UINT
|
|
100
|
+
D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR = 0
|
|
101
|
+
D2D1_BITMAP_INTERPOLATION_MODE_LINEAR = 1
|
|
102
|
+
D2D1_BITMAP_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff
|
|
103
|
+
|
|
104
|
+
D2D1_BITMAP_OPTIONS = UINT
|
|
105
|
+
D2D1_BITMAP_OPTIONS_NONE = 0x00000000
|
|
106
|
+
D2D1_BITMAP_OPTIONS_TARGET = 0x00000001
|
|
107
|
+
D2D1_BITMAP_OPTIONS_CANNOT_DRAW = 0x00000002
|
|
108
|
+
D2D1_BITMAP_OPTIONS_CPU_READ = 0x00000004
|
|
109
|
+
D2D1_BITMAP_OPTIONS_GDI_COMPATIBLE = 0x00000008
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
D2D1CreateFactory = d2d_lib.D2D1CreateFactory
|
|
113
|
+
D2D1CreateFactory.restype = HRESULT
|
|
114
|
+
D2D1CreateFactory.argtypes = [D2D1_FACTORY_TYPE, com.REFIID, c_void_p, c_void_p]
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class D2D1_PIXEL_FORMAT(Structure):
|
|
120
|
+
_fields_ = (
|
|
121
|
+
("format", DXGI_FORMAT),
|
|
122
|
+
("alphaMode", D2D1_ALPHA_MODE),
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
class D2D1_RENDER_TARGET_PROPERTIES(Structure):
|
|
127
|
+
_fields_ = (
|
|
128
|
+
("type", D2D1_RENDER_TARGET_TYPE),
|
|
129
|
+
("pixelFormat", D2D1_PIXEL_FORMAT),
|
|
130
|
+
("dpiX", FLOAT),
|
|
131
|
+
("dpiY", FLOAT),
|
|
132
|
+
("usage", D2D1_RENDER_TARGET_USAGE),
|
|
133
|
+
("minLevel", D2D1_FEATURE_LEVEL),
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
class D2D1_BITMAP_PROPERTIES(Structure):
|
|
137
|
+
_fields_ = (
|
|
138
|
+
("pixelFormat", D2D1_PIXEL_FORMAT),
|
|
139
|
+
("dpiX", FLOAT),
|
|
140
|
+
("dpiY", FLOAT),
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
ID2D1ColorContext = c_void_p
|
|
144
|
+
class D2D1_BITMAP_PROPERTIES1(Structure):
|
|
145
|
+
_fields_ = (
|
|
146
|
+
("pixelFormat", D2D1_PIXEL_FORMAT),
|
|
147
|
+
("dpiX", FLOAT),
|
|
148
|
+
("dpiY", FLOAT),
|
|
149
|
+
("bitmapOptions", D2D1_BITMAP_OPTIONS),
|
|
150
|
+
("colorContext", ID2D1ColorContext),
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
class ID2D1Resource(com.pIUnknown):
|
|
154
|
+
_methods_ = [
|
|
155
|
+
("GetFactory",
|
|
156
|
+
com.STDMETHOD()),
|
|
157
|
+
]
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class ID2D1Brush(ID2D1Resource):
|
|
161
|
+
_methods_ = [
|
|
162
|
+
("SetOpacity",
|
|
163
|
+
com.STDMETHOD()),
|
|
164
|
+
("SetTransform",
|
|
165
|
+
com.STDMETHOD()),
|
|
166
|
+
("GetOpacity",
|
|
167
|
+
com.STDMETHOD()),
|
|
168
|
+
("GetTransform",
|
|
169
|
+
com.STDMETHOD()),
|
|
170
|
+
]
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
class ID2D1SolidColorBrush(ID2D1Brush):
|
|
174
|
+
_methods_ = [
|
|
175
|
+
("SetColor",
|
|
176
|
+
com.METHOD(None, POINTER(D2D1_COLOR_F))),
|
|
177
|
+
("GetColor",
|
|
178
|
+
com.STDMETHOD()),
|
|
179
|
+
]
|
|
180
|
+
|
|
181
|
+
D2D1_DEVICE_CONTEXT_OPTIONS = UINT
|
|
182
|
+
D2D1_DEVICE_CONTEXT_OPTIONS_NONE = 0
|
|
183
|
+
D2D1_DEVICE_CONTEXT_OPTIONS_ENABLE_MULTITHREADED_OPTIMIZATIONS = 1
|
|
184
|
+
D2D1_DEVICE_CONTEXT_OPTIONS_FORCE_DWORD = 0xffffffff
|
|
185
|
+
|
|
186
|
+
D2D1_TAG = UINT64
|
|
187
|
+
|
|
188
|
+
D2D1_MAP_OPTIONS = UINT
|
|
189
|
+
D2D1_MAP_OPTIONS_NONE = 0
|
|
190
|
+
D2D1_MAP_OPTIONS_READ = 1
|
|
191
|
+
D2D1_MAP_OPTIONS_WRITE = 2
|
|
192
|
+
D2D1_MAP_OPTIONS_DISCARD = 4
|
|
193
|
+
|
|
194
|
+
class D2D1_MAPPED_RECT(Structure):
|
|
195
|
+
_fields_ = [
|
|
196
|
+
("pitch", UINT32),
|
|
197
|
+
("bits", POINTER(BYTE)),
|
|
198
|
+
]
|
|
199
|
+
|
|
200
|
+
class ID2D1Image(ID2D1Resource):
|
|
201
|
+
_methods_ = []
|
|
202
|
+
|
|
203
|
+
class ID2D1Bitmap(ID2D1Image):
|
|
204
|
+
_methods_ = [
|
|
205
|
+
("GetSize",
|
|
206
|
+
com.METHOD(D2D1_SIZE_F)),
|
|
207
|
+
("GetPixelSize",
|
|
208
|
+
com.METHOD(D2D1_SIZE_U)),
|
|
209
|
+
("GetPixelFormat",
|
|
210
|
+
com.METHOD(D2D1_PIXEL_FORMAT)),
|
|
211
|
+
("GetDpi",
|
|
212
|
+
com.METHOD(c_void, POINTER(FLOAT), POINTER(FLOAT))),
|
|
213
|
+
("CopyFromBitmap",
|
|
214
|
+
com.STDMETHOD()),
|
|
215
|
+
("CopyFromRenderTarget",
|
|
216
|
+
com.STDMETHOD()),
|
|
217
|
+
("CopyFromMemory",
|
|
218
|
+
com.STDMETHOD()),
|
|
219
|
+
]
|
|
220
|
+
|
|
221
|
+
class ID2D1Bitmap1(ID2D1Bitmap):
|
|
222
|
+
_methods_ = [
|
|
223
|
+
("GetColorContext",
|
|
224
|
+
com.STDMETHOD()),
|
|
225
|
+
("GetOptions",
|
|
226
|
+
com.METHOD(D2D1_BITMAP_OPTIONS)),
|
|
227
|
+
("GetSurface",
|
|
228
|
+
com.STDMETHOD()),
|
|
229
|
+
("Map",
|
|
230
|
+
com.STDMETHOD(D2D1_MAP_OPTIONS, POINTER(D2D1_MAPPED_RECT))),
|
|
231
|
+
("Unmap",
|
|
232
|
+
com.STDMETHOD()),
|
|
233
|
+
]
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
class IDXGISurface(com.pIUnknown):
|
|
237
|
+
...
|
|
238
|
+
|
|
239
|
+
class ID2D1RenderTarget(ID2D1Resource):
|
|
240
|
+
_methods_ = [
|
|
241
|
+
("CreateBitmap",
|
|
242
|
+
com.STDMETHOD(D2D1_SIZE_U, c_void_p, UINT32, POINTER(D2D1_BITMAP_PROPERTIES), POINTER(ID2D1Bitmap))),
|
|
243
|
+
("CreateBitmapFromWicBitmap",
|
|
244
|
+
com.STDMETHOD(IWICBitmapSource, POINTER(D2D1_BITMAP_PROPERTIES), POINTER(ID2D1Bitmap))),
|
|
245
|
+
("CreateSharedBitmap",
|
|
246
|
+
com.STDMETHOD()),
|
|
247
|
+
("CreateBitmapBrush",
|
|
248
|
+
com.STDMETHOD()),
|
|
249
|
+
("CreateSolidColorBrush",
|
|
250
|
+
com.STDMETHOD(POINTER(D2D1_COLOR_F), c_void_p, POINTER(ID2D1SolidColorBrush))),
|
|
251
|
+
("CreateGradientStopCollection",
|
|
252
|
+
com.STDMETHOD()),
|
|
253
|
+
("CreateLinearGradientBrush",
|
|
254
|
+
com.STDMETHOD()),
|
|
255
|
+
("CreateRadialGradientBrush",
|
|
256
|
+
com.STDMETHOD()),
|
|
257
|
+
("CreateCompatibleRenderTarget",
|
|
258
|
+
com.STDMETHOD()),
|
|
259
|
+
("CreateLayer",
|
|
260
|
+
com.STDMETHOD()),
|
|
261
|
+
("CreateMesh",
|
|
262
|
+
com.STDMETHOD()),
|
|
263
|
+
("DrawLine",
|
|
264
|
+
com.STDMETHOD()),
|
|
265
|
+
("DrawRectangle",
|
|
266
|
+
com.STDMETHOD()),
|
|
267
|
+
("FillRectangle",
|
|
268
|
+
com.STDMETHOD()),
|
|
269
|
+
("DrawRoundedRectangle",
|
|
270
|
+
com.STDMETHOD()),
|
|
271
|
+
("FillRoundedRectangle",
|
|
272
|
+
com.STDMETHOD()),
|
|
273
|
+
("DrawEllipse",
|
|
274
|
+
com.STDMETHOD()),
|
|
275
|
+
("FillEllipse",
|
|
276
|
+
com.STDMETHOD()),
|
|
277
|
+
("DrawGeometry",
|
|
278
|
+
com.STDMETHOD()),
|
|
279
|
+
("FillGeometry",
|
|
280
|
+
com.STDMETHOD()),
|
|
281
|
+
("FillMesh",
|
|
282
|
+
com.STDMETHOD()),
|
|
283
|
+
("FillOpacityMask",
|
|
284
|
+
com.METHOD(None, ID2D1Bitmap, ID2D1Brush, UINT, POINTER(D2D1_RECT_F), POINTER(D2D1_RECT_F))),
|
|
285
|
+
("DrawBitmap",
|
|
286
|
+
com.STDMETHOD(ID2D1Bitmap, POINTER(D2D1_RECT_F), FLOAT, D2D1_BITMAP_INTERPOLATION_MODE, POINTER(D2D1_RECT_F))),
|
|
287
|
+
("DrawText",
|
|
288
|
+
com.STDMETHOD()),
|
|
289
|
+
("DrawTextLayout",
|
|
290
|
+
com.METHOD(c_void, D2D_POINT_2F, IDWriteTextLayout, ID2D1Brush, UINT32)),
|
|
291
|
+
("DrawGlyphRun",
|
|
292
|
+
com.METHOD(c_void, D2D_POINT_2F, POINTER(DWRITE_GLYPH_RUN), ID2D1Brush, UINT32)),
|
|
293
|
+
("SetTransform",
|
|
294
|
+
com.METHOD(c_void)),
|
|
295
|
+
("GetTransform",
|
|
296
|
+
com.STDMETHOD()),
|
|
297
|
+
("SetAntialiasMode",
|
|
298
|
+
com.METHOD(c_void, D2D1_TEXT_ANTIALIAS_MODE)),
|
|
299
|
+
("GetAntialiasMode",
|
|
300
|
+
com.STDMETHOD()),
|
|
301
|
+
("SetTextAntialiasMode",
|
|
302
|
+
com.METHOD(c_void, D2D1_TEXT_ANTIALIAS_MODE)),
|
|
303
|
+
("GetTextAntialiasMode",
|
|
304
|
+
com.STDMETHOD()),
|
|
305
|
+
("SetTextRenderingParams",
|
|
306
|
+
com.STDMETHOD()),
|
|
307
|
+
("GetTextRenderingParams",
|
|
308
|
+
com.STDMETHOD()),
|
|
309
|
+
("SetTags",
|
|
310
|
+
com.STDMETHOD()),
|
|
311
|
+
("GetTags",
|
|
312
|
+
com.STDMETHOD()),
|
|
313
|
+
("PushLayer",
|
|
314
|
+
com.STDMETHOD()),
|
|
315
|
+
("PopLayer",
|
|
316
|
+
com.STDMETHOD()),
|
|
317
|
+
("Flush",
|
|
318
|
+
com.STDMETHOD(POINTER(D2D1_TAG), POINTER(D2D1_TAG))),
|
|
319
|
+
("SaveDrawingState",
|
|
320
|
+
com.STDMETHOD()),
|
|
321
|
+
("RestoreDrawingState",
|
|
322
|
+
com.STDMETHOD()),
|
|
323
|
+
("PushAxisAlignedClip",
|
|
324
|
+
com.STDMETHOD()),
|
|
325
|
+
("PopAxisAlignedClip",
|
|
326
|
+
com.STDMETHOD()),
|
|
327
|
+
("Clear",
|
|
328
|
+
com.METHOD(c_void, POINTER(D2D1_COLOR_F))),
|
|
329
|
+
("BeginDraw",
|
|
330
|
+
com.METHOD(c_void)),
|
|
331
|
+
("EndDraw",
|
|
332
|
+
com.STDMETHOD(POINTER(D2D1_TAG), POINTER(D2D1_TAG))),
|
|
333
|
+
("GetPixelFormat",
|
|
334
|
+
com.STDMETHOD()),
|
|
335
|
+
("SetDpi",
|
|
336
|
+
com.STDMETHOD(FLOAT, FLOAT)),
|
|
337
|
+
("GetDpi",
|
|
338
|
+
com.STDMETHOD()),
|
|
339
|
+
("GetSize",
|
|
340
|
+
com.STDMETHOD()),
|
|
341
|
+
("GetPixelSize",
|
|
342
|
+
com.STDMETHOD()),
|
|
343
|
+
("GetMaximumBitmapSize",
|
|
344
|
+
com.STDMETHOD()),
|
|
345
|
+
("IsSupported",
|
|
346
|
+
com.METHOD(BOOL, POINTER(D2D1_RENDER_TARGET_PROPERTIES))),
|
|
347
|
+
]
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
class ID2D1DeviceContext(ID2D1RenderTarget):
|
|
351
|
+
_methods_ = [
|
|
352
|
+
("CreateBitmap_Context",
|
|
353
|
+
com.STDMETHOD(D2D1_SIZE_U, c_void_p, UINT32, POINTER(D2D1_BITMAP_PROPERTIES1), POINTER(ID2D1Bitmap1))),
|
|
354
|
+
("CreateBitmapFromWicBitmap_Context",
|
|
355
|
+
com.STDMETHOD(IWICBitmapSource, POINTER(D2D1_BITMAP_PROPERTIES1), POINTER(ID2D1Bitmap1))),
|
|
356
|
+
("CreateColorContext",
|
|
357
|
+
com.STDMETHOD()),
|
|
358
|
+
("CreateColorContextFromFilename",
|
|
359
|
+
com.STDMETHOD()),
|
|
360
|
+
("CreateColorContextFromWicColorContext",
|
|
361
|
+
com.STDMETHOD()),
|
|
362
|
+
("CreateBitmapFromDxgiSurface",
|
|
363
|
+
com.STDMETHOD(IDXGISurface, POINTER(D2D1_BITMAP_PROPERTIES1), POINTER(ID2D1Bitmap1))),
|
|
364
|
+
("CreateEffect",
|
|
365
|
+
com.STDMETHOD()),
|
|
366
|
+
("CreateGradientStopCollection_Context",
|
|
367
|
+
com.STDMETHOD()),
|
|
368
|
+
("CreateImageBrush",
|
|
369
|
+
com.STDMETHOD()),
|
|
370
|
+
("CreateBitmapBrush_Context",
|
|
371
|
+
com.STDMETHOD()),
|
|
372
|
+
("CreateCommandList",
|
|
373
|
+
com.STDMETHOD()),
|
|
374
|
+
("IsDxgiFormatSupported",
|
|
375
|
+
com.STDMETHOD()),
|
|
376
|
+
("IsBufferPrecisionSupported",
|
|
377
|
+
com.STDMETHOD()),
|
|
378
|
+
("GetImageLocalBounds",
|
|
379
|
+
com.STDMETHOD()),
|
|
380
|
+
("GetImageWorldBounds",
|
|
381
|
+
com.STDMETHOD()),
|
|
382
|
+
("GetGlyphRunWorldBounds",
|
|
383
|
+
com.STDMETHOD()),
|
|
384
|
+
("GetDevice",
|
|
385
|
+
com.STDMETHOD()),
|
|
386
|
+
("SetTarget",
|
|
387
|
+
com.STDMETHOD(c_void_p)),
|
|
388
|
+
("GetTarget",
|
|
389
|
+
com.METHOD(c_void, POINTER(c_void_p))),
|
|
390
|
+
("SetRenderingControls",
|
|
391
|
+
com.STDMETHOD()),
|
|
392
|
+
("GetRenderingControls",
|
|
393
|
+
com.STDMETHOD()),
|
|
394
|
+
("SetPrimitiveBlend",
|
|
395
|
+
com.STDMETHOD()),
|
|
396
|
+
("GetPrimitiveBlend",
|
|
397
|
+
com.STDMETHOD()),
|
|
398
|
+
("SetUnitMode",
|
|
399
|
+
com.STDMETHOD()),
|
|
400
|
+
("GetUnitMode",
|
|
401
|
+
com.STDMETHOD()),
|
|
402
|
+
("DrawGlyphRun_Context",
|
|
403
|
+
com.METHOD(c_void, D2D_POINT_2F, POINTER(DWRITE_GLYPH_RUN), POINTER(DWRITE_GLYPH_RUN_DESCRIPTION), ID2D1Brush, UINT32)),
|
|
404
|
+
("DrawImage",
|
|
405
|
+
com.STDMETHOD()),
|
|
406
|
+
("DrawGdiMetafile",
|
|
407
|
+
com.STDMETHOD()),
|
|
408
|
+
("DrawBitmap_Context",
|
|
409
|
+
com.STDMETHOD()),
|
|
410
|
+
("PushLayer_Context",
|
|
411
|
+
com.STDMETHOD()),
|
|
412
|
+
("InvalidateEffectInputRectangle",
|
|
413
|
+
com.STDMETHOD()),
|
|
414
|
+
("GetEffectInvalidRectangleCount",
|
|
415
|
+
com.STDMETHOD()),
|
|
416
|
+
("GetEffectInvalidRectangles",
|
|
417
|
+
com.STDMETHOD()),
|
|
418
|
+
("GetEffectRequiredInputRectangles",
|
|
419
|
+
com.STDMETHOD()),
|
|
420
|
+
("FillOpacityMask_Context",
|
|
421
|
+
com.METHOD(None, ID2D1Bitmap, ID2D1Brush, POINTER(D2D1_RECT_F), POINTER(D2D1_RECT_F))),
|
|
422
|
+
]
|
|
423
|
+
|
|
424
|
+
class ID2D1DeviceContext1(ID2D1DeviceContext):
|
|
425
|
+
_methods_ = [
|
|
426
|
+
("CreateFilledGeometryRealization",
|
|
427
|
+
com.STDMETHOD()),
|
|
428
|
+
("CreateStrokedGeometryRealization",
|
|
429
|
+
com.STDMETHOD()),
|
|
430
|
+
("DrawGeometryRealization",
|
|
431
|
+
com.STDMETHOD()),
|
|
432
|
+
]
|
|
433
|
+
|
|
434
|
+
class ID2D1DeviceContext2(ID2D1DeviceContext1):
|
|
435
|
+
_methods_ = [
|
|
436
|
+
("CreateInk",
|
|
437
|
+
com.STDMETHOD()),
|
|
438
|
+
("CreateInkStyle",
|
|
439
|
+
com.STDMETHOD()),
|
|
440
|
+
("CreateGradientMesh",
|
|
441
|
+
com.STDMETHOD()),
|
|
442
|
+
("CreateImageSourceFromWic",
|
|
443
|
+
com.STDMETHOD()),
|
|
444
|
+
("CreateLookupTable3D",
|
|
445
|
+
com.STDMETHOD()),
|
|
446
|
+
("CreateImageSourceFromDxgi",
|
|
447
|
+
com.STDMETHOD()),
|
|
448
|
+
("GetGradientMeshWorldBounds",
|
|
449
|
+
com.STDMETHOD()),
|
|
450
|
+
("DrawInk",
|
|
451
|
+
com.STDMETHOD()),
|
|
452
|
+
("DrawGradientMesh",
|
|
453
|
+
com.STDMETHOD()),
|
|
454
|
+
("DrawGdiMetafile2",
|
|
455
|
+
com.STDMETHOD()),
|
|
456
|
+
("CreateTransformedImageSource",
|
|
457
|
+
com.STDMETHOD()),
|
|
458
|
+
]
|
|
459
|
+
|
|
460
|
+
class ID2D1DeviceContext3(ID2D1DeviceContext2):
|
|
461
|
+
_methods_ = [
|
|
462
|
+
("CreateSpriteBatch",
|
|
463
|
+
com.STDMETHOD()),
|
|
464
|
+
("DrawSpriteBatch",
|
|
465
|
+
com.STDMETHOD()),
|
|
466
|
+
]
|
|
467
|
+
|
|
468
|
+
ID2D1SvgGlyphStyle = c_void_p
|
|
469
|
+
class ID2D1DeviceContext4(ID2D1DeviceContext3):
|
|
470
|
+
_methods_ = [
|
|
471
|
+
("CreateSvgGlyphStyle",
|
|
472
|
+
com.STDMETHOD()),
|
|
473
|
+
("DrawText4",
|
|
474
|
+
com.STDMETHOD(c_wchar_p, UINT32, IDWriteTextFormat, D2D1_RECT_F, ID2D1Brush, ID2D1SvgGlyphStyle, UINT32, D2D1_DRAW_TEXT_OPTIONS, DWRITE_MEASURING_MODE)),
|
|
475
|
+
("DrawTextLayout4",
|
|
476
|
+
com.STDMETHOD(D2D1_POINT_2F, IDWriteTextLayout, ID2D1Brush, ID2D1SvgGlyphStyle, UINT32, D2D1_DRAW_TEXT_OPTIONS)),
|
|
477
|
+
("DrawColorBitmapGlyphRun",
|
|
478
|
+
com.METHOD(c_void, DWRITE_GLYPH_IMAGE_FORMATS, D2D1_POINT_2F, POINTER(DWRITE_GLYPH_RUN), DWRITE_MEASURING_MODE, D2D1_COLOR_BITMAP_GLYPH_SNAP_OPTION)),
|
|
479
|
+
("DrawSvgGlyphRun",
|
|
480
|
+
com.METHOD(c_void, D2D_POINT_2F, POINTER(DWRITE_GLYPH_RUN), ID2D1Brush, ID2D1SvgGlyphStyle, UINT32, DWRITE_MEASURING_MODE)),
|
|
481
|
+
("GetColorBitmapGlyphImage",
|
|
482
|
+
com.STDMETHOD()),
|
|
483
|
+
("GetSvgGlyphImage",
|
|
484
|
+
com.STDMETHOD()),
|
|
485
|
+
]
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
class ID2D1Device(ID2D1Resource):
|
|
492
|
+
_methods_ = [
|
|
493
|
+
("CreateDeviceContext", com.STDMETHOD(D2D1_DEVICE_CONTEXT_OPTIONS, POINTER(ID2D1DeviceContext))),
|
|
494
|
+
("CreatePrintControl", com.STDMETHOD()),
|
|
495
|
+
("SetMaximumTextureMemory", com.STDMETHOD()),
|
|
496
|
+
("GetMaximumTextureMemory", com.STDMETHOD()),
|
|
497
|
+
("ClearResources", com.STDMETHOD()),
|
|
498
|
+
]
|
|
499
|
+
|
|
500
|
+
class ID2D1Device1(ID2D1Device):
|
|
501
|
+
_methods_ = [
|
|
502
|
+
("GetRenderingPriority", com.STDMETHOD()), # D2D1_RENDERING_PRIORITY GetRenderingPriority()
|
|
503
|
+
("SetRenderingPriority", com.STDMETHOD()),
|
|
504
|
+
("CreateDeviceContext1", com.STDMETHOD(D2D1_DEVICE_CONTEXT_OPTIONS, POINTER(ID2D1DeviceContext1))),
|
|
505
|
+
]
|
|
506
|
+
|
|
507
|
+
class ID2D1Device2(ID2D1Device1):
|
|
508
|
+
_methods_ = [
|
|
509
|
+
("CreateDeviceContext2", com.STDMETHOD()),
|
|
510
|
+
("FlushDeviceContexts", com.STDMETHOD()),
|
|
511
|
+
("GetDxgiDevice", com.STDMETHOD()),
|
|
512
|
+
]
|
|
513
|
+
|
|
514
|
+
class ID2D1Device3(ID2D1Device2):
|
|
515
|
+
_methods_ = [
|
|
516
|
+
("CreateDeviceContext3", com.STDMETHOD()),
|
|
517
|
+
]
|
|
518
|
+
|
|
519
|
+
class ID2D1Device4(ID2D1Device3):
|
|
520
|
+
_methods_ = [
|
|
521
|
+
("CreateDeviceContext4", com.STDMETHOD(D2D1_DEVICE_CONTEXT_OPTIONS, POINTER(ID2D1DeviceContext4))),
|
|
522
|
+
("SetMaximumColorGlyphCacheMemory", com.METHOD(c_void, UINT64)),
|
|
523
|
+
("GetMaximumColorGlyphCacheMemory", com.METHOD(UINT64)),
|
|
524
|
+
]
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
class ID2D1Factory(com.pIUnknown):
|
|
529
|
+
_methods_ = [
|
|
530
|
+
("ReloadSystemMetrics",
|
|
531
|
+
com.STDMETHOD()),
|
|
532
|
+
("GetDesktopDpi",
|
|
533
|
+
com.STDMETHOD()),
|
|
534
|
+
("CreateRectangleGeometry",
|
|
535
|
+
com.STDMETHOD()),
|
|
536
|
+
("CreateRoundedRectangleGeometry",
|
|
537
|
+
com.STDMETHOD()),
|
|
538
|
+
("CreateEllipseGeometry",
|
|
539
|
+
com.STDMETHOD()),
|
|
540
|
+
("CreateGeometryGroup",
|
|
541
|
+
com.STDMETHOD()),
|
|
542
|
+
("CreateTransformedGeometry",
|
|
543
|
+
com.STDMETHOD()),
|
|
544
|
+
("CreatePathGeometry",
|
|
545
|
+
com.STDMETHOD()),
|
|
546
|
+
("CreateStrokeStyle",
|
|
547
|
+
com.STDMETHOD()),
|
|
548
|
+
("CreateDrawingStateBlock",
|
|
549
|
+
com.STDMETHOD()),
|
|
550
|
+
("CreateWicBitmapRenderTarget",
|
|
551
|
+
com.STDMETHOD(IWICBitmap, POINTER(D2D1_RENDER_TARGET_PROPERTIES), POINTER(ID2D1RenderTarget))),
|
|
552
|
+
("CreateHwndRenderTarget",
|
|
553
|
+
com.STDMETHOD()),
|
|
554
|
+
("CreateDxgiSurfaceRenderTarget",
|
|
555
|
+
com.STDMETHOD()),
|
|
556
|
+
("CreateDCRenderTarget",
|
|
557
|
+
com.STDMETHOD()),
|
|
558
|
+
]
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
class ID2D1Factory1(ID2D1Factory):
|
|
562
|
+
_methods_ = [
|
|
563
|
+
("CreateDevice", com.STDMETHOD(c_void_p, POINTER(ID2D1Device))),
|
|
564
|
+
("CreateStrokeStyle1", com.STDMETHOD()),
|
|
565
|
+
("CreatePathGeometry1", com.STDMETHOD()),
|
|
566
|
+
("CreateDrawingStateBlock1", com.STDMETHOD()),
|
|
567
|
+
("CreateGdiMetafile", com.STDMETHOD()),
|
|
568
|
+
("RegisterEffectFromStream", com.STDMETHOD()),
|
|
569
|
+
("RegisterEffectFromString", com.STDMETHOD()),
|
|
570
|
+
("UnregisterEffect", com.STDMETHOD()),
|
|
571
|
+
("GetRegisteredEffects", com.STDMETHOD()),
|
|
572
|
+
("GetEffectProperties", com.STDMETHOD()),
|
|
573
|
+
]
|
|
574
|
+
|
|
575
|
+
class ID2D1Factory2(ID2D1Factory1):
|
|
576
|
+
_methods_ = [
|
|
577
|
+
("CreateDevice2", com.STDMETHOD()),
|
|
578
|
+
]
|
|
579
|
+
|
|
580
|
+
class ID2D1Factory3(ID2D1Factory2):
|
|
581
|
+
_methods_ = [
|
|
582
|
+
("CreateDevice3", com.STDMETHOD()),
|
|
583
|
+
]
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
class ID2D1Factory4(ID2D1Factory3):
|
|
587
|
+
_methods_ = [
|
|
588
|
+
("CreateDevice4", com.STDMETHOD()),
|
|
589
|
+
]
|
|
590
|
+
|
|
591
|
+
class ID2D1Factory5(ID2D1Factory4):
|
|
592
|
+
_methods_ = [
|
|
593
|
+
("CreateDevice5",
|
|
594
|
+
com.STDMETHOD(c_void_p, POINTER(ID2D1Device4))),
|
|
595
|
+
]
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
IID_ID2D1Factory = com.GUID(0x06152247, 0x6f50, 0x465a, 0x92, 0x45, 0x11, 0x8b, 0xfd, 0x3b, 0x60, 0x07)
|
|
599
|
+
IID_ID2D1Factory1 = com.GUID(0xbb12d362,0xdaee,0x4b9a,0xaa,0x1d,0x14,0xba,0x40,0x1c,0xfa,0x1f)
|
|
600
|
+
#IID_ID2D1Factory2 = com.GUID.from_string("94f81a73-9212-4376-9c58-b16a3a0d3992")
|
|
601
|
+
IID_ID2D1Factory4 = com.GUID.from_string("bd4ec2d2-0662-4bee-ba8e-6f29f032e096")
|
|
602
|
+
IID_ID2D1Factory5 = com.GUID.from_string("c4349994-838e-4b0f-8cab-44997d9eeacc")
|
|
603
|
+
|
|
604
|
+
# Default render parameters for D2D.
|
|
605
|
+
default_target_properties = D2D1_RENDER_TARGET_PROPERTIES(
|
|
606
|
+
type=D2D1_RENDER_TARGET_TYPE_DEFAULT,
|
|
607
|
+
pixelFormat=D2D1_PIXEL_FORMAT(
|
|
608
|
+
format=DXGI_FORMAT_UNKNOWN,
|
|
609
|
+
alphaMode=D2D1_ALPHA_MODE_UNKNOWN,
|
|
610
|
+
),
|
|
611
|
+
dpiX=0.0,
|
|
612
|
+
dpiY=0.0,
|
|
613
|
+
usage=D2D1_RENDER_TARGET_USAGE_NONE,
|
|
614
|
+
min_level=D2D1_FEATURE_LEVEL_DEFAULT,
|
|
615
|
+
)
|
|
616
|
+
|
|
617
|
+
default_bitmap_properties = D2D1_BITMAP_PROPERTIES1(
|
|
618
|
+
pixelFormat=D2D1_PIXEL_FORMAT(
|
|
619
|
+
format=DXGI_FORMAT_B8G8R8A8_UNORM,
|
|
620
|
+
alphaMode=D2D1_ALPHA_MODE_PREMULTIPLIED,
|
|
621
|
+
),
|
|
622
|
+
dpiX=0.0,
|
|
623
|
+
dpiY=0.0,
|
|
624
|
+
bitmapOptions=D2D1_BITMAP_OPTIONS_TARGET | D2D1_BITMAP_OPTIONS_CANNOT_DRAW,
|
|
625
|
+
)
|
|
626
|
+
|
|
627
|
+
default_bitmap_properties0 = D2D1_BITMAP_PROPERTIES(
|
|
628
|
+
pixelFormat=D2D1_PIXEL_FORMAT(
|
|
629
|
+
format=DXGI_FORMAT_B8G8R8A8_UNORM,
|
|
630
|
+
alphaMode=D2D1_ALPHA_MODE_PREMULTIPLIED,
|
|
631
|
+
),
|
|
632
|
+
dpiX=0.0,
|
|
633
|
+
dpiY=0.0,
|
|
634
|
+
)
|
|
635
|
+
|
|
636
|
+
IID_ID2D1DeviceContext = com.GUID(0xe8f7fe7a, 0x191c, 0x466d, 0xad, 0x95, 0x97, 0x56, 0x78, 0xbd, 0xa9, 0x98)
|
|
637
|
+
IID_ID2D1DeviceContext4 = com.GUID.from_string("8c427831-3d90-4476-b647-c4fae349e4db")
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Separate some structure types from the lib to prevent circular imports, as dwrite/d2d render targets use these too.
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
from ctypes import Structure
|
|
5
|
+
from ctypes.wintypes import FLOAT, LONG
|
|
6
|
+
|
|
7
|
+
from pyglet.libs.win32 import UINT32
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class D2D1_SIZE_F(Structure):
|
|
11
|
+
_fields_ = [
|
|
12
|
+
("width", FLOAT),
|
|
13
|
+
("height", FLOAT),
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class D2D1_SIZE_U(Structure):
|
|
18
|
+
_fields_ = [
|
|
19
|
+
("width", UINT32),
|
|
20
|
+
("height", UINT32),
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
class D2D1_POINT_2L(Structure):
|
|
24
|
+
_fields_ = [
|
|
25
|
+
("x", LONG),
|
|
26
|
+
("y", LONG),
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
class D2D1_POINT_2F(Structure):
|
|
30
|
+
_fields_ = [
|
|
31
|
+
("x", FLOAT),
|
|
32
|
+
("y", FLOAT),
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
class D2D1_COLOR_F(Structure):
|
|
36
|
+
_fields_ = (
|
|
37
|
+
("r", FLOAT),
|
|
38
|
+
("g", FLOAT),
|
|
39
|
+
("b", FLOAT),
|
|
40
|
+
("a", FLOAT),
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
def __repr__(self) -> str:
|
|
44
|
+
return f"{self.__class__.__name__}(r={self.r}, g={self.g}, b={self.b}, a={self.a})"
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class D2D_POINT_2F(Structure):
|
|
48
|
+
_fields_ = (
|
|
49
|
+
("x", FLOAT),
|
|
50
|
+
("y", FLOAT),
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class D2D1_RECT_F(Structure):
|
|
55
|
+
_fields_ = (
|
|
56
|
+
("left", FLOAT),
|
|
57
|
+
("top", FLOAT),
|
|
58
|
+
("right", FLOAT),
|
|
59
|
+
("bottom", FLOAT),
|
|
60
|
+
)
|