/* * 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); DEFINE_GUID(EncoderSaveFlag, 0x292266fc, 0xac40, 0x47bf, 0x8c, 0xfc, 0xa8, 0x5b, 0x89, 0xa6, 0x55, 0xde); 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 */