source: branches/swt/include/win/gdiplusimaging.h

Last change on this file was 22121, checked in by rousseau, 10 years ago

Odin modifications needed for 'gdiplus' [odin]

Modifications:
o dcdata.h

Use 'typedef' for the enum so its more compatible with plain C.

o gdiplus.h

Disabling the namespaces is a quick-hack to get 'gdiplus.dll' to
build. A more proper fix would probably be using '-xc' for g++
when building the 'gdiplus' module.

o gdiplusflat.h

Temporarily remove the majority of prototypes so yet undefined types
do not get introduced already.

o gdiplusimaging.h

Possibly revert this mod after it is clear how to properly handle the
namespaces in 'gdiplus.h'.

o shtypes.h

Includes 'wtypes.h' which defines 'PROPID'.

o windef.h

Not sure why these 'IN','OUT','...' definitions only got defined when
WINE was *not* defined.

o winnt.h

Park Wine macros here for now. Proper include ordering needs to be
revisited anyway.

Note:
The headers for GDI+ headers were already added in rev. #22082 to
satisfy building 'swt.dll'. They also came from the wine-repo.

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