Code:
' Original .NET translation by Avery P. - 07/29/2002 ' ' Translated to PB/WIN by Patrice Terrier - 08/17/2002 ' [email protected] ' ' WinLIFT 2.5 provides a full encapsulation of GDIPLUS with several helper functions and several detailed examples (see PICTURE.EXE), ' there is also a common dialog using thumbnails for preview of all supported GDI+ graphic file formats. ' The WinLIFT GDI+ package includes the full source code to everything !. ' You can download a trial version of WinLIFT GDI+ that will show you GDIPLUS in action from this url: ' http://www.zapsolution.com/preview/WinLIFT.EXE ' ' NOTES: ' - All GDI+ Strings expect and return ONLY Unicode - you'll need to use UCODE$ when using them. ' - Functions with an I (i) at the end are non-floating point declarations ' - If a function without the I (i) at the end doesn't work, try the one with (if any). ' If neither version worked, then you did something wrong, or the API *may* be misdeclared. ' - The word (ALL) next to an API set mean all of the functions are declared. (ALL GDI+ functions are now declared 8/12/2002) ' - Search for "TODO:" (no quotes) to see what still needs done within the file. If there is no TODO, there is nothing to do! ' - If you want to get all of the encoder or decoder file extensions, MIME type, or other values, try to use the Get__Clsid functions as a base. ' - If you don't like the idea of converting strings to and from Unicode, change all As String occurances in the API declarations ' to As Long, and use the StrPtr() result instead. I opted to use the As String for clarity, especially since the GDI+ docs are ' geared toward how to use the C++ classes. ' - I may have misdeclared the IStream functions as I'm not too familiar with them. Do a "TODO:" or "IStream" search (no quotes) to see the ' IStream functions. All parameters except one where declared as 'IStream* stream' in C++. The exception has a comment above it. The possible ' problem is that the IStream parameters should be passed ByRef instead of ByVal. If they are wrong, please tell me! ' - APIs are in ordered groups, just like the C++ header, but the groups themselves are not in the same order as in the C++ headers. ' ' WARNINGS: ' - Some of the structs may not work, though I didn't test them all fully. ' If a function causes a GPF or performs unexpectedly, the declarations are probably a bit off. ' - Some APIs that have a ByRef parameter may expect an array; check the MSDN to find out if unsure. ' '----------------------------------------------- ' GDI+ Constants '----------------------------------------------- %LF_FACESIZE = 32 ' Shift count and bit mask for A, R, G, B components %AlphaShift = 24 %RedShift = 16 %GreenShift = 8 %BlueShift = 0 %AlphaMask = &HFF000000 %RedMask = &HFF0000 %GreenMask = &HFF00 %BlueMask = &HFF ' Image property types %PropertyTagTypeByte = 1 %PropertyTagTypeASCII = 2 %PropertyTagTypeShort = 3 %PropertyTagTypeLong = 4 %PropertyTagTypeRational = 5 %PropertyTagTypeUndefined = 7 %PropertyTagTypeSLONG = 9 %PropertyTagTypeSRational = 10 ' Image property ID tags %PropertyTagExifIFD = &H8769 %PropertyTagGpsIFD = &H8825 %PropertyTagNewSubfileType = &HFE %PropertyTagSubfileType = &HFF %PropertyTagImageWidth = &H100 %PropertyTagImageHeight = &H101 %PropertyTagBitsPerSample = &H102 %PropertyTagCompression = &H103 %PropertyTagPhotometricInterp = &H106 %PropertyTagThreshHolding = &H107 %PropertyTagCellWidth = &H108 %PropertyTagCellHeight = &H109 %PropertyTagFillOrder = &H10A %PropertyTagDocumentName = &H10D %PropertyTagImageDescription = &H10E %PropertyTagEquipMake = &H10F %PropertyTagEquipModel = &H110 %PropertyTagStripOffsets = &H111 %PropertyTagOrientation = &H112 %PropertyTagSamplesPerPixel = &H115 %PropertyTagRowsPerStrip = &H116 %PropertyTagStripBytesCount = &H117 %PropertyTagMinSampleValue = &H118 %PropertyTagMaxSampleValue = &H119 %PropertyTagXResolution = &H11A ' Image resolution in width direction %PropertyTagYResolution = &H11B ' Image resolution in height direction %PropertyTagPlanarConfig = &H11C ' Image data arrangement %PropertyTagPageName = &H11D %PropertyTagXPosition = &H11E %PropertyTagYPosition = &H11F %PropertyTagFreeOffset = &H120 %PropertyTagFreeByteCounts = &H121 %PropertyTagGrayResponseUnit = &H122 %PropertyTagGrayResponseCurve = &H123 %PropertyTagT4Option = &H124 %PropertyTagT6Option = &H125 %PropertyTagResolutionUnit = &H128 ' Unit of X and Y resolution %PropertyTagPageNumber = &H129 %PropertyTagTransferFuncition = &H12D %PropertyTagSoftwareUsed = &H131 %PropertyTagDateTime = &H132 %PropertyTagArtist = &H13B %PropertyTagHostComputer = &H13C %PropertyTagPredictor = &H13D %PropertyTagWhitePoint = &H13E %PropertyTagPrimaryChromaticities = &H13F %PropertyTagColorMap = &H140 %PropertyTagHalftoneHints = &H141 %PropertyTagTileWidth = &H142 %PropertyTagTileLength = &H143 %PropertyTagTileOffset = &H144 %PropertyTagTileByteCounts = &H145 %PropertyTagInkSet = &H14C %PropertyTagInkNames = &H14D %PropertyTagNumberOfInks = &H14E %PropertyTagDotRange = &H150 %PropertyTagTargetPrinter = &H151 %PropertyTagExtraSamples = &H152 %PropertyTagSampleFormat = &H153 %PropertyTagSMinSampleValue = &H154 %PropertyTagSMaxSampleValue = &H155 %PropertyTagTransferRange = &H156 %PropertyTagJPEGProc = &H200 %PropertyTagJPEGInterFormat = &H201 %PropertyTagJPEGInterLength = &H202 %PropertyTagJPEGRestartInterval = &H203 %PropertyTagJPEGLosslessPredictors = &H205 %PropertyTagJPEGPointTransforms = &H206 %PropertyTagJPEGQTables = &H207 %PropertyTagJPEGDCTables = &H208 %PropertyTagJPEGACTables = &H209 %PropertyTagYCbCrCoefficients = &H211 %PropertyTagYCbCrSubsampling = &H212 %PropertyTagYCbCrPositioning = &H213 %PropertyTagREFBlackWhite = &H214 %PropertyTagICCProfile = &H8773 ' This TAG is defined by ICC ' for embedded ICC in TIFF %PropertyTagGamma = &H301 %PropertyTagICCProfileDescriptor = &H302 %PropertyTagSRGBRenderingIntent = &H303 %PropertyTagImageTitle = &H320 %PropertyTagCopyright = &H8298 ' Extra TAGs (Like Adobe Image Information tags etc.) %PropertyTagResolutionXUnit = &H5001 %PropertyTagResolutionYUnit = &H5002 %PropertyTagResolutionXLengthUnit = &H5003 %PropertyTagResolutionYLengthUnit = &H5004 %PropertyTagPrintFlags = &H5005 %PropertyTagPrintFlagsVersion = &H5006 %PropertyTagPrintFlagsCrop = &H5007 %PropertyTagPrintFlagsBleedWidth = &H5008 %PropertyTagPrintFlagsBleedWidthScale = &H5009 %PropertyTagHalftoneLPI = &H500A %PropertyTagHalftoneLPIUnit = &H500B %PropertyTagHalftoneDegree = &H500C %PropertyTagHalftoneShape = &H500D %PropertyTagHalftoneMisc = &H500E %PropertyTagHalftoneScreen = &H500F %PropertyTagJPEGQuality = &H5010 %PropertyTagGridSize = &H5011 %PropertyTagThumbnailFormat = &H5012 ' 1 = JPEG, 0 = RAW RGB %PropertyTagThumbnailWidth = &H5013 %PropertyTagThumbnailHeight = &H5014 %PropertyTagThumbnailColorDepth = &H5015 %PropertyTagThumbnailPlanes = &H5016 %PropertyTagThumbnailRawBytes = &H5017 %PropertyTagThumbnailSize = &H5018 %PropertyTagThumbnailCompressedSize = &H5019 %PropertyTagColorTransferFunction = &H501A %PropertyTagThumbnailData = &H501B ' RAW thumbnail bits in JPEG format or RGB format ' depends on PropertyTagThumbnailFormat ' Thumbnail related TAGs %PropertyTagThumbnailImageWidth = &H5020 ' Thumbnail width %PropertyTagThumbnailImageHeight = &H5021 ' Thumbnail height %PropertyTagThumbnailBitsPerSample = &H5022 ' Number of bits per component %PropertyTagThumbnailCompression = &H5023 ' Compression Scheme %PropertyTagThumbnailPhotometricInterp = &H5024 ' Pixel composition %PropertyTagThumbnailImageDescription = &H5025 ' Image Tile %PropertyTagThumbnailEquipMake = &H5026 ' Manufacturer of Image Input equipment %PropertyTagThumbnailEquipModel = &H5027 ' Model of Image input equipment %PropertyTagThumbnailStripOffsets = &H5028 ' Image data location %PropertyTagThumbnailOrientation = &H5029 ' Orientation of image %PropertyTagThumbnailSamplesPerPixel = &H502A ' Number of components %PropertyTagThumbnailRowsPerStrip = &H502B ' Number of rows per strip %PropertyTagThumbnailStripBytesCount = &H502C ' Bytes per compressed strip %PropertyTagThumbnailResolutionX = &H502D ' Resolution in width direction %PropertyTagThumbnailResolutionY = &H502E ' Resolution in height direction %PropertyTagThumbnailPlanarConfig = &H502F ' Image data arrangement %PropertyTagThumbnailResolutionUnit = &H5030 ' Unit of X and Y resolution %PropertyTagThumbnailTransferFunction = &H5031 ' Transfer function %PropertyTagThumbnailSoftwareUsed = &H5032 ' Software used %PropertyTagThumbnailDateTime = &H5033 ' File change date and time %PropertyTagThumbnailArtist = &H5034 ' Person who created the image %PropertyTagThumbnailWhitePoint = &H5035 ' White point chromaticity %PropertyTagThumbnailPrimaryChromaticities = &H5036 ' Chromaticities of primaries %PropertyTagThumbnailYCbCrCoefficients = &H5037 ' Color space transformation coefficients %PropertyTagThumbnailYCbCrSubsampling = &H5038 ' Subsampling ratio of Y to C %PropertyTagThumbnailYCbCrPositioning = &H5039 ' Y and C position %PropertyTagThumbnailRefBlackWhite = &H503A ' Pair of black and white reference values %PropertyTagThumbnailCopyRight = &H503B ' CopyRight holder %PropertyTagLuminanceTable = &H5090 %PropertyTagChrominanceTable = &H5091 %PropertyTagFrameDelay = &H5100 %PropertyTagLoopCount = &H5101 %PropertyTagPixelUnit = &H5110 ' Unit specifier for pixel/unit %PropertyTagPixelPerUnitX = &H5111 ' Pixels per unit in X %PropertyTagPixelPerUnitY = &H5112 ' Pixels per unit in Y %PropertyTagPaletteHistogram = &H5113 ' Palette histogram ' EXIF specific tag %PropertyTagExifExposureTime = &H829A %PropertyTagExifFNumber = &H829D %PropertyTagExifExposureProg = &H8822 %PropertyTagExifSpectralSense = &H8824 %PropertyTagExifISOSpeed = &H8827 %PropertyTagExifOECF = &H8828 %PropertyTagExifVer = &H9000 %PropertyTagExifDTOrig = &H9003 ' Date & time of original %PropertyTagExifDTDigitized = &H9004 ' Date & time of digital data generation %PropertyTagExifCompConfig = &H9101 %PropertyTagExifCompBPP = &H9102 %PropertyTagExifShutterSpeed = &H9201 %PropertyTagExifAperture = &H9202 %PropertyTagExifBrightness = &H9203 %PropertyTagExifExposureBias = &H9204 %PropertyTagExifMaxAperture = &H9205 %PropertyTagExifSubjectDist = &H9206 %PropertyTagExifMeteringMode = &H9207 %PropertyTagExifLightSource = &H9208 %PropertyTagExifFlash = &H9209 %PropertyTagExifFocalLength = &H920A %PropertyTagExifMakerNote = &H927C %PropertyTagExifUserComment = &H9286 %PropertyTagExifDTSubsec = &H9290 ' Date & Time subseconds %PropertyTagExifDTOrigSS = &H9291 ' Date & Time original subseconds %PropertyTagExifDTDigSS = &H9292 ' Date & TIme digitized subseconds %PropertyTagExifFPXVer = &HA000 %PropertyTagExifColorSpace = &HA001 %PropertyTagExifPixXDim = &HA002 %PropertyTagExifPixYDim = &HA003 %PropertyTagExifRelatedWav = &HA004 ' related sound file %PropertyTagExifInterop = &HA005 %PropertyTagExifFlashEnergy = &HA20B %PropertyTagExifSpatialFR = &HA20C ' Spatial Frequency Response %PropertyTagExifFocalXRes = &HA20E ' Focal Plane X Resolution %PropertyTagExifFocalYRes = &HA20F ' Focal Plane Y Resolution %PropertyTagExifFocalResUnit = &HA210 ' Focal Plane Resolution Unit %PropertyTagExifSubjectLoc = &HA214 %PropertyTagExifExposureIndex = &HA215 %PropertyTagExifSensingMethod = &HA217 %PropertyTagExifFileSource = &HA300 %PropertyTagExifSceneType = &HA301 %PropertyTagExifCfaPattern = &HA302 %PropertyTagGpsVer = &H0 %PropertyTagGpsLatitudeRef = &H1 %PropertyTagGpsLatitude = &H2 %PropertyTagGpsLongitudeRef = &H3 %PropertyTagGpsLongitude = &H4 %PropertyTagGpsAltitudeRef = &H5 %PropertyTagGpsAltitude = &H6 %PropertyTagGpsGpsTime = &H7 %PropertyTagGpsGpsSatellites = &H8 %PropertyTagGpsGpsStatus = &H9 %PropertyTagGpsGpsMeasureMode = &HA %PropertyTagGpsGpsDop = &HB ' Measurement precision %PropertyTagGpsSpeedRef = &HC %PropertyTagGpsSpeed = &HD %PropertyTagGpsTrackRef = &HE %PropertyTagGpsTrack = &HF %PropertyTagGpsImgDirRef = &H10 %PropertyTagGpsImgDir = &H11 %PropertyTagGpsMapDatum = &H12 %PropertyTagGpsDestLatRef = &H13 %PropertyTagGpsDestLat = &H14 %PropertyTagGpsDestLongRef = &H15 %PropertyTagGpsDestLong = &H16 %PropertyTagGpsDestBearRef = &H17 %PropertyTagGpsDestBear = &H18 %PropertyTagGpsDestDistRef = &H19 %PropertyTagGpsDestDist = &H1A ' TODO: Make a function to get these GUIDs ' CLSIDs (aka GUIDs) used with the GdipGetImageRawFormat function: 'DEFINE_GUID(ImageFormatUndefined, 0xb96b3ca9,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 'DEFINE_GUID(ImageFormatMemoryBMP, 0xb96b3caa,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 'DEFINE_GUID(ImageFormatBMP, 0xb96b3cab,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 'DEFINE_GUID(ImageFormatEMF, 0xb96b3cac,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 'DEFINE_GUID(ImageFormatWMF, 0xb96b3cad,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 'DEFINE_GUID(ImageFormatJPEG, 0xb96b3cae,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 'DEFINE_GUID(ImageFormatPNG, 0xb96b3caf,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 'DEFINE_GUID(ImageFormatGIF, 0xb96b3cb0,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 'DEFINE_GUID(ImageFormatTIFF, 0xb96b3cb1,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 'DEFINE_GUID(ImageFormatEXIF, 0xb96b3cb2,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 'DEFINE_GUID(ImageFormatIcon, 0xb96b3cb5,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); '----------------------------------------------- ' The following types are NOT in the GDI+ docs, per se '----------------------------------------------- TYPE POINTF ' aka PointF x AS SINGLE y AS SINGLE END TYPE TYPE RECTF ' aka RectF nLEFT AS SINGLE nTop AS SINGLE nRIGHT AS SINGLE nBottom AS SINGLE END TYPE TYPE SIZEF ' aka SizeF cx AS SINGLE cy AS SINGLE END TYPE ' Custom types TYPE COLORBYTES BlueByte AS BYTE GreenByte AS BYTE RedByte AS BYTE AlphaByte AS BYTE END TYPE TYPE COLORLONG longval AS LONG END TYPE '----------------------------------------------- ' GDI+ Structs/Types '----------------------------------------------- TYPE GdiplusStartupInput GdiplusVersion AS LONG ' Must be 1 DebugEventCallback AS LONG ' Ignored on free builds SuppressBackgroundThread AS LONG ' FALSE unless you're prepared to call ' the hook/unhook functions properly SuppressExternalCodecs AS LONG ' FALSE unless you want GDI+ only to use ' its internal image codecs. END TYPE 'TYPE GUIDAPI ' Data1 AS LONG ' Data2 AS INTEGER ' Data3 AS INTEGER ' Data4(0 TO 7) AS BYTE 'END TYPE TYPE ImageCodecInfo ClassID AS GUIDAPI FormatID AS GUIDAPI CodecName AS LONG ' String Pointer; const WCHAR* DllName AS LONG ' String Pointer; const WCHAR* FormatDescription AS LONG ' String Pointer; const WCHAR* FilenameExtension AS LONG ' String Pointer; const WCHAR* MimeType AS LONG ' String Pointer; const WCHAR* flags AS LONG Version AS LONG SigCount AS LONG SigSize AS LONG SigPattern AS LONG ' Byte Array Pointer; BYTE* SigMask AS LONG ' Byte Array Pointer; BYTE* END TYPE ' Encoder Parameter structure TYPE EncoderParameter pGUID AS GUIDAPI ' GUID of the parameter NumberOfValues AS LONG ' Number of the parameter values; usually 1 vType AS LONG ' EncoderParameterValueType ' Value type, like ValueTypeLONG etc. value AS LONG ' A pointer to the parameter values END TYPE ' Encoder Parameters structure TYPE EncoderParameters Count AS LONG ' Number of parameters in this structure; Should be 1 Parameter AS EncoderParameter ' Parameter values; this CAN be an array!!!! (Use CopyMemory and a string or byte array as workaround) END TYPE TYPE ColorPalette flags AS LONG ' Palette flags Count AS LONG ' Number of color entries Entries AS LONG ' Palette color entries; this CAN be an array!!!! (Use CopyMemory and a string or byte array as workaround) END TYPE TYPE ColorMatrix m(0 TO 4, 0 TO 4) AS SINGLE END TYPE ' Information about image pixel data TYPE BitmapData nWIDTH AS LONG nHeight AS LONG stride AS LONG PixelFormat AS LONG scan0 AS LONG Reserved AS LONG END TYPE TYPE PathData Count AS LONG pPoint AS LONG ' Pointer to POINTF array types AS LONG ' Pointer to BYTE array END TYPE TYPE PropertyItem propId AS LONG ' ID of this property length AS LONG ' Length of the property value, in bytes nType AS INTEGER ' Type of the value, as one of TAG_TYPE_XXX ' defined above value AS LONG ' property value END TYPE TYPE LOGFONTA lfHeight AS LONG lfWidth AS LONG lfEscapement AS LONG lfOrientation AS LONG lfWeight AS LONG lfItalic AS BYTE lfUnderline AS BYTE lfStrikeOut AS BYTE lfCharSet AS BYTE lfOutPrecision AS BYTE lfClipPrecision AS BYTE lfQuality AS BYTE lfPitchAndFamily AS BYTE lfFaceName AS STRING * %LF_FACESIZE END TYPE TYPE LOGFONTW lfHeight AS LONG lfWidth AS LONG lfEscapement AS LONG lfOrientation AS LONG lfWeight AS LONG lfItalic AS BYTE lfUnderline AS BYTE lfStrikeOut AS BYTE lfCharSet AS BYTE lfOutPrecision AS BYTE lfClipPrecision AS BYTE lfQuality AS BYTE lfPitchAndFamily AS BYTE lfFaceName(1 TO %LF_FACESIZE) AS INTEGER ' TODO: Spruce this up a bit END TYPE TYPE CharacterRange First AS LONG length AS LONG END TYPE TYPE PWMFRect16 nLEFT AS INTEGER nTop AS INTEGER nRIGHT AS INTEGER nBottom AS INTEGER END TYPE TYPE WmfPlaceableFileHeader Key AS LONG ' GDIP_WMF_PLACEABLEKEY Hmf AS INTEGER ' Metafile HANDLE number (always 0) boundingBox AS PWMFRect16 ' Coordinates in metafile units Inch AS INTEGER ' Number of metafile units per inch Reserved AS LONG ' Reserved (always 0) Checksum AS INTEGER ' Checksum value for previous 10 WORDs END TYPE TYPE ENHMETAHEADER3 itype AS LONG ' Record type EMR_HEADER nSize AS LONG ' Record size in bytes. This may be greater ' than the sizeof(ENHMETAHEADER). rclBounds AS RECTL ' Inclusive-inclusive bounds in device units rclFrame AS RECTL ' Inclusive-inclusive Picture Frame .01mm unit dSignature AS LONG ' Signature. Must be ENHMETA_SIGNATURE. nVersion AS LONG ' Version number nBytes AS LONG ' Size of the metafile in bytes nRecords AS LONG ' Number of records in the metafile nHandles AS INTEGER ' Number of handles in the handle table ' Handle index zero is reserved. sReserved AS INTEGER ' Reserved. Must be zero. nDescription AS LONG ' Number of chars in the unicode desc string ' This is 0 if there is no description string offDescription AS LONG ' Offset to the metafile description record. ' This is 0 if there is no description string nPalEntries AS LONG ' Number of entries in the metafile palette. szlDevice AS SIZEL ' Size of the reference device in pels szlMillimeters AS SIZEL ' Size of the reference device in millimeters END TYPE TYPE MetafileHeader mType AS LONG ' MetafileType SIZE AS LONG ' Size of the metafile (in bytes) Version AS LONG ' EMF+, EMF, or WMF version EmfPlusFlags AS LONG DpiX AS SINGLE DpiY AS SINGLE x AS LONG ' Bounds in device units y AS LONG nWIDTH AS LONG Height AS LONG 'Union '{ ' METAHEADER WmfHeader ' ENHMETAHEADER3 EmfHeader '} EmfHeader AS ENHMETAHEADER3 ' NOTE: You'll have to use CopyMemory to view the METAHEADER type EmfPlusHeaderSize AS LONG ' size of the EMF+ header in file LogicalDpiX AS LONG ' Logical Dpi of reference Hdc LogicalDpiY AS LONG ' usually valid only for EMF+ END TYPE '----------------------------------------------- ' GDI+ Enums '----------------------------------------------- %UnitWorld = 0 ' World coordinate (non-physical unit) %UnitDisplay = 1 ' Variable -- for PageTransform only %UnitPixel = 2 ' Each unit is one device pixel. %UnitPoint = 3 ' Each unit is a printer's point, or 1/72 inch. %UnitInch = 4 ' Each unit is 1 inch. %UnitDocument = 5 ' Each unit is 1/300 inch. %UnitMillimeter = 6 ' Each unit is 1 millimeter. ' Common color constants ' NOTE: Original enum was unnamed %ColorsAliceBlue = &HFFF0F8FF %ColorsAntiqueWhite = &HFFFAEBD7 %ColorsAqua = &HFF00FFFF %ColorsAquamarine = &HFF7FFFD4 %ColorsAzure = &HFFF0FFFF %ColorsBeige = &HFFF5F5DC %ColorsBisque = &HFFFFE4C4 %ColorsBlack = &HFF000000 %ColorsBlanchedAlmond = &HFFFFEBCD %ColorsBlue = &HFF0000FF %ColorsBlueViolet = &HFF8A2BE2 %ColorsBrown = &HFFA52A2A %ColorsBurlyWood = &HFFDEB887 %ColorsCadetBlue = &HFF5F9EA0 %ColorsChartreuse = &HFF7FFF00 %ColorsChocolate = &HFFD2691E %ColorsCoral = &HFFFF7F50 %ColorsCornflowerBlue = &HFF6495ED %ColorsCornsilk = &HFFFFF8DC %ColorsCrimson = &HFFDC143C %ColorsCyan = &HFF00FFFF %ColorsDarkBlue = &HFF00008B %ColorsDarkCyan = &HFF008B8B %ColorsDarkGoldenrod = &HFFB8860B %ColorsDarkGray = &HFFA9A9A9 %ColorsDarkGreen = &HFF006400 %ColorsDarkKhaki = &HFFBDB76B %ColorsDarkMagenta = &HFF8B008B %ColorsDarkOliveGreen = &HFF556B2F %ColorsDarkOrange = &HFFFF8C00 %ColorsDarkOrchid = &HFF9932CC %ColorsDarkRed = &HFF8B0000 %ColorsDarkSalmon = &HFFE9967A %ColorsDarkSeaGreen = &HFF8FBC8B %ColorsDarkSlateBlue = &HFF483D8B %ColorsDarkSlateGray = &HFF2F4F4F %ColorsDarkTurquoise = &HFF00CED1 %ColorsDarkViolet = &HFF9400D3 %ColorsDeepPink = &HFFFF1493 %ColorsDeepSkyBlue = &HFF00BFFF %ColorsDimGray = &HFF696969 %ColorsDodgerBlue = &HFF1E90FF %ColorsFirebrick = &HFFB22222 %ColorsFloralWhite = &HFFFFFAF0 %ColorsForestGreen = &HFF228B22 %ColorsFuchsia = &HFFFF00FF %ColorsGainsboro = &HFFDCDCDC %ColorsGhostWhite = &HFFF8F8FF %ColorsGold = &HFFFFD700 %ColorsGoldenrod = &HFFDAA520 %ColorsGray = &HFF808080 %ColorsGreen = &HFF008000 %ColorsGreenYellow = &HFFADFF2F %ColorsHoneydew = &HFFF0FFF0 %ColorsHotPink = &HFFFF69B4 %ColorsIndianRed = &HFFCD5C5C %ColorsIndigo = &HFF4B0082 %ColorsIvory = &HFFFFFFF0 %ColorsKhaki = &HFFF0E68C %ColorsLavender = &HFFE6E6FA %ColorsLavenderBlush = &HFFFFF0F5 %ColorsLawnGreen = &HFF7CFC00 %ColorsLemonChiffon = &HFFFFFACD %ColorsLightBlue = &HFFADD8E6 %ColorsLightCoral = &HFFF08080 %ColorsLightCyan = &HFFE0FFFF %ColorsLightGoldenrodYellow = &HFFFAFAD2 %ColorsLightGray = &HFFD3D3D3 %ColorsLightGreen = &HFF90EE90 %ColorsLightPink = &HFFFFB6C1 %ColorsLightSalmon = &HFFFFA07A %ColorsLightSeaGreen = &HFF20B2AA %ColorsLightSkyBlue = &HFF87CEFA %ColorsLightSlateGray = &HFF778899 %ColorsLightSteelBlue = &HFFB0C4DE %ColorsLightYellow = &HFFFFFFE0 %ColorsLime = &HFF00FF00 %ColorsLimeGreen = &HFF32CD32 %ColorsLinen = &HFFFAF0E6 %ColorsMagenta = &HFFFF00FF %ColorsMaroon = &HFF800000 %ColorsMediumAquamarine = &HFF66CDAA %ColorsMediumBlue = &HFF0000CD %ColorsMediumOrchid = &HFFBA55D3 %ColorsMediumPurple = &HFF9370DB %ColorsMediumSeaGreen = &HFF3CB371 %ColorsMediumSlateBlue = &HFF7B68EE %ColorsMediumSpringGreen = &HFF00FA9A %ColorsMediumTurquoise = &HFF48D1CC %ColorsMediumVioletRed = &HFFC71585 %ColorsMidnightBlue = &HFF191970 %ColorsMintCream = &HFFF5FFFA %ColorsMistyRose = &HFFFFE4E1 %ColorsMoccasin = &HFFFFE4B5 %ColorsNavajoWhite = &HFFFFDEAD %ColorsNavy = &HFF000080 %ColorsOldLace = &HFFFDF5E6 %ColorsOlive = &HFF808000 %ColorsOliveDrab = &HFF6B8E23 %ColorsOrange = &HFFFFA500 %ColorsOrangeRed = &HFFFF4500 %ColorsOrchid = &HFFDA70D6 %ColorsPaleGoldenrod = &HFFEEE8AA %ColorsPaleGreen = &HFF98FB98 %ColorsPaleTurquoise = &HFFAFEEEE %ColorsPaleVioletRed = &HFFDB7093 %ColorsPapayaWhip = &HFFFFEFD5 %ColorsPeachPuff = &HFFFFDAB9 %ColorsPeru = &HFFCD853F %ColorsPink = &HFFFFC0CB %ColorsPlum = &HFFDDA0DD %ColorsPowderBlue = &HFFB0E0E6 %ColorsPurple = &HFF800080 %ColorsRed = &HFFFF0000 %ColorsRosyBrown = &HFFBC8F8F %ColorsRoyalBlue = &HFF4169E1 %ColorsSaddleBrown = &HFF8B4513 %ColorsSalmon = &HFFFA8072 %ColorsSandyBrown = &HFFF4A460 %ColorsSeaGreen = &HFF2E8B57 %ColorsSeaShell = &HFFFFF5EE %ColorsSienna = &HFFA0522D %ColorsSilver = &HFFC0C0C0 %ColorsSkyBlue = &HFF87CEEB %ColorsSlateBlue = &HFF6A5ACD %ColorsSlateGray = &HFF708090 %ColorsSnow = &HFFFFFAFA %ColorsSpringGreen = &HFF00FF7F %ColorsSteelBlue = &HFF4682B4 %ColorsTan = &HFFD2B48C %ColorsTeal = &HFF008080 %ColorsThistle = &HFFD8BFD8 %ColorsTomato = &HFFFF6347 %ColorsTransparent = &HFFFFFF %ColorsTurquoise = &HFF40E0D0 %ColorsViolet = &HFFEE82EE %ColorsWheat = &HFFF5DEB3 %ColorsWhite = &HFFFFFFFF %ColorsWhiteSmoke = &HFFF5F5F5 %ColorsYellow = &HFFFFFF00 %ColorsYellowGreen = &HFF9ACD32 ' NOTE: Enums evaluate to a Long %GpStatusOk = 0 %GpStatusGenericError = 1 %GpStatusInvalidParameter = 2 %GpStatusOutOfMemory = 3 %GpStatusObjectBusy = 4 %GpStatusInsufficientBuffer = 5 %GpStatusNotImplemented = 6 %GpStatusWin32Error = 7 %GpStatusWrongState = 8 %GpStatusAborted = 9 %GpStatusFileNotFound = 10 %GpStatusValueOverflow = 11 %GpStatusAccessDenied = 12 %GpStatusUnknownImageFormat = 13 %GpStatusFontFamilyNotFound = 14 %GpStatusFontStyleNotFound = 15 %GpStatusNotTrueTypeFont = 16 %GpStatusUnsupportedGdiplusVersion = 17 %GpStatusGdiplusNotInitialized = 18 %GpStatusPropertyNotFound = 19 %GpStatusPropertyNotSupported = 20 ' Quality mode constants %QualityModeInvalid = -1 %QualityModeDefault = 0 %QualityModeLow = 1 ' Best performance %QualityModeHigh = 2 ' Best rendering quality ' Alpha Compositing mode constants %CompositingModeSourceOver = 0 %CompositingModeSourceCopy = 1 ' Alpha Compositing quality constants %CompositingQualityInvalid = %QualityModeInvalid %CompositingQualityDefault = %QualityModeDefault %CompositingQualityHighSpeed = %QualityModeLow %CompositingQualityHighQuality = %QualityModeHigh %CompositingQualityGammaCorrected = 3 %CompositingQualityAssumeLinear = 4 ' Generic font families %GenericFontFamilySerif = 0 %GenericFontFamilySansSerif = 1 %GenericFontFamilyMonospace = 2 ' FontStyle: face types and common styles %FontStyleRegular = 0 %FontStyleBold = 1 %FontStyleItalic = 2 %FontStyleBoldItalic = 3 %FontStyleUnderline = 4 %FontStyleStrikeout = 8 %SmoothingModeInvalid = %QualityModeInvalid %SmoothingModeDefault = %QualityModeDefault %SmoothingModeHighSpeed = %QualityModeLow %SmoothingModeHighQuality = %QualityModeHigh %SmoothingModeNone = 3 %SmoothingModeAntiAlias = 4 %FillModeAlternate = 0 %FillModeWinding = 1 %InterpolationModeInvalid = %QualityModeInvalid %InterpolationModeDefault = %QualityModeDefault %InterpolationModeLowQuality = %QualityModeLow %InterpolationModeHighQuality = %QualityModeHigh %InterpolationModeBilinear = 3 %InterpolationModeBicubic = 4 %InterpolationModeNearestNeighbor = 5 %InterpolationModeHighQualityBilinear = 6 %InterpolationModeHighQualityBicubic = 7 ' Various wrap modes for brushes %WrapModeTile = 0 %WrapModeTileFlipX = 1 %WrapModeTileFlipY = 2 %WrapModeTileFlipXY = 3 %WrapModeClamp = 4 %LinearGradientModeHorizontal = 0 %LinearGradientModeVertical = 1 %LinearGradientModeForwardDiagonal = 2 %LinearGradientModeBackwardDiagonal = 3 %ImageTypeUnknown = 0 %ImageTypeBitmap = 1 %ImageTypeMetafile = 2 ' Various Hatch Styles %HatchStyleHorizontal = 0 %HatchStyleVertical = 1 %HatchStyleForwardDiagonal = 2 %HatchStyleBackwardDiagonal = 3 %HatchStyleCross = 4 %HatchStyleDiagonalCross = 5 %HatchStyle05Percent = 6 %HatchStyle10Percent = 7 %HatchStyle20Percent = 8 %HatchStyle25Percent = 9 %HatchStyle30Percent = 10 %HatchStyle40Percent = 11 %HatchStyle50Percent = 12 %HatchStyle60Percent = 13 %HatchStyle70Percent = 14 %HatchStyle75Percent = 15 %HatchStyle80Percent = 16 %HatchStyle90Percent = 17 %HatchStyleLightDownwardDiagonal = 18 %HatchStyleLightUpwardDiagonal = 19 %HatchStyleDarkDownwardDiagonal = 20 %HatchStyleDarkUpwardDiagonal = 21 %HatchStyleWideDownwardDiagonal = 22 %HatchStyleWideUpwardDiagonal = 23 %HatchStyleLightVertical = 24 %HatchStyleLightHorizontal = 25 %HatchStyleNarrowVertical = 26 %HatchStyleNarrowHorizontal = 27 %HatchStyleDarkVertical = 28 %HatchStyleDarkHorizontal = 29 %HatchStyleDashedDownwardDiagonal = 30 %HatchStyleDashedUpwardDiagonal = 31 %HatchStyleDashedHorizontal = 32 %HatchStyleDashedVertical = 33 %HatchStyleSmallConfetti = 34 %HatchStyleLargeConfetti = 35 %HatchStyleZigZag = 36 %HatchStyleWave = 37 %HatchStyleDiagonalBrick = 38 %HatchStyleHorizontalBrick = 39 %HatchStyleWeave = 40 %HatchStylePlaid = 41 %HatchStyleDivot = 42 %HatchStyleDottedGrid = 43 %HatchStyleDottedDiamond = 44 %HatchStyleShingle = 45 %HatchStyleTrellis = 46 %HatchStyleSphere = 47 %HatchStyleSmallGrid = 48 %HatchStyleSmallCheckerBoard = 49 %HatchStyleLargeCheckerBoard = 50 %HatchStyleOutlinedDiamond = 51 %HatchStyleSolidDiamond = 52 %HatchStyleTotal = 53 %HatchStyleLargeGrid = %HatchStyleCross %HatchStyleMin = %HatchStyleHorizontal %HatchStyleMax = %HatchStyleTotal - 1 %MatrixOrderPrepend = 0 %MatrixOrderAppend = 1 %ColorAdjustTypeDefault = 0 %ColorAdjustTypeBitmap = 1 %ColorAdjustTypeBrush = 2 %ColorAdjustTypePen = 3 %ColorAdjustTypeText = 4 %ColorAdjustTypeCount = 5 %ColorAdjustTypeAny = 6 ' Reserved %ColorChannelFlagsC = 0 %ColorChannelFlagsM = 1 %ColorChannelFlagsY = 2 %ColorChannelFlagsK = 3 %ColorChannelFlagsLast = 4 %ColorMatrixFlagsDefault = 0 %ColorMatrixFlagsSkipGrays = 1 %ColorMatrixFlagsAltGray = 2 %PenAlignmentCenter = 0 %PenAlignmentInset = 1 %BrushTypeSolidColor = 0 %BrushTypeHatchFill = 1 %BrushTypeTextureFill = 2 %BrushTypePathGradient = 3 %BrushTypeLinearGradient = 4 %DashStyleSolid = 0 %DashStyleDash = 1 %DashStyleDot = 2 %DashStyleDashDot = 3 %DashStyleDashDotDot = 4 %DashStyleCustom = 5 ' Dash cap constants %DashCapFlat = 0 %DashCapRound = 2 %DashCapTriangle = 3 ' Line cap constants (only the lowest 8 bits are used). %LineCapFlat = 0 %LineCapSquare = 1 %LineCapRound = 2 %LineCapTriangle = 3 %LineCapNoAnchor = &H10 ' corresponds to flat cap %LineCapSquareAnchor = &H11 ' corresponds to square cap %LineCapRoundAnchor = &H12 ' corresponds to round cap %LineCapDiamondAnchor = &H13 ' corresponds to triangle cap %LineCapArrowAnchor = &H14 ' no correspondence %LineCapCustom = &HFF ' custom cap %LineCapAnchorMask = &HF0 ' mask to check for anchor or not. ' Custom Line cap type constants %CustomLineCapTypeDefault = 0 %CustomLineCapTypeAdjustableArrow = 1 ' Line join constants %LineJoinMiter = 0 %LineJoinBevel = 1 %LineJoinRound = 2 %LineJoinMiterClipped = 3 ' Pen's Fill types %PenTypeSolidColor = %BrushTypeSolidColor %PenTypeHatchFill = %BrushTypeHatchFill %PenTypeTextureFill = %BrushTypeTextureFill %PenTypePathGradient = %BrushTypePathGradient %PenTypeLinearGradient = %BrushTypeLinearGradient %PenTypeUnknown = -1 %WarpModePerspective = 0 %WarpModeBilinear = 1 ' Region Comine Modes %CombineModeReplace = 0 %CombineModeIntersect = 1 %CombineModeUnion = 2 %CombineModeXor = 3 %CombineModeExclude = 4 %CombineModeComplement = 5 ' (Exclude From) %RotateNoneFlipNone = 0 %Rotate90FlipNone = 1 %Rotate180FlipNone = 2 %Rotate270FlipNone = 3 %RotateNoneFlipX = 4 %Rotate90FlipX = 5 %Rotate180FlipX = 6 %Rotate270FlipX = 7 %RotateNoneFlipY = %Rotate180FlipX %Rotate90FlipY = %Rotate270FlipX %Rotate180FlipY = %RotateNoneFlipX %Rotate270FlipY = %Rotate90FlipX %RotateNoneFlipXY = %Rotate180FlipNone %Rotate90FlipXY = %Rotate270FlipNone %Rotate180FlipXY = %RotateNoneFlipNone %Rotate270FlipXY = %Rotate90FlipNone ' String format flags ' ' DirectionRightToLeft - For horizontal text, the reading order is ' right to left. This value is called ' the base embedding level by the Unicode ' bidirectional engine. ' For vertical text, columns are read from ' right to left. ' By default, horizontal or vertical text is ' read from left to right. ' ' DirectionVertical - Individual lines of text are vertical. In ' each line, characters progress from top to ' bottom. ' By default, lines of text are horizontal, ' each new line below the previous line. ' ' NoFitBlackBox - Allows parts of glyphs to overhang the ' bounding rectangle. ' By default glyphs are first aligned ' inside the margines, then any glyphs which ' still overhang the bounding box are ' repositioned to avoid any overhang. ' For example when an italic ' lower case letter f in a font such as ' Garamond is aligned at the far left of a ' rectangle, the lower part of the f will ' reach slightly further left than the left ' edge of the rectangle. Setting this flag ' will ensure the character aligns visually ' with the lines above and below, but may ' cause some pixels outside the formatting ' rectangle to be clipped or painted. ' ' DisplayFormatControl - Causes control characters such as the ' left-to-right mark to be shown in the ' output with a representative glyph. ' ' NoFontFallback - Disables fallback to alternate fonts for ' characters not supported in the requested ' font. Any missing characters will be ' be displayed with the fonts missing glyph, ' usually an open square. ' ' NoWrap - Disables wrapping of text between lines ' when formatting within a rectangle. ' NoWrap is implied when a point is passed ' instead of a rectangle, or when the ' specified rectangle has a zero line length. ' ' NoClip - By default text is clipped to the ' formatting rectangle. Setting NoClip ' allows overhanging pixels to affect the ' device outside the formatting rectangle. ' Pixels at the end of the line may be ' affected if the glyphs overhang their ' cells, and either the NoFitBlackBox flag ' has been set, or the glyph extends to far ' to be fitted. ' Pixels above/before the first line or ' below/after the last line may be affected ' if the glyphs extend beyond their cell ' ascent / descent. This can occur rarely ' with unusual diacritic mark combinations. %StringFormatFlagsDirectionRightToLeft = &H1 %StringFormatFlagsDirectionVertical = &H2 %StringFormatFlagsNoFitBlackBox = &H4 %StringFormatFlagsDisplayFormatControl = &H20 %StringFormatFlagsNoFontFallback = &H400 %StringFormatFlagsMeasureTrailingSpaces = &H800 %StringFormatFlagsNoWrap = &H1000 %StringFormatFlagsLineLimit = &H2000 %StringFormatFlagsNoClip = &H4000 %StringTrimmingNone = 0 %StringTrimmingCharacter = 1 %StringTrimmingWord = 2 %StringTrimmingEllipsisCharacter = 3 %StringTrimmingEllipsisWord = 4 %StringTrimmingEllipsisPath = 5 ' National language digit substitution %StringDigitSubstituteUser = 0 ' As NLS setting %StringDigitSubstituteNone = 1 %StringDigitSubstituteNational = 2 %StringDigitSubstituteTraditional = 3 ' Hotkey prefix interpretation %HotkeyPrefixNone = 0 %HotkeyPrefixShow = 1 %HotkeyPrefixHide = 2 ' Left edge for left-to-right text, ' right for right-to-left text, ' and top for vertical %StringAlignmentNear = 0 %StringAlignmentCenter = 1 %StringAlignmentFar = 2 %FlushIntentionFlush = 0 ' Flush all batched rendering operations %FlushIntentionSync = 1 ' Flush all batched rendering operations ' and wait for them to complete ' Image encoder parameter related types %EncoderParameterValueTypeByte = 1 ' 8-bit unsigned int %EncoderParameterValueTypeASCII = 2 ' 8-bit byte containing one 7-bit ASCII ' code. NULL terminated. %EncoderParameterValueTypeShort = 3 ' 16-bit unsigned int %EncoderParameterValueTypeLong = 4 ' 32-bit unsigned int %EncoderParameterValueTypeRational = 5 ' Two Longs. The first Long is the ' numerator the second Long expresses the ' denomintor. %EncoderParameterValueTypeLongRange = 6 ' Two longs which specify a range of ' integer values. The first Long specifies ' the lower end and the second one ' specifies the higher end. All values ' are inclusive at both ends %EncoderParameterValueTypeUndefined = 7 ' 8-bit byte that can take any value ' depending on field definition %EncoderParameterValueTypeRationalRange = 8 ' Two Rationals. The first Rational ' specifies the lower end and the second ' specifies the higher end. All values ' are inclusive at both ends ' Image encoder value types %EncoderValueColorTypeCMYK = 0 %EncoderValueColorTypeYCCK = 1 %EncoderValueCompressionLZW = 2 %EncoderValueCompressionCCITT3 = 3 %EncoderValueCompressionCCITT4 = 4 %EncoderValueCompressionRle = 5 %EncoderValueCompressionNone = 6 %EncoderValueScanMethodInterlaced = 7 %EncoderValueScanMethodNonInterlaced = 8 %EncoderValueVersionGif87 = 9 %EncoderValueVersionGif89 = 10 %EncoderValueRenderProgressive = 11 %EncoderValueRenderNonProgressive = 12 %EncoderValueTransformRotate90 = 13 %EncoderValueTransformRotate180 = 14 %EncoderValueTransformRotate270 = 15 %EncoderValueTransformFlipHorizontal = 16 %EncoderValueTransformFlipVertical = 17 %EncoderValueMultiFrame = 18 %EncoderValueLastFrame = 19 %EncoderValueFlush = 20 %EncoderValueFrameDimensionTime = 21 %EncoderValueFrameDimensionResolution = 22 %EncoderValueFrameDimensionPage = 23 ' CLSIDs (aka GUIDs) used with the EncoderParameter structure: ' NOTE: You won't find this enum in the GDI+ Docs. It was created as ' part of the workaround for the constant GUID problem. %EncoderCompression = 0 %EncoderColorDepth = 1 %EncoderScanMethod = 2 %EncoderVersion = 3 %EncoderRenderMethod = 4 %EncoderQuality = 5 %EncoderTransformation = 6 %EncoderLuminanceTable = 7 %EncoderChrominanceTable = 8 %EncoderSaveFlag = 9 %PixelOffsetModeInvalid = %QualityModeInvalid %PixelOffsetModeDefault = %QualityModeDefault %PixelOffsetModeHighSpeed = %QualityModeLow %PixelOffsetModeHighQuality = %QualityModeHigh %PixelOffsetModeNone = 3 ' No pixel offset %PixelOffsetModeHalf = 4 ' Offset by -0.5 -0.5 for fast anti-alias perf %TextRenderingHintSystemDefault = 0 ' Glyph with system default rendering hint %TextRenderingHintSingleBitPerPixelGridFit = 1 ' Glyph bitmap with hinting %TextRenderingHintSingleBitPerPixel = 2 ' Glyph bitmap without hinting %TextRenderingHintAntiAliasGridFit = 3 ' Glyph anti-alias bitmap with hinting %TextRenderingHintAntiAlias = 4 ' Glyph anti-alias bitmap without hinting %TextRenderingHintClearTypeGridFit = 5 ' Glyph CT bitmap with hinting %MetafileTypeInvalid = 0 ' Invalid metafile %MetafileTypeWmf = 1 ' Standard WMF %MetafileTypeWmfPlaceable = 2 ' Placeable WMF %MetafileTypeEmf = 3 ' EMF (not EMF+) %MetafileTypeEmfPlusOnly = 4 ' EMF+ without dual down-level records %MetafileTypeEmfPlusDual = 5 ' EMF+ with dual down-level records ' Specifies the type of EMF to record %EmfTypeEmfOnly = %MetafileTypeEmf ' no EMF+ only EMF %EmfTypeEmfPlusOnly = %MetafileTypeEmfPlusOnly ' no EMF only EMF+ %EmfTypeEmfPlusDual = %MetafileTypeEmfPlusDual ' both EMF+ and EMF ' EMF+ Persistent object types %ObjectTypeInvalid = 0 %ObjectTypeBrush = 1 %ObjectTypePen = 2 %ObjectTypePath = 3 %ObjectTypeRegion = 4 %ObjectTypeImage = 5 %ObjectTypeFont = 6 %ObjectTypeStringFormat = 7 %ObjectTypeImageAttributes = 8 %ObjectTypeCustomLineCap = 9 %ObjectTypeMax = %ObjectTypeCustomLineCap %ObjectTypeMin = %ObjectTypeBrush ' The frameRect for creating a metafile can be specified in any of these ' units. There is an extra frame unit value (MetafileFrameUnitGdi) so ' that units can be supplied in the same units that GDI expects for ' frame rects -- these units are in .01 (1/100ths) millimeter units ' as defined by GDI. %MetafileFrameUnitPixel = %UnitPixel %MetafileFrameUnitPoint = %UnitPoint %MetafileFrameUnitInch = %UnitInch %MetafileFrameUnitDocument = %UnitDocument %MetafileFrameUnitMillimeter = %UnitMillimeter %MetafileFrameUnitGdi = 7 ' GDI compatible .01 MM units ' Coordinate space identifiers %CoordinateSpaceWorld = 0 %CoordinateSpacePage = 1 %CoordinateSpaceDevice = 2
------------------
Patrice Terrier
mailto

Comment