File "GdiPlus.inc"
Path: /nimoworld/inc/GdiPlus.inc
File size: 155.03 KB
MIME-type:
Charset: utf-8
' Original .NET translation by Avery P. - 07/29/2002
'
' Translated to PB/WIN by Patrice Terrier - 08/17/2002
' pterrier@zapsolution.com
'
' 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.
'
'MACRO GUIDAPI=GUID
'-----------------------------------------------
' 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 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 ASCIIZ * %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 AS ASCIIZ * %LF_FACESIZE
END TYPE
#IF %DEF(%UNICODE)
TYPE LOGFONT
LOGFONTW
END TYPE
#ELSE
TYPE LOGFONT
LOGFONTA
END TYPE
#ENDIF ' UNICODE
TYPE COLORMAP
cmFrom AS DWORD
cmTo AS DWORD
END TYPE
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 GUID
NumberOfValues AS DWORD
dwType AS DWORD
Value AS DWORD
END TYPE
' Encoder Parameters structure
TYPE EncoderParameters
COUNT AS LONG ' Number of parameters in this structure; Should be 1
Parameter(0) 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
'-----------------------------------------------
' APIs
'-----------------------------------------------
DECLARE FUNCTION GdiplusStartup LIB "gdiplus.dll" ALIAS "GdiplusStartup" (token AS LONG, inputbuf AS GdiplusStartupInput, OPTIONAL BYVAL outputbuf AS LONG) AS LONG
DECLARE FUNCTION GdiplusShutdown LIB "gdiplus.dll" ALIAS "GdiplusShutdown" (BYVAL token AS LONG) AS LONG
' Graphics Functions (ALL)
DECLARE FUNCTION GdipFlush LIB "gdiplus.dll" ALIAS "GdipFlush" (BYVAL graphics AS LONG, BYVAL intention AS LONG) AS LONG
DECLARE FUNCTION GdipCreateFromHDC LIB "gdiplus.dll" ALIAS "GdipCreateFromHDC" (BYVAL hdc AS LONG, graphics AS LONG) AS LONG
DECLARE FUNCTION GdipCreateFromHWND LIB "gdiplus.dll" ALIAS "GdipCreateFromHWND" (BYVAL hwnd AS LONG, graphics AS LONG) AS LONG
DECLARE FUNCTION GdipCreateFromHWNDICM LIB "gdiplus.dll" ALIAS "GdipCreateFromHWNDICM" (BYVAL hwnd AS LONG, graphics AS LONG) AS LONG
DECLARE FUNCTION GdipDeleteGraphics LIB "gdiplus.dll" ALIAS "GdipDeleteGraphics" (BYVAL graphics AS LONG) AS LONG
DECLARE FUNCTION GdipGetDC LIB "gdiplus.dll" ALIAS "GdipGetDC" (BYVAL graphics AS LONG, hdc AS LONG) AS LONG
DECLARE FUNCTION GdipReleaseDC LIB "gdiplus.dll" ALIAS "GdipReleaseDC" (BYVAL graphics AS LONG, BYVAL hdc AS LONG) AS LONG
DECLARE FUNCTION GdipSetCompositingMode LIB "gdiplus.dll" ALIAS "GdipSetCompositingMode" (BYVAL graphics AS LONG, BYVAL CompositingMd AS LONG) AS LONG
DECLARE FUNCTION GdipGetCompositingMode LIB "gdiplus.dll" ALIAS "GdipGetCompositingMode" (BYVAL graphics AS LONG, CompositingMd AS LONG) AS LONG
DECLARE FUNCTION GdipSetRenderingOrigin LIB "gdiplus.dll" ALIAS "GdipSetRenderingOrigin" (BYVAL graphics AS LONG, BYVAL x AS LONG, BYVAL y AS LONG) AS LONG
DECLARE FUNCTION GdipGetRenderingOrigin LIB "gdiplus.dll" ALIAS "GdipGetRenderingOrigin" (BYVAL graphics AS LONG, x AS LONG, y AS LONG) AS LONG
DECLARE FUNCTION GdipSetCompositingQuality LIB "gdiplus.dll" ALIAS "GdipSetCompositingQuality" (BYVAL graphics AS LONG, BYVAL CompositingQlty AS LONG) AS LONG
DECLARE FUNCTION GdipGetCompositingQuality LIB "gdiplus.dll" ALIAS "GdipGetCompositingQuality" (BYVAL graphics AS LONG, CompositingQlty AS LONG) AS LONG
DECLARE FUNCTION GdipSetSmoothingMode LIB "gdiplus.dll" ALIAS "GdipSetSmoothingMode" (BYVAL graphics AS LONG, BYVAL SmoothingMd AS LONG) AS LONG
DECLARE FUNCTION GdipGetSmoothingMode LIB "gdiplus.dll" ALIAS "GdipGetSmoothingMode" (BYVAL graphics AS LONG, SmoothingMd AS LONG) AS LONG
DECLARE FUNCTION GdipSetPixelOffsetMode LIB "gdiplus.dll" ALIAS "GdipSetPixelOffsetMode" (BYVAL graphics AS LONG, BYVAL PixOffsetMode AS LONG) AS LONG
DECLARE FUNCTION GdipGetPixelOffsetMode LIB "gdiplus.dll" ALIAS "GdipGetPixelOffsetMode" (BYVAL graphics AS LONG, PixOffsetMode AS LONG) AS LONG
DECLARE FUNCTION GdipSetTextRenderingHint LIB "gdiplus.dll" ALIAS "GdipSetTextRenderingHint" (BYVAL graphics AS LONG, BYVAL MODE AS LONG) AS LONG
DECLARE FUNCTION GdipGetTextRenderingHint LIB "gdiplus.dll" ALIAS "GdipGetTextRenderingHint" (BYVAL graphics AS LONG, MODE AS LONG) AS LONG
DECLARE FUNCTION GdipSetTextContrast LIB "gdiplus.dll" ALIAS "GdipSetTextContrast" (BYVAL graphics AS LONG, BYVAL contrast AS LONG) AS LONG
DECLARE FUNCTION GdipGetTextContrast LIB "gdiplus.dll" ALIAS "GdipGetTextContrast" (BYVAL graphics AS LONG, contrast AS LONG) AS LONG
DECLARE FUNCTION GdipSetInterpolationMode LIB "gdiplus.dll" ALIAS "GdipSetInterpolationMode" (BYVAL graphics AS LONG, BYVAL interpolation AS LONG) AS LONG
DECLARE FUNCTION GdipGetInterpolationMode LIB "gdiplus.dll" ALIAS "GdipGetInterpolationMode" (BYVAL graphics AS LONG, interpolation AS LONG) AS LONG
DECLARE FUNCTION GdipSetWorldTransform LIB "gdiplus.dll" ALIAS "GdipSetWorldTransform" (BYVAL graphics AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipResetWorldTransform LIB "gdiplus.dll" ALIAS "GdipResetWorldTransform" (BYVAL graphics AS LONG) AS LONG
DECLARE FUNCTION GdipMultiplyWorldTransform LIB "gdiplus.dll" ALIAS "GdipMultiplyWorldTransform" (BYVAL graphics AS LONG, BYVAL matrix AS LONG, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipTranslateWorldTransform LIB "gdiplus.dll" ALIAS "GdipTranslateWorldTransform" (BYVAL graphics AS LONG, BYVAL dx AS SINGLE, BYVAL dy AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipScaleWorldTransform LIB "gdiplus.dll" ALIAS "GdipScaleWorldTransform" (BYVAL graphics AS LONG, BYVAL sx AS SINGLE, BYVAL sy AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipRotateWorldTransform LIB "gdiplus.dll" ALIAS "GdipRotateWorldTransform" (BYVAL graphics AS LONG, BYVAL angle AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipGetWorldTransform LIB "gdiplus.dll" ALIAS "GdipGetWorldTransform" (BYVAL graphics AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipResetPageTransform LIB "gdiplus.dll" ALIAS "GdipResetPageTransform" (BYVAL graphics AS LONG) AS LONG
DECLARE FUNCTION GdipGetPageUnit LIB "gdiplus.dll" ALIAS "GdipGetPageUnit" (BYVAL graphics AS LONG, unit AS LONG) AS LONG
DECLARE FUNCTION GdipGetPageScale LIB "gdiplus.dll" ALIAS "GdipGetPageScale" (BYVAL graphics AS LONG, sscale AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetPageUnit LIB "gdiplus.dll" ALIAS "GdipSetPageUnit" (BYVAL graphics AS LONG, BYVAL unit AS LONG) AS LONG
DECLARE FUNCTION GdipSetPageScale LIB "gdiplus.dll" ALIAS "GdipSetPageScale" (BYVAL graphics AS LONG, BYVAL sscale AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetDpiX LIB "gdiplus.dll" ALIAS "GdipGetDpiX" (BYVAL graphics AS LONG, dpi AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetDpiY LIB "gdiplus.dll" ALIAS "GdipGetDpiY" (BYVAL graphics AS LONG, dpi AS SINGLE) AS LONG
DECLARE FUNCTION GdipTransformPoints LIB "gdiplus.dll" ALIAS "GdipTransformPoints" (BYVAL graphics AS LONG, BYVAL destSpace AS LONG, BYVAL srcSpace AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipTransformPointsI LIB "gdiplus.dll" ALIAS "GdipTransformPointsI" (BYVAL graphics AS LONG, BYVAL destSpace AS LONG, BYVAL srcSpace AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetNearestColor LIB "gdiplus.dll" ALIAS "GdipGetNearestColor" (BYVAL graphics AS LONG, argb AS LONG) AS LONG
' Creates the Win9x Halftone Palette (even on NT) with correct Desktop colors
DECLARE FUNCTION GdipCreateHalftonePalette LIB "gdiplus.dll" ALIAS "GdipCreateHalftonePalette" () AS LONG
DECLARE FUNCTION GdipDrawLine LIB "gdiplus.dll" ALIAS "GdipDrawLine" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL x1 AS SINGLE, BYVAL y1 AS SINGLE, BYVAL x2 AS SINGLE, BYVAL y2 AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawLineI LIB "gdiplus.dll" ALIAS "GdipDrawLineI" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL x1 AS LONG, BYVAL y1 AS LONG, BYVAL x2 AS LONG, BYVAL y2 AS LONG) AS LONG
DECLARE FUNCTION GdipDrawLines LIB "gdiplus.dll" ALIAS "GdipDrawLines" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawLinesI LIB "gdiplus.dll" ALIAS "GdipDrawLinesI" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawArc LIB "gdiplus.dll" ALIAS "GdipDrawArc" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE, BYVAL startAngle AS SINGLE, BYVAL sweepAngle AS SINGLE)AS _
LONG
DECLARE FUNCTION GdipDrawArcI LIB "gdiplus.dll" ALIAS "GdipDrawArcI" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG, BYVAL startAngle AS SINGLE, BYVAL sweepAngle AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawBezier LIB "gdiplus.dll" ALIAS "GdipDrawBezier" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL x1 AS SINGLE, BYVAL y1 AS SINGLE, BYVAL x2 AS SINGLE, BYVAL y2 AS SINGLE, _
BYVAL x3 AS SINGLE, BYVAL y3 AS SINGLE, BYVAL x4 AS SINGLE, BYVAL y4 AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawBezierI LIB "gdiplus.dll" ALIAS "GdipDrawBezierI" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL x1 AS LONG, BYVAL y1 AS LONG, BYVAL x2 AS LONG, BYVAL y2 AS LONG, _
BYVAL x3 AS LONG, BYVAL y3 AS LONG, BYVAL x4 AS LONG, BYVAL y4 AS LONG) AS LONG
DECLARE FUNCTION GdipDrawBeziers LIB "gdiplus.dll" ALIAS "GdipDrawBeziers" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawBeziersI LIB "gdiplus.dll" ALIAS "GdipDrawBeziersI" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawRectangle LIB "gdiplus.dll" ALIAS "GdipDrawRectangle" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawRectangleI LIB "gdiplus.dll" ALIAS "GdipDrawRectangleI" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG) AS LONG
DECLARE FUNCTION GdipDrawRectangles LIB "gdiplus.dll" ALIAS "GdipDrawRectangles" (BYVAL graphics AS LONG, BYVAL pen AS LONG, rects AS RECTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawRectanglesI LIB "gdiplus.dll" ALIAS "GdipDrawRectanglesI" (BYVAL graphics AS LONG, BYVAL pen AS LONG, rects AS RECTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawEllipse LIB "gdiplus.dll" ALIAS "GdipDrawEllipse" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawEllipseI LIB "gdiplus.dll" ALIAS "GdipDrawEllipseI" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG) AS LONG
DECLARE FUNCTION GdipDrawPie LIB "gdiplus.dll" ALIAS "GdipDrawPie" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE, _
BYVAL startAngle AS SINGLE, BYVAL sweepAngle AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawPieI LIB "gdiplus.dll" ALIAS "GdipDrawPieI" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG, BYVAL startAngle AS SINGLE, BYVAL sweepAngle AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawPolygon LIB "gdiplus.dll" ALIAS "GdipDrawPolygon" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawPolygonI LIB "gdiplus.dll" ALIAS "GdipDrawPolygonI" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawPath LIB "gdiplus.dll" ALIAS "GdipDrawPath" (BYVAL graphics AS LONG, BYVAL pen AS LONG, BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipDrawCurve LIB "gdiplus.dll" ALIAS "GdipDrawCurve" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawCurveI LIB "gdiplus.dll" ALIAS "GdipDrawCurveI" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawCurve2 LIB "gdiplus.dll" ALIAS "GdipDrawCurve2" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG, BYVAL tension AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawCurve2I LIB "gdiplus.dll" ALIAS "GdipDrawCurve2I" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG, BYVAL tension AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawCurve3 LIB "gdiplus.dll" ALIAS "GdipDrawCurve3" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG, BYVAL offset AS LONG, BYVAL numberOfSegments AS LONG, BYVAL tension AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawCurve3I LIB "gdiplus.dll" ALIAS "GdipDrawCurve3I" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG, BYVAL offset AS LONG, BYVAL numberOfSegments AS LONG, BYVAL tension AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawClosedCurve LIB "gdiplus.dll" ALIAS "GdipDrawClosedCurve" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawClosedCurveI LIB "gdiplus.dll" ALIAS "GdipDrawClosedCurveI" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawClosedCurve2 LIB "gdiplus.dll" ALIAS "GdipDrawClosedCurve2" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG, BYVAL tension AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawClosedCurve2I LIB "gdiplus.dll" ALIAS "GdipDrawClosedCurve2I" (BYVAL graphics AS LONG, BYVAL pen AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG, BYVAL tension AS SINGLE) AS LONG
DECLARE FUNCTION GdipGraphicsClear LIB "gdiplus.dll" ALIAS "GdipGraphicsClear" (BYVAL graphics AS LONG, BYVAL lColor AS LONG) AS LONG
DECLARE FUNCTION GdipFillRectangle LIB "gdiplus.dll" ALIAS "GdipFillRectangle" (BYVAL graphics AS LONG, BYVAL brush AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE) AS LONG
DECLARE FUNCTION GdipFillRectangleI LIB "gdiplus.dll" ALIAS "GdipFillRectangleI" (BYVAL graphics AS LONG, BYVAL brush AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG) AS LONG
DECLARE FUNCTION GdipFillRectangles LIB "gdiplus.dll" ALIAS "GdipFillRectangles" (BYVAL graphics AS LONG, BYVAL brush AS LONG, rects AS RECTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipFillRectanglesI LIB "gdiplus.dll" ALIAS "GdipFillRectanglesI" (BYVAL graphics AS LONG, BYVAL brush AS LONG, rects AS RECTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipFillPolygon LIB "gdiplus.dll" ALIAS "GdipFillPolygon" (BYVAL graphics AS LONG, BYVAL brush AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG, BYVAL FillMd AS LONG) AS LONG
DECLARE FUNCTION GdipFillPolygonI LIB "gdiplus.dll" ALIAS "GdipFillPolygonI" (BYVAL graphics AS LONG, BYVAL brush AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG, BYVAL FillMd AS LONG) AS LONG
DECLARE FUNCTION GdipFillPolygon2 LIB "gdiplus.dll" ALIAS "GdipFillPolygon2" (BYVAL graphics AS LONG, BYVAL brush AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipFillPolygon2I LIB "gdiplus.dll" ALIAS "GdipFillPolygon2I" (BYVAL graphics AS LONG, BYVAL brush AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipFillEllipse LIB "gdiplus.dll" ALIAS "GdipFillEllipse" (BYVAL graphics AS LONG, BYVAL brush AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE) AS LONG
DECLARE FUNCTION GdipFillEllipseI LIB "gdiplus.dll" ALIAS "GdipFillEllipseI" (BYVAL graphics AS LONG, BYVAL brush AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG) AS LONG
DECLARE FUNCTION GdipFillPie LIB "gdiplus.dll" ALIAS "GdipFillPie" (BYVAL graphics AS LONG, BYVAL brush AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, _
BYVAL Height AS SINGLE, BYVAL startAngle AS SINGLE, BYVAL sweepAngle AS SINGLE) AS LONG
DECLARE FUNCTION GdipFillPieI LIB "gdiplus.dll" ALIAS "GdipFillPieI" (BYVAL graphics AS LONG, BYVAL brush AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG, BYVAL startAngle AS SINGLE, BYVAL sweepAngle AS SINGLE) AS LONG
DECLARE FUNCTION GdipFillPath LIB "gdiplus.dll" ALIAS "GdipFillPath" (BYVAL graphics AS LONG, BYVAL brush AS LONG, BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipFillClosedCurve LIB "gdiplus.dll" ALIAS "GdipFillClosedCurve" (BYVAL graphics AS LONG, BYVAL brush AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipFillClosedCurveI LIB "gdiplus.dll" ALIAS "GdipFillClosedCurveI" (BYVAL graphics AS LONG, BYVAL brush AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipFillClosedCurve2 LIB "gdiplus.dll" ALIAS "GdipFillClosedCurve2" (BYVAL graphics AS LONG, BYVAL brush AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG, BYVAL tension AS SINGLE, BYVAL FillMd AS LONG) AS LONG
DECLARE FUNCTION GdipFillClosedCurve2I LIB "gdiplus.dll" ALIAS "GdipFillClosedCurve2I" (BYVAL graphics AS LONG, BYVAL brush AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG, BYVAL tension AS SINGLE, BYVAL FillMd AS LONG) AS LONG
DECLARE FUNCTION GdipFillRegion LIB "gdiplus.dll" ALIAS "GdipFillRegion" (BYVAL graphics AS LONG, BYVAL brush AS LONG, BYVAL region AS LONG) AS LONG
DECLARE FUNCTION GdipDrawImage LIB "gdiplus.dll" ALIAS "GdipDrawImage" (BYVAL graphics AS LONG, BYVAL nImage AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawImageI LIB "gdiplus.dll" ALIAS "GdipDrawImageI" (BYVAL graphics AS LONG, BYVAL nImage AS LONG, BYVAL x AS LONG, BYVAL y AS LONG) AS LONG
DECLARE FUNCTION GdipDrawImageRect LIB "gdiplus.dll" ALIAS "GdipDrawImageRect" (BYVAL graphics AS LONG, BYVAL nImage AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE) AS LONG
DECLARE FUNCTION GdipDrawImageRectI LIB "gdiplus.dll" ALIAS "GdipDrawImageRectI" (BYVAL graphics AS LONG, BYVAL nImage AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG) AS LONG
DECLARE FUNCTION GdipDrawImagePoints LIB "gdiplus.dll" ALIAS "GdipDrawImagePoints" (BYVAL graphics AS LONG, BYVAL nImage AS LONG, dstpoints AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawImagePointsI LIB "gdiplus.dll" ALIAS "GdipDrawImagePointsI" (BYVAL graphics AS LONG, BYVAL nImage AS LONG, dstpoints AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipDrawImagePointRect LIB "gdiplus.dll" ALIAS "GdipDrawImagePointRect" (BYVAL graphics AS LONG, BYVAL nImage AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL srcx AS SINGLE, _
BYVAL srcy AS SINGLE, BYVAL srcwidth AS SINGLE, BYVAL srcheight AS SINGLE, BYVAL srcUnit AS LONG) AS LONG
DECLARE FUNCTION GdipDrawImagePointRectI LIB "gdiplus.dll" ALIAS "GdipDrawImagePointRectI" (BYVAL graphics AS LONG, BYVAL nImage AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL srcx AS LONG, _
BYVAL srcy AS LONG, BYVAL srcwidth AS LONG, BYVAL srcheight AS LONG, BYVAL srcUnit AS LONG) AS LONG
DECLARE FUNCTION GdipDrawImageRectRect LIB "gdiplus.dll" ALIAS "GdipDrawImageRectRect" (BYVAL graphics AS LONG, BYVAL nImage AS LONG, BYVAL dstx AS SINGLE, BYVAL dsty AS SINGLE, _
BYVAL dstwidth AS LONG, BYVAL dstheight AS SINGLE, BYVAL srcx AS SINGLE, _
BYVAL srcy AS SINGLE, BYVAL srcwidth AS SINGLE, BYVAL srcheight AS SINGLE, BYVAL srcUnit AS LONG, _
OPTIONAL BYVAL imageAttributes AS LONG, OPTIONAL BYVAL pCALLBACK AS LONG, OPTIONAL BYVAL callbackData AS LONG) AS LONG
' Callback declaration: Public Function DrawImageAbort(ByVal lpData as Long) as Long
DECLARE FUNCTION GdipDrawImageRectRectI LIB "gdiplus.dll" ALIAS "GdipDrawImageRectRectI" (BYVAL graphics AS LONG, BYVAL nImage AS LONG, BYVAL dstx AS LONG, BYVAL dsty AS LONG, _
BYVAL dstwidth AS LONG, BYVAL dstheight AS LONG, BYVAL srcx AS LONG, BYVAL srcy AS LONG, BYVAL srcwidth AS LONG, BYVAL srcheight AS LONG, BYVAL srcUnit AS LONG, _
OPTIONAL BYVAL imageAttributes AS LONG, OPTIONAL BYVAL pCALLBACK AS LONG, OPTIONAL BYVAL callbackData AS LONG) AS LONG
DECLARE FUNCTION GdipDrawImagePointsRect LIB "gdiplus.dll" ALIAS "GdipDrawImagePointsRect" (BYVAL graphics AS LONG, BYVAL nImage AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG, BYVAL srcx AS SINGLE, _
BYVAL srcy AS SINGLE, BYVAL srcwidth AS SINGLE, BYVAL srcheight AS SINGLE, BYVAL srcUnit AS LONG, OPTIONAL BYVAL imageAttributes AS LONG, OPTIONAL BYVAL pCALLBACK AS LONG, OPTIONAL BYVAL callbackData AS LONG) AS LONG
DECLARE FUNCTION GdipDrawImagePointsRectI LIB "gdiplus.dll" ALIAS "GdipDrawImagePointsRectI" (BYVAL graphics AS LONG, BYVAL nImage AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG, _
BYVAL srcx AS LONG, BYVAL srcy AS LONG, BYVAL srcwidth AS LONG, BYVAL srcheight AS LONG, BYVAL srcUnit AS LONG, OPTIONAL BYVAL imageAttributes AS LONG, OPTIONAL BYVAL pCALLBACK AS LONG, OPTIONAL BYVAL callbackData AS LONG) AS LONG
DECLARE FUNCTION GdipEnumerateMetafileDestPoint LIB "gdiplus.dll" ALIAS "GdipEnumerateMetafileDestPoint" (BYVAL graphics AS LONG, BYVAL metafile AS LONG, destPoint AS POINTF, lpEnumerateMetafileProc AS LONG, _
BYVAL callbackData AS LONG, imageAttributes AS LONG) AS LONG
' Callback declaration: Public Function EnumMetafilesProc(Byval rtype as EmfPlusRecordType, byval _ as Long, byval _ as Long, bytes as Any, byval callbackData as long) as long
DECLARE FUNCTION GdipEnumerateMetafileDestPointI LIB "gdiplus.dll" ALIAS "GdipEnumerateMetafileDestPointI" (graphics AS LONG, BYVAL metafile AS LONG, destPoint AS POINTL, _
BYVAL lpEnumerateMetafileProc AS LONG, BYVAL callbackData AS LONG, BYVAL imageAttributes AS LONG) AS LONG
DECLARE FUNCTION GdipEnumerateMetafileDestRect LIB "gdiplus.dll" ALIAS "GdipEnumerateMetafileDestRect" (BYVAL graphics AS LONG, BYVAL metafile AS LONG, destRect AS RECTF, _
lpEnumerateMetafileProc AS LONG, BYVAL callbackData AS LONG, imageAttributes AS LONG) AS LONG
DECLARE FUNCTION GdipEnumerateMetafileDestRectI LIB "gdiplus.dll" ALIAS "GdipEnumerateMetafileDestRectI" (BYVAL graphics AS LONG, BYVAL metafile AS LONG, destRect AS RECTL, _
lpEnumerateMetafileProc AS LONG, BYVAL callbackData AS LONG, imageAttributes AS LONG) AS LONG
DECLARE FUNCTION GdipEnumerateMetafileDestPoints LIB "gdiplus.dll" ALIAS "GdipEnumerateMetafileDestPoints" (BYVAL graphics AS LONG, BYVAL metafile AS LONG, _
destPoint AS POINTF, BYVAL COUNT AS LONG, lpEnumerateMetafileProc AS LONG, BYVAL callbackData AS LONG, imageAttributes AS LONG) AS LONG
DECLARE FUNCTION GdipEnumerateMetafileDestPointsI LIB "gdiplus.dll" ALIAS "GdipEnumerateMetafileDestPointsI" (BYVAL graphics AS LONG, BYVAL metafile AS LONG, _
destPoint AS POINTL, BYVAL COUNT AS LONG, lpEnumerateMetafileProc AS LONG, BYVAL callbackData AS LONG, imageAttributes AS LONG) AS LONG
DECLARE FUNCTION GdipEnumerateMetafileSrcRectDestPoint LIB "gdiplus.dll" ALIAS "GdipEnumerateMetafileSrcRectDestPoint" (BYVAL graphics AS LONG, _
BYVAL metafile AS LONG, destPoint AS POINTF, srcRect AS RECTF, BYVAL srcUnit AS LONG, BYVAL lpEnumerateMetafileProc AS LONG, BYVAL callbackData AS LONG, BYVAL imageAttributes AS LONG) AS LONG
DECLARE FUNCTION GdipEnumerateMetafileSrcRectDestPointI LIB "gdiplus.dll" ALIAS "GdipEnumerateMetafileSrcRectDestPointI" (BYVAL graphics AS LONG, _
BYVAL metafile AS LONG, destPoint AS POINTL, srcRect AS RECTL, BYVAL srcUnit AS LONG, BYVAL lpEnumerateMetafileProc AS LONG, BYVAL callbackData AS LONG, BYVAL imageAttributes AS LONG) AS LONG
DECLARE FUNCTION GdipEnumerateMetafileSrcRectDestRect LIB "gdiplus.dll" ALIAS "GdipEnumerateMetafileSrcRectDestRect" (BYVAL graphics AS LONG, BYVAL metafile AS LONG, _
destRect AS RECTF, srcRect AS RECTF, BYVAL srcUnit AS LONG, BYVAL lpEnumerateMetafileProc AS LONG, BYVAL callbackData AS LONG, BYVAL imageAttributes AS LONG) AS LONG
DECLARE FUNCTION GdipEnumerateMetafileSrcRectDestRectI LIB "gdiplus.dll" ALIAS "GdipEnumerateMetafileSrcRectDestRectI" (BYVAL graphics AS LONG, BYVAL metafile AS LONG, _
destRect AS RECTL, srcRect AS RECTL, BYVAL srcUnit AS LONG, BYVAL lpEnumerateMetafileProc AS LONG, BYVAL callbackData AS LONG, BYVAL imageAttributes AS LONG) AS LONG
DECLARE FUNCTION GdipEnumerateMetafileSrcRectDestPoints LIB "gdiplus.dll" ALIAS "GdipEnumerateMetafileSrcRectDestPoints" (BYVAL graphics AS LONG, BYVAL metafile AS LONG, _
destPoints AS POINTF, BYVAL COUNT AS LONG, srcRect AS RECTF, BYVAL srcUnit AS LONG, BYVAL lpEnumerateMetafileProc AS LONG, BYVAL callbackData AS LONG, BYVAL imageAttributes AS LONG) AS LONG
DECLARE FUNCTION GdipEnumerateMetafileSrcRectDestPointsI LIB "gdiplus.dll" ALIAS "GdipEnumerateMetafileSrcRectDestPointsI" (BYVAL graphics AS LONG, BYVAL metafile AS LONG, destPoints AS POINTL, _
BYVAL COUNT AS LONG, srcRect AS RECTL, BYVAL srcUnit AS LONG, BYVAL lpEnumerateMetafileProc AS LONG, BYVAL callbackData AS LONG, BYVAL imageAttributes AS LONG) AS LONG
' TODO: Declare the EmfPlusRecordType enum and uncomment
'DECLARE FUNCTION GdipPlayMetafileRecord LIB "gdiplus.dll" ALIAS "GdipPlayMetafileRecord" (ByVal metafile As Long, ByVal recordType As EmfPlusRecordType, ByVal flags As Long, ByVal dataSize As Long, byteData As Any) AS LONG
DECLARE FUNCTION GdipSetClipGraphics LIB "gdiplus.dll" ALIAS "GdipSetClipGraphics" (BYVAL graphics AS LONG, BYVAL srcgraphics AS LONG, BYVAL CombineMd AS LONG) AS LONG
DECLARE FUNCTION GdipSetClipRect LIB "gdiplus.dll" ALIAS "GdipSetClipRect" (BYVAL graphics AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE, BYVAL CombineMd AS LONG) AS LONG
DECLARE FUNCTION GdipSetClipRectI LIB "gdiplus.dll" ALIAS "GdipSetClipRectI" (BYVAL graphics AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG, BYVAL CombineMd AS LONG) AS LONG
DECLARE FUNCTION GdipSetClipPath LIB "gdiplus.dll" ALIAS "GdipSetClipPath" (BYVAL graphics AS LONG, BYVAL PATH AS LONG, BYVAL CombineMd AS LONG) AS LONG
DECLARE FUNCTION GdipSetClipRegion LIB "gdiplus.dll" ALIAS "GdipSetClipRegion" (BYVAL graphics AS LONG, BYVAL region AS LONG, BYVAL CombineMd AS LONG) AS LONG
DECLARE FUNCTION GdipSetClipHrgn LIB "gdiplus.dll" ALIAS "GdipSetClipHrgn" (BYVAL graphics AS LONG, BYVAL hRgn AS LONG, BYVAL CombineMd AS LONG) AS LONG
DECLARE FUNCTION GdipResetClip LIB "gdiplus.dll" ALIAS "GdipResetClip" (BYVAL graphics AS LONG) AS LONG
DECLARE FUNCTION GdipTranslateClip LIB "gdiplus.dll" ALIAS "GdipTranslateClip" (BYVAL graphics AS LONG, BYVAL dx AS SINGLE, BYVAL dy AS SINGLE) AS LONG
DECLARE FUNCTION GdipTranslateClipI LIB "gdiplus.dll" ALIAS "GdipTranslateClipI" (BYVAL graphics AS LONG, BYVAL dx AS LONG, BYVAL dy AS LONG) AS LONG
DECLARE FUNCTION GdipGetClip LIB "gdiplus.dll" ALIAS "GdipGetClip" (BYVAL graphics AS LONG, BYVAL region AS LONG) AS LONG
DECLARE FUNCTION GdipGetClipBounds LIB "gdiplus.dll" ALIAS "GdipGetClipBounds" (BYVAL graphics AS LONG, nRect AS RECTF) AS LONG
DECLARE FUNCTION GdipGetClipBoundsI LIB "gdiplus.dll" ALIAS "GdipGetClipBoundsI" (BYVAL graphics AS LONG, nRect AS RECTL) AS LONG
DECLARE FUNCTION GdipIsClipEmpty LIB "gdiplus.dll" ALIAS "GdipIsClipEmpty" (BYVAL graphics AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipGetVisibleClipBounds LIB "gdiplus.dll" ALIAS "GdipGetVisibleClipBounds" (BYVAL graphics AS LONG, nRect AS RECTF) AS LONG
DECLARE FUNCTION GdipGetVisibleClipBoundsI LIB "gdiplus.dll" ALIAS "GdipGetVisibleClipBoundsI" (BYVAL graphics AS LONG, nRect AS RECTL) AS LONG
DECLARE FUNCTION GdipIsVisibleClipEmpty LIB "gdiplus.dll" ALIAS "GdipIsVisibleClipEmpty" (BYVAL graphics AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsVisiblePoint LIB "gdiplus.dll" ALIAS "GdipIsVisiblePoint" (BYVAL graphics AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsVisiblePointI LIB "gdiplus.dll" ALIAS "GdipIsVisiblePointI" (BYVAL graphics AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsVisibleRect LIB "gdiplus.dll" ALIAS "GdipIsVisibleRect" (BYVAL graphics AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsVisibleRectI LIB "gdiplus.dll" ALIAS "GdipIsVisibleRectI" (BYVAL graphics AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipSaveGraphics LIB "gdiplus.dll" ALIAS "GdipSaveGraphics" (BYVAL graphics AS LONG, STATE AS LONG) AS LONG
DECLARE FUNCTION GdipRestoreGraphics LIB "gdiplus.dll" ALIAS "GdipRestoreGraphics" (BYVAL graphics AS LONG, BYVAL STATE AS LONG) AS LONG
DECLARE FUNCTION GdipBeginContainer LIB "gdiplus.dll" ALIAS "GdipBeginContainer" (BYVAL graphics AS LONG, dstrect AS RECTF, srcRect AS RECTF, BYVAL unit AS LONG, STATE AS LONG) AS LONG
DECLARE FUNCTION GdipBeginContainerI LIB "gdiplus.dll" ALIAS "GdipBeginContainerI" (BYVAL graphics AS LONG, dstrect AS RECTL, srcRect AS RECTL, BYVAL unit AS LONG, STATE AS LONG) AS LONG
DECLARE FUNCTION GdipBeginContainer2 LIB "gdiplus.dll" ALIAS "GdipBeginContainer2" (BYVAL graphics AS LONG, STATE AS LONG) AS LONG
DECLARE FUNCTION GdipEndContainer LIB "gdiplus.dll" ALIAS "GdipEndContainer" (BYVAL graphics AS LONG, BYVAL STATE AS LONG) AS LONG
DECLARE FUNCTION GdipGetMetafileHeaderFromWmf LIB "gdiplus.dll" ALIAS "GdipGetMetafileHeaderFromWmf" (BYVAL hWmf AS LONG, WmfPlaceableFileHdr AS WmfPlaceableFileHeader, HEADER AS MetafileHeader) AS LONG
DECLARE FUNCTION GdipGetMetafileHeaderFromEmf LIB "gdiplus.dll" ALIAS "GdipGetMetafileHeaderFromEmf" (BYVAL hEmf AS LONG, HEADER AS MetafileHeader) AS LONG
DECLARE FUNCTION GdipGetMetafileHeaderFromFile LIB "gdiplus.dll" ALIAS "GdipGetMetafileHeaderFromFile" (BYVAL FilName AS STRING, HEADER AS MetafileHeader) AS LONG
' TODO: Uncomment if you have the IStream object declared, or equivalent
'DECLARE FUNCTION GdipGetMetafileHeaderFromStream LIB "gdiplus.dll" ALIAS "GdipGetMetafileHeaderFromStream" (Byval stream as IStream, header As MetafileHeader) AS LONG
DECLARE FUNCTION GdipGetMetafileHeaderFromMetafile LIB "gdiplus.dll" ALIAS "GdipGetMetafileHeaderFromMetafile" (BYVAL metafile AS LONG, HEADER AS MetafileHeader) AS LONG
DECLARE FUNCTION GdipGetHemfFromMetafile LIB "gdiplus.dll" ALIAS "GdipGetHemfFromMetafile" (BYVAL metafile AS LONG, hEmf AS LONG) AS LONG
' TODO: Uncomment if you have the IStream object declared, or equivalent
' NOTE: The C++ stream parameter was declared as IStream** stream
'DECLARE FUNCTION GdipCreateStreamOnFile LIB "gdiplus.dll" ALIAS "GdipCreateStreamOnFile" (ByVal FilName As String, ByVal access As Long, stream As IStream) AS LONG
DECLARE FUNCTION GdipCreateMetafileFromWmf LIB "gdiplus.dll" ALIAS "GdipCreateMetafileFromWmf" (BYVAL hWmf AS LONG, BYVAL bDeleteWmf AS LONG, WmfPlaceableFileHdr AS WmfPlaceableFileHeader, BYVAL metafile AS LONG) AS LONG
DECLARE FUNCTION GdipCreateMetafileFromEmf LIB "gdiplus.dll" ALIAS "GdipCreateMetafileFromEmf" (BYVAL hEmf AS LONG, BYVAL bDeleteEmf AS LONG, metafile AS LONG) AS LONG
DECLARE FUNCTION GdipCreateMetafileFromFile LIB "gdiplus.dll" ALIAS "GdipCreateMetafileFromFile" (byvalfile AS STRING, metafile AS LONG) AS LONG
DECLARE FUNCTION GdipCreateMetafileFromWmfFile LIB "gdiplus.dll" ALIAS "GdipCreateMetafileFromWmfFile" (BYVAL file AS STRING, WmfPlaceableFileHdr AS WmfPlaceableFileHeader, metafile AS LONG) AS LONG
' TODO: Uncomment if you have the IStream object declared, or equivalent
'DECLARE FUNCTION GdipCreateMetafileFromStream LIB "gdiplus.dll" ALIAS "GdipCreateMetafileFromStream" (Byval stream as IStream, metafile As Long) AS LONG
DECLARE FUNCTION GdipRecordMetafile LIB "gdiplus.dll" ALIAS "GdipRecordMetafile" (BYVAL referenceHdc AS LONG, etype AS LONG, frameRect AS RECTF, BYVAL frameUnit AS LONG, BYVAL description AS STRING, metafile AS LONG) AS LONG
DECLARE FUNCTION GdipRecordMetafileI LIB "gdiplus.dll" ALIAS "GdipRecordMetafileI" (BYVAL referenceHdc AS LONG, etype AS LONG, frameRect AS RECTL, BYVAL frameUnit AS LONG, BYVAL description AS STRING, metafile AS LONG) AS LONG
DECLARE FUNCTION GdipRecordMetafileFileName LIB "gdiplus.dll" ALIAS "GdipRecordMetafileFileName" (BYVAL FilName AS STRING, BYVAL referenceHdc AS LONG, etype AS LONG, frameRect AS RECTF, _
BYVAL frameUnit AS LONG, BYVAL description AS STRING, metafile AS LONG) AS LONG
DECLARE FUNCTION GdipRecordMetafileFileNameI LIB "gdiplus.dll" ALIAS "GdipRecordMetafileFileNameI" (BYVAL FilName AS STRING, BYVAL referenceHdc AS LONG, etype AS LONG, frameRect AS RECTL, _
BYVAL frameUnit AS LONG, BYVAL description AS STRING, metafile AS LONG) AS LONG
' TODO: Uncomment if you have the IStream object declared, or equivalent
'DECLARE FUNCTION GdipRecordMetafileFileStream LIB "gdiplus.dll" ALIAS "GdipRecordMetafileFileStream" (Byval stream as IStream, ByVal referenceHdc As Long, etype AS LONG, frameRect As RECTF, ByVal frameUnit As LONG, ByVal description As STRING, metafile
'AS LONG) AS LONG
'DECLARE FUNCTION GdipRecordMetafileFileStreamI LIB "gdiplus.dll" ALIAS "GdipRecordMetafileFileStreamI" (Byval stream as IStream, ByVal referenceHdc As Long, etype AS LONG, frameRect As RECTL, ByVal frameUnit As LONG, ByVal description As STRING,
'metafile AS LONG) AS LONG
DECLARE FUNCTION GdipSetMetafileDownLevelRasterizationLimit LIB "gdiplus.dll" ALIAS "GdipSetMetafileDownLevelRasterizationLimit" (BYVAL metafile AS LONG, BYVAL metafileRasterizationLimitDpi AS LONG) AS LONG
DECLARE FUNCTION GdipGetMetafileDownLevelRasterizationLimit LIB "gdiplus.dll" ALIAS "GdipGetMetafileDownLevelRasterizationLimit" (BYVAL metafile AS LONG, metafileRasterizationLimitDpi AS LONG) AS LONG
' NOTE: These encoders/decoders functions expect an ImageCodecInfo array
DECLARE FUNCTION GdipGetImageDecodersSize LIB "gdiplus.dll" ALIAS "GdipGetImageDecodersSize" (numDecoders AS LONG, SIZE AS LONG) AS LONG
DECLARE FUNCTION GdipGetImageDecoders LIB "gdiplus.dll" ALIAS "GdipGetImageDecoders" (BYVAL numDecoders AS LONG, BYVAL SIZE AS LONG, decoders AS ANY) AS LONG
DECLARE FUNCTION GdipGetImageEncodersSize LIB "gdiplus.dll" ALIAS "GdipGetImageEncodersSize" (numEncoders AS LONG, SIZE AS LONG) AS LONG
DECLARE FUNCTION GdipGetImageEncoders LIB "gdiplus.dll" ALIAS "GdipGetImageEncoders" (BYVAL numEncoders AS LONG, BYVAL SIZE AS LONG, encoders AS ANY) AS LONG
DECLARE FUNCTION GdipComment LIB "gdiplus.dll" ALIAS "GdipComment" (BYVAL graphics AS LONG, BYVAL sizeData AS LONG, nData AS ANY) AS LONG
' Image Functions (ALL)
DECLARE FUNCTION GdipLoadImageFromFile LIB "gdiplus.dll" ALIAS "GdipLoadImageFromFile" (BYVAL FilName AS STRING, nImage AS LONG) AS LONG
DECLARE FUNCTION GdipLoadImageFromFileICM LIB "gdiplus.dll" ALIAS "GdipLoadImageFromFileICM" (BYVAL FilName AS STRING, nImage AS LONG) AS LONG
' TODO: Uncomment if you have the IStream object declared, or equivalent
'DECLARE FUNCTION GdipLoadImageFromStream LIB "gdiplus.dll" ALIAS "GdipLoadImageFromStream" (Byval stream as IStream, nImage AS LONG) AS LONG
'DECLARE FUNCTION GdipLoadImageFromStreamICM LIB "gdiplus.dll" ALIAS "GdipLoadImageFromStreamICM" (Byval stream as IStream, nImage AS LONG) AS LONG
DECLARE FUNCTION GdipDisposeImage LIB "gdiplus.dll" ALIAS "GdipDisposeImage" (BYVAL nImage AS LONG) AS LONG
' NOTE: The encoderParams parameter expects a EncoderParameters struct or a NULL
DECLARE FUNCTION GdipSaveImageToFile LIB "gdiplus.dll" ALIAS "GdipSaveImageToFile" (BYVAL nImage AS LONG, BYVAL FilName AS STRING, clsidEncoder AS GUIDAPI, encoderParams AS ANY) AS LONG
' TODO: Uncomment if you have the IStream object declared, or equivalent
'DECLARE FUNCTION GdipSaveImageToStream LIB "gdiplus.dll" ALIAS "GdipSaveImageToStream" (ByVal nImage AS LONG, ByVal stream As IStream, clsidEncoder As GUIDAPI, encoderParams As Any) AS LONG
DECLARE FUNCTION GdipSaveAdd LIB "gdiplus.dll" ALIAS "GdipSaveAdd" (BYVAL nImage AS LONG, encoderParams AS EncoderParameters) AS LONG
DECLARE FUNCTION GdipSaveAddImage LIB "gdiplus.dll" ALIAS "GdipSaveAddImage" (BYVAL nImage AS LONG, BYVAL newnImage AS LONG, encoderParams AS EncoderParameters) AS LONG
DECLARE FUNCTION GdipGetImageGraphicsContext LIB "gdiplus.dll" ALIAS "GdipGetImageGraphicsContext" (BYVAL nImage AS LONG, graphics AS LONG) AS LONG
DECLARE FUNCTION GdipGetImageBounds LIB "gdiplus.dll" ALIAS "GdipGetImageBounds" (BYVAL nImage AS LONG, srcRect AS RECTF, srcUnit AS LONG) AS LONG
DECLARE FUNCTION GdipGetImageDimension LIB "gdiplus.dll" ALIAS "GdipGetImageDimension" (BYVAL nImage AS LONG, nWidth AS SINGLE, Height AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetImageType LIB "gdiplus.dll" ALIAS "GdipGetImageType" (BYVAL nImage AS LONG, itype AS LONG) AS LONG
DECLARE FUNCTION GdipGetImageWidth LIB "gdiplus.dll" ALIAS "GdipGetImageWidth" (BYVAL nImage AS LONG, nWidth AS LONG) AS LONG
DECLARE FUNCTION GdipGetImageHeight LIB "gdiplus.dll" ALIAS "GdipGetImageHeight" (BYVAL nImage AS LONG, Height AS LONG) AS LONG
DECLARE FUNCTION GdipGetImageHorizontalResolution LIB "gdiplus.dll" ALIAS "GdipGetImageHorizontalResolution" (BYVAL nImage AS LONG, resolution AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetImageVerticalResolution LIB "gdiplus.dll" ALIAS "GdipGetImageVerticalResolution" (BYVAL nImage AS LONG, resolution AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetImageFlags LIB "gdiplus.dll" ALIAS "GdipGetImageFlags" (BYVAL nImage AS LONG, flags AS LONG) AS LONG
DECLARE FUNCTION GdipGetImageRawFormat LIB "gdiplus.dll" ALIAS "GdipGetImageRawFormat" (BYVAL nImage AS LONG, format AS GUIDAPI) AS LONG
DECLARE FUNCTION GdipGetImagePixelFormat LIB "gdiplus.dll" ALIAS "GdipGetImagePixelFormat" (BYVAL nImage AS LONG, PixelFormat AS LONG) AS LONG
DECLARE FUNCTION GdipGetImageThumbnail LIB "gdiplus.dll" ALIAS "GdipGetImageThumbnail" (BYVAL nImage AS LONG, BYVAL thumbWidth AS LONG, BYVAL thumbHeight AS LONG, _
thumbnImage AS LONG, OPTIONAL BYVAL pCALLBACK AS LONG, OPTIONAL BYVAL callbackData AS LONG) AS LONG
DECLARE FUNCTION GdipGetEncoderParameterListSize LIB "gdiplus.dll" ALIAS "GdipGetEncoderParameterListSize" (BYVAL nImage AS LONG, clsidEncoder AS GUIDAPI, SIZE AS LONG) AS LONG
DECLARE FUNCTION GdipGetEncoderParameterList LIB "gdiplus.dll" ALIAS "GdipGetEncoderParameterList" (BYVAL nImage AS LONG, clsidEncoder AS GUIDAPI, BYVAL SIZE AS LONG, buffer AS EncoderParameters) AS LONG
DECLARE FUNCTION GdipImageGetFrameDimensionsCount LIB "gdiplus.dll" ALIAS "GdipImageGetFrameDimensionsCount" (BYVAL nImage AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipImageGetFrameDimensionsList LIB "gdiplus.dll" ALIAS "GdipImageGetFrameDimensionsList" (BYVAL nImage AS LONG, dimensionIDs AS GUIDAPI, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipImageGetFrameCount LIB "gdiplus.dll" ALIAS "GdipImageGetFrameCount" (BYVAL nImage AS LONG, dimensionID AS GUIDAPI, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipImageSelectActiveFrame LIB "gdiplus.dll" ALIAS "GdipImageSelectActiveFrame" (BYVAL nImage AS LONG, dimensionID AS GUIDAPI, BYVAL frameIndex AS LONG) AS LONG
DECLARE FUNCTION GdipImageRotateFlip LIB "gdiplus.dll" ALIAS "GdipImageRotateFlip" (BYVAL nImage AS LONG, BYVAL rfType AS LONG) AS LONG
DECLARE FUNCTION GdipGetImagePalette LIB "gdiplus.dll" ALIAS "GdipGetImagePalette" (BYVAL nImage AS LONG, palette AS ColorPalette, BYVAL SIZE AS LONG) AS LONG
DECLARE FUNCTION GdipSetImagePalette LIB "gdiplus.dll" ALIAS "GdipSetImagePalette" (BYVAL nImage AS LONG, palette AS ColorPalette) AS LONG
DECLARE FUNCTION GdipGetImagePaletteSize LIB "gdiplus.dll" ALIAS "GdipGetImagePaletteSize" (BYVAL nImage AS LONG, SIZE AS LONG) AS LONG
DECLARE FUNCTION GdipGetPropertyCount LIB "gdiplus.dll" ALIAS "GdipGetPropertyCount" (BYVAL nImage AS LONG, numOfProperty AS LONG) AS LONG
DECLARE FUNCTION GdipGetPropertyIdList LIB "gdiplus.dll" ALIAS "GdipGetPropertyIdList" (BYVAL nImage AS LONG, BYVAL numOfProperty AS LONG, list AS LONG) AS LONG
DECLARE FUNCTION GdipGetPropertyItemSize LIB "gdiplus.dll" ALIAS "GdipGetPropertyItemSize" (BYVAL nImage AS LONG, BYVAL propId AS LONG, SIZE AS LONG) AS LONG
DECLARE FUNCTION GdipGetPropertyItem LIB "gdiplus.dll" ALIAS "GdipGetPropertyItem" (BYVAL nImage AS LONG, BYVAL propId AS LONG, BYVAL propSize AS LONG, buffer AS PropertyItem) AS LONG
DECLARE FUNCTION GdipGetPropertySize LIB "gdiplus.dll" ALIAS "GdipGetPropertySize" (BYVAL nImage AS LONG, totalBufferSize AS LONG, numProperties AS LONG) AS LONG
DECLARE FUNCTION GdipGetAllPropertyItems LIB "gdiplus.dll" ALIAS "GdipGetAllPropertyItems" (BYVAL nImage AS LONG, BYVAL totalBufferSize AS LONG, BYVAL numProperties AS LONG, allItems AS PropertyItem) AS LONG
DECLARE FUNCTION GdipRemovePropertyItem LIB "gdiplus.dll" ALIAS "GdipRemovePropertyItem" (BYVAL nImage AS LONG, BYVAL propId AS LONG) AS LONG
DECLARE FUNCTION GdipSetPropertyItem LIB "gdiplus.dll" ALIAS "GdipSetPropertyItem" (BYVAL nImage AS LONG, ITEM AS PropertyItem) AS LONG
DECLARE FUNCTION GdipImageForceValidation LIB "gdiplus.dll" ALIAS "GdipImageForceValidation" (BYVAL nImage AS LONG) AS LONG
' Pen Functions (ALL)
DECLARE FUNCTION GdipCreatePen1 LIB "gdiplus.dll" ALIAS "GdipCreatePen1" (BYVAL Colr AS LONG, BYVAL nWidth AS SINGLE, BYVAL unit AS LONG, pen AS LONG) AS LONG
DECLARE FUNCTION GdipCreatePen2 LIB "gdiplus.dll" ALIAS "GdipCreatePen2" (BYVAL brush AS LONG, BYVAL nWidth AS SINGLE, BYVAL unit AS LONG, pen AS LONG) AS LONG
DECLARE FUNCTION GdipClonePen LIB "gdiplus.dll" ALIAS "GdipClonePen" (BYVAL pen AS LONG, clonepen AS LONG) AS LONG
DECLARE FUNCTION GdipDeletePen LIB "gdiplus.dll" ALIAS "GdipDeletePen" (BYVAL pen AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenWidth LIB "gdiplus.dll" ALIAS "GdipSetPenWidth" (BYVAL pen AS LONG, BYVAL nWidth AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetPenWidth LIB "gdiplus.dll" ALIAS "GdipGetPenWidth" (BYVAL pen AS LONG, nWidth AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetPenUnit LIB "gdiplus.dll" ALIAS "GdipSetPenUnit" (BYVAL pen AS LONG, BYVAL unit AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenUnit LIB "gdiplus.dll" ALIAS "GdipGetPenUnit" (BYVAL pen AS LONG, unit AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenLineCap LIB "gdiplus.dll" ALIAS "GdipSetPenLineCap197819" (BYVAL pen AS LONG, BYVAL startCap AS LONG, BYVAL endCap AS LONG, BYVAL dcap AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenStartCap LIB "gdiplus.dll" ALIAS "GdipSetPenStartCap" (BYVAL pen AS LONG, BYVAL startCap AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenEndCap LIB "gdiplus.dll" ALIAS "GdipSetPenEndCap" (BYVAL pen AS LONG, BYVAL endCap AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenDashCap LIB "gdiplus.dll" ALIAS "GdipSetPenDashCap197819" (BYVAL pen AS LONG, BYVAL dcap AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenStartCap LIB "gdiplus.dll" ALIAS "GdipGetPenStartCap" (BYVAL pen AS LONG, startCap AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenEndCap LIB "gdiplus.dll" ALIAS "GdipGetPenEndCap" (BYVAL pen AS LONG, endCap AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenDashCap LIB "gdiplus.dll" ALIAS "GdipGetPenDashCap197819" (BYVAL pen AS LONG, dcap AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenLineJoin LIB "gdiplus.dll" ALIAS "GdipSetPenLineJoin" (BYVAL pen AS LONG, BYVAL LnJoin AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenLineJoin LIB "gdiplus.dll" ALIAS "GdipGetPenLineJoin" (BYVAL pen AS LONG, LnJoin AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenCustomStartCap LIB "gdiplus.dll" ALIAS "GdipSetPenCustomStartCap" (BYVAL pen AS LONG, BYVAL customCap AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenCustomStartCap LIB "gdiplus.dll" ALIAS "GdipGetPenCustomStartCap" (BYVAL pen AS LONG, customCap AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenCustomEndCap LIB "gdiplus.dll" ALIAS "GdipSetPenCustomEndCap" (BYVAL pen AS LONG, BYVAL customCap AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenCustomEndCap LIB "gdiplus.dll" ALIAS "GdipGetPenCustomEndCap" (BYVAL pen AS LONG, customCap AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenMiterLimit LIB "gdiplus.dll" ALIAS "GdipSetPenMiterLimit" (BYVAL pen AS LONG, BYVAL miterLimit AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetPenMiterLimit LIB "gdiplus.dll" ALIAS "GdipGetPenMiterLimit" (BYVAL pen AS LONG, miterLimit AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetPenMode LIB "gdiplus.dll" ALIAS "GdipSetPenMode" (BYVAL pen AS LONG, BYVAL penMode AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenMode LIB "gdiplus.dll" ALIAS "GdipGetPenMode" (BYVAL pen AS LONG, penMode AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenTransform LIB "gdiplus.dll" ALIAS "GdipSetPenTransform" (BYVAL pen AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenTransform LIB "gdiplus.dll" ALIAS "GdipGetPenTransform" (BYVAL pen AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipResetPenTransform LIB "gdiplus.dll" ALIAS "GdipResetPenTransform" (BYVAL pen AS LONG) AS LONG
DECLARE FUNCTION GdipMultiplyPenTransform LIB "gdiplus.dll" ALIAS "GdipMultiplyPenTransform" (BYVAL pen AS LONG, BYVAL matrix AS LONG, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipTranslatePenTransform LIB "gdiplus.dll" ALIAS "GdipTranslatePenTransform" (BYVAL pen AS LONG, BYVAL dx AS SINGLE, BYVAL dy AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipScalePenTransform LIB "gdiplus.dll" ALIAS "GdipScalePenTransform" (BYVAL pen AS LONG, BYVAL sx AS SINGLE, BYVAL sy AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipRotatePenTransform LIB "gdiplus.dll" ALIAS "GdipRotatePenTransform" (BYVAL pen AS LONG, BYVAL angle AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenColor LIB "gdiplus.dll" ALIAS "GdipSetPenColor" (BYVAL pen AS LONG, BYVAL argb AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenColor LIB "gdiplus.dll" ALIAS "GdipGetPenColor" (BYVAL pen AS LONG, argb AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenBrushFill LIB "gdiplus.dll" ALIAS "GdipSetPenBrushFill" (BYVAL pen AS LONG, BYVAL brush AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenBrushFill LIB "gdiplus.dll" ALIAS "GdipGetPenBrushFill" (BYVAL pen AS LONG, brush AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenFillType LIB "gdiplus.dll" ALIAS "GdipGetPenFillType" (BYVAL pen AS LONG, ptype AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenDashStyle LIB "gdiplus.dll" ALIAS "GdipGetPenDashStyle" (BYVAL pen AS LONG, dStyle AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenDashStyle LIB "gdiplus.dll" ALIAS "GdipSetPenDashStyle" (BYVAL pen AS LONG, BYVAL dStyle AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenDashOffset LIB "gdiplus.dll" ALIAS "GdipGetPenDashOffset" (BYVAL pen AS LONG, offset AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetPenDashOffset LIB "gdiplus.dll" ALIAS "GdipSetPenDashOffset" (BYVAL pen AS LONG, BYVAL offset AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetPenDashCount LIB "gdiplus.dll" ALIAS "GdipGetPenDashCount" (BYVAL pen AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenDashArray LIB "gdiplus.dll" ALIAS "GdipSetPenDashArray" (BYVAL pen AS LONG, dash AS SINGLE, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenDashArray LIB "gdiplus.dll" ALIAS "GdipGetPenDashArray" (BYVAL pen AS LONG, dash AS SINGLE, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenCompoundCount LIB "gdiplus.dll" ALIAS "GdipGetPenCompoundCount" (BYVAL pen AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipSetPenCompoundArray LIB "gdiplus.dll" ALIAS "GdipSetPenCompoundArray" (BYVAL pen AS LONG, dash AS SINGLE, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetPenCompoundArray LIB "gdiplus.dll" ALIAS "GdipGetPenCompoundArray" (BYVAL pen AS LONG, dash AS SINGLE, BYVAL COUNT AS LONG) AS LONG
' CustomLineCap Functions (ALL)
DECLARE FUNCTION GdipCreateCustomLineCap LIB "gdiplus.dll" ALIAS "GdipCreateCustomLineCap" (BYVAL PathtoFill AS LONG, BYVAL PathStroke AS LONG, BYVAL baseCap AS LONG, BYVAL baseInset AS SINGLE, customCap AS LONG) AS LONG
DECLARE FUNCTION GdipDeleteCustomLineCap LIB "gdiplus.dll" ALIAS "GdipDeleteCustomLineCap" (BYVAL customCap AS LONG) AS LONG
DECLARE FUNCTION GdipCloneCustomLineCap LIB "gdiplus.dll" ALIAS "GdipCloneCustomLineCap" (BYVAL customCap AS LONG, clonedCap AS LONG) AS LONG
DECLARE FUNCTION GdipGetCustomLineCapType LIB "gdiplus.dll" ALIAS "GdipGetCustomLineCapType" (BYVAL customCap AS LONG, capType AS LONG) AS LONG
DECLARE FUNCTION GdipSetCustomLineCapStrokeCaps LIB "gdiplus.dll" ALIAS "GdipSetCustomLineCapStrokeCaps" (BYVAL customCap AS LONG, BYVAL startCap AS LONG, BYVAL endCap AS LONG) AS LONG
DECLARE FUNCTION GdipGetCustomLineCapStrokeCaps LIB "gdiplus.dll" ALIAS "GdipGetCustomLineCapStrokeCaps" (BYVAL customCap AS LONG, startCap AS LONG, endCap AS LONG) AS LONG
DECLARE FUNCTION GdipSetCustomLineCapStrokeJoin LIB "gdiplus.dll" ALIAS "GdipSetCustomLineCapStrokeJoin" (BYVAL customCap AS LONG, BYVAL LnJoin AS LONG) AS LONG
DECLARE FUNCTION GdipGetCustomLineCapStrokeJoin LIB "gdiplus.dll" ALIAS "GdipGetCustomLineCapStrokeJoin" (BYVAL customCap AS LONG, LnJoin AS LONG) AS LONG
DECLARE FUNCTION GdipSetCustomLineCapBaseCap LIB "gdiplus.dll" ALIAS "GdipSetCustomLineCapBaseCap" (BYVAL customCap AS LONG, BYVAL baseCap AS LONG) AS LONG
DECLARE FUNCTION GdipGetCustomLineCapBaseCap LIB "gdiplus.dll" ALIAS "GdipGetCustomLineCapBaseCap" (BYVAL customCap AS LONG, baseCap AS LONG) AS LONG
DECLARE FUNCTION GdipSetCustomLineCapBaseInset LIB "gdiplus.dll" ALIAS "GdipSetCustomLineCapBaseInset" (BYVAL customCap AS LONG, BYVAL inset AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetCustomLineCapBaseInset LIB "gdiplus.dll" ALIAS "GdipGetCustomLineCapBaseInset" (BYVAL customCap AS LONG, inset AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetCustomLineCapWidthScale LIB "gdiplus.dll" ALIAS "GdipSetCustomLineCapWidthScale" (BYVAL customCap AS LONG, BYVAL widthScale AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetCustomLineCapWidthScale LIB "gdiplus.dll" ALIAS "GdipGetCustomLineCapWidthScale" (BYVAL customCap AS LONG, widthScale AS SINGLE) AS LONG
' AdjustableArrowCap Functions (ALL)
DECLARE FUNCTION GdipCreateAdjustableArrowCap LIB "gdiplus.dll" ALIAS "GdipCreateAdjustableArrowCap" (BYVAL Height AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL isFilled AS LONG, cap AS LONG) AS LONG
DECLARE FUNCTION GdipSetAdjustableArrowCapHeight LIB "gdiplus.dll" ALIAS "GdipSetAdjustableArrowCapHeight" (BYVAL cap AS LONG, BYVAL Height AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetAdjustableArrowCapHeight LIB "gdiplus.dll" ALIAS "GdipGetAdjustableArrowCapHeight" (BYVAL cap AS LONG, Height AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetAdjustableArrowCapWidth LIB "gdiplus.dll" ALIAS "GdipSetAdjustableArrowCapWidth" (BYVAL cap AS LONG, BYVAL nWidth AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetAdjustableArrowCapWidth LIB "gdiplus.dll" ALIAS "GdipGetAdjustableArrowCapWidth" (BYVAL cap AS LONG, nWidth AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetAdjustableArrowCapMiddleInset LIB "gdiplus.dll" ALIAS "GdipSetAdjustableArrowCapMiddleInset" (BYVAL cap AS LONG, BYVAL middleInset AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetAdjustableArrowCapMiddleInset LIB "gdiplus.dll" ALIAS "GdipGetAdjustableArrowCapMiddleInset" (BYVAL cap AS LONG, middleInset AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetAdjustableArrowCapFillState LIB "gdiplus.dll" ALIAS "GdipSetAdjustableArrowCapFillState" (BYVAL cap AS LONG, BYVAL bFillState AS LONG) AS LONG
DECLARE FUNCTION GdipGetAdjustableArrowCapFillState LIB "gdiplus.dll" ALIAS "GdipGetAdjustableArrowCapFillState" (BYVAL cap AS LONG, bFillState AS LONG) AS LONG
' Bitmap Functions (ALL)
DECLARE FUNCTION GdipCreateBitmapFromFile LIB "gdiplus.dll" ALIAS "GdipCreateBitmapFromFile" (BYVAL FilName AS LONG, nBitmap AS LONG) AS LONG
DECLARE FUNCTION GdipCreateBitmapFromFileICM LIB "gdiplus.dll" ALIAS "GdipCreateBitmapFromFileICM" (BYVAL FilName AS LONG, nBitmap AS LONG) AS LONG
' TODO: Uncomment if you have the IStream object declared, or equivalent
'DECLARE FUNCTION GdipCreateBitmapFromStream LIB "gdiplus.dll" ALIAS "GdipCreateBitmapFromStream" (Byval stream as IStream, nBitmap As Long) AS LONG
'DECLARE FUNCTION GdipCreateBitmapFromStreamICM LIB "gdiplus.dll" ALIAS "GdipCreateBitmapFromStreamICM" (Byval stream as IStream, nBitmap As Long) AS LONG
' NOTE: The scan0 parameter is treated as a byte array
DECLARE FUNCTION GdipCreateBitmapFromScan0 LIB "gdiplus.dll" ALIAS "GdipCreateBitmapFromScan0" (BYVAL nWidth AS LONG, BYVAL Height AS LONG, BYVAL stride AS LONG, BYVAL PixelFormat AS LONG, scan0 AS ANY, nBitmap AS LONG) AS LONG
DECLARE FUNCTION GdipCreateBitmapFromGraphics LIB "gdiplus.dll" ALIAS "GdipCreateBitmapFromGraphics" (BYVAL nWidth AS LONG, BYVAL Height AS LONG, BYVAL graphics AS LONG, nBitmap AS LONG) AS LONG
' TODO: Uncomment if DirectX is in your program
'DECLARE FUNCTION GdipCreateBitmapFromDirectDrawSurface LIB "gdiplus.dll" ALIAS "GdipCreateBitmapFromDirectDrawSurface" (surface As DirectDrawSurface7, nBitmap As Long) AS LONG
DECLARE FUNCTION GdipCreateBitmapFromGdiDib LIB "gdiplus.dll" ALIAS "GdipCreateBitmapFromGdiDib" (gdiBitmapInfo AS BITMAPINFO, BYVAL gdiBitmapData AS LONG, nBitmap AS LONG) AS LONG
DECLARE FUNCTION GdipCreateBitmapFromHBITMAP LIB "gdiplus.dll" ALIAS "GdipCreateBitmapFromHBITMAP" (BYVAL hbm AS LONG, BYVAL hpal AS LONG, nBitmap AS LONG) AS LONG
DECLARE FUNCTION GdipCreateHBITMAPFromBitmap LIB "gdiplus.dll" ALIAS "GdipCreateHBITMAPFromBitmap" (BYVAL nBitmap AS LONG, hbmReturn AS LONG, BYVAL background AS LONG) AS LONG
DECLARE FUNCTION GdipCreateBitmapFromHICON LIB "gdiplus.dll" ALIAS "GdipCreateBitmapFromHICON" (BYVAL hicon AS LONG, nBitmap AS LONG) AS LONG
DECLARE FUNCTION GdipCreateHICONFromBitmap LIB "gdiplus.dll" ALIAS "GdipCreateHICONFromBitmap" (BYVAL nBitmap AS LONG, hbmReturn AS LONG) AS LONG
DECLARE FUNCTION GdipCreateBitmapFromResource LIB "gdiplus.dll" ALIAS "GdipCreateBitmapFromResource" (BYVAL hInstance AS LONG, BYVAL lpBitmapName AS STRING, nBitmap AS LONG) AS LONG
DECLARE FUNCTION GdipCloneBitmapArea LIB "gdiplus.dll" ALIAS "GdipCloneBitmapArea" (BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE, BYVAL PixelFormat AS LONG, BYVAL srcBitmap AS LONG, dstBitmap AS LONG) AS LONG
DECLARE FUNCTION GdipCloneBitmapAreaI LIB "gdiplus.dll" ALIAS "GdipCloneBitmapAreaI" (BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG, BYVAL PixelFormat AS LONG, BYVAL srcBitmap AS LONG, dstBitmap AS LONG) AS LONG
DECLARE FUNCTION GdipBitmapLockBits LIB "gdiplus.dll" ALIAS "GdipBitmapLockBits" (BYVAL nBitmap AS LONG, nRect AS RECTL, BYVAL flags AS LONG, BYVAL PixelFormat AS LONG, lockedBitmapData AS BitmapData) AS LONG
DECLARE FUNCTION GdipBitmapUnlockBits LIB "gdiplus.dll" ALIAS "GdipBitmapUnlockBits" (BYVAL nBitmap AS LONG, lockedBitmapData AS BitmapData) AS LONG
DECLARE FUNCTION GdipBitmapGetPixel LIB "gdiplus.dll" ALIAS "GdipBitmapGetPixel" (BYVAL nBitmap AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, COLOR AS LONG) AS LONG
DECLARE FUNCTION GdipBitmapSetPixel LIB "gdiplus.dll" ALIAS "GdipBitmapSetPixel" (BYVAL nBitmap AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL COLOR AS LONG) AS LONG
DECLARE FUNCTION GdipBitmapSetResolution LIB "gdiplus.dll" ALIAS "GdipBitmapSetResolution" (BYVAL nBitmap AS LONG, BYVAL xdpi AS SINGLE, BYVAL ydpi AS SINGLE) AS LONG
' CachedBitmap Functions (ALL)
DECLARE FUNCTION GdipCreateCachedBitmap LIB "gdiplus.dll" ALIAS "GdipCreateCachedBitmap" (BYVAL nBitmap AS LONG, BYVAL graphics AS LONG, cachedBitmap AS LONG) AS LONG
DECLARE FUNCTION GdipDeleteCachedBitmap LIB "gdiplus.dll" ALIAS "GdipDeleteCachedBitmap" (BYVAL cachedBitmap AS LONG) AS LONG
DECLARE FUNCTION GdipDrawCachedBitmap LIB "gdiplus.dll" ALIAS "GdipDrawCachedBitmap" (BYVAL graphics AS LONG, BYVAL cachedBitmap AS LONG, BYVAL x AS LONG, BYVAL y AS LONG) AS LONG
' Brush Functions (ALL)
DECLARE FUNCTION GdipCloneBrush LIB "gdiplus.dll" ALIAS "GdipCloneBrush" (BYVAL brush AS LONG, cloneBrush AS LONG) AS LONG
DECLARE FUNCTION GdipDeleteBrush LIB "gdiplus.dll" ALIAS "GdipDeleteBrush" (BYVAL brush AS LONG) AS LONG
DECLARE FUNCTION GdipGetBrushType LIB "gdiplus.dll" ALIAS "GdipGetBrushType" (BYVAL brush AS LONG, brshType AS LONG) AS LONG
' HatchBrush Functions (ALL)
DECLARE FUNCTION GdipCreateHatchBrush LIB "gdiplus.dll" ALIAS "GdipCreateHatchBrush" (BYVAL STYLE AS LONG, BYVAL forecolr AS LONG, BYVAL backcolr AS LONG, brush AS LONG) AS LONG
DECLARE FUNCTION GdipGetHatchStyle LIB "gdiplus.dll" ALIAS "GdipGetHatchStyle" (BYVAL brush AS LONG, STYLE AS LONG) AS LONG
DECLARE FUNCTION GdipGetHatchForegroundColor LIB "gdiplus.dll" ALIAS "GdipGetHatchForegroundColor" (BYVAL brush AS LONG, forecolr AS LONG) AS LONG
DECLARE FUNCTION GdipGetHatchBackgroundColor LIB "gdiplus.dll" ALIAS "GdipGetHatchBackgroundColor" (BYVAL brush AS LONG, backcolr AS LONG) AS LONG
' SolidBrush Functions (ALL)
DECLARE FUNCTION GdipCreateSolidFill LIB "gdiplus.dll" ALIAS "GdipCreateSolidFill" (BYVAL argb AS LONG, brush AS LONG) AS LONG
DECLARE FUNCTION GdipSetSolidFillColor LIB "gdiplus.dll" ALIAS "GdipSetSolidFillColor" (BYVAL brush AS LONG, BYVAL argb AS LONG) AS LONG
DECLARE FUNCTION GdipGetSolidFillColor LIB "gdiplus.dll" ALIAS "GdipGetSolidFillColor" (BYVAL brush AS LONG, argb AS LONG) AS LONG
' LineBrush Functions (ALL)
DECLARE FUNCTION GdipCreateLineBrush LIB "gdiplus.dll" ALIAS "GdipCreateLineBrush" (point1 AS POINTF, point2 AS POINTF, BYVAL color1 AS LONG, BYVAL color2 AS LONG, BYVAL WrapMd AS LONG, lineGradient AS LONG) AS LONG
DECLARE FUNCTION GdipCreateLineBrushI LIB "gdiplus.dll" ALIAS "GdipCreateLineBrushI" (point1 AS POINTL, point2 AS POINTL, BYVAL color1 AS LONG, BYVAL color2 AS LONG, BYVAL WrapMd AS LONG, lineGradient AS LONG) AS LONG
DECLARE FUNCTION GdipCreateLineBrushFromRect LIB "gdiplus.dll" ALIAS "GdipCreateLineBrushFromRect" (nRect AS RECTF, BYVAL color1 AS LONG, BYVAL color2 AS LONG, BYVAL MODE AS LONG, BYVAL WrapMd AS LONG, lineGradient AS LONG) AS LONG
DECLARE FUNCTION GdipCreateLineBrushFromRectI LIB "gdiplus.dll" ALIAS "GdipCreateLineBrushFromRectI" (nRect AS RECTL, BYVAL color1 AS LONG, BYVAL color2 AS LONG, BYVAL MODE AS LONG, BYVAL WrapMd AS LONG, lineGradient AS LONG) AS LONG
DECLARE FUNCTION GdipCreateLineBrushFromRectWithAngle LIB "gdiplus.dll" ALIAS "GdipCreateLineBrushFromRectWithAngle" (nRect AS RECTF, BYVAL color1 AS LONG, BYVAL color2 AS LONG, _
BYVAL angle AS SINGLE, BYVAL isAngleScalable AS LONG, BYVAL WrapMd AS LONG, lineGradient AS LONG) AS LONG
DECLARE FUNCTION GdipCreateLineBrushFromRectWithAngleI LIB "gdiplus.dll" ALIAS "GdipCreateLineBrushFromRectWithAngleI" (nRect AS RECTL, BYVAL color1 AS LONG, BYVAL color2 AS LONG, _
BYVAL angle AS SINGLE, BYVAL isAngleScalable AS LONG, BYVAL WrapMd AS LONG, lineGradient AS LONG) AS LONG
DECLARE FUNCTION GdipSetLineColors LIB "gdiplus.dll" ALIAS "GdipSetLineColors" (BYVAL brush AS LONG, BYVAL color1 AS LONG, BYVAL color2 AS LONG) AS LONG
DECLARE FUNCTION GdipGetLineColors LIB "gdiplus.dll" ALIAS "GdipGetLineColors" (BYVAL brush AS LONG, lColors AS LONG) AS LONG
DECLARE FUNCTION GdipGetLineRect LIB "gdiplus.dll" ALIAS "GdipGetLineRect" (BYVAL brush AS LONG, nRect AS RECTF) AS LONG
DECLARE FUNCTION GdipGetLineRectI LIB "gdiplus.dll" ALIAS "GdipGetLineRectI" (BYVAL brush AS LONG, nRect AS RECTL) AS LONG
DECLARE FUNCTION GdipSetLineGammaCorrection LIB "gdiplus.dll" ALIAS "GdipSetLineGammaCorrection" (BYVAL brush AS LONG, BYVAL useGammaCorrection AS LONG) AS LONG
DECLARE FUNCTION GdipGetLineGammaCorrection LIB "gdiplus.dll" ALIAS "GdipGetLineGammaCorrection" (BYVAL brush AS LONG, useGammaCorrection AS LONG) AS LONG
DECLARE FUNCTION GdipGetLineBlendCount LIB "gdiplus.dll" ALIAS "GdipGetLineBlendCount" (BYVAL brush AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetLineBlend LIB "gdiplus.dll" ALIAS "GdipGetLineBlend" (BYVAL brush AS LONG, blend AS SINGLE, positions AS SINGLE, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipSetLineBlend LIB "gdiplus.dll" ALIAS "GdipSetLineBlend" (BYVAL brush AS LONG, blend AS SINGLE, positions AS SINGLE, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetLinePresetBlendCount LIB "gdiplus.dll" ALIAS "GdipGetLinePresetBlendCount" (BYVAL brush AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetLinePresetBlend LIB "gdiplus.dll" ALIAS "GdipGetLinePresetBlend" (BYVAL brush AS LONG, blend AS LONG, positions AS SINGLE, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipSetLinePresetBlend LIB "gdiplus.dll" ALIAS "GdipSetLinePresetBlend" (BYVAL brush AS LONG, blend AS LONG, positions AS SINGLE, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipSetLineSigmaBlend LIB "gdiplus.dll" ALIAS "GdipSetLineSigmaBlend" (BYVAL brush AS LONG, BYVAL FOCUS AS SINGLE, BYVAL theScale AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetLineLinearBlend LIB "gdiplus.dll" ALIAS "GdipSetLineLinearBlend" (BYVAL brush AS LONG, BYVAL FOCUS AS SINGLE, BYVAL theScale AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetLineWrapMode LIB "gdiplus.dll" ALIAS "GdipSetLineWrapMode" (BYVAL brush AS LONG, BYVAL WrapMd AS LONG) AS LONG
DECLARE FUNCTION GdipGetLineWrapMode LIB "gdiplus.dll" ALIAS "GdipGetLineWrapMode" (BYVAL brush AS LONG, WrapMd AS LONG) AS LONG
DECLARE FUNCTION GdipGetLineTransform LIB "gdiplus.dll" ALIAS "GdipGetLineTransform" (BYVAL brush AS LONG, matrix AS LONG) AS LONG
DECLARE FUNCTION GdipSetLineTransform LIB "gdiplus.dll" ALIAS "GdipSetLineTransform" (BYVAL brush AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipResetLineTransform LIB "gdiplus.dll" ALIAS "GdipResetLineTransform" (BYVAL brush AS LONG) AS LONG
DECLARE FUNCTION GdipMultiplyLineTransform LIB "gdiplus.dll" ALIAS "GdipMultiplyLineTransform" (BYVAL brush AS LONG, BYVAL matrix AS LONG, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipTranslateLineTransform LIB "gdiplus.dll" ALIAS "GdipTranslateLineTransform" (BYVAL brush AS LONG, BYVAL dx AS SINGLE, BYVAL dy AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipScaleLineTransform LIB "gdiplus.dll" ALIAS "GdipScaleLineTransform" (BYVAL brush AS LONG, BYVAL sx AS SINGLE, BYVAL sy AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipRotateLineTransform LIB "gdiplus.dll" ALIAS "GdipRotateLineTransform" (BYVAL brush AS LONG, BYVAL angle AS SINGLE, BYVAL order AS LONG) AS LONG
' TextureBrush Functions (ALL)
DECLARE FUNCTION GdipCreateTexture LIB "gdiplus.dll" ALIAS "GdipCreateTexture" (BYVAL nImage AS LONG, BYVAL WrapMd AS LONG, texture AS LONG) AS LONG
DECLARE FUNCTION GdipCreateTexture2 LIB "gdiplus.dll" ALIAS "GdipCreateTexture2" (BYVAL nImage AS LONG, BYVAL WrapMd AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE, texture AS LONG) AS LONG
DECLARE FUNCTION GdipCreateTextureIA LIB "gdiplus.dll" ALIAS "GdipCreateTextureIA" (BYVAL nImage AS LONG, BYVAL imageAttributes AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE, texture AS LONG) AS LONG
DECLARE FUNCTION GdipCreateTexture2I LIB "gdiplus.dll" ALIAS "GdipCreateTexture2I" (BYVAL nImage AS LONG, BYVAL WrapMd AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG, texture AS LONG) AS LONG
DECLARE FUNCTION GdipCreateTextureIAI LIB "gdiplus.dll" ALIAS "GdipCreateTextureIAI" (BYVAL nImage AS LONG, BYVAL imageAttributes AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG, texture AS LONG) AS LONG
DECLARE FUNCTION GdipGetTextureTransform LIB "gdiplus.dll" ALIAS "GdipGetTextureTransform" (BYVAL brush AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipSetTextureTransform LIB "gdiplus.dll" ALIAS "GdipSetTextureTransform" (BYVAL brush AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipResetTextureTransform LIB "gdiplus.dll" ALIAS "GdipResetTextureTransform" (BYVAL brush AS LONG) AS LONG
DECLARE FUNCTION GdipTranslateTextureTransform LIB "gdiplus.dll" ALIAS "GdipTranslateTextureTransform" (BYVAL brush AS LONG, BYVAL dx AS SINGLE, BYVAL dy AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipMultiplyTextureTransform LIB "gdiplus.dll" ALIAS "GdipMultiplyTextureTransform" (BYVAL brush AS LONG, BYVAL matrix AS LONG, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipScaleTextureTransform LIB "gdiplus.dll" ALIAS "GdipScaleTextureTransform" (BYVAL brush AS LONG, BYVAL sx AS SINGLE, BYVAL sy AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipRotateTextureTransform LIB "gdiplus.dll" ALIAS "GdipRotateTextureTransform" (BYVAL brush AS LONG, BYVAL angle AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipSetTextureWrapMode LIB "gdiplus.dll" ALIAS "GdipSetTextureWrapMode" (BYVAL brush AS LONG, BYVAL WrapMd AS LONG) AS LONG
DECLARE FUNCTION GdipGetTextureWrapMode LIB "gdiplus.dll" ALIAS "GdipGetTextureWrapMode" (BYVAL brush AS LONG, WrapMd AS LONG) AS LONG
DECLARE FUNCTION GdipGetTextureImage LIB "gdiplus.dll" ALIAS "GdipGetTextureImage" (BYVAL brush AS LONG, nImage AS LONG) AS LONG
' PathGradientBrush Functions (ALL)
DECLARE FUNCTION GdipCreatePathGradient LIB "gdiplus.dll" ALIAS "GdipCreatePathGradient" (pPoint AS POINTF, BYVAL COUNT AS LONG, BYVAL WrapMd AS LONG, polyGradient AS LONG) AS LONG
DECLARE FUNCTION GdipCreatePathGradientI LIB "gdiplus.dll" ALIAS "GdipCreatePathGradientI" (pPoint AS POINTL, BYVAL COUNT AS LONG, BYVAL WrapMd AS LONG, polyGradient AS LONG) AS LONG
DECLARE FUNCTION GdipCreatePathGradientFromPath LIB "gdiplus.dll" ALIAS "GdipCreatePathGradientFromPath" (BYVAL PATH AS LONG, polyGradient AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathGradientCenterColor LIB "gdiplus.dll" ALIAS "GdipGetPathGradientCenterColor" (BYVAL brush AS LONG, lColors AS LONG) AS LONG
DECLARE FUNCTION GdipSetPathGradientCenterColor LIB "gdiplus.dll" ALIAS "GdipSetPathGradientCenterColor" (BYVAL brush AS LONG, BYVAL lColors AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathGradientSurroundColorsWithCount LIB "gdiplus.dll" ALIAS "GdipGetPathGradientSurroundColorsWithCount" (BYVAL brush AS LONG, argb AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipSetPathGradientSurroundColorsWithCount LIB "gdiplus.dll" ALIAS "GdipSetPathGradientSurroundColorsWithCount" (BYVAL brush AS LONG, argb AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathGradientPath LIB "gdiplus.dll" ALIAS "GdipGetPathGradientPath" (BYVAL brush AS LONG, BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipSetPathGradientPath LIB "gdiplus.dll" ALIAS "GdipSetPathGradientPath" (BYVAL brush AS LONG, BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathGradientCenterPoint LIB "gdiplus.dll" ALIAS "GdipGetPathGradientCenterPoint" (BYVAL brush AS LONG, pPoint AS POINTF) AS LONG
DECLARE FUNCTION GdipGetPathGradientCenterPointI LIB "gdiplus.dll" ALIAS "GdipGetPathGradientCenterPointI" (BYVAL brush AS LONG, pPoint AS POINTL) AS LONG
DECLARE FUNCTION GdipSetPathGradientCenterPoint LIB "gdiplus.dll" ALIAS "GdipSetPathGradientCenterPoint" (BYVAL brush AS LONG, pPoint AS POINTF) AS LONG
DECLARE FUNCTION GdipSetPathGradientCenterPointI LIB "gdiplus.dll" ALIAS "GdipSetPathGradientCenterPointI" (BYVAL brush AS LONG, pPoint AS POINTL) AS LONG
DECLARE FUNCTION GdipGetPathGradientRect LIB "gdiplus.dll" ALIAS "GdipGetPathGradientRect" (BYVAL brush AS LONG, nRect AS RECTF) AS LONG
DECLARE FUNCTION GdipGetPathGradientRectI LIB "gdiplus.dll" ALIAS "GdipGetPathGradientRectI" (BYVAL brush AS LONG, nRect AS RECTL) AS LONG
DECLARE FUNCTION GdipGetPathGradientPointCount LIB "gdiplus.dll" ALIAS "GdipGetPathGradientPointCount" (BYVAL brush AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathGradientSurroundColorCount LIB "gdiplus.dll" ALIAS "GdipGetPathGradientSurroundColorCount" (BYVAL brush AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipSetPathGradientGammaCorrection LIB "gdiplus.dll" ALIAS "GdipSetPathGradientGammaCorrection" (BYVAL brush AS LONG, BYVAL useGammaCorrection AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathGradientGammaCorrection LIB "gdiplus.dll" ALIAS "GdipGetPathGradientGammaCorrection" (BYVAL brush AS LONG, useGammaCorrection AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathGradientBlendCount LIB "gdiplus.dll" ALIAS "GdipGetPathGradientBlendCount" (BYVAL brush AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathGradientBlend LIB "gdiplus.dll" ALIAS "GdipGetPathGradientBlend" (BYVAL brush AS LONG, blend AS SINGLE, positions AS SINGLE, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipSetPathGradientBlend LIB "gdiplus.dll" ALIAS "GdipSetPathGradientBlend" (BYVAL brush AS LONG, blend AS SINGLE, positions AS SINGLE, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathGradientPresetBlendCount LIB "gdiplus.dll" ALIAS "GdipGetPathGradientPresetBlendCount" (BYVAL brush AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathGradientPresetBlend LIB "gdiplus.dll" ALIAS "GdipGetPathGradientPresetBlend" (BYVAL brush AS LONG, blend AS LONG, positions AS SINGLE, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipSetPathGradientPresetBlend LIB "gdiplus.dll" ALIAS "GdipSetPathGradientPresetBlend" (BYVAL brush AS LONG, blend AS LONG, positions AS SINGLE, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipSetPathGradientSigmaBlend LIB "gdiplus.dll" ALIAS "GdipSetPathGradientSigmaBlend" (BYVAL brush AS LONG, BYVAL FOCUS AS SINGLE, BYVAL sscale AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetPathGradientLinearBlend LIB "gdiplus.dll" ALIAS "GdipSetPathGradientLinearBlend" (BYVAL brush AS LONG, BYVAL FOCUS AS SINGLE, BYVAL sscale AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetPathGradientWrapMode LIB "gdiplus.dll" ALIAS "GdipGetPathGradientWrapMode" (BYVAL brush AS LONG, WrapMd AS LONG) AS LONG
DECLARE FUNCTION GdipSetPathGradientWrapMode LIB "gdiplus.dll" ALIAS "GdipSetPathGradientWrapMode" (BYVAL brush AS LONG, BYVAL WrapMd AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathGradientTransform LIB "gdiplus.dll" ALIAS "GdipGetPathGradientTransform" (BYVAL brush AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipSetPathGradientTransform LIB "gdiplus.dll" ALIAS "GdipSetPathGradientTransform" (BYVAL brush AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipResetPathGradientTransform LIB "gdiplus.dll" ALIAS "GdipResetPathGradientTransform" (BYVAL brush AS LONG) AS LONG
DECLARE FUNCTION GdipMultiplyPathGradientTransform LIB "gdiplus.dll" ALIAS "GdipMultiplyPathGradientTransform" (BYVAL brush AS LONG, BYVAL matrix AS LONG, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipTranslatePathGradientTransform LIB "gdiplus.dll" ALIAS "GdipTranslatePathGradientTransform" (BYVAL brush AS LONG, BYVAL dx AS SINGLE, BYVAL dy AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipScalePathGradientTransform LIB "gdiplus.dll" ALIAS "GdipScalePathGradientTransform" (BYVAL brush AS LONG, BYVAL sx AS SINGLE, BYVAL sy AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipRotatePathGradientTransform LIB "gdiplus.dll" ALIAS "GdipRotatePathGradientTransform" (BYVAL brush AS LONG, BYVAL angle AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathGradientFocusScales LIB "gdiplus.dll" ALIAS "GdipGetPathGradientFocusScales" (BYVAL brush AS LONG, xScale AS SINGLE, yScale AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetPathGradientFocusScales LIB "gdiplus.dll" ALIAS "GdipSetPathGradientFocusScales" (BYVAL brush AS LONG, BYVAL xScale AS SINGLE, BYVAL yScale AS SINGLE) AS LONG
' GraphicsPath Functions (ALL)
DECLARE FUNCTION GdipCreatePath LIB "gdiplus.dll" ALIAS "GdipCreatePath" (BYVAL brushmode AS LONG, PATH AS LONG) AS LONG
' NOTE: The types parameter is treated as a byte array
DECLARE FUNCTION GdipCreatePath2 LIB "gdiplus.dll" ALIAS "GdipCreatePath2" (pPoint AS POINTF, types AS ANY, BYVAL COUNT AS LONG, brushmode AS LONG, PATH AS LONG) AS LONG
DECLARE FUNCTION GdipCreatePath2I LIB "gdiplus.dll" ALIAS "GdipCreatePath2I" (pPoint AS POINTL, types AS ANY, BYVAL COUNT AS LONG, brushmode AS LONG, PATH AS LONG) AS LONG
DECLARE FUNCTION GdipClonePath LIB "gdiplus.dll" ALIAS "GdipClonePath" (BYVAL PATH AS LONG, clonePath AS LONG) AS LONG
DECLARE FUNCTION GdipDeletePath LIB "gdiplus.dll" ALIAS "GdipDeletePath" (BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipResetPath LIB "gdiplus.dll" ALIAS "GdipResetPath" (BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipGetPointCount LIB "gdiplus.dll" ALIAS "GdipGetPointCount" (BYVAL PATH AS LONG, COUNT AS LONG) AS LONG
' NOTE: The types parameter is treated as a byte array
DECLARE FUNCTION GdipGetPathTypes LIB "gdiplus.dll" ALIAS "GdipGetPathTypes" (BYVAL PATH AS LONG, types AS ANY, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathPoints LIB "gdiplus.dll" ALIAS "GdipGetPathPoints" (BYVAL PATH AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathPointsI LIB "gdiplus.dll" ALIAS "GdipGetPathPointsI" (BYVAL PATH AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathFillMode LIB "gdiplus.dll" ALIAS "GdipGetPathFillMode" (BYVAL PATH AS LONG, BYVAL brushmode AS LONG) AS LONG
DECLARE FUNCTION GdipSetPathFillMode LIB "gdiplus.dll" ALIAS "GdipSetPathFillMode" (BYVAL PATH AS LONG, BYVAL brushmode AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathData LIB "gdiplus.dll" ALIAS "GdipGetPathData" (BYVAL PATH AS LONG, pdata AS PathData) AS LONG
DECLARE FUNCTION GdipStartPathFigure LIB "gdiplus.dll" ALIAS "GdipStartPathFigure" (BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipClosePathFigure LIB "gdiplus.dll" ALIAS "GdipClosePathFigure" (BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipClosePathFigures LIB "gdiplus.dll" ALIAS "GdipClosePathFigures" (BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipSetPathMarker LIB "gdiplus.dll" ALIAS "GdipSetPathMarker" (BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipClearPathMarkers LIB "gdiplus.dll" ALIAS "GdipClearPathMarkers" (BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipReversePath LIB "gdiplus.dll" ALIAS "GdipReversePath" (BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathLastPoint LIB "gdiplus.dll" ALIAS "GdipGetPathLastPoint" (BYVAL PATH AS LONG, lastPoint AS POINTF) AS LONG
DECLARE FUNCTION GdipAddPathLine LIB "gdiplus.dll" ALIAS "GdipAddPathLine" (BYVAL PATH AS LONG, BYVAL x1 AS SINGLE, BYVAL y1 AS SINGLE, BYVAL x2 AS SINGLE, BYVAL y2 AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathLine2 LIB "gdiplus.dll" ALIAS "GdipAddPathLine2" (BYVAL PATH AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathArc LIB "gdiplus.dll" ALIAS "GdipAddPathArc" (BYVAL PATH AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE, BYVAL startAngle AS SINGLE, BYVAL sweepAngle AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathBezier LIB "gdiplus.dll" ALIAS "GdipAddPathBezier" (BYVAL PATH AS LONG, BYVAL x1 AS SINGLE, BYVAL y1 AS SINGLE, BYVAL x2 AS SINGLE, BYVAL y2 AS SINGLE, _
BYVAL x3 AS SINGLE, BYVAL y3 AS SINGLE, BYVAL x4 AS SINGLE, BYVAL y4 AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathBeziers LIB "gdiplus.dll" ALIAS "GdipAddPathBeziers" (BYVAL PATH AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathCurve LIB "gdiplus.dll" ALIAS "GdipAddPathCurve" (BYVAL PATH AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathCurve2 LIB "gdiplus.dll" ALIAS "GdipAddPathCurve2" (BYVAL PATH AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG, BYVAL tension AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathCurve3 LIB "gdiplus.dll" ALIAS "GdipAddPathCurve3" (BYVAL PATH AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG, BYVAL offset AS LONG, BYVAL numberOfSegments AS LONG, BYVAL tension AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathClosedCurve LIB "gdiplus.dll" ALIAS "GdipAddPathClosedCurve" (BYVAL PATH AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathClosedCurve2 LIB "gdiplus.dll" ALIAS "GdipAddPathClosedCurve2" (BYVAL PATH AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG, BYVAL tension AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathRectangle LIB "gdiplus.dll" ALIAS "GdipAddPathRectangle" (BYVAL PATH AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathRectangles LIB "gdiplus.dll" ALIAS "GdipAddPathRectangles" (BYVAL PATH AS LONG, nRect AS RECTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathEllipse LIB "gdiplus.dll" ALIAS "GdipAddPathEllipse" (BYVAL PATH AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathPie LIB "gdiplus.dll" ALIAS "GdipAddPathPie" (BYVAL PATH AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE, BYVAL startAngle AS SINGLE, BYVAL sweepAngle AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathPolygon LIB "gdiplus.dll" ALIAS "GdipAddPathPolygon" (BYVAL PATH AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathPath LIB "gdiplus.dll" ALIAS "GdipAddPathPath" (BYVAL PATH AS LONG, BYVAL addingPath AS LONG, BYVAL bConnect AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathString LIB "gdiplus.dll" ALIAS "GdipAddPathString" (BYVAL PATH AS LONG, BYVAL str AS STRING, BYVAL length AS LONG, BYVAL family AS LONG, _
BYVAL STYLE AS LONG, BYVAL emSize AS SINGLE, layoutRect AS RECTF, BYVAL StringFormat AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathStringI LIB "gdiplus.dll" ALIAS "GdipAddPathStringI" (BYVAL PATH AS LONG, BYVAL str AS STRING, BYVAL length AS LONG, BYVAL family AS LONG, _
BYVAL STYLE AS LONG, BYVAL emSize AS SINGLE, layoutRect AS RECTL, BYVAL StringFormat AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathLineI LIB "gdiplus.dll" ALIAS "GdipAddPathLineI" (BYVAL PATH AS LONG, BYVAL x1 AS LONG, BYVAL y1 AS LONG, BYVAL x2 AS LONG, BYVAL y2 AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathLine2I LIB "gdiplus.dll" ALIAS "GdipAddPathLine2I" (BYVAL PATH AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathArcI LIB "gdiplus.dll" ALIAS "GdipAddPathArcI" (BYVAL PATH AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG, BYVAL startAngle AS SINGLE, BYVAL sweepAngle AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathBezierI LIB "gdiplus.dll" ALIAS "GdipAddPathBezierI" (BYVAL PATH AS LONG, BYVAL x1 AS LONG, BYVAL y1 AS LONG, BYVAL x2 AS LONG, BYVAL y2 AS LONG, BYVAL x3 AS LONG, BYVAL y3 AS LONG, BYVAL x4 AS LONG, BYVAL y4 AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathBeziersI LIB "gdiplus.dll" ALIAS "GdipAddPathBeziersI" (BYVAL PATH AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathCurveI LIB "gdiplus.dll" ALIAS "GdipAddPathCurveI" (BYVAL PATH AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathCurve2I LIB "gdiplus.dll" ALIAS "GdipAddPathCurve2I" (BYVAL PATH AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG, BYVAL tension AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathCurve3I LIB "gdiplus.dll" ALIAS "GdipAddPathCurve3I" (BYVAL PATH AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG, BYVAL offset AS LONG, BYVAL numberOfSegments AS LONG, BYVAL tension AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathClosedCurveI LIB "gdiplus.dll" ALIAS "GdipAddPathClosedCurveI" (BYVAL PATH AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathClosedCurve2I LIB "gdiplus.dll" ALIAS "GdipAddPathClosedCurve2I" (BYVAL PATH AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG, BYVAL tension AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathRectangleI LIB "gdiplus.dll" ALIAS "GdipAddPathRectangleI" (BYVAL PATH AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathRectanglesI LIB "gdiplus.dll" ALIAS "GdipAddPathRectanglesI" (BYVAL PATH AS LONG, rects AS RECTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathEllipseI LIB "gdiplus.dll" ALIAS "GdipAddPathEllipseI" (BYVAL PATH AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG) AS LONG
DECLARE FUNCTION GdipAddPathPieI LIB "gdiplus.dll" ALIAS "GdipAddPathPieI" (BYVAL PATH AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG, BYVAL startAngle AS SINGLE, BYVAL sweepAngle AS SINGLE) AS LONG
DECLARE FUNCTION GdipAddPathPolygonI LIB "gdiplus.dll" ALIAS "GdipAddPathPolygonI" (BYVAL PATH AS LONG, pPoint AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipFlattenPath LIB "gdiplus.dll" ALIAS "GdipFlattenPath" (BYVAL PATH AS LONG, BYVAL matrix AS LONG, BYVAL flatness AS SINGLE) AS LONG
DECLARE FUNCTION GdipWindingModeOutline LIB "gdiplus.dll" ALIAS "GdipWindingModeOutline" (BYVAL PATH AS LONG, BYVAL matrix AS LONG, BYVAL flatness AS SINGLE) AS LONG
DECLARE FUNCTION GdipWidenPath LIB "gdiplus.dll" ALIAS "GdipWidenPath" (BYVAL nativePath AS LONG, BYVAL pen AS LONG, BYVAL matrix AS LONG, BYVAL flatness AS SINGLE) AS LONG
DECLARE FUNCTION GdipWarpPath LIB "gdiplus.dll" ALIAS "GdipWarpPath" (BYVAL PATH AS LONG, BYVAL matrix AS LONG, pPoint AS POINTF, BYVAL COUNT AS LONG, BYVAL srcx AS SINGLE, BYVAL srcy AS SINGLE, _
BYVAL srcwidth AS SINGLE, BYVAL srcheight AS SINGLE, BYVAL WarpMd AS LONG, BYVAL flatness AS SINGLE) AS LONG
DECLARE FUNCTION GdipTransformPath LIB "gdiplus.dll" ALIAS "GdipTransformPath" (BYVAL PATH AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathWorldBounds LIB "gdiplus.dll" ALIAS "GdipGetPathWorldBounds" (BYVAL PATH AS LONG, bounds AS RECTF, BYVAL matrix AS LONG, BYVAL pen AS LONG) AS LONG
DECLARE FUNCTION GdipGetPathWorldBoundsI LIB "gdiplus.dll" ALIAS "GdipGetPathWorldBoundsI" (BYVAL PATH AS LONG, bounds AS RECTL, BYVAL matrix AS LONG, BYVAL pen AS LONG) AS LONG
DECLARE FUNCTION GdipIsVisiblePathPoint LIB "gdiplus.dll" ALIAS "GdipIsVisiblePathPoint" (BYVAL PATH AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL graphics AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsVisiblePathPointI LIB "gdiplus.dll" ALIAS "GdipIsVisiblePathPointI" (BYVAL PATH AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL graphics AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsOutlineVisiblePathPoint LIB "gdiplus.dll" ALIAS "GdipIsOutlineVisiblePathPoint" (BYVAL PATH AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL pen AS LONG, BYVAL graphics AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsOutlineVisiblePathPointI LIB "gdiplus.dll" ALIAS "GdipIsOutlineVisiblePathPointI" (BYVAL PATH AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL pen AS LONG, BYVAL graphics AS LONG, result AS LONG) AS LONG
' PathIterator Functions (ALL)
DECLARE FUNCTION GdipCreatePathIter LIB "gdiplus.dll" ALIAS "GdipCreatePathIter" (iterator AS LONG, BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipDeletePathIter LIB "gdiplus.dll" ALIAS "GdipDeletePathIter" (BYVAL iterator AS LONG) AS LONG
DECLARE FUNCTION GdipPathIterNextSubpath LIB "gdiplus.dll" ALIAS "GdipPathIterNextSubpath" (BYVAL iterator AS LONG, resultCount AS LONG, startIndex AS LONG, endIndex AS LONG, isClosed AS LONG) AS LONG
DECLARE FUNCTION GdipPathIterNextSubpathPath LIB "gdiplus.dll" ALIAS "GdipPathIterNextSubpathPath" (BYVAL iterator AS LONG, resultCount AS LONG, BYVAL PATH AS LONG, isClosed AS LONG) AS LONG
DECLARE FUNCTION GdipPathIterNextPathType LIB "gdiplus.dll" ALIAS "GdipPathIterNextPathType" (BYVAL iterator AS LONG, resultCount AS LONG, pathType AS ANY, startIndex AS LONG, endIndex AS LONG) AS LONG
DECLARE FUNCTION GdipPathIterNextMarker LIB "gdiplus.dll" ALIAS "GdipPathIterNextMarker" (BYVAL iterator AS LONG, resultCount AS LONG, startIndex AS LONG, endIndex AS LONG) AS LONG
DECLARE FUNCTION GdipPathIterNextMarkerPath LIB "gdiplus.dll" ALIAS "GdipPathIterNextMarkerPath" (BYVAL iterator AS LONG, resultCount AS LONG, BYVAL PATH AS LONG) AS LONG
DECLARE FUNCTION GdipPathIterGetCount LIB "gdiplus.dll" ALIAS "GdipPathIterGetCount" (BYVAL iterator AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipPathIterGetSubpathCount LIB "gdiplus.dll" ALIAS "GdipPathIterGetSubpathCount" (BYVAL iterator AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipPathIterIsValid LIB "gdiplus.dll" ALIAS "GdipPathIterIsValid" (BYVAL iterator AS LONG, valid AS LONG) AS LONG
DECLARE FUNCTION GdipPathIterHasCurve LIB "gdiplus.dll" ALIAS "GdipPathIterHasCurve" (BYVAL iterator AS LONG, hasCurve AS LONG) AS LONG
DECLARE FUNCTION GdipPathIterRewind LIB "gdiplus.dll" ALIAS "GdipPathIterRewind" (BYVAL iterator AS LONG) AS LONG
' NOTE: The types parameter is treated as a byte array
DECLARE FUNCTION GdipPathIterEnumerate LIB "gdiplus.dll" ALIAS "GdipPathIterEnumerate" (BYVAL iterator AS LONG, resultCount AS LONG, pPoint AS POINTF, types AS ANY, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipPathIterCopyData LIB "gdiplus.dll" ALIAS "GdipPathIterCopyData" (BYVAL iterator AS LONG, resultCount AS LONG, pPoint AS POINTF, types AS ANY, BYVAL startIndex AS LONG, BYVAL endIndex AS LONG) AS LONG
' Matrix Functions (ALL)
DECLARE FUNCTION GdipCreateMatrix LIB "gdiplus.dll" ALIAS "GdipCreateMatrix" (matrix AS LONG) AS LONG
DECLARE FUNCTION GdipCreateMatrix2 LIB "gdiplus.dll" ALIAS "GdipCreateMatrix2" (BYVAL m11 AS SINGLE, BYVAL m12 AS SINGLE, BYVAL m21 AS SINGLE, BYVAL m22 AS SINGLE, BYVAL dx AS SINGLE, BYVAL dy AS SINGLE, matrix AS LONG) AS LONG
DECLARE FUNCTION GdipCreateMatrix3 LIB "gdiplus.dll" ALIAS "GdipCreateMatrix3" (nRect AS RECTF, dstplg AS POINTF, matrix AS LONG) AS LONG
DECLARE FUNCTION GdipCreateMatrix3I LIB "gdiplus.dll" ALIAS "GdipCreateMatrix3I" (nRect AS RECTL, dstplg AS POINTL, matrix AS LONG) AS LONG
DECLARE FUNCTION GdipCloneMatrix LIB "gdiplus.dll" ALIAS "GdipCloneMatrix" (BYVAL matrix AS LONG, cloneMatrix AS LONG) AS LONG
DECLARE FUNCTION GdipDeleteMatrix LIB "gdiplus.dll" ALIAS "GdipDeleteMatrix" (BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipSetMatrixElements LIB "gdiplus.dll" ALIAS "GdipSetMatrixElements" (BYVAL matrix AS LONG, BYVAL m11 AS SINGLE, BYVAL m12 AS SINGLE, BYVAL m21 AS SINGLE, BYVAL m22 AS SINGLE, BYVAL dx AS SINGLE, BYVAL dy AS SINGLE) AS LONG
DECLARE FUNCTION GdipMultiplyMatrix LIB "gdiplus.dll" ALIAS "GdipMultiplyMatrix" (BYVAL matrix AS LONG, BYVAL matrix2 AS LONG, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipTranslateMatrix LIB "gdiplus.dll" ALIAS "GdipTranslateMatrix" (BYVAL matrix AS LONG, BYVAL offsetX AS SINGLE, BYVAL offsetY AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipScaleMatrix LIB "gdiplus.dll" ALIAS "GdipScaleMatrix" (BYVAL matrix AS LONG, BYVAL scaleX AS SINGLE, BYVAL scaleY AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipRotateMatrix LIB "gdiplus.dll" ALIAS "GdipRotateMatrix" (BYVAL matrix AS LONG, BYVAL angle AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipShearMatrix LIB "gdiplus.dll" ALIAS "GdipShearMatrix" (BYVAL matrix AS LONG, BYVAL shearX AS SINGLE, BYVAL shearY AS SINGLE, BYVAL order AS LONG) AS LONG
DECLARE FUNCTION GdipInvertMatrix LIB "gdiplus.dll" ALIAS "GdipInvertMatrix" (BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipTransformMatrixPoints LIB "gdiplus.dll" ALIAS "GdipTransformMatrixPoints" (BYVAL matrix AS LONG, pts AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipTransformMatrixPointsI LIB "gdiplus.dll" ALIAS "GdipTransformMatrixPointsI" (BYVAL matrix AS LONG, pts AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipVectorTransformMatrixPoints LIB "gdiplus.dll" ALIAS "GdipVectorTransformMatrixPoints" (BYVAL matrix AS LONG, pts AS POINTF, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipVectorTransformMatrixPointsI LIB "gdiplus.dll" ALIAS "GdipVectorTransformMatrixPointsI" (BYVAL matrix AS LONG, pts AS POINTL, BYVAL COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipGetMatrixElements LIB "gdiplus.dll" ALIAS "GdipGetMatrixElements" (BYVAL matrix AS LONG, matrixOut AS SINGLE) AS LONG
DECLARE FUNCTION GdipIsMatrixInvertible LIB "gdiplus.dll" ALIAS "GdipIsMatrixInvertible" (BYVAL matrix AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsMatrixIdentity LIB "gdiplus.dll" ALIAS "GdipIsMatrixIdentity" (BYVAL matrix AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsMatrixEqual LIB "gdiplus.dll" ALIAS "GdipIsMatrixEqual" (BYVAL matrix AS LONG, BYVAL matrix2 AS LONG, result AS LONG) AS LONG
' Region Functions (ALL)
DECLARE FUNCTION GdipCreateRegion LIB "gdiplus.dll" ALIAS "GdipCreateRegion" (region AS LONG) AS LONG
DECLARE FUNCTION GdipCreateRegionRect LIB "gdiplus.dll" ALIAS "GdipCreateRegionRect" (nRect AS RECTF, region AS LONG) AS LONG
DECLARE FUNCTION GdipCreateRegionRectI LIB "gdiplus.dll" ALIAS "GdipCreateRegionRectI" (nRect AS RECTL, region AS LONG) AS LONG
DECLARE FUNCTION GdipCreateRegionPath LIB "gdiplus.dll" ALIAS "GdipCreateRegionPath" (BYVAL PATH AS LONG, region AS LONG) AS LONG
' NOTE: The regionData parameter is treated as a byte array
DECLARE FUNCTION GdipCreateRegionRgnData LIB "gdiplus.dll" ALIAS "GdipCreateRegionRgnData" (regionData AS ANY, BYVAL SIZE AS LONG, region AS LONG) AS LONG
DECLARE FUNCTION GdipCreateRegionHrgn LIB "gdiplus.dll" ALIAS "GdipCreateRegionHrgn" (BYVAL hRgn AS LONG, region AS LONG) AS LONG
DECLARE FUNCTION GdipCloneRegion LIB "gdiplus.dll" ALIAS "GdipCloneRegion" (BYVAL region AS LONG, cloneRegion AS LONG) AS LONG
DECLARE FUNCTION GdipDeleteRegion LIB "gdiplus.dll" ALIAS "GdipDeleteRegion" (BYVAL region AS LONG) AS LONG
DECLARE FUNCTION GdipSetInfinite LIB "gdiplus.dll" ALIAS "GdipSetInfinite" (BYVAL region AS LONG) AS LONG
DECLARE FUNCTION GdipSetEmpty LIB "gdiplus.dll" ALIAS "GdipSetEmpty" (BYVAL region AS LONG) AS LONG
DECLARE FUNCTION GdipCombineRegionRect LIB "gdiplus.dll" ALIAS "GdipCombineRegionRect" (BYVAL region AS LONG, nRect AS RECTF, BYVAL CombineMd AS LONG) AS LONG
DECLARE FUNCTION GdipCombineRegionRectI LIB "gdiplus.dll" ALIAS "GdipCombineRegionRectI" (BYVAL region AS LONG, nRect AS RECTF, BYVAL CombineMd AS LONG) AS LONG
DECLARE FUNCTION GdipCombineRegionPath LIB "gdiplus.dll" ALIAS "GdipCombineRegionPath" (BYVAL region AS LONG, BYVAL PATH AS LONG, BYVAL CombineMd AS LONG) AS LONG
DECLARE FUNCTION GdipCombineRegionRegion LIB "gdiplus.dll" ALIAS "GdipCombineRegionRegion" (BYVAL region AS LONG, BYVAL region2 AS LONG, BYVAL CombineMd AS LONG) AS LONG
DECLARE FUNCTION GdipTranslateRegion LIB "gdiplus.dll" ALIAS "GdipTranslateRegion" (BYVAL region AS LONG, BYVAL dx AS SINGLE, BYVAL dy AS SINGLE) AS LONG
DECLARE FUNCTION GdipTranslateRegionI LIB "gdiplus.dll" ALIAS "GdipTranslateRegionI" (BYVAL region AS LONG, BYVAL dx AS LONG, BYVAL dy AS LONG) AS LONG
DECLARE FUNCTION GdipTransformRegion LIB "gdiplus.dll" ALIAS "GdipTransformRegion" (BYVAL region AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipGetRegionBounds LIB "gdiplus.dll" ALIAS "GdipGetRegionBounds" (BYVAL region AS LONG, BYVAL graphics AS LONG, nRect AS RECTF) AS LONG
DECLARE FUNCTION GdipGetRegionBoundsI LIB "gdiplus.dll" ALIAS "GdipGetRegionBoundsI" (BYVAL region AS LONG, BYVAL graphics AS LONG, nRect AS RECTL) AS LONG
DECLARE FUNCTION GdipGetRegionHRgn LIB "gdiplus.dll" ALIAS "GdipGetRegionHRgn" (BYVAL region AS LONG, BYVAL graphics AS LONG, hRgn AS LONG) AS LONG
DECLARE FUNCTION GdipIsEmptyRegion LIB "gdiplus.dll" ALIAS "GdipIsEmptyRegion" (BYVAL region AS LONG, BYVAL graphics AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsInfiniteRegion LIB "gdiplus.dll" ALIAS "GdipIsInfiniteRegion" (BYVAL region AS LONG, BYVAL graphics AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsEqualRegion LIB "gdiplus.dll" ALIAS "GdipIsEqualRegion" (BYVAL region AS LONG, BYVAL region2 AS LONG, BYVAL graphics AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipGetRegionDataSize LIB "gdiplus.dll" ALIAS "GdipGetRegionDataSize" (BYVAL region AS LONG, bufferSize AS LONG) AS LONG
' NOTE: The buffer parameter is treated as a byte array
DECLARE FUNCTION GdipGetRegionData LIB "gdiplus.dll" ALIAS "GdipGetRegionData" (BYVAL region AS LONG, buffer AS ANY, BYVAL bufferSize AS LONG, sizeFilled AS LONG) AS LONG
DECLARE FUNCTION GdipIsVisibleRegionPoint LIB "gdiplus.dll" ALIAS "GdipIsVisibleRegionPoint" (BYVAL region AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL graphics AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsVisibleRegionPointI LIB "gdiplus.dll" ALIAS "GdipIsVisibleRegionPointI" (BYVAL region AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL graphics AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsVisibleRegionRect LIB "gdiplus.dll" ALIAS "GdipIsVisibleRegionRect" (BYVAL region AS LONG, BYVAL x AS SINGLE, BYVAL y AS SINGLE, BYVAL nWidth AS SINGLE, BYVAL Height AS SINGLE, BYVAL graphics AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipIsVisibleRegionRectI LIB "gdiplus.dll" ALIAS "GdipIsVisibleRegionRectI" (BYVAL region AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nWidth AS LONG, BYVAL Height AS LONG, BYVAL graphics AS LONG, result AS LONG) AS LONG
DECLARE FUNCTION GdipGetRegionScansCount LIB "gdiplus.dll" ALIAS "GdipGetRegionScansCount" (BYVAL region AS LONG, Ucount AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipGetRegionScans LIB "gdiplus.dll" ALIAS "GdipGetRegionScans" (BYVAL region AS LONG, rects AS RECTF, COUNT AS LONG, BYVAL matrix AS LONG) AS LONG
DECLARE FUNCTION GdipGetRegionScansI LIB "gdiplus.dll" ALIAS "GdipGetRegionScansI" (BYVAL region AS LONG, rects AS RECTL, COUNT AS LONG, BYVAL matrix AS LONG) AS LONG
' ImageAttributes APIs (ALL)
DECLARE FUNCTION GdipCreateImageAttributes LIB "gdiplus.dll" ALIAS "GdipCreateImageAttributes" (imageattr AS LONG) AS LONG
DECLARE FUNCTION GdipCloneImageAttributes LIB "gdiplus.dll" ALIAS "GdipCloneImageAttributes" (BYVAL imageattr AS LONG, cloneImageattr AS LONG) AS LONG
DECLARE FUNCTION GdipDisposeImageAttributes LIB "gdiplus.dll" ALIAS "GdipDisposeImageAttributes" (BYVAL imageattr AS LONG) AS LONG
DECLARE FUNCTION GdipSetImageAttributesToIdentity LIB "gdiplus.dll" ALIAS "GdipSetImageAttributesToIdentity" (BYVAL imageattr AS LONG, BYVAL ClrAdjType AS LONG) AS LONG
DECLARE FUNCTION GdipResetImageAttributes LIB "gdiplus.dll" ALIAS "GdipResetImageAttributes" (BYVAL imageattr AS LONG, BYVAL ClrAdjType AS LONG) AS LONG
' NOTE: The colourMatrix and grayMatrix parameters expect a ColorMatrix structure or NULL
DECLARE FUNCTION GdipSetImageAttributesColorMatrix LIB "gdiplus.dll" ALIAS "GdipSetImageAttributesColorMatrix" (BYVAL imageattr AS LONG, BYVAL ClrAdjType AS LONG, BYVAL enableFlag AS LONG, _
colourMatrix AS ColorMatrix, grayMatrix AS ANY, BYVAL flags AS LONG) AS LONG
DECLARE FUNCTION GdipSetImageAttributesThreshold LIB "gdiplus.dll" ALIAS "GdipSetImageAttributesThreshold" (BYVAL imageattr AS LONG, BYVAL ClrAdjType AS LONG, BYVAL enableFlag AS LONG, BYVAL threshold AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetImageAttributesGamma LIB "gdiplus.dll" ALIAS "GdipSetImageAttributesGamma" (BYVAL imageattr AS LONG, BYVAL ClrAdjType AS LONG, BYVAL enableFlag AS LONG, BYVAL gamma AS SINGLE) AS LONG
DECLARE FUNCTION GdipSetImageAttributesNoOp LIB "gdiplus.dll" ALIAS "GdipSetImageAttributesNoOp" (BYVAL imageattr AS LONG, BYVAL ClrAdjType AS LONG, BYVAL enableFlag AS LONG) AS LONG
DECLARE FUNCTION GdipSetImageAttributesColorKeys LIB "gdiplus.dll" ALIAS "GdipSetImageAttributesColorKeys" (BYVAL imageattr AS LONG, BYVAL ClrAdjType AS LONG, BYVAL enableFlag AS LONG, BYVAL colorLow AS LONG, BYVAL colorHigh AS LONG) AS LONG
DECLARE FUNCTION GdipSetImageAttributesOutputChannel LIB "gdiplus.dll" ALIAS "GdipSetImageAttributesOutputChannel" (BYVAL imageattr AS LONG, BYVAL ClrAdjstType AS LONG, BYVAL enableFlag AS LONG, BYVAL channelFlags AS LONG) AS LONG
DECLARE FUNCTION GdipSetImageAttributesOutputChannelColorProfile LIB "gdiplus.dll" ALIAS "GdipSetImageAttributesOutputChannelColorProfile" (BYVAL imageattr AS LONG, BYVAL ClrAdjType AS LONG, _
BYVAL enableFlag AS LONG, BYVAL colorProfileFilename AS STRING) AS LONG
DECLARE FUNCTION GdipSetImageAttributesRemapTable LIB "gdiplus.dll" ALIAS "GdipSetImageAttributesRemapTable" (BYVAL imageattr AS LONG, BYVAL ClrAdjType AS LONG, _
BYVAL enableFlag AS LONG, BYVAL mapSize AS LONG, map AS ColorMap) AS LONG
DECLARE FUNCTION GdipSetImageAttributesWrapMode LIB "gdiplus.dll" ALIAS "GdipSetImageAttributesWrapMode" (BYVAL imageattr AS LONG, BYVAL WRAP AS LONG, BYVAL argb AS LONG, BYVAL bClamp AS LONG) AS LONG
DECLARE FUNCTION GdipSetImageAttributesICMMode LIB "gdiplus.dll" ALIAS "GdipSetImageAttributesICMMode" (BYVAL imageattr AS LONG, BYVAL bOn AS LONG) AS LONG
DECLARE FUNCTION GdipGetImageAttributesAdjustedPalette LIB "gdiplus.dll" ALIAS "GdipGetImageAttributesAdjustedPalette" (BYVAL imageattr AS LONG, colorPal AS ColorPalette, BYVAL ClrAdjType AS LONG) AS LONG
' FontFamily Functions (ALL)
DECLARE FUNCTION GdipCreateFontFamilyFromName LIB "gdiplus.dll" ALIAS "GdipCreateFontFamilyFromName" (BYVAL FontName AS STRING, BYVAL fontCollection AS LONG, fontFamily AS LONG) AS LONG
DECLARE FUNCTION GdipDeleteFontFamily LIB "gdiplus.dll" ALIAS "GdipDeleteFontFamily" (BYVAL fontFamily AS LONG) AS LONG
DECLARE FUNCTION GdipCloneFontFamily LIB "gdiplus.dll" ALIAS "GdipCloneFontFamily" (BYVAL fontFamily AS LONG, clonedFontFamily AS LONG) AS LONG
DECLARE FUNCTION GdipGetGenericFontFamilySansSerif LIB "gdiplus.dll" ALIAS "GdipGetGenericFontFamilySansSerif" (nativeFamily AS LONG) AS LONG
DECLARE FUNCTION GdipGetGenericFontFamilySerif LIB "gdiplus.dll" ALIAS "GdipGetGenericFontFamilySerif" (nativeFamily AS LONG) AS LONG
DECLARE FUNCTION GdipGetGenericFontFamilyMonospace LIB "gdiplus.dll" ALIAS "GdipGetGenericFontFamilyMonospace" (nativeFamily AS LONG) AS LONG
' NOTE: name must be LF_FACESIZE in length or less
DECLARE FUNCTION GdipGetFamilyName LIB "gdiplus.dll" ALIAS "GdipGetFamilyName" (BYVAL family AS LONG, BYVAL FilName AS STRING, BYVAL language AS INTEGER) AS LONG
DECLARE FUNCTION GdipIsStyleAvailable LIB "gdiplus.dll" ALIAS "GdipIsStyleAvailable" (BYVAL family AS LONG, BYVAL STYLE AS LONG, IsStyleAvailable AS LONG) AS LONG
DECLARE FUNCTION GdipFontCollectionEnumerable LIB "gdiplus.dll" ALIAS "GdipFontCollectionEnumerable" (BYVAL fontCollection AS LONG, BYVAL graphics AS LONG, numFound AS LONG) AS LONG
DECLARE FUNCTION GdipFontCollectionEnumerate LIB "gdiplus.dll" ALIAS "GdipFontCollectionEnumerate" (BYVAL fontCollection AS LONG, BYVAL numSought AS LONG, gpfamilies AS LONG, BYVAL numFound AS LONG, BYVAL graphics AS LONG) AS LONG
DECLARE FUNCTION GdipGetEmHeight LIB "gdiplus.dll" ALIAS "GdipGetEmHeight" (BYVAL family AS LONG, BYVAL STYLE AS LONG, EmHeight AS INTEGER) AS LONG
DECLARE FUNCTION GdipGetCellAscent LIB "gdiplus.dll" ALIAS "GdipGetCellAscent" (BYVAL family AS LONG, BYVAL STYLE AS LONG, CellAscent AS INTEGER) AS LONG
DECLARE FUNCTION GdipGetCellDescent LIB "gdiplus.dll" ALIAS "GdipGetCellDescent" (BYVAL family AS LONG, BYVAL STYLE AS LONG, CellDescent AS INTEGER) AS LONG
DECLARE FUNCTION GdipGetLineSpacing LIB "gdiplus.dll" ALIAS "GdipGetLineSpacing" (BYVAL family AS LONG, BYVAL STYLE AS LONG, LineSpacing AS INTEGER) AS LONG
' Font Functions (ALL)
DECLARE FUNCTION GdipCreateFontFromDC LIB "gdiplus.dll" ALIAS "GdipCreateFontFromDC" (BYVAL hdc AS LONG, createdfont AS LONG) AS LONG
DECLARE FUNCTION GdipCreateFontFromLogfontA LIB "gdiplus.dll" ALIAS "GdipCreateFontFromLogfontA" (BYVAL hdc AS LONG, lfont AS LOGFONTA, createdfont AS LONG) AS LONG
DECLARE FUNCTION GdipCreateFontFromLogfontW LIB "gdiplus.dll" ALIAS "GdipCreateFontFromLogfontW" (BYVAL hdc AS LONG, lfont AS LOGFONTW, createdfont AS LONG) AS LONG
DECLARE FUNCTION GdipCreateFont LIB "gdiplus.dll" ALIAS "GdipCreateFont" (BYVAL fontFamily AS LONG, BYVAL emSize AS SINGLE, BYVAL STYLE AS LONG, BYVAL unit AS LONG, createdfont AS LONG) AS LONG
DECLARE FUNCTION GdipCloneFont LIB "gdiplus.dll" ALIAS "GdipCloneFont" (BYVAL curFont AS LONG, cloneFont AS LONG) AS LONG
DECLARE FUNCTION GdipDeleteFont LIB "gdiplus.dll" ALIAS "GdipDeleteFont" (BYVAL curFont AS LONG) AS LONG
DECLARE FUNCTION GdipGetFamily LIB "gdiplus.dll" ALIAS "GdipGetFamily" (BYVAL curFont AS LONG, family AS LONG) AS LONG
DECLARE FUNCTION GdipGetFontStyle LIB "gdiplus.dll" ALIAS "GdipGetFontStyle" (BYVAL curFont AS LONG, STYLE AS LONG) AS LONG
DECLARE FUNCTION GdipGetFontSize LIB "gdiplus.dll" ALIAS "GdipGetFontSize" (BYVAL curFont AS LONG, SIZE AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetFontUnit LIB "gdiplus.dll" ALIAS "GdipGetFontUnit" (BYVAL curFont AS LONG, unit AS LONG) AS LONG
DECLARE FUNCTION GdipGetFontHeight LIB "gdiplus.dll" ALIAS "GdipGetFontHeight" (BYVAL curFont AS LONG, BYVAL graphics AS LONG, Height AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetFontHeightGivenDPI LIB "gdiplus.dll" ALIAS "GdipGetFontHeightGivenDPI" (BYVAL curFont AS LONG, BYVAL dpi AS SINGLE, Height AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetLogFontA LIB "gdiplus.dll" ALIAS "GdipGetLogFontA" (BYVAL curFont AS LONG, BYVAL graphics AS LONG, lfont AS LOGFONTA) AS LONG
DECLARE FUNCTION GdipGetLogFontW LIB "gdiplus.dll" ALIAS "GdipGetLogFontW" (BYVAL curFont AS LONG, BYVAL graphics AS LONG, lfont AS LOGFONTW) AS LONG
DECLARE FUNCTION GdipNewInstalledFontCollection LIB "gdiplus.dll" ALIAS "GdipNewInstalledFontCollection" (fontCollection AS LONG) AS LONG
DECLARE FUNCTION GdipNewPrivateFontCollection LIB "gdiplus.dll" ALIAS "GdipNewPrivateFontCollection" (fontCollection AS LONG) AS LONG
DECLARE FUNCTION GdipDeletePrivateFontCollection LIB "gdiplus.dll" ALIAS "GdipDeletePrivateFontCollection" (fontCollection AS LONG) AS LONG
DECLARE FUNCTION GdipGetFontCollectionFamilyCount LIB "gdiplus.dll" ALIAS "GdipGetFontCollectionFamilyCount" (BYVAL fontCollection AS LONG, numFound AS LONG) AS LONG
DECLARE FUNCTION GdipGetFontCollectionFamilyList LIB "gdiplus.dll" ALIAS "GdipGetFontCollectionFamilyList" (BYVAL fontCollection AS LONG, BYVAL numSought AS LONG, gpfamilies AS LONG, numFound AS LONG) AS LONG
DECLARE FUNCTION GdipPrivateAddFontFile LIB "gdiplus.dll" ALIAS "GdipPrivateAddFontFile" (BYVAL fontCollection AS LONG, BYVAL FilName AS STRING) AS LONG
DECLARE FUNCTION GdipPrivateAddMemoryFont LIB "gdiplus.dll" ALIAS "GdipPrivateAddMemoryFont" (BYVAL fontCollection AS LONG, BYVAL MEMORY AS LONG, BYVAL length AS LONG) AS LONG
' Text Functions (ALL)
DECLARE FUNCTION GdipDrawString LIB "gdiplus.dll" ALIAS "GdipDrawString" (BYVAL graphics AS LONG, BYVAL str AS STRING, BYVAL length AS LONG, BYVAL thefont AS LONG, layoutRect AS RECTF, BYVAL StringFormat AS LONG, BYVAL brush AS LONG) AS LONG
DECLARE FUNCTION GdipMeasureString LIB "gdiplus.dll" ALIAS "GdipMeasureString" (BYVAL graphics AS LONG, BYVAL str AS STRING, BYVAL length AS LONG, BYVAL thefont AS LONG, layoutRect AS RECTF, BYVAL StringFormat AS LONG, boundingBox AS RECTF, _
codepointsFitted AS LONG, linesFilled AS LONG) AS LONG
DECLARE FUNCTION GdipMeasureCharacterRanges LIB "gdiplus.dll" ALIAS "GdipMeasureCharacterRanges" (BYVAL graphics AS LONG, BYVAL str AS STRING, BYVAL length AS LONG, BYVAL thefont AS LONG, layoutRect AS RECTF, BYVAL StringFormat AS LONG, BYVAL regionCount _
AS LONG, regions AS LONG) AS LONG
DECLARE FUNCTION GdipDrawDriverString LIB "gdiplus.dll" ALIAS "GdipDrawDriverString" (BYVAL graphics AS LONG, BYVAL str AS STRING, BYVAL length AS LONG, BYVAL thefont AS LONG, BYVAL brush AS LONG, positions AS POINTF, BYVAL flags AS LONG, BYVAL matrix AS _
LONG) AS LONG
DECLARE FUNCTION GdipMeasureDriverString LIB "gdiplus.dll" ALIAS "GdipMeasureDriverString" (BYVAL graphics AS LONG, BYVAL str AS STRING, BYVAL length AS LONG, BYVAL thefont AS LONG, positions AS POINTF, BYVAL flags AS LONG, BYVAL matrix AS LONG, _
boundingBox AS RECTF) AS LONG
' String format Functions (ALL)
DECLARE FUNCTION GdipCreateStringFormat LIB "gdiplus.dll" ALIAS "GdipCreateStringFormat" (BYVAL formatAttributes AS LONG, BYVAL language AS INTEGER, StringFormat AS LONG) AS LONG
DECLARE FUNCTION GdipStringFormatGetGenericDefault LIB "gdiplus.dll" ALIAS "GdipStringFormatGetGenericDefault" (StringFormat AS LONG) AS LONG
DECLARE FUNCTION GdipStringFormatGetGenericTypographic LIB "gdiplus.dll" ALIAS "GdipStringFormatGetGenericTypographic" (StringFormat AS LONG) AS LONG
DECLARE FUNCTION GdipDeleteStringFormat LIB "gdiplus.dll" ALIAS "GdipDeleteStringFormat" (BYVAL StringFormat AS LONG) AS LONG
DECLARE FUNCTION GdipCloneStringFormat LIB "gdiplus.dll" ALIAS "GdipCloneStringFormat" (BYVAL StringFormat AS LONG, newFormat AS LONG) AS LONG
DECLARE FUNCTION GdipSetStringFormatFlags LIB "gdiplus.dll" ALIAS "GdipSetStringFormatFlags" (BYVAL StringFormat AS LONG, BYVAL flags AS LONG) AS LONG
DECLARE FUNCTION GdipGetStringFormatFlags LIB "gdiplus.dll" ALIAS "GdipGetStringFormatFlags" (BYVAL StringFormat AS LONG, flags AS LONG) AS LONG
DECLARE FUNCTION GdipSetStringFormatAlign LIB "gdiplus.dll" ALIAS "GdipSetStringFormatAlign" (BYVAL StringFormat AS LONG, BYVAL align AS LONG) AS LONG
DECLARE FUNCTION GdipGetStringFormatAlign LIB "gdiplus.dll" ALIAS "GdipGetStringFormatAlign" (BYVAL StringFormat AS LONG, align AS LONG) AS LONG
DECLARE FUNCTION GdipSetStringFormatLineAlign LIB "gdiplus.dll" ALIAS "GdipSetStringFormatLineAlign" (BYVAL StringFormat AS LONG, BYVAL align AS LONG) AS LONG
DECLARE FUNCTION GdipGetStringFormatLineAlign LIB "gdiplus.dll" ALIAS "GdipGetStringFormatLineAlign" (BYVAL StringFormat AS LONG, align AS LONG) AS LONG
DECLARE FUNCTION GdipSetStringFormatTrimming LIB "gdiplus.dll" ALIAS "GdipSetStringFormatTrimming" (BYVAL StringFormat AS LONG, BYVAL trimming AS LONG) AS LONG
DECLARE FUNCTION GdipGetStringFormatTrimming LIB "gdiplus.dll" ALIAS "GdipGetStringFormatTrimming" (BYVAL StringFormat AS LONG, trimming AS LONG) AS LONG
DECLARE FUNCTION GdipSetStringFormatHotkeyPrefix LIB "gdiplus.dll" ALIAS "GdipSetStringFormatHotkeyPrefix" (BYVAL StringFormat AS LONG, BYVAL hkPrefix AS LONG) AS LONG
DECLARE FUNCTION GdipGetStringFormatHotkeyPrefix LIB "gdiplus.dll" ALIAS "GdipGetStringFormatHotkeyPrefix" (BYVAL StringFormat AS LONG, hkPrefix AS LONG) AS LONG
DECLARE FUNCTION GdipSetStringFormatTabStops LIB "gdiplus.dll" ALIAS "GdipSetStringFormatTabStops" (BYVAL StringFormat AS LONG, BYVAL firstTabOffset AS SINGLE, BYVAL COUNT AS LONG, tabStops AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetStringFormatTabStops LIB "gdiplus.dll" ALIAS "GdipGetStringFormatTabStops" (BYVAL StringFormat AS LONG, BYVAL COUNT AS LONG, firstTabOffset AS SINGLE, tabStops AS SINGLE) AS LONG
DECLARE FUNCTION GdipGetStringFormatTabStopCount LIB "gdiplus.dll" ALIAS "GdipGetStringFormatTabStopCount" (BYVAL StringFormat AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipSetStringFormatDigitSubstitution LIB "gdiplus.dll" ALIAS "GdipSetStringFormatDigitSubstitution" (BYVAL StringFormat AS LONG, BYVAL language AS INTEGER, BYVAL substitute AS LONG) AS LONG
DECLARE FUNCTION GdipGetStringFormatDigitSubstitution LIB "gdiplus.dll" ALIAS "GdipGetStringFormatDigitSubstitution" (BYVAL StringFormat AS LONG, language AS INTEGER, substitute AS LONG) AS LONG
DECLARE FUNCTION GdipGetStringFormatMeasurableCharacterRangeCount LIB "gdiplus.dll" ALIAS "GdipGetStringFormatMeasurableCharacterRangeCount" (BYVAL StringFormat AS LONG, COUNT AS LONG) AS LONG
DECLARE FUNCTION GdipSetStringFormatMeasurableCharacterRanges LIB "gdiplus.dll" ALIAS "GdipSetStringFormatMeasurableCharacterRanges" (BYVAL StringFormat AS LONG, BYVAL rangeCount AS LONG, ranges AS CharacterRange) AS LONG
' ****************************************************************************************
SUB GdipInitialize()
LOCAL StartupInput AS GdiplusStartupInput
LOCAL token AS DWORD
StartupInput.GdiplusVersion = 1
GdiplusStartup token, StartupInput, BYVAL %NULL
END SUB
' ****************************************************************************************
' ****************************************************************************************
FUNCTION hGdip(OPTIONAL BYVAL hWnd AS DWORD, OPTIONAL BYVAL CtlId AS DWORD) AS DWORD
LOCAL hr AS LONG
IF hWnd <> 0 THEN GRAPHIC ATTACH hWnd, CtlId
GRAPHIC GET DC TO hr
GdipCreateFromHDC hr, hr
FUNCTION = hr
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
FUNCTION GDIP_ARGB(Alpha AS LONG, red AS LONG, green AS LONG, blue AS LONG) AS DWORD
IF Alpha > 127 THEN ' handle high bit and prevent overflow
FUNCTION = BGR(red,green,blue) OR ((Alpha AND NOT &H80) * &H1000000) OR &H80000000
ELSE
FUNCTION = BGR(red,green,blue) OR (Alpha * &H1000000)
END IF
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
FUNCTION GdiPlusGetEncoderClsid (BYVAL strMimeType AS STRING) AS STRING
'Retrieve encoder's clsid, where strMimeType is ansi string e.g. "image/jpeg"
LOCAL hr AS LONG
LOCAL pImageCodecInfo AS ImageCodecInfo PTR
LOCAL numEncoders AS DWORD
LOCAL nSize AS DWORD
LOCAL i AS LONG
LOCAL wstrlen AS LONG
LOCAL sMimeType AS STRING
hr = GdipGetImageEncodersSize(numEncoders, nSize)
REDIM buffer(nSize - 1) AS BYTE
pImageCodecInfo = VARPTR(buffer(0))
hr = GdipGetImageEncoders(numEncoders, nSize, BYVAL pImageCodecInfo)
IF hr = 0 THEN
FOR i = 1 TO numEncoders
wstrlen = lstrlenW(BYVAL @pImageCodecInfo.MimeType)
IF wstrlen THEN sMimeType = ACODE$(PEEK$(@pImageCodecInfo.MimeType, wstrlen * 2))
IF INSTR(UCASE$(sMimeType), UCASE$(strMimeType) ) THEN
FUNCTION = GUIDTXT$(@pImageCodecInfo.ClassID)
EXIT FOR
END IF
INCR pImageCodecInfo '// Increments pointer
NEXT
END IF
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
SUB GdipFitBitmapInControl(DDTdialog AS DWORD, DDTcontrol AS LONG, hDib AS LONG)
' DDTdialog needs to have been created using "DIALOG NEW PIXELS"
LOCAL hBMP, hDC_BMP AS DWORD
LOCAL w, h AS LONG
CONTROL GET SIZE DDTdialog, DDTcontrol TO w, h
CONTROL HANDLE DDTdialog, DDTcontrol TO hBMP
IF GetWindowLong(hBMP, %GWL_style) AND %WS_DLGFRAME = %WS_DLGFRAME THEN
w -= 6
h -= 6
END IF
GRAPHIC ATTACH DDTdialog, DDTcontrol
GRAPHIC CLEAR
GdipDrawImageRect hGdip(), hDib, 0, 0, w, h
GRAPHIC REDRAW
END SUB
' ****************************************************************************************
' ****************************************************************************************
SUB GdipFitBitmapFromResourceInControl(DDTdialog AS DWORD, DDTcontrol AS LONG, ress AS STRING)
LOCAL hr AS DWORD
hr = GdipLoadImageFromResource(ress)
GdipFitBitmapInControl DDTdialog, DDTcontrol, hr
'GdipDisposeImage hr ' can provoke memory issues (freezes) when refreshing graphic control/window
END SUB
' ****************************************************************************************
DECLARE FUNCTION GdipCreateBitmapFromStream LIB "GDIPLUS.DLL" ALIAS "GdipCreateBitmapFromStream" _
(BYVAL pstream AS DWORD, m_pbitmap AS LONG) AS LONG
DECLARE FUNCTION CreateStreamOnHGlobal LIB "ole32.dll" ALIAS "CreateStreamOnHGlobal" _
(BYVAL hGlobal AS DWORD, BYVAL fDeleteOnRelease AS DWORD, pstm AS DWORD) AS LONG
DECLARE FUNCTION pStreamRelease(pUnk AS DWORD) AS LONG
' ****************************************************************************************
FUNCTION GdipLoadImageFromResource(BYVAL pName AS STRING) AS LONG
' SOMETIMES WORKS, SOMETIMES DOESN'T : SEE http://www.powerbasic.com/support/pbforums/showthread.php?p=435269
'------------------------------------------------------------------------------------------------------------
' CALL DWORD @@pStream[2] USING pStreamRelease(pStream)
' Is calling the Release method of the IUnknown interface to release the stream.
' This kind of code is what we used in the dark ages, when PB had not direct interface call support.
'
'> ... added ... but that function is commented out in Jose's "gdiputils.inc" include file.
'> Not sure why, nor if he's generated an available, alternative version.
'
' It is remed because it is unreliable. Sometimes works and sometimes don't, and the reason is that
' GDI+ needs to have the file or resource locked until you release the image object. You can use that
' code reliabily as long as you don't unlock and release the resource file until you have released the
' GDI+ image object first. This means that you can't put everything in a function, but to keep track of
' the resource handle and unlock and release it when appropriate.
LOCAL hResource AS DWORD, imageSize AS DWORD, pResourceData AS DWORD, _
m_hBuffer AS DWORD, pBuffer AS DWORD, pStream AS DWORD PTR, _
m_pBitmap AS DWORD, m_pBitmap_status AS LONG, GpStartInput AS GdiplusStartupInput, _
hGDIPlus AS LONG
hResource = FindResource(0, TRIM$(pName), "#10")
IF ISFALSE(hResource) THEN FUNCTION = 0 : EXIT FUNCTION
imageSize = SizeofResource(0, hResource)
IF ISFALSE(imageSize) THEN FUNCTION = 0 : EXIT FUNCTION
pResourceData = LockResource(LoadResource(0, hResource))
IF ISFALSE(pResourceData) THEN FUNCTION = 0 : EXIT FUNCTION
m_hBuffer = GlobalAlloc(%GMEM_MOVEABLE, imageSize)
IF m_hBuffer THEN
pBuffer = GlobalLock(m_hBuffer)
IF pBuffer THEN
CopyMemory pBuffer, pResourceData, imageSize
IF CreateStreamOnHGlobal(m_hBuffer, %FALSE, pStream) = %S_OK THEN
m_pBitmap_status = GdipCreateBitmapFromStream(pStream, m_pBitmap)
CALL DWORD @@pStream[2] USING pStreamRelease(pStream)
IF m_pBitmap THEN
IF m_pBitmap_status = %S_OK THEN
GlobalUnlock m_hBuffer
GlobalFree m_hBuffer
FUNCTION = m_pBitmap
EXIT FUNCTION
END IF
END IF
END IF
GlobalUnlock m_hBuffer
END IF
GlobalFree m_hBuffer
END IF
FUNCTION = 0
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
FUNCTION RESOURCE$(BYVAL rType AS LONG, BYVAL rName AS STRING)
LOCAL L1, L2 AS LONG
LOCAL D1, D2 AS DWORD
L1 = FindResource(0, (rName), BYVAL rType)
D2 = SizeofResource(0, L1)
L2 = LoadResource(0, L1)
D1 = LockResource(L2)
FUNCTION = PEEK$(D1,D2)
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
FUNCTION GdipLoadPngFromResource(BYVAL pName AS STRING) AS DWORD
LOCAL pImage AS DWORD
LOCAL TEMP AS STRING
LOCAL ff AS LONG
TEMP = ENVIRON$("TEMP") + "\" + EXE.NAME$ + "\" : MKDIR TEMP
KILL TEMP + pname + ".png"
ff = FREEFILE ' create temporary file
OPEN TEMP + pname + ".png" FOR BINARY AS #ff
PUT$ #ff, RESOURCE$(%RT_RCDATA, pName)
CLOSE #ff
GdipLoadImageFromFile(UCODE$(TEMP + pname + ".png"), pImage)
FUNCTION = pImage
END FUNCTION
' ****************************************************************************************