| /* |
| * Copyright (C) 2007 Google (Evan Stade) |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| #ifndef _GDIPLUSIMAGING_H |
| #define _GDIPLUSIMAGING_H |
| |
| DEFINE_GUID(ImageFormatUndefined, 0xb96b3ca9, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e); |
| DEFINE_GUID(ImageFormatMemoryBMP, 0xb96b3caa, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e); |
| DEFINE_GUID(ImageFormatBMP, 0xb96b3cab, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e); |
| DEFINE_GUID(ImageFormatEMF, 0xb96b3cac, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e); |
| DEFINE_GUID(ImageFormatWMF, 0xb96b3cad, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e); |
| DEFINE_GUID(ImageFormatJPEG, 0xb96b3cae, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e); |
| DEFINE_GUID(ImageFormatPNG, 0xb96b3caf, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e); |
| DEFINE_GUID(ImageFormatGIF, 0xb96b3cb0, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e); |
| DEFINE_GUID(ImageFormatTIFF, 0xb96b3cb1, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e); |
| DEFINE_GUID(ImageFormatEXIF, 0xb96b3cb2, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e); |
| DEFINE_GUID(ImageFormatIcon, 0xb96b3cb5, 0x728, 0x11d3, 0x9d, 0x7b, 0, 0, 0xf8, 0x1e, 0xf3, 0x2e); |
| |
| DEFINE_GUID(FrameDimensionTime, 0x6aedbd6d, 0x3fb5, 0x418a, 0x83, 0xa6, 0x7f, 0x45, 0x22, 0x9d, 0xc8, 0x72); |
| DEFINE_GUID(FrameDimensionPage, 0x7462dc86, 0x6180, 0x4c7e, 0x8e, 0x3f, 0xee, 0x73, 0x33, 0xa7, 0xa4, 0x83); |
| DEFINE_GUID(FrameDimensionResolution, 0x84236f7b, 0x3bd3, 0x428f, 0x8d, 0xab, 0x4e, 0xa1, 0x43, 0x9c, 0xa3, 0x15); |
| |
| enum ImageLockMode |
| { |
| ImageLockModeRead = 1, |
| ImageLockModeWrite = 2, |
| ImageLockModeUserInputBuf = 4 |
| }; |
| |
| enum RotateFlipType |
| { |
| RotateNoneFlipNone = 0, |
| Rotate180FlipXY = RotateNoneFlipNone, |
| |
| Rotate90FlipNone = 1, |
| Rotate270FlipXY = Rotate90FlipNone, |
| |
| Rotate180FlipNone = 2, |
| RotateNoneFlipXY = Rotate180FlipNone, |
| |
| Rotate270FlipNone = 3, |
| Rotate90FlipXY = Rotate270FlipNone, |
| |
| RotateNoneFlipX = 4, |
| Rotate180FlipY = RotateNoneFlipX, |
| |
| Rotate90FlipX = 5, |
| Rotate270FlipY = Rotate90FlipX, |
| |
| Rotate180FlipX = 6, |
| RotateNoneFlipY = Rotate180FlipX, |
| |
| Rotate270FlipX = 7, |
| Rotate90FlipY = Rotate270FlipX |
| }; |
| |
| #ifdef __cplusplus |
| class EncoderParameter |
| { |
| public: |
| GUID Guid; |
| ULONG NumberOfValues; |
| ULONG Type; |
| VOID* Value; |
| }; |
| |
| class EncoderParameters |
| { |
| public: |
| UINT Count; |
| EncoderParameter Parameter[1]; |
| }; |
| |
| class ImageCodecInfo |
| { |
| public: |
| CLSID Clsid; |
| GUID FormatID; |
| const WCHAR* CodecName; |
| const WCHAR* DllName; |
| const WCHAR* FormatDescription; |
| const WCHAR* FilenameExtension; |
| const WCHAR* MimeType; |
| DWORD Flags; |
| DWORD Version; |
| DWORD SigCount; |
| DWORD SigSize; |
| const BYTE* SigPattern; |
| const BYTE* SigMask; |
| }; |
| |
| class BitmapData |
| { |
| public: |
| UINT Width; |
| UINT Height; |
| INT Stride; |
| Gdiplus::PixelFormat PixelFormat; |
| VOID* Scan0; |
| UINT_PTR Reserved; |
| }; |
| |
| class ImageItemData |
| { |
| public: |
| UINT Size; |
| UINT Position; |
| VOID* Desc; |
| UINT DescSize; |
| VOID* Data; |
| UINT DataSize; |
| UINT Cookie; |
| }; |
| |
| class PropertyItem |
| { |
| public: |
| PROPID id; |
| ULONG length; |
| WORD type; |
| VOID* value; |
| }; |
| |
| #else /* end of c++ typedefs */ |
| |
| typedef enum ImageLockMode ImageLockMode; |
| typedef enum RotateFlipType RotateFlipType; |
| |
| typedef struct EncoderParameter |
| { |
| GUID Guid; |
| ULONG NumberOfValues; |
| ULONG Type; |
| VOID* Value; |
| } EncoderParameter; |
| |
| typedef struct EncoderParameters |
| { |
| UINT Count; |
| EncoderParameter Parameter[1]; |
| } EncoderParameters; |
| |
| typedef struct ImageCodecInfo |
| { |
| CLSID Clsid; |
| GUID FormatID; |
| const WCHAR* CodecName; |
| const WCHAR* DllName; |
| const WCHAR* FormatDescription; |
| const WCHAR* FilenameExtension; |
| const WCHAR* MimeType; |
| DWORD Flags; |
| DWORD Version; |
| DWORD SigCount; |
| DWORD SigSize; |
| const BYTE* SigPattern; |
| const BYTE* SigMask; |
| } ImageCodecInfo; |
| |
| typedef struct BitmapData |
| { |
| UINT Width; |
| UINT Height; |
| INT Stride; |
| PixelFormat PixelFormat; |
| VOID* Scan0; |
| UINT_PTR Reserved; /* undocumented: stores the lock mode */ |
| } BitmapData; |
| |
| typedef struct ImageItemData |
| { |
| UINT Size; |
| UINT Position; |
| VOID* Desc; |
| UINT DescSize; |
| VOID* Data; |
| UINT DataSize; |
| UINT Cookie; |
| } ImageItemData; |
| |
| typedef struct PropertyItem |
| { |
| PROPID id; |
| ULONG length; |
| WORD type; |
| VOID* value; |
| } PropertyItem; |
| |
| #endif /* end of c typedefs */ |
| |
| /* property types */ |
| #define PropertyTagTypeByte 1 |
| #define PropertyTagTypeASCII 2 |
| #define PropertyTagTypeShort 3 |
| #define PropertyTagTypeLong 4 |
| #define PropertyTagTypeRational 5 |
| #define PropertyTagTypeUndefined 7 |
| #define PropertyTagTypeSLONG 9 |
| #define PropertyTagTypeSRational 10 |
| |
| /* property IDs */ |
| #define PropertyTagExifIFD 0x8769 |
| #define PropertyTagGpsIFD 0x8825 |
| |
| #define PropertyTagNewSubfileType 0x00FE |
| #define PropertyTagSubfileType 0x00FF |
| #define PropertyTagImageWidth 0x0100 |
| #define PropertyTagImageHeight 0x0101 |
| #define PropertyTagBitsPerSample 0x0102 |
| #define PropertyTagCompression 0x0103 |
| #define PropertyTagPhotometricInterp 0x0106 |
| #define PropertyTagThreshHolding 0x0107 |
| #define PropertyTagCellWidth 0x0108 |
| #define PropertyTagCellHeight 0x0109 |
| #define PropertyTagFillOrder 0x010A |
| #define PropertyTagDocumentName 0x010D |
| #define PropertyTagImageDescription 0x010E |
| #define PropertyTagEquipMake 0x010F |
| #define PropertyTagEquipModel 0x0110 |
| #define PropertyTagStripOffsets 0x0111 |
| #define PropertyTagOrientation 0x0112 |
| #define PropertyTagSamplesPerPixel 0x0115 |
| #define PropertyTagRowsPerStrip 0x0116 |
| #define PropertyTagStripBytesCount 0x0117 |
| #define PropertyTagMinSampleValue 0x0118 |
| #define PropertyTagMaxSampleValue 0x0119 |
| #define PropertyTagXResolution 0x011A |
| #define PropertyTagYResolution 0x011B |
| #define PropertyTagPlanarConfig 0x011C |
| #define PropertyTagPageName 0x011D |
| #define PropertyTagXPosition 0x011E |
| #define PropertyTagYPosition 0x011F |
| #define PropertyTagFreeOffset 0x0120 |
| #define PropertyTagFreeByteCounts 0x0121 |
| #define PropertyTagGrayResponseUnit 0x0122 |
| #define PropertyTagGrayResponseCurve 0x0123 |
| #define PropertyTagT4Option 0x0124 |
| #define PropertyTagT6Option 0x0125 |
| #define PropertyTagResolutionUnit 0x0128 |
| #define PropertyTagPageNumber 0x0129 |
| #define PropertyTagTransferFuncition 0x012D |
| #define PropertyTagSoftwareUsed 0x0131 |
| #define PropertyTagDateTime 0x0132 |
| #define PropertyTagArtist 0x013B |
| #define PropertyTagHostComputer 0x013C |
| #define PropertyTagPredictor 0x013D |
| #define PropertyTagWhitePoint 0x013E |
| #define PropertyTagPrimaryChromaticities 0x013F |
| #define PropertyTagColorMap 0x0140 |
| #define PropertyTagHalftoneHints 0x0141 |
| #define PropertyTagTileWidth 0x0142 |
| #define PropertyTagTileLength 0x0143 |
| #define PropertyTagTileOffset 0x0144 |
| #define PropertyTagTileByteCounts 0x0145 |
| #define PropertyTagInkSet 0x014C |
| #define PropertyTagInkNames 0x014D |
| #define PropertyTagNumberOfInks 0x014E |
| #define PropertyTagDotRange 0x0150 |
| #define PropertyTagTargetPrinter 0x0151 |
| #define PropertyTagExtraSamples 0x0152 |
| #define PropertyTagSampleFormat 0x0153 |
| #define PropertyTagSMinSampleValue 0x0154 |
| #define PropertyTagSMaxSampleValue 0x0155 |
| #define PropertyTagTransferRange 0x0156 |
| |
| #define PropertyTagJPEGProc 0x0200 |
| #define PropertyTagJPEGInterFormat 0x0201 |
| #define PropertyTagJPEGInterLength 0x0202 |
| #define PropertyTagJPEGRestartInterval 0x0203 |
| #define PropertyTagJPEGLosslessPredictors 0x0205 |
| #define PropertyTagJPEGPointTransforms 0x0206 |
| #define PropertyTagJPEGQTables 0x0207 |
| #define PropertyTagJPEGDCTables 0x0208 |
| #define PropertyTagJPEGACTables 0x0209 |
| |
| #define PropertyTagYCbCrCoefficients 0x0211 |
| #define PropertyTagYCbCrSubsampling 0x0212 |
| #define PropertyTagYCbCrPositioning 0x0213 |
| #define PropertyTagREFBlackWhite 0x0214 |
| |
| #define PropertyTagICCProfile 0x8773 |
| |
| #define PropertyTagGamma 0x0301 |
| #define PropertyTagICCProfileDescriptor 0x0302 |
| #define PropertyTagSRGBRenderingIntent 0x0303 |
| |
| #define PropertyTagImageTitle 0x0320 |
| #define PropertyTagCopyright 0x8298 |
| |
| #define PropertyTagResolutionXUnit 0x5001 |
| #define PropertyTagResolutionYUnit 0x5002 |
| #define PropertyTagResolutionXLengthUnit 0x5003 |
| #define PropertyTagResolutionYLengthUnit 0x5004 |
| #define PropertyTagPrintFlags 0x5005 |
| #define PropertyTagPrintFlagsVersion 0x5006 |
| #define PropertyTagPrintFlagsCrop 0x5007 |
| #define PropertyTagPrintFlagsBleedWidth 0x5008 |
| #define PropertyTagPrintFlagsBleedWidthScale 0x5009 |
| #define PropertyTagHalftoneLPI 0x500A |
| #define PropertyTagHalftoneLPIUnit 0x500B |
| #define PropertyTagHalftoneDegree 0x500C |
| #define PropertyTagHalftoneShape 0x500D |
| #define PropertyTagHalftoneMisc 0x500E |
| #define PropertyTagHalftoneScreen 0x500F |
| #define PropertyTagJPEGQuality 0x5010 |
| #define PropertyTagGridSize 0x5011 |
| #define PropertyTagThumbnailFormat 0x5012 |
| #define PropertyTagThumbnailWidth 0x5013 |
| #define PropertyTagThumbnailHeight 0x5014 |
| #define PropertyTagThumbnailColorDepth 0x5015 |
| #define PropertyTagThumbnailPlanes 0x5016 |
| #define PropertyTagThumbnailRawBytes 0x5017 |
| #define PropertyTagThumbnailSize 0x5018 |
| #define PropertyTagThumbnailCompressedSize 0x5019 |
| #define PropertyTagColorTransferFunction 0x501A |
| #define PropertyTagThumbnailData 0x501B |
| |
| #define PropertyTagThumbnailImageWidth 0x5020 |
| #define PropertyTagThumbnailImageHeight 0x5021 |
| #define PropertyTagThumbnailBitsPerSample 0x5022 |
| #define PropertyTagThumbnailCompression 0x5023 |
| #define PropertyTagThumbnailPhotometricInterp 0x5024 |
| #define PropertyTagThumbnailImageDescription 0x5025 |
| #define PropertyTagThumbnailEquipMake 0x5026 |
| #define PropertyTagThumbnailEquipModel 0x5027 |
| #define PropertyTagThumbnailStripOffsets 0x5028 |
| #define PropertyTagThumbnailOrientation 0x5029 |
| #define PropertyTagThumbnailSamplesPerPixel 0x502A |
| #define PropertyTagThumbnailRowsPerStrip 0x502B |
| #define PropertyTagThumbnailStripBytesCount 0x502C |
| #define PropertyTagThumbnailResolutionX 0x502D |
| #define PropertyTagThumbnailResolutionY 0x502E |
| #define PropertyTagThumbnailPlanarConfig 0x502F |
| #define PropertyTagThumbnailResolutionUnit 0x5030 |
| #define PropertyTagThumbnailTransferFunction 0x5031 |
| #define PropertyTagThumbnailSoftwareUsed 0x5032 |
| #define PropertyTagThumbnailDateTime 0x5033 |
| #define PropertyTagThumbnailArtist 0x5034 |
| #define PropertyTagThumbnailWhitePoint 0x5035 |
| #define PropertyTagThumbnailPrimaryChromaticities 0x5036 |
| #define PropertyTagThumbnailYCbCrCoefficients 0x5037 |
| #define PropertyTagThumbnailYCbCrSubsampling 0x5038 |
| #define PropertyTagThumbnailYCbCrPositioning 0x5039 |
| #define PropertyTagThumbnailRefBlackWhite 0x503A |
| #define PropertyTagThumbnailCopyRight 0x503B |
| |
| #define PropertyTagLuminanceTable 0x5090 |
| #define PropertyTagChrominanceTable 0x5091 |
| |
| #define PropertyTagFrameDelay 0x5100 |
| #define PropertyTagLoopCount 0x5101 |
| #define PropertyTagGlobalPalette 0x5102 |
| #define PropertyTagIndexBackground 0x5103 |
| #define PropertyTagIndexTransparent 0x5104 |
| |
| #define PropertyTagPixelUnit 0x5110 |
| #define PropertyTagPixelPerUnitX 0x5111 |
| #define PropertyTagPixelPerUnitY 0x5112 |
| #define PropertyTagPaletteHistogram 0x5113 |
| |
| #define PropertyTagExifExposureTime 0x829A |
| #define PropertyTagExifFNumber 0x829D |
| |
| #define PropertyTagExifExposureProg 0x8822 |
| #define PropertyTagExifSpectralSense 0x8824 |
| #define PropertyTagExifISOSpeed 0x8827 |
| #define PropertyTagExifOECF 0x8828 |
| |
| #define PropertyTagExifVer 0x9000 |
| #define PropertyTagExifDTOrig 0x9003 |
| #define PropertyTagExifDTDigitized 0x9004 |
| |
| #define PropertyTagExifCompConfig 0x9101 |
| #define PropertyTagExifCompBPP 0x9102 |
| |
| #define PropertyTagExifShutterSpeed 0x9201 |
| #define PropertyTagExifAperture 0x9202 |
| #define PropertyTagExifBrightness 0x9203 |
| #define PropertyTagExifExposureBias 0x9204 |
| #define PropertyTagExifMaxAperture 0x9205 |
| #define PropertyTagExifSubjectDist 0x9206 |
| #define PropertyTagExifMeteringMode 0x9207 |
| #define PropertyTagExifLightSource 0x9208 |
| #define PropertyTagExifFlash 0x9209 |
| #define PropertyTagExifFocalLength 0x920A |
| #define PropertyTagExifMakerNote 0x927C |
| #define PropertyTagExifUserComment 0x9286 |
| #define PropertyTagExifDTSubsec 0x9290 |
| #define PropertyTagExifDTOrigSS 0x9291 |
| #define PropertyTagExifDTDigSS 0x9292 |
| |
| #define PropertyTagExifFPXVer 0xA000 |
| #define PropertyTagExifColorSpace 0xA001 |
| #define PropertyTagExifPixXDim 0xA002 |
| #define PropertyTagExifPixYDim 0xA003 |
| #define PropertyTagExifRelatedWav 0xA004 |
| #define PropertyTagExifInterop 0xA005 |
| #define PropertyTagExifFlashEnergy 0xA20B |
| #define PropertyTagExifSpatialFR 0xA20C |
| #define PropertyTagExifFocalXRes 0xA20E |
| #define PropertyTagExifFocalYRes 0xA20F |
| #define PropertyTagExifFocalResUnit 0xA210 |
| #define PropertyTagExifSubjectLoc 0xA214 |
| #define PropertyTagExifExposureIndex 0xA215 |
| #define PropertyTagExifSensingMethod 0xA217 |
| #define PropertyTagExifFileSource 0xA300 |
| #define PropertyTagExifSceneType 0xA301 |
| #define PropertyTagExifCfaPattern 0xA302 |
| |
| #define PropertyTagGpsVer 0x0000 |
| #define PropertyTagGpsLatitudeRef 0x0001 |
| #define PropertyTagGpsLatitude 0x0002 |
| #define PropertyTagGpsLongitudeRef 0x0003 |
| #define PropertyTagGpsLongitude 0x0004 |
| #define PropertyTagGpsAltitudeRef 0x0005 |
| #define PropertyTagGpsAltitude 0x0006 |
| #define PropertyTagGpsGpsTime 0x0007 |
| #define PropertyTagGpsGpsSatellites 0x0008 |
| #define PropertyTagGpsGpsStatus 0x0009 |
| #define PropertyTagGpsGpsMeasureMode 0x000A |
| #define PropertyTagGpsGpsDop 0x000B |
| #define PropertyTagGpsSpeedRef 0x000C |
| #define PropertyTagGpsSpeed 0x000D |
| #define PropertyTagGpsTrackRef 0x000E |
| #define PropertyTagGpsTrack 0x000F |
| #define PropertyTagGpsImgDirRef 0x0010 |
| #define PropertyTagGpsImgDir 0x0011 |
| #define PropertyTagGpsMapDatum 0x0012 |
| #define PropertyTagGpsDestLatRef 0x0013 |
| #define PropertyTagGpsDestLat 0x0014 |
| #define PropertyTagGpsDestLongRef 0x0015 |
| #define PropertyTagGpsDestLong 0x0016 |
| #define PropertyTagGpsDestBearRef 0x0017 |
| #define PropertyTagGpsDestBear 0x0018 |
| #define PropertyTagGpsDestDistRef 0x0019 |
| #define PropertyTagGpsDestDist 0x001A |
| |
| #endif /* _GDIPLUSIMAGING_H */ |