2 * Copyright 2022 Ziqing Hui 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
20 import
"d2d1effects_2.idl";
22 typedef enum D2D1_INK_NIB_SHAPE
24 D2D1_INK_NIB_SHAPE_ROUND
= 0x0,
25 D2D1_INK_NIB_SHAPE_SQUARE
= 0x1,
26 D2D1_INK_NIB_SHAPE_FORCE_DWORD
= 0xffffffff
29 typedef enum D2D1_PATCH_EDGE_MODE
31 D2D1_PATCH_EDGE_MODE_ALIASED
= 0x0,
32 D2D1_PATCH_EDGE_MODE_ANTIALIASED
= 0x1,
33 D2D1_PATCH_EDGE_MODE_ALIASED_INFLATED
= 0x2,
34 D2D1_PATCH_EDGE_MODE_FORCE_DWORD
= 0xffffffff
35 } D2D1_PATCH_EDGE_MODE
;
37 typedef enum D2D1_ORIENTATION
39 D2D1_ORIENTATION_DEFAULT
= 0x1,
40 D2D1_ORIENTATION_FLIP_HORIZONTAL
= 0x2,
41 D2D1_ORIENTATION_ROTATE_CLOCKWISE180
= 0x3,
42 D2D1_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL
= 0x4,
43 D2D1_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL
= 0x5,
44 D2D1_ORIENTATION_ROTATE_CLOCKWISE270
= 0x6,
45 D2D1_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL
= 0x7,
46 D2D1_ORIENTATION_ROTATE_CLOCKWISE90
= 0x8,
47 D2D1_ORIENTATION_FORCE_DWORD
= 0xffffffff
50 typedef enum D2D1_TRANSFORMED_IMAGE_SOURCE_OPTIONS
52 D2D1_TRANSFORMED_IMAGE_SOURCE_OPTIONS_NONE
= 0x0,
53 D2D1_TRANSFORMED_IMAGE_SOURCE_OPTIONS_DISABLE_DPI_SCALE
= 0x1,
54 D2D1_TRANSFORMED_IMAGE_SOURCE_OPTIONS_FORCE_DWORD
= 0xffffffff
55 } D2D1_TRANSFORMED_IMAGE_SOURCE_OPTIONS
;
57 typedef enum D2D1_IMAGE_SOURCE_LOADING_OPTIONS
59 D2D1_IMAGE_SOURCE_LOADING_OPTIONS_NONE
= 0x0,
60 D2D1_IMAGE_SOURCE_LOADING_OPTIONS_RELEASE_SOURCE
= 0x1,
61 D2D1_IMAGE_SOURCE_LOADING_OPTIONS_CACHE_ON_DEMAND
= 0x2,
62 D2D1_IMAGE_SOURCE_LOADING_OPTIONS_FORCE_DWORD
= 0xffffffff
63 } D2D1_IMAGE_SOURCE_LOADING_OPTIONS
;
65 typedef enum D2D1_IMAGE_SOURCE_FROM_DXGI_OPTIONS
67 D2D1_IMAGE_SOURCE_FROM_DXGI_OPTIONS_NONE
= 0x0,
68 D2D1_IMAGE_SOURCE_FROM_DXGI_OPTIONS_LOW_QUALITY_PRIMARY_CONVERSION
= 0x1,
69 D2D1_IMAGE_SOURCE_FROM_DXGI_OPTIONS_FORCE_DWORD
= 0xffffffff
70 } D2D1_IMAGE_SOURCE_FROM_DXGI_OPTIONS
;
72 typedef struct D2D1_INK_POINT
79 typedef struct D2D1_INK_BEZIER_SEGMENT
81 D2D1_INK_POINT point1
;
82 D2D1_INK_POINT point2
;
83 D2D1_INK_POINT point3
;
84 } D2D1_INK_BEZIER_SEGMENT
;
86 typedef struct D2D1_INK_STYLE_PROPERTIES
88 D2D1_INK_NIB_SHAPE nibShape
;
89 D2D1_MATRIX_3X2_F nibTransform
;
90 } D2D1_INK_STYLE_PROPERTIES
;
92 typedef struct D2D1_GRADIENT_MESH_PATCH
94 D2D1_POINT_2F point00
;
95 D2D1_POINT_2F point01
;
96 D2D1_POINT_2F point02
;
97 D2D1_POINT_2F point03
;
98 D2D1_POINT_2F point10
;
99 D2D1_POINT_2F point11
;
100 D2D1_POINT_2F point12
;
101 D2D1_POINT_2F point13
;
102 D2D1_POINT_2F point20
;
103 D2D1_POINT_2F point21
;
104 D2D1_POINT_2F point22
;
105 D2D1_POINT_2F point23
;
106 D2D1_POINT_2F point30
;
107 D2D1_POINT_2F point31
;
108 D2D1_POINT_2F point32
;
109 D2D1_POINT_2F point33
;
110 D2D1_COLOR_F color00
;
111 D2D1_COLOR_F color03
;
112 D2D1_COLOR_F color30
;
113 D2D1_COLOR_F color33
;
114 D2D1_PATCH_EDGE_MODE topEdgeMode
;
115 D2D1_PATCH_EDGE_MODE leftEdgeMode
;
116 D2D1_PATCH_EDGE_MODE bottomEdgeMode
;
117 D2D1_PATCH_EDGE_MODE rightEdgeMode
;
118 } D2D1_GRADIENT_MESH_PATCH
;
120 typedef struct D2D1_TRANSFORMED_IMAGE_SOURCE_PROPERTIES
122 D2D1_ORIENTATION orientation
;
125 D2D1_INTERPOLATION_MODE interpolationMode
;
126 D2D1_TRANSFORMED_IMAGE_SOURCE_OPTIONS options
;
127 } D2D1_TRANSFORMED_IMAGE_SOURCE_PROPERTIES
;
131 uuid(bae8b344
-23fc
-4071-8cb5
-d05d6f073848
),
134 interface ID2D1InkStyle
: ID2D1Resource
136 void SetNibTransform
(
137 [in] const D2D1_MATRIX_3X2_F
*transform
139 void GetNibTransform
(
140 [out] D2D1_MATRIX_3X2_F
*transform
143 [in] D2D1_INK_NIB_SHAPE shape
145 D2D1_INK_NIB_SHAPE GetNibShape
();
150 uuid(b499923b
-7029-478f
-a8b3
-432c7c5f5312
),
153 interface ID2D1Ink
: ID2D1Resource
156 [in] const D2D1_INK_POINT
*start_point
158 D2D1_INK_POINT GetStartPoint
();
160 [in] const D2D1_INK_BEZIER_SEGMENT
*segments
,
161 [in] UINT32 segment_count
163 HRESULT RemoveSegmentsAtEnd
(
164 [in] UINT32 segment_count
167 [in] UINT32 start_segment
,
168 [in] const D2D1_INK_BEZIER_SEGMENT
*segments
,
169 [in] UINT32 segment_count
171 HRESULT SetSegmentAtEnd
(
172 [in] const D2D1_INK_BEZIER_SEGMENT
*segment
174 UINT32 GetSegmentCount
();
176 [in] UINT32 start_segment
,
177 [out] D2D1_INK_BEZIER_SEGMENT
*segments
,
178 [in] UINT32 segment_count
180 HRESULT StreamAsGeometry
(
181 [in, optional] ID2D1InkStyle
*ink_style
,
182 [in, optional] const D2D1_MATRIX_3X2_F
*world_transform
,
183 [in] float flattening_tolerance
,
184 [in] ID2D1SimplifiedGeometrySink
*geometry_sink
187 [in, optional] ID2D1InkStyle
*ink_style
,
188 [in, optional] const D2D1_MATRIX_3X2_F
*world_transform
,
189 [out] D2D1_RECT_F
*bounds
195 uuid(f292e401
-c050
-4cde
-83d7
-04962d3b23c2
),
198 interface ID2D1GradientMesh
: ID2D1Resource
200 UINT32 GetPatchCount
();
202 [in] UINT32 start_index
,
203 [out] D2D1_GRADIENT_MESH_PATCH
*patches
,
204 [in] UINT32 patch_count
210 uuid(c9b664e5
-74a1
-4378-9ac2
-eefc37a3f4d8
),
213 interface ID2D1ImageSource
: ID2D1Image
215 HRESULT OfferResources
();
216 HRESULT TryReclaimResources
(
217 [out] BOOL
*resources_discarded
223 uuid(77395441-1c8f
-4555-8683-f50dab0fe792
),
226 interface ID2D1ImageSourceFromWic
: ID2D1ImageSource
228 HRESULT EnsureCached
(
229 [in, optional] const D2D1_RECT_U
*rect_to_fill
232 [in, optional] const D2D1_RECT_U
*rect_to_preserve
235 [out] IWICBitmapSource
**source
241 uuid(7f1f79e5
-2796-416c
-8f55
-700f911445e5
),
244 interface ID2D1TransformedImageSource
: ID2D1Image
247 [out] ID2D1ImageSource
**source
250 [out] D2D1_TRANSFORMED_IMAGE_SOURCE_PROPERTIES
*out
256 uuid(53dd9855
-a3b0
-4d5b
-82e1
-26e25c5e5797
),
259 interface ID2D1LookupTable3D
: ID2D1Resource
265 uuid(394ea6a3
-0c34
-4321-950b
-6ca20f0be6c7
),
268 interface ID2D1DeviceContext2
: ID2D1DeviceContext1
271 [in] const D2D1_INK_POINT
*start_point
,
274 HRESULT CreateInkStyle
(
275 [in, optional] const D2D1_INK_STYLE_PROPERTIES
*ink_style_properties
,
276 [out] ID2D1InkStyle
**ink_style
278 HRESULT CreateGradientMesh
(
279 [in] const D2D1_GRADIENT_MESH_PATCH
*patches
,
280 [in] UINT32 patches_count
,
281 [out] ID2D1GradientMesh
**gradient_mesh
283 HRESULT CreateImageSourceFromWic
(
284 [in] IWICBitmapSource
*wic_bitmap_source
,
285 [in] D2D1_IMAGE_SOURCE_LOADING_OPTIONS loading_options
,
286 [in] D2D1_ALPHA_MODE alpha_mode
,
287 [out] ID2D1ImageSourceFromWic
**image_source
289 HRESULT CreateLookupTable3D
(
290 [in] D2D1_BUFFER_PRECISION precision
,
291 [in] const UINT32
*extents
,
292 [in] const BYTE *data
,
293 [in] UINT32 data_count
,
294 [in] const UINT32
*strides
,
295 [out] ID2D1LookupTable3D
**lookup_table
297 HRESULT CreateImageSourceFromDxgi
(
298 [in] IDXGISurface
**surfaces
,
299 [in] UINT32 surface_count
,
300 [in] DXGI_COLOR_SPACE_TYPE color_space
,
301 [in] D2D1_IMAGE_SOURCE_FROM_DXGI_OPTIONS options
,
302 [out] ID2D1ImageSource
**image_source
304 HRESULT GetGradientMeshWorldBounds
(
305 [in] ID2D1GradientMesh
*gradient_mesh
,
306 [out] D2D1_RECT_F
*bounds
310 [in] ID2D1Brush
*brush
,
311 [in, optional] ID2D1InkStyle
*ink_style
313 void DrawGradientMesh
(
314 [in] ID2D1GradientMesh
*gradient_mesh
316 void DrawGdiMetafile
(
317 [in] ID2D1GdiMetafile
*gdi_metafile
,
318 [in, optional] const D2D1_RECT_F
*dst_rect
,
319 [in, optional] const D2D1_RECT_F
*src_rect
321 HRESULT CreateTransformedImageSource
(
322 [in] ID2D1ImageSource
*source,
323 [in] const D2D1_TRANSFORMED_IMAGE_SOURCE_PROPERTIES
*props
,
324 [out] ID2D1TransformedImageSource
**transformed
330 uuid(a44472e1
-8dfb
-4e60
-8492-6e2861c9ca8b
),
333 interface ID2D1Device2
: ID2D1Device1
335 HRESULT CreateDeviceContext
(
336 [in] D2D1_DEVICE_CONTEXT_OPTIONS options
,
337 [out] ID2D1DeviceContext2
**context
339 void FlushDeviceContexts
(
340 [in] ID2D1Bitmap
*bitmap
342 HRESULT GetDxgiDevice
(
343 [out] IDXGIDevice
**dxgi_device
349 uuid(0869759f
-4f00
-413f
-b03e
-2bda45404d0f
),
352 interface ID2D1Factory3
: ID2D1Factory2
354 HRESULT CreateDevice
(
355 [in] IDXGIDevice
*dxgi_device
,
356 [out] ID2D1Device2
**d2d_device