1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 use ctypes
::{c_uchar, c_ulong}
;
7 use shared
::guiddef
::{GUID, REFGUID}
;
8 use shared
::minwindef
::{BOOL, BYTE, DWORD, UINT, ULONG}
;
9 use shared
::wtypes
::{BSTR, CLIPFORMAT}
;
10 use um
::oaidl
::LPSAFEARRAY
;
11 use um
::objidl
::{IPersistStream, IPersistStreamVtbl}
;
12 use um
::objidlbase
::{IEnumUnknown, IStream}
;
13 use um
::ocidl
::{IPropertyBag2, PROPBAG2}
;
14 use um
::propidl
::PROPVARIANT
;
15 use um
::unknwnbase
::{IUnknown, IUnknownVtbl}
;
17 IWICComponentInfo
, IWICComponentInfoVtbl
, IWICEnumMetadataItem
, IWICImagingFactory
,
18 IWICImagingFactoryVtbl
, IWICMetadataQueryReader
, IWICMetadataQueryWriter
,
20 use um
::winnt
::{HRESULT, ULARGE_INTEGER, WCHAR}
;
21 DEFINE_GUID
!{GUID_MetadataFormatUnknown
,
22 0xa45e592f, 0x9078, 0x4a7c, 0xad, 0xb5, 0x4e, 0xdc, 0x4f, 0xd6, 0x1b, 0x1f}
23 DEFINE_GUID
!{GUID_MetadataFormatIfd
,
24 0x537396c6, 0x2d8a, 0x4bb6, 0x9b, 0xf8, 0x2f, 0x0a, 0x8e, 0x2a, 0x3a, 0xdf}
25 DEFINE_GUID
!{GUID_MetadataFormatSubIfd
,
26 0x58a2e128, 0x2db9, 0x4e57, 0xbb, 0x14, 0x51, 0x77, 0x89, 0x1e, 0xd3, 0x31}
27 DEFINE_GUID
!{GUID_MetadataFormatExif
,
28 0x1c3c4f9d, 0xb84a, 0x467d, 0x94, 0x93, 0x36, 0xcf, 0xbd, 0x59, 0xea, 0x57}
29 DEFINE_GUID
!{GUID_MetadataFormatGps
,
30 0x7134ab8a, 0x9351, 0x44ad, 0xaf, 0x62, 0x44, 0x8d, 0xb6, 0xb5, 0x02, 0xec}
31 DEFINE_GUID
!{GUID_MetadataFormatInterop
,
32 0xed686f8e, 0x681f, 0x4c8b, 0xbd, 0x41, 0xa8, 0xad, 0xdb, 0xf6, 0xb3, 0xfc}
33 DEFINE_GUID
!{GUID_MetadataFormatApp0
,
34 0x79007028, 0x268d, 0x45d6, 0xa3, 0xc2, 0x35, 0x4e, 0x6a, 0x50, 0x4b, 0xc9}
35 DEFINE_GUID
!{GUID_MetadataFormatApp1
,
36 0x8fd3dfc3, 0xf951, 0x492b, 0x81, 0x7f, 0x69, 0xc2, 0xe6, 0xd9, 0xa5, 0xb0}
37 DEFINE_GUID
!{GUID_MetadataFormatApp13
,
38 0x326556a2, 0xf502, 0x4354, 0x9c, 0xc0, 0x8e, 0x3f, 0x48, 0xea, 0xf6, 0xb5}
39 DEFINE_GUID
!{GUID_MetadataFormatIPTC
,
40 0x4fab0914, 0xe129, 0x4087, 0xa1, 0xd1, 0xbc, 0x81, 0x2d, 0x45, 0xa7, 0xb5}
41 DEFINE_GUID
!{GUID_MetadataFormatIRB
,
42 0x16100d66, 0x8570, 0x4bb9, 0xb9, 0x2d, 0xfd, 0xa4, 0xb2, 0x3e, 0xce, 0x67}
43 DEFINE_GUID
!{GUID_MetadataFormat8BIMIPTC
,
44 0x0010568c, 0x0852, 0x4e6a, 0xb1, 0x91, 0x5c, 0x33, 0xac, 0x5b, 0x04, 0x30}
45 DEFINE_GUID
!{GUID_MetadataFormat8BIMResolutionInfo
,
46 0x739f305d, 0x81db, 0x43cb, 0xac, 0x5e, 0x55, 0x01, 0x3e, 0xf9, 0xf0, 0x03}
47 DEFINE_GUID
!{GUID_MetadataFormat8BIMIPTCDigest
,
48 0x1ca32285, 0x9ccd, 0x4786, 0x8b, 0xd8, 0x79, 0x53, 0x9d, 0xb6, 0xa0, 0x06}
49 DEFINE_GUID
!{GUID_MetadataFormatXMP
,
50 0xbb5acc38, 0xf216, 0x4cec, 0xa6, 0xc5, 0x5f, 0x6e, 0x73, 0x97, 0x63, 0xa9}
51 DEFINE_GUID
!{GUID_MetadataFormatThumbnail
,
52 0x243dcee9, 0x8703, 0x40ee, 0x8e, 0xf0, 0x22, 0xa6, 0x00, 0xb8, 0x05, 0x8c}
53 DEFINE_GUID
!{GUID_MetadataFormatChunktEXt
,
54 0x568d8936, 0xc0a9, 0x4923, 0x90, 0x5d, 0xdf, 0x2b, 0x38, 0x23, 0x8f, 0xbc}
55 DEFINE_GUID
!{GUID_MetadataFormatXMPStruct
,
56 0x22383cf1, 0xed17, 0x4e2e, 0xaf, 0x17, 0xd8, 0x5b, 0x8f, 0x6b, 0x30, 0xd0}
57 DEFINE_GUID
!{GUID_MetadataFormatXMPBag
,
58 0x833cca5f, 0xdcb7, 0x4516, 0x80, 0x6f, 0x65, 0x96, 0xab, 0x26, 0xdc, 0xe4}
59 DEFINE_GUID
!{GUID_MetadataFormatXMPSeq
,
60 0x63e8df02, 0xeb6c, 0x456c, 0xa2, 0x24, 0xb2, 0x5e, 0x79, 0x4f, 0xd6, 0x48}
61 DEFINE_GUID
!{GUID_MetadataFormatXMPAlt
,
62 0x7b08a675, 0x91aa, 0x481b, 0xa7, 0x98, 0x4d, 0xa9, 0x49, 0x08, 0x61, 0x3b}
63 DEFINE_GUID
!{GUID_MetadataFormatLSD
,
64 0xe256031e, 0x6299, 0x4929, 0xb9, 0x8d, 0x5a, 0xc8, 0x84, 0xaf, 0xba, 0x92}
65 DEFINE_GUID
!{GUID_MetadataFormatIMD
,
66 0xbd2bb086, 0x4d52, 0x48dd, 0x96, 0x77, 0xdb, 0x48, 0x3e, 0x85, 0xae, 0x8f}
67 DEFINE_GUID
!{GUID_MetadataFormatGCE
,
68 0x2a25cad8, 0xdeeb, 0x4c69, 0xa7, 0x88, 0x0e, 0xc2, 0x26, 0x6d, 0xca, 0xfd}
69 DEFINE_GUID
!{GUID_MetadataFormatAPE
,
70 0x2e043dc2, 0xc967, 0x4e05, 0x87, 0x5e, 0x61, 0x8b, 0xf6, 0x7e, 0x85, 0xc3}
71 DEFINE_GUID
!{GUID_MetadataFormatJpegChrominance
,
72 0xf73d0dcf, 0xcec6, 0x4f85, 0x9b, 0x0e, 0x1c, 0x39, 0x56, 0xb1, 0xbe, 0xf7}
73 DEFINE_GUID
!{GUID_MetadataFormatJpegLuminance
,
74 0x86908007, 0xedfc, 0x4860, 0x8d, 0x4b, 0x4e, 0xe6, 0xe8, 0x3e, 0x60, 0x58}
75 DEFINE_GUID
!{GUID_MetadataFormatJpegComment
,
76 0x220e5f33, 0xafd3, 0x474e, 0x9d, 0x31, 0x7d, 0x4f, 0xe7, 0x30, 0xf5, 0x57}
77 DEFINE_GUID
!{GUID_MetadataFormatGifComment
,
78 0xc4b6e0e0, 0xcfb4, 0x4ad3, 0xab, 0x33, 0x9a, 0xad, 0x23, 0x55, 0xa3, 0x4a}
79 DEFINE_GUID
!{GUID_MetadataFormatChunkgAMA
,
80 0xf00935a5, 0x1d5d, 0x4cd1, 0x81, 0xb2, 0x93, 0x24, 0xd7, 0xec, 0xa7, 0x81}
81 DEFINE_GUID
!{GUID_MetadataFormatChunkbKGD
,
82 0xe14d3571, 0x6b47, 0x4dea, 0xb6, 0x0a, 0x87, 0xce, 0x0a, 0x78, 0xdf, 0xb7}
83 DEFINE_GUID
!{GUID_MetadataFormatChunkiTXt
,
84 0xc2bec729, 0x0b68, 0x4b77, 0xaa, 0x0e, 0x62, 0x95, 0xa6, 0xac, 0x18, 0x14}
85 DEFINE_GUID
!{GUID_MetadataFormatChunkcHRM
,
86 0x9db3655b, 0x2842, 0x44b3, 0x80, 0x67, 0x12, 0xe9, 0xb3, 0x75, 0x55, 0x6a}
87 DEFINE_GUID
!{GUID_MetadataFormatChunkhIST
,
88 0xc59a82da, 0xdb74, 0x48a4, 0xbd, 0x6a, 0xb6, 0x9c, 0x49, 0x31, 0xef, 0x95}
89 DEFINE_GUID
!{GUID_MetadataFormatChunkiCCP
,
90 0xeb4349ab, 0xb685, 0x450f, 0x91, 0xb5, 0xe8, 0x02, 0xe8, 0x92, 0x53, 0x6c}
91 DEFINE_GUID
!{GUID_MetadataFormatChunksRGB
,
92 0xc115fd36, 0xcc6f, 0x4e3f, 0x83, 0x63, 0x52, 0x4b, 0x87, 0xc6, 0xb0, 0xd9}
93 DEFINE_GUID
!{GUID_MetadataFormatChunktIME
,
94 0x6b00ae2d, 0xe24b, 0x460a, 0x98, 0xb6, 0x87, 0x8b, 0xd0, 0x30, 0x72, 0xfd}
95 DEFINE_GUID
!{GUID_MetadataFormatDds
,
96 0x4a064603, 0x8c33, 0x4e60, 0x9c, 0x29, 0x13, 0x62, 0x31, 0x70, 0x2d, 0x08}
97 DEFINE_GUID
!{CLSID_WICUnknownMetadataReader
,
98 0x699745c2, 0x5066, 0x4b82, 0xa8, 0xe3, 0xd4, 0x04, 0x78, 0xdb, 0xec, 0x8c}
99 DEFINE_GUID
!{CLSID_WICUnknownMetadataWriter
,
100 0xa09cca86, 0x27ba, 0x4f39, 0x90, 0x53, 0x12, 0x1f, 0xa4, 0xdc, 0x08, 0xfc}
101 DEFINE_GUID
!{CLSID_WICApp0MetadataWriter
,
102 0xf3c633a2, 0x46c8, 0x498e, 0x8f, 0xbb, 0xcc, 0x6f, 0x72, 0x1b, 0xbc, 0xde}
103 DEFINE_GUID
!{CLSID_WICApp0MetadataReader
,
104 0x43324b33, 0xa78f, 0x480f, 0x91, 0x11, 0x96, 0x38, 0xaa, 0xcc, 0xc8, 0x32}
105 DEFINE_GUID
!{CLSID_WICApp1MetadataWriter
,
106 0xee366069, 0x1832, 0x420f, 0xb3, 0x81, 0x04, 0x79, 0xad, 0x06, 0x6f, 0x19}
107 DEFINE_GUID
!{CLSID_WICApp1MetadataReader
,
108 0xdde33513, 0x774e, 0x4bcd, 0xae, 0x79, 0x02, 0xf4, 0xad, 0xfe, 0x62, 0xfc}
109 DEFINE_GUID
!{CLSID_WICApp13MetadataWriter
,
110 0x7b19a919, 0xa9d6, 0x49e5, 0xbd, 0x45, 0x02, 0xc3, 0x4e, 0x4e, 0x4c, 0xd5}
111 DEFINE_GUID
!{CLSID_WICApp13MetadataReader
,
112 0xaa7e3c50, 0x864c, 0x4604, 0xbc, 0x04, 0x8b, 0x0b, 0x76, 0xe6, 0x37, 0xf6}
113 DEFINE_GUID
!{CLSID_WICIfdMetadataReader
,
114 0x8f914656, 0x9d0a, 0x4eb2, 0x90, 0x19, 0x0b, 0xf9, 0x6d, 0x8a, 0x9e, 0xe6}
115 DEFINE_GUID
!{CLSID_WICIfdMetadataWriter
,
116 0xb1ebfc28, 0xc9bd, 0x47a2, 0x8d, 0x33, 0xb9, 0x48, 0x76, 0x97, 0x77, 0xa7}
117 DEFINE_GUID
!{CLSID_WICSubIfdMetadataReader
,
118 0x50d42f09, 0xecd1, 0x4b41, 0xb6, 0x5d, 0xda, 0x1f, 0xda, 0xa7, 0x56, 0x63}
119 DEFINE_GUID
!{CLSID_WICSubIfdMetadataWriter
,
120 0x8ade5386, 0x8e9b, 0x4f4c, 0xac, 0xf2, 0xf0, 0x00, 0x87, 0x06, 0xb2, 0x38}
121 DEFINE_GUID
!{CLSID_WICExifMetadataReader
,
122 0xd9403860, 0x297f, 0x4a49, 0xbf, 0x9b, 0x77, 0x89, 0x81, 0x50, 0xa4, 0x42}
123 DEFINE_GUID
!{CLSID_WICExifMetadataWriter
,
124 0xc9a14cda, 0xc339, 0x460b, 0x90, 0x78, 0xd4, 0xde, 0xbc, 0xfa, 0xbe, 0x91}
125 DEFINE_GUID
!{CLSID_WICGpsMetadataReader
,
126 0x3697790b, 0x223b, 0x484e, 0x99, 0x25, 0xc4, 0x86, 0x92, 0x18, 0xf1, 0x7a}
127 DEFINE_GUID
!{CLSID_WICGpsMetadataWriter
,
128 0xcb8c13e4, 0x62b5, 0x4c96, 0xa4, 0x8b, 0x6b, 0xa6, 0xac, 0xe3, 0x9c, 0x76}
129 DEFINE_GUID
!{CLSID_WICInteropMetadataReader
,
130 0xb5c8b898, 0x0074, 0x459f, 0xb7, 0x00, 0x86, 0x0d, 0x46, 0x51, 0xea, 0x14}
131 DEFINE_GUID
!{CLSID_WICInteropMetadataWriter
,
132 0x122ec645, 0xcd7e, 0x44d8, 0xb1, 0x86, 0x2c, 0x8c, 0x20, 0xc3, 0xb5, 0x0f}
133 DEFINE_GUID
!{CLSID_WICThumbnailMetadataReader
,
134 0xfb012959, 0xf4f6, 0x44d7, 0x9d, 0x09, 0xda, 0xa0, 0x87, 0xa9, 0xdb, 0x57}
135 DEFINE_GUID
!{CLSID_WICThumbnailMetadataWriter
,
136 0xd049b20c, 0x5dd0, 0x44fe, 0xb0, 0xb3, 0x8f, 0x92, 0xc8, 0xe6, 0xd0, 0x80}
137 DEFINE_GUID
!{CLSID_WICIPTCMetadataReader
,
138 0x03012959, 0xf4f6, 0x44d7, 0x9d, 0x09, 0xda, 0xa0, 0x87, 0xa9, 0xdb, 0x57}
139 DEFINE_GUID
!{CLSID_WICIPTCMetadataWriter
,
140 0x1249b20c, 0x5dd0, 0x44fe, 0xb0, 0xb3, 0x8f, 0x92, 0xc8, 0xe6, 0xd0, 0x80}
141 DEFINE_GUID
!{CLSID_WICIRBMetadataReader
,
142 0xd4dcd3d7, 0xb4c2, 0x47d9, 0xa6, 0xbf, 0xb8, 0x9b, 0xa3, 0x96, 0xa4, 0xa3}
143 DEFINE_GUID
!{CLSID_WICIRBMetadataWriter
,
144 0x5c5c1935, 0x0235, 0x4434, 0x80, 0xbc, 0x25, 0x1b, 0xc1, 0xec, 0x39, 0xc6}
145 DEFINE_GUID
!{CLSID_WIC8BIMIPTCMetadataReader
,
146 0x0010668c, 0x0801, 0x4da6, 0xa4, 0xa4, 0x82, 0x65, 0x22, 0xb6, 0xd2, 0x8f}
147 DEFINE_GUID
!{CLSID_WIC8BIMIPTCMetadataWriter
,
148 0x00108226, 0xee41, 0x44a2, 0x9e, 0x9c, 0x4b, 0xe4, 0xd5, 0xb1, 0xd2, 0xcd}
149 DEFINE_GUID
!{CLSID_WIC8BIMResolutionInfoMetadataReader
,
150 0x5805137a, 0xe348, 0x4f7c, 0xb3, 0xcc, 0x6d, 0xb9, 0x96, 0x5a, 0x05, 0x99}
151 DEFINE_GUID
!{CLSID_WIC8BIMResolutionInfoMetadataWriter
,
152 0x4ff2fe0e, 0xe74a, 0x4b71, 0x98, 0xc4, 0xab, 0x7d, 0xc1, 0x67, 0x07, 0xba}
153 DEFINE_GUID
!{CLSID_WIC8BIMIPTCDigestMetadataReader
,
154 0x02805f1e, 0xd5aa, 0x415b, 0x82, 0xc5, 0x61, 0xc0, 0x33, 0xa9, 0x88, 0xa6}
155 DEFINE_GUID
!{CLSID_WIC8BIMIPTCDigestMetadataWriter
,
156 0x2db5e62b, 0x0d67, 0x495f, 0x8f, 0x9d, 0xc2, 0xf0, 0x18, 0x86, 0x47, 0xac}
157 DEFINE_GUID
!{CLSID_WICPngTextMetadataReader
,
158 0x4b59afcc, 0xb8c3, 0x408a, 0xb6, 0x70, 0x89, 0xe5, 0xfa, 0xb6, 0xfd, 0xa7}
159 DEFINE_GUID
!{CLSID_WICPngTextMetadataWriter
,
160 0xb5ebafb9, 0x253e, 0x4a72, 0xa7, 0x44, 0x07, 0x62, 0xd2, 0x68, 0x56, 0x83}
161 DEFINE_GUID
!{CLSID_WICXMPMetadataReader
,
162 0x72b624df, 0xae11, 0x4948, 0xa6, 0x5c, 0x35, 0x1e, 0xb0, 0x82, 0x94, 0x19}
163 DEFINE_GUID
!{CLSID_WICXMPMetadataWriter
,
164 0x1765e14e, 0x1bd4, 0x462e, 0xb6, 0xb1, 0x59, 0x0b, 0xf1, 0x26, 0x2a, 0xc6}
165 DEFINE_GUID
!{CLSID_WICXMPStructMetadataReader
,
166 0x01b90d9a, 0x8209, 0x47f7, 0x9c, 0x52, 0xe1, 0x24, 0x4b, 0xf5, 0x0c, 0xed}
167 DEFINE_GUID
!{CLSID_WICXMPStructMetadataWriter
,
168 0x22c21f93, 0x7ddb, 0x411c, 0x9b, 0x17, 0xc5, 0xb7, 0xbd, 0x06, 0x4a, 0xbc}
169 DEFINE_GUID
!{CLSID_WICXMPBagMetadataReader
,
170 0xe7e79a30, 0x4f2c, 0x4fab, 0x8d, 0x00, 0x39, 0x4f, 0x2d, 0x6b, 0xbe, 0xbe}
171 DEFINE_GUID
!{CLSID_WICXMPBagMetadataWriter
,
172 0xed822c8c, 0xd6be, 0x4301, 0xa6, 0x31, 0x0e, 0x14, 0x16, 0xba, 0xd2, 0x8f}
173 DEFINE_GUID
!{CLSID_WICXMPSeqMetadataReader
,
174 0x7f12e753, 0xfc71, 0x43d7, 0xa5, 0x1d, 0x92, 0xf3, 0x59, 0x77, 0xab, 0xb5}
175 DEFINE_GUID
!{CLSID_WICXMPSeqMetadataWriter
,
176 0x6d68d1de, 0xd432, 0x4b0f, 0x92, 0x3a, 0x09, 0x11, 0x83, 0xa9, 0xbd, 0xa7}
177 DEFINE_GUID
!{CLSID_WICXMPAltMetadataReader
,
178 0xaa94dcc2, 0xb8b0, 0x4898, 0xb8, 0x35, 0x00, 0x0a, 0xab, 0xd7, 0x43, 0x93}
179 DEFINE_GUID
!{CLSID_WICXMPAltMetadataWriter
,
180 0x076c2a6c, 0xf78f, 0x4c46, 0xa7, 0x23, 0x35, 0x83, 0xe7, 0x08, 0x76, 0xea}
181 DEFINE_GUID
!{CLSID_WICLSDMetadataReader
,
182 0x41070793, 0x59e4, 0x479a, 0xa1, 0xf7, 0x95, 0x4a, 0xdc, 0x2e, 0xf5, 0xfc}
183 DEFINE_GUID
!{CLSID_WICLSDMetadataWriter
,
184 0x73c037e7, 0xe5d9, 0x4954, 0x87, 0x6a, 0x6d, 0xa8, 0x1d, 0x6e, 0x57, 0x68}
185 DEFINE_GUID
!{CLSID_WICGCEMetadataReader
,
186 0xb92e345d, 0xf52d, 0x41f3, 0xb5, 0x62, 0x08, 0x1b, 0xc7, 0x72, 0xe3, 0xb9}
187 DEFINE_GUID
!{CLSID_WICGCEMetadataWriter
,
188 0xaf95dc76, 0x16b2, 0x47f4, 0xb3, 0xea, 0x3c, 0x31, 0x79, 0x66, 0x93, 0xe7}
189 DEFINE_GUID
!{CLSID_WICIMDMetadataReader
,
190 0x7447a267, 0x0015, 0x42c8, 0xa8, 0xf1, 0xfb, 0x3b, 0x94, 0xc6, 0x83, 0x61}
191 DEFINE_GUID
!{CLSID_WICIMDMetadataWriter
,
192 0x8c89071f, 0x452e, 0x4e95, 0x96, 0x82, 0x9d, 0x10, 0x24, 0x62, 0x71, 0x72}
193 DEFINE_GUID
!{CLSID_WICAPEMetadataReader
,
194 0x1767b93a, 0xb021, 0x44ea, 0x92, 0x0f, 0x86, 0x3c, 0x11, 0xf4, 0xf7, 0x68}
195 DEFINE_GUID
!{CLSID_WICAPEMetadataWriter
,
196 0xbd6edfca, 0x2890, 0x482f, 0xb2, 0x33, 0x8d, 0x73, 0x39, 0xa1, 0xcf, 0x8d}
197 DEFINE_GUID
!{CLSID_WICJpegChrominanceMetadataReader
,
198 0x50b1904b, 0xf28f, 0x4574, 0x93, 0xf4, 0x0b, 0xad, 0xe8, 0x2c, 0x69, 0xe9}
199 DEFINE_GUID
!{CLSID_WICJpegChrominanceMetadataWriter
,
200 0x3ff566f0, 0x6e6b, 0x49d4, 0x96, 0xe6, 0xb7, 0x88, 0x86, 0x69, 0x2c, 0x62}
201 DEFINE_GUID
!{CLSID_WICJpegLuminanceMetadataReader
,
202 0x356f2f88, 0x05a6, 0x4728, 0xb9, 0xa4, 0x1b, 0xfb, 0xce, 0x04, 0xd8, 0x38}
203 DEFINE_GUID
!{CLSID_WICJpegLuminanceMetadataWriter
,
204 0x1d583abc, 0x8a0e, 0x4657, 0x99, 0x82, 0xa3, 0x80, 0xca, 0x58, 0xfb, 0x4b}
205 DEFINE_GUID
!{CLSID_WICJpegCommentMetadataReader
,
206 0x9f66347c, 0x60c4, 0x4c4d, 0xab, 0x58, 0xd2, 0x35, 0x86, 0x85, 0xf6, 0x07}
207 DEFINE_GUID
!{CLSID_WICJpegCommentMetadataWriter
,
208 0xe573236f, 0x55b1, 0x4eda, 0x81, 0xea, 0x9f, 0x65, 0xdb, 0x02, 0x90, 0xd3}
209 DEFINE_GUID
!{CLSID_WICGifCommentMetadataReader
,
210 0x32557d3b, 0x69dc, 0x4f95, 0x83, 0x6e, 0xf5, 0x97, 0x2b, 0x2f, 0x61, 0x59}
211 DEFINE_GUID
!{CLSID_WICGifCommentMetadataWriter
,
212 0xa02797fc, 0xc4ae, 0x418c, 0xaf, 0x95, 0xe6, 0x37, 0xc7, 0xea, 0xd2, 0xa1}
213 DEFINE_GUID
!{CLSID_WICPngGamaMetadataReader
,
214 0x3692ca39, 0xe082, 0x4350, 0x9e, 0x1f, 0x37, 0x04, 0xcb, 0x08, 0x3c, 0xd5}
215 DEFINE_GUID
!{CLSID_WICPngGamaMetadataWriter
,
216 0xff036d13, 0x5d4b, 0x46dd, 0xb1, 0x0f, 0x10, 0x66, 0x93, 0xd9, 0xfe, 0x4f}
217 DEFINE_GUID
!{CLSID_WICPngBkgdMetadataReader
,
218 0x0ce7a4a6, 0x03e8, 0x4a60, 0x9d, 0x15, 0x28, 0x2e, 0xf3, 0x2e, 0xe7, 0xda}
219 DEFINE_GUID
!{CLSID_WICPngBkgdMetadataWriter
,
220 0x68e3f2fd, 0x31ae, 0x4441, 0xbb, 0x6a, 0xfd, 0x70, 0x47, 0x52, 0x5f, 0x90}
221 DEFINE_GUID
!{CLSID_WICPngItxtMetadataReader
,
222 0xaabfb2fa, 0x3e1e, 0x4a8f, 0x89, 0x77, 0x55, 0x56, 0xfb, 0x94, 0xea, 0x23}
223 DEFINE_GUID
!{CLSID_WICPngItxtMetadataWriter
,
224 0x31879719, 0xe751, 0x4df8, 0x98, 0x1d, 0x68, 0xdf, 0xf6, 0x77, 0x04, 0xed}
225 DEFINE_GUID
!{CLSID_WICPngChrmMetadataReader
,
226 0xf90b5f36, 0x367b, 0x402a, 0x9d, 0xd1, 0xbc, 0x0f, 0xd5, 0x9d, 0x8f, 0x62}
227 DEFINE_GUID
!{CLSID_WICPngChrmMetadataWriter
,
228 0xe23ce3eb, 0x5608, 0x4e83, 0xbc, 0xef, 0x27, 0xb1, 0x98, 0x7e, 0x51, 0xd7}
229 DEFINE_GUID
!{CLSID_WICPngHistMetadataReader
,
230 0x877a0bb7, 0xa313, 0x4491, 0x87, 0xb5, 0x2e, 0x6d, 0x05, 0x94, 0xf5, 0x20}
231 DEFINE_GUID
!{CLSID_WICPngHistMetadataWriter
,
232 0x8a03e749, 0x672e, 0x446e, 0xbf, 0x1f, 0x2c, 0x11, 0xd2, 0x33, 0xb6, 0xff}
233 DEFINE_GUID
!{CLSID_WICPngIccpMetadataReader
,
234 0xf5d3e63b, 0xcb0f, 0x4628, 0xa4, 0x78, 0x6d, 0x82, 0x44, 0xbe, 0x36, 0xb1}
235 DEFINE_GUID
!{CLSID_WICPngIccpMetadataWriter
,
236 0x16671e5f, 0x0ce6, 0x4cc4, 0x97, 0x68, 0xe8, 0x9f, 0xe5, 0x01, 0x8a, 0xde}
237 DEFINE_GUID
!{CLSID_WICPngSrgbMetadataReader
,
238 0xfb40360c, 0x547e, 0x4956, 0xa3, 0xb9, 0xd4, 0x41, 0x88, 0x59, 0xba, 0x66}
239 DEFINE_GUID
!{CLSID_WICPngSrgbMetadataWriter
,
240 0xa6ee35c6, 0x87ec, 0x47df, 0x9f, 0x22, 0x1d, 0x5a, 0xad, 0x84, 0x0c, 0x82}
241 DEFINE_GUID
!{CLSID_WICPngTimeMetadataReader
,
242 0xd94edf02, 0xefe5, 0x4f0d, 0x85, 0xc8, 0xf5, 0xa6, 0x8b, 0x30, 0x00, 0xb1}
243 DEFINE_GUID
!{CLSID_WICPngTimeMetadataWriter
,
244 0x1ab78400, 0xb5a3, 0x4d91, 0x8a, 0xce, 0x33, 0xfc, 0xd1, 0x49, 0x9b, 0xe6}
245 DEFINE_GUID
!{CLSID_WICDdsMetadataReader
,
246 0x276c88ca, 0x7533, 0x4a86, 0xb6, 0x76, 0x66, 0xb3, 0x60, 0x80, 0xd4, 0x84}
247 DEFINE_GUID
!{CLSID_WICDdsMetadataWriter
,
248 0xfd688bbd, 0x31ed, 0x4db7, 0xa7, 0x23, 0x93, 0x49, 0x27, 0xd3, 0x83, 0x67}
249 ENUM
!{enum WICMetadataCreationOptions
{
250 WICMetadataCreationDefault
= 0,
251 WICMetadataCreationAllowUnknown
= WICMetadataCreationDefault
,
252 WICMetadataCreationFailUnknown
= 0x10000,
253 WICMetadataCreationMask
= 0xffff0000,
255 ENUM
!{enum WICPersistOptions
{
256 WICPersistOptionDefault
= 0,
257 WICPersistOptionLittleEndian
= 0,
258 WICPersistOptionBigEndian
= 0x1,
259 WICPersistOptionStrictFormat
= 0x2,
260 WICPersistOptionNoCacheStream
= 0x4,
261 WICPersistOptionPreferUTF8
= 0x8,
262 WICPersistOptionMask
= 0xffff,
264 RIDL
!{#[uuid(0xfeaa2a8d, 0xb3f3, 0x43e4, 0xb2, 0x5c, 0xd1, 0xde, 0x99, 0x0a, 0x1a, 0xe1)]
265 interface
IWICMetadataBlockReader(IWICMetadataBlockReaderVtbl
): IUnknown(IUnknownVtbl
) {
266 fn GetContainerFormat(
267 pguidContainerFormat
: *mut GUID
,
273 ppIMetadataReader
: *mut *mut IWICMetadataReader
,
276 ppIEnumMetadata
: *mut IEnumUnknown
,
279 RIDL
!{#[uuid(0x08fb9676, 0xb444, 0x41e8, 0x8d, 0xbe, 0x6a, 0x53, 0xa5, 0x42, 0xbf, 0xf1)]
280 interface
IWICMetadataBlockWriter(IWICMetadataBlockWriterVtbl
):
281 IWICMetadataBlockReader(IWICMetadataBlockReaderVtbl
) {
282 fn InitializeFromBlockReader(
283 pIMDBlockReader
: *mut IWICMetadataBlockReader
,
286 ppIMetadataWriter
: *mut *mut IWICMetadataWriter
,
289 pIMetadataWriter
: *mut IWICMetadataWriter
,
292 pIMetadataWriter
: *mut IWICMetadataWriter
,
294 fn RemoveWriterByIndex(
298 RIDL
!{#[uuid(0x9204fe99, 0xd8fc, 0x4fd5, 0xa0, 0x01, 0x95, 0x36, 0xb0, 0x67, 0xa8, 0x99)]
299 interface
IWICMetadataReader(IWICMetadataReaderVtbl
): IUnknown(IUnknownVtbl
) {
300 fn GetMetadataFormat(
301 pguidMetadataFormat
: *mut GUID
,
303 fn GetMetadataHandlerInfo(
304 ppIHandler
: *mut *mut IWICMetadataHandlerInfo
,
311 pvarSchema
: *mut PROPVARIANT
,
312 pvarId
: *mut PROPVARIANT
,
313 pvarValue
: *mut PROPVARIANT
,
316 pvarSchema
: *const PROPVARIANT
,
317 pvarId
: *const PROPVARIANT
,
318 pvarValue
: *mut PROPVARIANT
,
321 ppIEnumMetadata
: *mut *mut IWICEnumMetadataItem
,
324 RIDL
!{#[uuid(0xf7836e16, 0x3be0, 0x470b, 0x86, 0xbb, 0x16, 0x0d, 0x0a, 0xec, 0xd7, 0xde)]
325 interface
IWICMetadataWriter(IWICMetadataWriterVtbl
): IWICMetadataReader(IWICMetadataReaderVtbl
) {
327 pvarSchema
: *const PROPVARIANT
,
328 pvarId
: *const PROPVARIANT
,
329 pvarValue
: *const PROPVARIANT
,
333 pvarSchema
: *const PROPVARIANT
,
334 pvarId
: *const PROPVARIANT
,
335 pvarValue
: *const PROPVARIANT
,
338 pvarSchema
: *const PROPVARIANT
,
339 pvarId
: *const PROPVARIANT
,
341 fn RemoveValueByIndex(
345 RIDL
!{#[uuid(0x449494bc, 0xb468, 0x4927, 0x96, 0xd7, 0xba, 0x90, 0xd3, 0x1a, 0xb5, 0x05)]
346 interface
IWICStreamProvider(IWICStreamProviderVtbl
): IUnknown(IUnknownVtbl
) {
348 ppIStream
: *mut *mut IStream
,
350 fn GetPersistOptions(
351 pdwPersistOptions
: *mut DWORD
,
353 fn GetPreferredVendorGUID(
354 pguidPreferredVendor
: *mut GUID
,
356 fn RefreshStream() -> HRESULT
,
358 RIDL
!{#[uuid(0x00675040, 0x6908, 0x45f8, 0x86, 0xa3, 0x49, 0xc7, 0xdf, 0xd6, 0xd9, 0xad)]
359 interface
IWICPersistStream(IWICPersistStreamVtbl
): IPersistStream(IPersistStreamVtbl
) {
361 pIStream
: *mut IStream
,
362 pguidPreferredVendor
: *const GUID
,
363 dwPersistOptions
: DWORD
,
366 pIStream
: *mut IStream
,
367 dwPersistOptions
: DWORD
,
371 RIDL
!{#[uuid(0xaba958bf, 0xc672, 0x44d1, 0x8d, 0x61, 0xce, 0x6d, 0xf2, 0xe6, 0x82, 0xc2)]
372 interface
IWICMetadataHandlerInfo(IWICMetadataHandlerInfoVtbl
):
373 IWICComponentInfo(IWICComponentInfoVtbl
) {
374 fn GetMetadataFormat(
375 pguidMetadataFormat
: *mut GUID
,
377 fn GetContainerFormats(
378 cContainerFormats
: UINT
,
379 pguidContainerFormats
: *mut GUID
,
380 pcchActual
: *mut UINT
,
382 fn GetDeviceManufacturer(
383 cchDeviceManufacturer
: UINT
,
384 wzDeviceManufacturer
: *mut WCHAR
,
385 pcchActual
: *mut UINT
,
388 cchDeviceModels
: UINT
,
389 wzDeviceModels
: *mut WCHAR
,
390 pcchActual
: *mut UINT
,
392 fn DoesRequireFullStream(
393 pfRequiresFullStream
: *mut BOOL
,
395 fn DoesSupportPadding(
396 pfSupportsPadding
: *mut BOOL
,
398 fn DoesRequireFixedSize(
399 pfFixedSize
: *mut BOOL
,
402 STRUCT
!{struct WICMetadataPattern
{
403 Position
: ULARGE_INTEGER
,
407 DataOffset
: ULARGE_INTEGER
,
409 RIDL
!{#[uuid(0xeebf1f5b, 0x07c1, 0x4447, 0xa3, 0xab, 0x22, 0xac, 0xaf, 0x78, 0xa8, 0x04)]
410 interface
IWICMetadataReaderInfo(IWICMetadataReaderInfoVtbl
):
411 IWICMetadataHandlerInfo(IWICMetadataHandlerInfoVtbl
) {
413 guidContainerFormat
: REFGUID
,
415 pPattern
: *mut WICMetadataPattern
,
417 pcbActual
: *mut UINT
,
420 guidContainerFormat
: REFGUID
,
421 pIStream
: *mut IStream
,
422 pfMatches
: *mut BOOL
,
425 ppIReader
: *mut *mut IWICMetadataReader
,
428 STRUCT
!{struct WICMetadataHeader
{
429 Position
: ULARGE_INTEGER
,
432 DataOffset
: ULARGE_INTEGER
,
434 RIDL
!{#[uuid(0xb22e3fba, 0x3925, 0x4323, 0xb5, 0xc1, 0x9e, 0xbf, 0xc4, 0x30, 0xf2, 0x36)]
435 interface
IWICMetadataWriterInfo(IWICMetadataWriterInfoVtbl
):
436 IWICMetadataHandlerInfo(IWICMetadataHandlerInfoVtbl
) {
438 guidContainerFormat
: REFGUID
,
440 pHeader
: *mut WICMetadataHeader
,
441 pcbActual
: *mut UINT
,
444 ppIWriter
: *mut *mut IWICMetadataWriter
,
447 RIDL
!{#[uuid(0x412d0c3a, 0x9650, 0x44fa, 0xaf, 0x5b, 0xdd, 0x2a, 0x06, 0xc8, 0xe8, 0xfb)]
448 interface
IWICComponentFactory(IWICComponentFactoryVtbl
):
449 IWICImagingFactory(IWICImagingFactoryVtbl
) {
450 fn CreateMetadataReader(
451 guidMetadataFormat
: REFGUID
,
452 pguidVendor
: *const GUID
,
454 pIStream
: *mut IStream
,
455 ppIReader
: *mut *mut IWICMetadataReader
,
457 fn CreateMetadataReaderFromContainer(
458 guidContainerFormat
: REFGUID
,
459 pguidVendor
: *const GUID
,
461 pIStream
: *mut IStream
,
462 ppIReader
: *mut *mut IWICMetadataReader
,
464 fn CreateMetadataWriter(
465 guidMetadataFormat
: REFGUID
,
466 pguidVendor
: *const GUID
,
467 dwMetadataOptions
: DWORD
,
468 ppIWriter
: *mut *mut IWICMetadataWriter
,
470 fn CreateMetadataWriterFromReader(
471 pIReader
: *mut IWICMetadataReader
,
472 pguidVendor
: *const GUID
,
473 ppIWriter
: *mut *mut IWICMetadataWriter
,
475 fn CreateQueryReaderFromBlockReader(
476 pIBlockReader
: *mut IWICMetadataBlockReader
,
477 ppIQueryReader
: *mut *mut IWICMetadataQueryReader
,
479 fn CreateQueryWriterFromBlockWriter(
480 pIBlockWriter
: *mut IWICMetadataBlockWriter
,
481 ppIQueryWriter
: *mut *mut IWICMetadataQueryWriter
,
483 fn CreateEncoderPropertyBag(
484 ppropOptions
: *mut PROPBAG2
,
486 ppIPropertyBag
: *mut *mut IPropertyBag2
,
490 pub fn WICMatchMetadataContent(
491 guidContainerFormat
: REFGUID
,
492 pguidVendor
: *const GUID
,
493 pIStream
: *mut IStream
,
494 pguidMetadataFormat
: *mut GUID
,
496 pub fn WICSerializeMetadataContent(
497 guidContainerFormat
: REFGUID
,
498 pIWriter
: *mut IWICMetadataWriter
,
499 dwPersistOptions
: DWORD
,
500 pIStream
: *mut IStream
,
502 pub fn WICGetMetadataContentSize(
503 guidContainerFormat
: REFGUID
,
504 pIWriter
: *mut IWICMetadataWriter
,
505 pcbSize
: *mut ULARGE_INTEGER
,
507 pub fn BSTR_UserSize(
508 pFlags
: *mut c_ulong
,
512 pub fn BSTR_UserMarshal(
513 pFlags
: *mut c_ulong
,
514 pBuffer
: *mut c_uchar
,
517 pub fn BSTR_UserUnmarshal(
518 pFlags
: *mut c_ulong
,
519 pBuffer
: *mut c_uchar
,
522 pub fn BSTR_UserFree(
523 pFlags
: *mut c_ulong
,
526 pub fn CLIPFORMAT_UserSize(
527 pFlags
: *mut c_ulong
,
529 pCF
: *mut CLIPFORMAT
,
531 pub fn CLIPFORMAT_UserMarshal(
532 pFlags
: *mut c_ulong
,
533 pBuffer
: *mut c_uchar
,
534 pCF
: *mut CLIPFORMAT
,
536 pub fn CLIPFORMAT_UserUnmarshal(
537 pFlags
: *mut c_ulong
,
538 pBuffer
: *mut c_uchar
,
539 pCF
: *mut CLIPFORMAT
,
541 pub fn CLIPFORMAT_UserFree(
542 pFlags
: *mut c_ulong
,
543 pCF
: *mut CLIPFORMAT
,
545 pub fn LPSAFEARRAY_UserSize(
546 pFlags
: *mut c_ulong
,
548 phBmp
: *mut LPSAFEARRAY
,
550 pub fn LPSAFEARRAY_UserMarshal(
551 pFlags
: *mut c_ulong
,
552 pBuffer
: *mut c_uchar
,
553 pBstr
: *mut LPSAFEARRAY
,
555 pub fn LPSAFEARRAY_UserUnmarshal(
556 pFlags
: *mut c_ulong
,
557 pBuffer
: *mut c_uchar
,
558 pBstr
: *mut LPSAFEARRAY
,
560 pub fn LPSAFEARRAY_UserFree(
561 pFlags
: *mut c_ulong
,
562 pBstr
: *mut LPSAFEARRAY
,