msxml3: Simplify IXMLDOMNodeMap::removeNamedItem.
[wine] / include / gdiplusimaging.h
1 /*
2  * Copyright (C) 2007 Google (Evan Stade)
3  *
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.
8  *
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.
13  *
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
17  */
18
19 #ifndef _GDIPLUSIMAGING_H
20 #define _GDIPLUSIMAGING_H
21
22 enum ImageLockMode
23 {
24     ImageLockModeRead           = 1,
25     ImageLockModeWrite          = 2,
26     ImageLockModeUserInputBuf   = 4
27 };
28
29 #ifdef __cplusplus
30 class EncoderParameter
31 {
32 public:
33     GUID    Guid;
34     ULONG   NumberOfValues;
35     ULONG   Type;
36     VOID*   Value;
37 };
38
39 class EncoderParameters
40 {
41 public:
42     UINT Count;
43     EncoderParameter Parameter[1];
44 };
45
46 class ImageCodecInfo
47 {
48 public:
49     CLSID Clsid;
50     GUID  FormatID;
51     const WCHAR* CodecName;
52     const WCHAR* DllName;
53     const WCHAR* FormatDescription;
54     const WCHAR* FilenameExtension;
55     const WCHAR* MimeType;
56     DWORD Flags;
57     DWORD Version;
58     DWORD SigCount;
59     DWORD SigSize;
60     const BYTE* SigPattern;
61     const BYTE* SigMask;
62 };
63
64 class BitmapData
65 {
66 public:
67     UINT Width;
68     UINT Height;
69     INT Stride;
70     PixelFormat PixelFormat;
71     VOID* Scan0;
72     UINT_PTR Reserved;
73 };
74
75 class ImageItemData
76 {
77 public:
78     UINT  Size;
79     UINT  Position;
80     VOID* Desc;
81     UINT  DescSize;
82     VOID* Data;
83     UINT  DataSize;
84     UINT  Cookie;
85 };
86
87 class PropertyItem
88 {
89 public:
90     PROPID id;
91     ULONG  length;
92     WORD   type;
93     VOID*  value;
94 };
95
96 #else /* end of c++ typedefs */
97
98 typedef enum ImageLockMode ImageLockMode;
99
100 typedef struct EncoderParameter
101 {
102     GUID Guid;
103     ULONG NumberOfValues;
104     ULONG Type;
105     VOID* Value;
106 } EncoderParameter;
107
108 typedef struct EncoderParameters
109 {
110     UINT Count;
111     EncoderParameter Parameter[1];
112 } EncoderParameters;
113
114 typedef struct ImageCodecInfo
115 {
116     CLSID Clsid;
117     GUID  FormatID;
118     const WCHAR* CodecName;
119     const WCHAR* DllName;
120     const WCHAR* FormatDescription;
121     const WCHAR* FilenameExtension;
122     const WCHAR* MimeType;
123     DWORD Flags;
124     DWORD Version;
125     DWORD SigCount;
126     DWORD SigSize;
127     const BYTE* SigPattern;
128     const BYTE* SigMask;
129 } ImageCodecInfo;
130
131 typedef struct BitmapData
132 {
133     UINT Width;
134     UINT Height;
135     INT Stride;
136     PixelFormat PixelFormat;
137     VOID* Scan0;
138     UINT_PTR Reserved; /* undocumented: stores the lock mode */
139 } BitmapData;
140
141 typedef struct ImageItemData
142 {
143     UINT  Size;
144     UINT  Position;
145     VOID* Desc;
146     UINT  DescSize;
147     VOID* Data;
148     UINT  DataSize;
149     UINT  Cookie;
150 } ImageItemData;
151
152 typedef struct PropertyItem
153 {
154     PROPID id;
155     ULONG  length;
156     WORD   type;
157     VOID*  value;
158 } PropertyItem;
159
160 #endif /* end of c typedefs */
161
162 /* property types */
163 #define PropertyTagTypeByte       1
164 #define PropertyTagTypeASCII      2
165 #define PropertyTagTypeShort      3
166 #define PropertyTagTypeLong       4
167 #define PropertyTagTypeRational   5
168 #define PropertyTagTypeUndefined  7
169 #define PropertyTagTypeSLONG      9
170 #define PropertyTagTypeSRational 10
171
172 /* property IDs */
173 #define PropertyTagExifIFD                0x8769
174 #define PropertyTagGpsIFD                 0x8825
175
176 #define PropertyTagNewSubfileType         0x00FE
177 #define PropertyTagSubfileType            0x00FF
178 #define PropertyTagImageWidth             0x0100
179 #define PropertyTagImageHeight            0x0101
180 #define PropertyTagBitsPerSample          0x0102
181 #define PropertyTagCompression            0x0103
182 #define PropertyTagPhotometricInterp      0x0106
183 #define PropertyTagThreshHolding          0x0107
184 #define PropertyTagCellWidth              0x0108
185 #define PropertyTagCellHeight             0x0109
186 #define PropertyTagFillOrder              0x010A
187 #define PropertyTagDocumentName           0x010D
188 #define PropertyTagImageDescription       0x010E
189 #define PropertyTagEquipMake              0x010F
190 #define PropertyTagEquipModel             0x0110
191 #define PropertyTagStripOffsets           0x0111
192 #define PropertyTagOrientation            0x0112
193 #define PropertyTagSamplesPerPixel        0x0115
194 #define PropertyTagRowsPerStrip           0x0116
195 #define PropertyTagStripBytesCount        0x0117
196 #define PropertyTagMinSampleValue         0x0118
197 #define PropertyTagMaxSampleValue         0x0119
198 #define PropertyTagXResolution            0x011A
199 #define PropertyTagYResolution            0x011B
200 #define PropertyTagPlanarConfig           0x011C
201 #define PropertyTagPageName               0x011D
202 #define PropertyTagXPosition              0x011E
203 #define PropertyTagYPosition              0x011F
204 #define PropertyTagFreeOffset             0x0120
205 #define PropertyTagFreeByteCounts         0x0121
206 #define PropertyTagGrayResponseUnit       0x0122
207 #define PropertyTagGrayResponseCurve      0x0123
208 #define PropertyTagT4Option               0x0124
209 #define PropertyTagT6Option               0x0125
210 #define PropertyTagResolutionUnit         0x0128
211 #define PropertyTagPageNumber             0x0129
212 #define PropertyTagTransferFuncition      0x012D
213 #define PropertyTagSoftwareUsed           0x0131
214 #define PropertyTagDateTime               0x0132
215 #define PropertyTagArtist                 0x013B
216 #define PropertyTagHostComputer           0x013C
217 #define PropertyTagPredictor              0x013D
218 #define PropertyTagWhitePoint             0x013E
219 #define PropertyTagPrimaryChromaticities  0x013F
220 #define PropertyTagColorMap               0x0140
221 #define PropertyTagHalftoneHints          0x0141
222 #define PropertyTagTileWidth              0x0142
223 #define PropertyTagTileLength             0x0143
224 #define PropertyTagTileOffset             0x0144
225 #define PropertyTagTileByteCounts         0x0145
226 #define PropertyTagInkSet                 0x014C
227 #define PropertyTagInkNames               0x014D
228 #define PropertyTagNumberOfInks           0x014E
229 #define PropertyTagDotRange               0x0150
230 #define PropertyTagTargetPrinter          0x0151
231 #define PropertyTagExtraSamples           0x0152
232 #define PropertyTagSampleFormat           0x0153
233 #define PropertyTagSMinSampleValue        0x0154
234 #define PropertyTagSMaxSampleValue        0x0155
235 #define PropertyTagTransferRange          0x0156
236
237 #define PropertyTagJPEGProc               0x0200
238 #define PropertyTagJPEGInterFormat        0x0201
239 #define PropertyTagJPEGInterLength        0x0202
240 #define PropertyTagJPEGRestartInterval    0x0203
241 #define PropertyTagJPEGLosslessPredictors 0x0205
242 #define PropertyTagJPEGPointTransforms    0x0206
243 #define PropertyTagJPEGQTables            0x0207
244 #define PropertyTagJPEGDCTables           0x0208
245 #define PropertyTagJPEGACTables           0x0209
246
247 #define PropertyTagYCbCrCoefficients      0x0211
248 #define PropertyTagYCbCrSubsampling       0x0212
249 #define PropertyTagYCbCrPositioning       0x0213
250 #define PropertyTagREFBlackWhite          0x0214
251
252 #define PropertyTagICCProfile          0x8773
253
254 #define PropertyTagGamma                0x0301
255 #define PropertyTagICCProfileDescriptor 0x0302
256 #define PropertyTagSRGBRenderingIntent  0x0303
257
258 #define PropertyTagImageTitle          0x0320
259 #define PropertyTagCopyright           0x8298
260
261 #define PropertyTagResolutionXUnit            0x5001
262 #define PropertyTagResolutionYUnit            0x5002
263 #define PropertyTagResolutionXLengthUnit      0x5003
264 #define PropertyTagResolutionYLengthUnit      0x5004
265 #define PropertyTagPrintFlags                 0x5005
266 #define PropertyTagPrintFlagsVersion          0x5006
267 #define PropertyTagPrintFlagsCrop             0x5007
268 #define PropertyTagPrintFlagsBleedWidth       0x5008
269 #define PropertyTagPrintFlagsBleedWidthScale  0x5009
270 #define PropertyTagHalftoneLPI                0x500A
271 #define PropertyTagHalftoneLPIUnit            0x500B
272 #define PropertyTagHalftoneDegree             0x500C
273 #define PropertyTagHalftoneShape              0x500D
274 #define PropertyTagHalftoneMisc               0x500E
275 #define PropertyTagHalftoneScreen             0x500F
276 #define PropertyTagJPEGQuality                0x5010
277 #define PropertyTagGridSize                   0x5011
278 #define PropertyTagThumbnailFormat            0x5012
279 #define PropertyTagThumbnailWidth             0x5013
280 #define PropertyTagThumbnailHeight            0x5014
281 #define PropertyTagThumbnailColorDepth        0x5015
282 #define PropertyTagThumbnailPlanes            0x5016
283 #define PropertyTagThumbnailRawBytes          0x5017
284 #define PropertyTagThumbnailSize              0x5018
285 #define PropertyTagThumbnailCompressedSize    0x5019
286 #define PropertyTagColorTransferFunction      0x501A
287 #define PropertyTagThumbnailData              0x501B
288
289 #define PropertyTagThumbnailImageWidth        0x5020
290 #define PropertyTagThumbnailImageHeight       0x5021
291 #define PropertyTagThumbnailBitsPerSample     0x5022
292 #define PropertyTagThumbnailCompression       0x5023
293 #define PropertyTagThumbnailPhotometricInterp 0x5024
294 #define PropertyTagThumbnailImageDescription  0x5025
295 #define PropertyTagThumbnailEquipMake         0x5026
296 #define PropertyTagThumbnailEquipModel        0x5027
297 #define PropertyTagThumbnailStripOffsets      0x5028
298 #define PropertyTagThumbnailOrientation       0x5029
299 #define PropertyTagThumbnailSamplesPerPixel   0x502A
300 #define PropertyTagThumbnailRowsPerStrip      0x502B
301 #define PropertyTagThumbnailStripBytesCount   0x502C
302 #define PropertyTagThumbnailResolutionX       0x502D
303 #define PropertyTagThumbnailResolutionY       0x502E
304 #define PropertyTagThumbnailPlanarConfig      0x502F
305 #define PropertyTagThumbnailResolutionUnit    0x5030
306 #define PropertyTagThumbnailTransferFunction  0x5031
307 #define PropertyTagThumbnailSoftwareUsed      0x5032
308 #define PropertyTagThumbnailDateTime          0x5033
309 #define PropertyTagThumbnailArtist            0x5034
310 #define PropertyTagThumbnailWhitePoint        0x5035
311 #define PropertyTagThumbnailPrimaryChromaticities 0x5036
312 #define PropertyTagThumbnailYCbCrCoefficients 0x5037
313 #define PropertyTagThumbnailYCbCrSubsampling  0x5038
314 #define PropertyTagThumbnailYCbCrPositioning  0x5039
315 #define PropertyTagThumbnailRefBlackWhite     0x503A
316 #define PropertyTagThumbnailCopyRight         0x503B
317
318 #define PropertyTagLuminanceTable    0x5090
319 #define PropertyTagChrominanceTable  0x5091
320
321 #define PropertyTagFrameDelay        0x5100
322 #define PropertyTagLoopCount         0x5101
323
324 #define PropertyTagPixelUnit         0x5110
325 #define PropertyTagPixelPerUnitX     0x5111
326 #define PropertyTagPixelPerUnitY     0x5112
327 #define PropertyTagPaletteHistogram  0x5113
328
329 #define PropertyTagExifExposureTime  0x829A
330 #define PropertyTagExifFNumber       0x829D
331
332 #define PropertyTagExifExposureProg  0x8822
333 #define PropertyTagExifSpectralSense 0x8824
334 #define PropertyTagExifISOSpeed      0x8827
335 #define PropertyTagExifOECF          0x8828
336
337 #define PropertyTagExifVer           0x9000
338 #define PropertyTagExifDTOrig        0x9003
339 #define PropertyTagExifDTDigitized   0x9004
340
341 #define PropertyTagExifCompConfig    0x9101
342 #define PropertyTagExifCompBPP       0x9102
343
344 #define PropertyTagExifShutterSpeed  0x9201
345 #define PropertyTagExifAperture      0x9202
346 #define PropertyTagExifBrightness    0x9203
347 #define PropertyTagExifExposureBias  0x9204
348 #define PropertyTagExifMaxAperture   0x9205
349 #define PropertyTagExifSubjectDist   0x9206
350 #define PropertyTagExifMeteringMode  0x9207
351 #define PropertyTagExifLightSource   0x9208
352 #define PropertyTagExifFlash         0x9209
353 #define PropertyTagExifFocalLength   0x920A
354 #define PropertyTagExifMakerNote     0x927C
355 #define PropertyTagExifUserComment   0x9286
356 #define PropertyTagExifDTSubsec      0x9290
357 #define PropertyTagExifDTOrigSS      0x9291
358 #define PropertyTagExifDTDigSS       0x9292
359
360 #define PropertyTagExifFPXVer        0xA000
361 #define PropertyTagExifColorSpace    0xA001
362 #define PropertyTagExifPixXDim       0xA002
363 #define PropertyTagExifPixYDim       0xA003
364 #define PropertyTagExifRelatedWav    0xA004
365 #define PropertyTagExifInterop       0xA005
366 #define PropertyTagExifFlashEnergy   0xA20B
367 #define PropertyTagExifSpatialFR     0xA20C
368 #define PropertyTagExifFocalXRes     0xA20E
369 #define PropertyTagExifFocalYRes     0xA20F
370 #define PropertyTagExifFocalResUnit  0xA210
371 #define PropertyTagExifSubjectLoc    0xA214
372 #define PropertyTagExifExposureIndex 0xA215
373 #define PropertyTagExifSensingMethod 0xA217
374 #define PropertyTagExifFileSource    0xA300
375 #define PropertyTagExifSceneType     0xA301
376 #define PropertyTagExifCfaPattern    0xA302
377
378 #define PropertyTagGpsVer            0x0000
379 #define PropertyTagGpsLatitudeRef    0x0001
380 #define PropertyTagGpsLatitude       0x0002
381 #define PropertyTagGpsLongitudeRef   0x0003
382 #define PropertyTagGpsLongitude      0x0004
383 #define PropertyTagGpsAltitudeRef    0x0005
384 #define PropertyTagGpsAltitude       0x0006
385 #define PropertyTagGpsGpsTime        0x0007
386 #define PropertyTagGpsGpsSatellites  0x0008
387 #define PropertyTagGpsGpsStatus      0x0009
388 #define PropertyTagGpsGpsMeasureMode 0x000A
389 #define PropertyTagGpsGpsDop         0x000B
390 #define PropertyTagGpsSpeedRef       0x000C
391 #define PropertyTagGpsSpeed          0x000D
392 #define PropertyTagGpsTrackRef       0x000E
393 #define PropertyTagGpsTrack          0x000F
394 #define PropertyTagGpsImgDirRef      0x0010
395 #define PropertyTagGpsImgDir         0x0011
396 #define PropertyTagGpsMapDatum       0x0012
397 #define PropertyTagGpsDestLatRef     0x0013
398 #define PropertyTagGpsDestLat        0x0014
399 #define PropertyTagGpsDestLongRef    0x0015
400 #define PropertyTagGpsDestLong       0x0016
401 #define PropertyTagGpsDestBearRef    0x0017
402 #define PropertyTagGpsDestBear       0x0018
403 #define PropertyTagGpsDestDistRef    0x0019
404 #define PropertyTagGpsDestDist       0x001A
405
406 #endif /* _GDIPLUSIMAGING_H */