' Original .NET translation by Avery P. - 07/29/2002
'
' Translated to PB/WIN by Patrice Terrier - 08/17/2002
' pterrier@zapsolution.com
'
' Translated to RapidQ by JohnK, 10/2017
'
' WinLIFT 2.5 provides a full encapsulation of GDIPLUS with several helper functions and several detailed examples (see PICTURE.EXE),
' there is also a common dialog using thumbnails for preview of all supported GDI+ graphic file formats.
' The WinLIFT GDI+ package includes the full source code to everything !.
' You can download a trial version of WinLIFT GDI+ that will show you GDIPLUS in action from this url:
' http://www.zapsolution.com/preview/WinLIFT.EXE
'
' NOTES:
'   - All GDI+ Strings expect and return ONLY Unicode - you'll need to use UCODE$ when using them.
'   - Functions with an I (i) at the end are non-floating point declarations
'   - If a function without the I (i) at the end doesn't work, try the one with (if any).
'     If neither version worked, then you did something wrong, or the API *may* be misdeclared.
'   - The word (ALL) next to an API set mean all of the functions are declared. (ALL GDI+ functions are now declared 8/12/2002)
'   - Search for "TODO:" (no quotes) to see what still needs done within the file. If there is no TODO, there is nothing to do!
'   - If you want to get all of the encoder or decoder file extensions, MIME type, or other values, try to use the Get__Clsid functions as a base.
'   - If you don't like the idea of converting strings to and from Unicode, change all As String occurances in the API declarations
'     to As Long, and use the StrPtr() result instead. I opted to use the As String for clarity, especially since the GDI+ docs are
'     geared toward how to use the C++ classes.
'   - I may have misdeclared the IStream functions as I'm not too familiar with them. Do a "TODO:" or "IStream" search (no quotes) to see the
'     IStream functions. All parameters except one where declared as 'IStream* stream' in C++. The exception has a comment above it. The possible
'     problem is that the IStream parameters should be passed ByRef instead of ByVal. If they are wrong, please tell me!
'   - APIs are in ordered groups, just like the C++ header, but the groups themselves are not in the same order as in the C++ headers.
'
' WARNINGS:
'   - Some of the structs may not work, though I didn't test them all fully.
'     If a function causes a GPF or performs unexpectedly, the declarations are probably a bit off.
'   - Some APIs that have a ByRef parameter may expect an array; check the MSDN to find out if unsure.
'
'-------------------------------
' GDI+ Constants
'-------------------------------
$IFNDEF __GDIPLUS_INC
$DEFINE __GDIPLUS_INC


'CONST LF_FACESIZE    AS INTEGER = 32

' Shift count and bit mask for A, R, G, B components
CONST AlphaShift    AS INTEGER = 24
CONST RedShift    AS INTEGER = 16
CONST GreenShift    AS INTEGER = 8
CONST BlueShift    AS INTEGER = 0

CONST AlphaMask    AS INTEGER = &HFF000000
CONST RedMask    AS INTEGER = &HFF0000
CONST GreenMask    AS INTEGER = &HFF00
CONST BlueMask    AS INTEGER = &HFF


' Image property types
CONST PropertyTagTypeByte    AS INTEGER = 1
CONST PropertyTagTypeASCII    AS INTEGER = 2
CONST PropertyTagTypeShort    AS INTEGER = 3
CONST PropertyTagTypeLong    AS INTEGER = 4
CONST PropertyTagTypeRational    AS INTEGER = 5
CONST PropertyTagTypeUndefined    AS INTEGER = 7
CONST PropertyTagTypeSLONG    AS INTEGER = 9
CONST PropertyTagTypeSRational    AS INTEGER = 10


' Image property ID tags
CONST PropertyTagExifIFD    AS INTEGER = &H8769
CONST PropertyTagGpsIFD    AS INTEGER = &H8825

CONST PropertyTagNewSubfileType    AS INTEGER = &HFE
CONST PropertyTagSubfileType    AS INTEGER = &HFF
CONST PropertyTagImageWidth    AS INTEGER = &H100
CONST PropertyTagImageHeight    AS INTEGER = &H101
CONST PropertyTagBitsPerSample    AS INTEGER = &H102
CONST PropertyTagCompression    AS INTEGER = &H103
CONST PropertyTagPhotometricInterp    AS INTEGER = &H106
CONST PropertyTagThreshHolding    AS INTEGER = &H107
CONST PropertyTagCellWidth    AS INTEGER = &H108
CONST PropertyTagCellHeight    AS INTEGER = &H109
CONST PropertyTagFillOrder    AS INTEGER = &H10A
CONST PropertyTagDocumentName    AS INTEGER = &H10D
CONST PropertyTagImageDescription    AS INTEGER = &H10E
CONST PropertyTagEquipMake    AS INTEGER = &H10F
CONST PropertyTagEquipModel    AS INTEGER = &H110
CONST PropertyTagStripOffsets    AS INTEGER = &H111
CONST PropertyTagOrientation    AS INTEGER = &H112
CONST PropertyTagSamplesPerPixel    AS INTEGER = &H115
CONST PropertyTagRowsPerStrip    AS INTEGER = &H116
CONST PropertyTagStripBytesCount    AS INTEGER = &H117
CONST PropertyTagMinSampleValue    AS INTEGER = &H118
CONST PropertyTagMaxSampleValue    AS INTEGER = &H119
CONST PropertyTagXResolution    AS INTEGER = &H11A            ' Image resolution in width direction
CONST PropertyTagYResolution    AS INTEGER = &H11B            ' Image resolution in height direction
CONST PropertyTagPlanarConfig    AS INTEGER = &H11C           ' Image data arrangement
CONST PropertyTagPageName    AS INTEGER = &H11D
CONST PropertyTagXPosition    AS INTEGER = &H11E
CONST PropertyTagYPosition    AS INTEGER = &H11F
CONST PropertyTagFreeOffset    AS INTEGER = &H120
CONST PropertyTagFreeByteCounts    AS INTEGER = &H121
CONST PropertyTagGrayResponseUnit    AS INTEGER = &H122
CONST PropertyTagGrayResponseCurve    AS INTEGER = &H123
CONST PropertyTagT4Option    AS INTEGER = &H124
CONST PropertyTagT6Option    AS INTEGER = &H125
CONST PropertyTagResolutionUnit    AS INTEGER = &H128         ' Unit of X and Y resolution
CONST PropertyTagPageNumber    AS INTEGER = &H129
CONST PropertyTagTransferFuncition    AS INTEGER = &H12D
CONST PropertyTagSoftwareUsed    AS INTEGER = &H131
CONST PropertyTagDateTime    AS INTEGER = &H132
CONST PropertyTagArtist    AS INTEGER = &H13B
CONST PropertyTagHostComputer    AS INTEGER = &H13C
CONST PropertyTagPredictor    AS INTEGER = &H13D
CONST PropertyTagWhitePoint    AS INTEGER = &H13E
CONST PropertyTagPrimaryChromaticities    AS INTEGER = &H13F
CONST PropertyTagColorMap    AS INTEGER = &H140
CONST PropertyTagHalftoneHints    AS INTEGER = &H141
CONST PropertyTagTileWidth    AS INTEGER = &H142
CONST PropertyTagTileLength    AS INTEGER = &H143
CONST PropertyTagTileOffset    AS INTEGER = &H144
CONST PropertyTagTileByteCounts    AS INTEGER = &H145
CONST PropertyTagInkSet    AS INTEGER = &H14C
CONST PropertyTagInkNames    AS INTEGER = &H14D
CONST PropertyTagNumberOfInks    AS INTEGER = &H14E
CONST PropertyTagDotRange    AS INTEGER = &H150
CONST PropertyTagTargetPrinter    AS INTEGER = &H151
CONST PropertyTagExtraSamples    AS INTEGER = &H152
CONST PropertyTagSampleFormat    AS INTEGER = &H153
CONST PropertyTagSMinSampleValue    AS INTEGER = &H154
CONST PropertyTagSMaxSampleValue    AS INTEGER = &H155
CONST PropertyTagTransferRange    AS INTEGER = &H156

CONST PropertyTagJPEGProc    AS INTEGER = &H200
CONST PropertyTagJPEGInterFormat    AS INTEGER = &H201
CONST PropertyTagJPEGInterLength    AS INTEGER = &H202
CONST PropertyTagJPEGRestartInterval    AS INTEGER = &H203
CONST PropertyTagJPEGLosslessPredictors    AS INTEGER = &H205
CONST PropertyTagJPEGPointTransforms    AS INTEGER = &H206
CONST PropertyTagJPEGQTables    AS INTEGER = &H207
CONST PropertyTagJPEGDCTables    AS INTEGER = &H208
CONST PropertyTagJPEGACTables    AS INTEGER = &H209

CONST PropertyTagYCbCrCoefficients    AS INTEGER = &H211
CONST PropertyTagYCbCrSubsampling    AS INTEGER = &H212
CONST PropertyTagYCbCrPositioning    AS INTEGER = &H213
CONST PropertyTagREFBlackWhite    AS INTEGER = &H214

CONST PropertyTagICCProfile    AS INTEGER = &H8773                 ' This TAG is defined by ICC
                                                ' for embedded ICC in TIFF
CONST PropertyTagGamma    AS INTEGER = &H301
CONST PropertyTagICCProfileDescriptor    AS INTEGER = &H302
CONST PropertyTagSRGBRenderingIntent    AS INTEGER = &H303

CONST PropertyTagImageTitle    AS INTEGER = &H320
CONST PropertyTagCopyright    AS INTEGER = &H8298

' Extra TAGs (Like Adobe Image Information tags etc.)

CONST PropertyTagResolutionXUnit    AS INTEGER = &H5001
CONST PropertyTagResolutionYUnit    AS INTEGER = &H5002
CONST PropertyTagResolutionXLengthUnit    AS INTEGER = &H5003
CONST PropertyTagResolutionYLengthUnit    AS INTEGER = &H5004
CONST PropertyTagPrintFlags    AS INTEGER = &H5005
CONST PropertyTagPrintFlagsVersion    AS INTEGER = &H5006
CONST PropertyTagPrintFlagsCrop    AS INTEGER = &H5007
CONST PropertyTagPrintFlagsBleedWidth    AS INTEGER = &H5008
CONST PropertyTagPrintFlagsBleedWidthScale    AS INTEGER = &H5009
CONST PropertyTagHalftoneLPI    AS INTEGER = &H500A
CONST PropertyTagHalftoneLPIUnit    AS INTEGER = &H500B
CONST PropertyTagHalftoneDegree    AS INTEGER = &H500C
CONST PropertyTagHalftoneShape    AS INTEGER = &H500D
CONST PropertyTagHalftoneMisc    AS INTEGER = &H500E
CONST PropertyTagHalftoneScreen    AS INTEGER = &H500F
CONST PropertyTagJPEGQuality    AS INTEGER = &H5010
CONST PropertyTagGridSize    AS INTEGER = &H5011
CONST PropertyTagThumbnailFormat    AS INTEGER = &H5012            ' 1    AS INTEGER = JPEG, 0    AS INTEGER = RAW RGB
CONST PropertyTagThumbnailWidth    AS INTEGER = &H5013
CONST PropertyTagThumbnailHeight    AS INTEGER = &H5014
CONST PropertyTagThumbnailColorDepth    AS INTEGER = &H5015
CONST PropertyTagThumbnailPlanes    AS INTEGER = &H5016
CONST PropertyTagThumbnailRawBytes    AS INTEGER = &H5017
CONST PropertyTagThumbnailSize    AS INTEGER = &H5018
CONST PropertyTagThumbnailCompressedSize    AS INTEGER = &H5019
CONST PropertyTagColorTransferFunction    AS INTEGER = &H501A
CONST PropertyTagThumbnailData    AS INTEGER = &H501B              ' RAW thumbnail bits in JPEG format or RGB format
                                                ' depends on PropertyTagThumbnailFormat

' Thumbnail related TAGs
CONST PropertyTagThumbnailImageWidth    AS INTEGER = &H5020            ' Thumbnail width
CONST PropertyTagThumbnailImageHeight    AS INTEGER = &H5021           ' Thumbnail height
CONST PropertyTagThumbnailBitsPerSample    AS INTEGER = &H5022         ' Number of bits per component
CONST PropertyTagThumbnailCompression    AS INTEGER = &H5023           ' Compression Scheme
CONST PropertyTagThumbnailPhotometricInterp    AS INTEGER = &H5024     ' Pixel composition
CONST PropertyTagThumbnailImageDescription    AS INTEGER = &H5025      ' Image Tile
CONST PropertyTagThumbnailEquipMake    AS INTEGER = &H5026             ' Manufacturer of Image Input equipment
CONST PropertyTagThumbnailEquipModel    AS INTEGER = &H5027            ' Model of Image input equipment
CONST PropertyTagThumbnailStripOffsets    AS INTEGER = &H5028          ' Image data location
CONST PropertyTagThumbnailOrientation    AS INTEGER = &H5029           ' Orientation of image
CONST PropertyTagThumbnailSamplesPerPixel    AS INTEGER = &H502A       ' Number of components
CONST PropertyTagThumbnailRowsPerStrip    AS INTEGER = &H502B          ' Number of rows per strip
CONST PropertyTagThumbnailStripBytesCount    AS INTEGER = &H502C       ' Bytes per compressed strip
CONST PropertyTagThumbnailResolutionX    AS INTEGER = &H502D           ' Resolution in width direction
CONST PropertyTagThumbnailResolutionY    AS INTEGER = &H502E           ' Resolution in height direction
CONST PropertyTagThumbnailPlanarConfig    AS INTEGER = &H502F          ' Image data arrangement
CONST PropertyTagThumbnailResolutionUnit    AS INTEGER = &H5030        ' Unit of X and Y resolution
CONST PropertyTagThumbnailTransferFunction    AS INTEGER = &H5031      ' Transfer function
CONST PropertyTagThumbnailSoftwareUsed    AS INTEGER = &H5032          ' Software used
CONST PropertyTagThumbnailDateTime    AS INTEGER = &H5033              ' File change date and time
CONST PropertyTagThumbnailArtist    AS INTEGER = &H5034                ' Person who created the  image
CONST PropertyTagThumbnailWhitePoint    AS INTEGER = &H5035            ' White point chromaticity
CONST PropertyTagThumbnailPrimaryChromaticities    AS INTEGER = &H5036 ' Chromaticities of primaries
CONST PropertyTagThumbnailYCbCrCoefficients    AS INTEGER = &H5037     ' Color space transformation coefficients
CONST PropertyTagThumbnailYCbCrSubsampling    AS INTEGER = &H5038      ' Subsampling ratio of Y to C
CONST PropertyTagThumbnailYCbCrPositioning    AS INTEGER = &H5039      ' Y and C position
CONST PropertyTagThumbnailRefBlackWhite    AS INTEGER = &H503A         ' Pair of black and white reference values
CONST PropertyTagThumbnailCopyRight    AS INTEGER = &H503B             ' CopyRight holder

CONST PropertyTagLuminanceTable    AS INTEGER = &H5090
CONST PropertyTagChrominanceTable    AS INTEGER = &H5091

CONST PropertyTagFrameDelay    AS INTEGER = &H5100
CONST PropertyTagLoopCount    AS INTEGER = &H5101

CONST PropertyTagPixelUnit    AS INTEGER = &H5110          ' Unit specifier for pixel/unit
CONST PropertyTagPixelPerUnitX    AS INTEGER = &H5111      ' Pixels per unit in X
CONST PropertyTagPixelPerUnitY    AS INTEGER = &H5112      ' Pixels per unit in Y
CONST PropertyTagPaletteHistogram    AS INTEGER = &H5113   ' Palette histogram

' EXIF specific tag

CONST PropertyTagExifExposureTime    AS INTEGER = &H829A
CONST PropertyTagExifFNumber    AS INTEGER = &H829D

CONST PropertyTagExifExposureProg    AS INTEGER = &H8822
CONST PropertyTagExifSpectralSense    AS INTEGER = &H8824
CONST PropertyTagExifISOSpeed    AS INTEGER = &H8827
CONST PropertyTagExifOECF    AS INTEGER = &H8828

CONST PropertyTagExifVer    AS INTEGER = &H9000
CONST PropertyTagExifDTOrig    AS INTEGER = &H9003         ' Date & time of original
CONST PropertyTagExifDTDigitized    AS INTEGER = &H9004    ' Date & time of digital data generation

CONST PropertyTagExifCompConfig    AS INTEGER = &H9101
CONST PropertyTagExifCompBPP    AS INTEGER = &H9102

CONST PropertyTagExifShutterSpeed    AS INTEGER = &H9201
CONST PropertyTagExifAperture    AS INTEGER = &H9202
CONST PropertyTagExifBrightness    AS INTEGER = &H9203
CONST PropertyTagExifExposureBias    AS INTEGER = &H9204
CONST PropertyTagExifMaxAperture    AS INTEGER = &H9205
CONST PropertyTagExifSubjectDist    AS INTEGER = &H9206
CONST PropertyTagExifMeteringMode    AS INTEGER = &H9207
CONST PropertyTagExifLightSource    AS INTEGER = &H9208
CONST PropertyTagExifFlash    AS INTEGER = &H9209
CONST PropertyTagExifFocalLength    AS INTEGER = &H920A
CONST PropertyTagExifMakerNote    AS INTEGER = &H927C
CONST PropertyTagExifUserComment    AS INTEGER = &H9286
CONST PropertyTagExifDTSubsec    AS INTEGER = &H9290        ' Date & Time subseconds
CONST PropertyTagExifDTOrigSS    AS INTEGER = &H9291        ' Date & Time original subseconds
CONST PropertyTagExifDTDigSS    AS INTEGER = &H9292         ' Date & TIme digitized subseconds

CONST PropertyTagExifFPXVer    AS INTEGER = &HA000
CONST PropertyTagExifColorSpace    AS INTEGER = &HA001
CONST PropertyTagExifPixXDim    AS INTEGER = &HA002
CONST PropertyTagExifPixYDim    AS INTEGER = &HA003
CONST PropertyTagExifRelatedWav    AS INTEGER = &HA004      ' related sound file
CONST PropertyTagExifInterop    AS INTEGER = &HA005
CONST PropertyTagExifFlashEnergy    AS INTEGER = &HA20B
CONST PropertyTagExifSpatialFR    AS INTEGER = &HA20C       ' Spatial Frequency Response
CONST PropertyTagExifFocalXRes    AS INTEGER = &HA20E       ' Focal Plane X Resolution
CONST PropertyTagExifFocalYRes    AS INTEGER = &HA20F       ' Focal Plane Y Resolution
CONST PropertyTagExifFocalResUnit    AS INTEGER = &HA210    ' Focal Plane Resolution Unit
CONST PropertyTagExifSubjectLoc    AS INTEGER = &HA214
CONST PropertyTagExifExposureIndex    AS INTEGER = &HA215
CONST PropertyTagExifSensingMethod    AS INTEGER = &HA217
CONST PropertyTagExifFileSource    AS INTEGER = &HA300
CONST PropertyTagExifSceneType    AS INTEGER = &HA301
CONST PropertyTagExifCfaPattern    AS INTEGER = &HA302

CONST PropertyTagGpsVer    AS INTEGER = &H0
CONST PropertyTagGpsLatitudeRef    AS INTEGER = &H1
CONST PropertyTagGpsLatitude    AS INTEGER = &H2
CONST PropertyTagGpsLongitudeRef    AS INTEGER = &H3
CONST PropertyTagGpsLongitude    AS INTEGER = &H4
CONST PropertyTagGpsAltitudeRef    AS INTEGER = &H5
CONST PropertyTagGpsAltitude    AS INTEGER = &H6
CONST PropertyTagGpsGpsTime    AS INTEGER = &H7
CONST PropertyTagGpsGpsSatellites    AS INTEGER = &H8
CONST PropertyTagGpsGpsStatus    AS INTEGER = &H9
CONST PropertyTagGpsGpsMeasureMode    AS INTEGER = &HA
CONST PropertyTagGpsGpsDop    AS INTEGER = &HB              ' Measurement precision
CONST PropertyTagGpsSpeedRef    AS INTEGER = &HC
CONST PropertyTagGpsSpeed    AS INTEGER = &HD
CONST PropertyTagGpsTrackRef    AS INTEGER = &HE
CONST PropertyTagGpsTrack    AS INTEGER = &HF
CONST PropertyTagGpsImgDirRef    AS INTEGER = &H10
CONST PropertyTagGpsImgDir    AS INTEGER = &H11
CONST PropertyTagGpsMapDatum    AS INTEGER = &H12
CONST PropertyTagGpsDestLatRef    AS INTEGER = &H13
CONST PropertyTagGpsDestLat    AS INTEGER = &H14
CONST PropertyTagGpsDestLongRef    AS INTEGER = &H15
CONST PropertyTagGpsDestLong    AS INTEGER = &H16
CONST PropertyTagGpsDestBearRef    AS INTEGER = &H17
CONST PropertyTagGpsDestBear    AS INTEGER = &H18
CONST PropertyTagGpsDestDistRef    AS INTEGER = &H19
CONST PropertyTagGpsDestDist    AS INTEGER = &H1A



'-------------------------------
' The following types are NOT in the GDI+ docs, per se
'-------------------------------


TYPE POINTF  
   x AS SINGLE
   y AS SINGLE
END TYPE

TYPE 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

$IFNDEF __WIN32API
    Type POINTL
     x As Long
     y As Long
    End Type

    TYPE BITMAPINFO
    ' Start 'bmiHeader As BITMAPINFOHEADER
     bmiHeader_biSize As Long        'Size of this header
     bmiHeader_biWidth As Long        'Width of image (pixels)
     bmiHeader_biHeight As Long        'Height of image (pixels)
     bmiHeader_biPlanes As WORD        'Number of color planes
     bmiHeader_biBitCount As WORD       'Pixel bit depth (bits per pixel)
     bmiHeader_biCompression As Long    'Compression type
     bmiHeader_biSizeImage As Long      'Size of image (can be 0)
     bmiHeader_biXPelsPerMeter As Long
     bmiHeader_biYPelsPerMeter As Long
     bmiHeader_biClrUsed As Long        'Number of colors (can be 0)
     bmiHeader_biClrImportant As Long 'minimum number Important colors (can be 0)
       ' Start 'bmiColors As RGBQUAD
     bmiColors_RGBQUAD As STRING * (4 * 256)  'RQ arrays pass by pointer so cant do arrays of RGBQUAD
    END TYPE
    ' example 
    ' DIM bi AS BITMAPINFO
    ' bi.bmiHeader_biHeight = 10
$ENDIF

'-------------------------------
' 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 STRING * 16
   FormatID  AS STRING * 16
   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 STRING * 16                       ' GUID of the parameter
   NumberOfValues AS LONG                 ' Number of the parameter values; usually 1
   vType AS LONG            ' EncoderParameterValueType     ' Value type, like ValueTypeLONG  etc.
   value AS LONG                          ' A pointer to the parameter values
END TYPE

TYPE EncoderParameters
   Count AS LONG                            ' Number of parameters in this structure; Should be 1
   'Parameter AS EncoderParameter           ' Parameter values; this CAN be an array!!!! (Use CopyMemory and a string or byte array as workaround)
   Parameter_GUID AS STRING * 16            ' GUID of the parameter
   Parameter_NumberOfValues AS LONG         ' Number of the parameter values; usually 1
   Parameter_type AS LONG                   ' EncoderParameterValueType     ' Value type, like ValueTypeLONG  etc.
   Parameter_value AS LONG 
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 * 32    '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 32) AS INTEGER   '  lfFaceName(1 TO %LF_FACESIZE) 
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 QRECT          ' Inclusive-inclusive bounds in device units
   rclFrame AS QRECT           ' 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
'-------------------------------

CONST UnitWorld      AS INTEGER = 0 ' World coordinate (non-physical unit)
CONST UnitDisplay    AS INTEGER = 1 ' Variable -- for PageTransform only
CONST UnitPixel      AS INTEGER = 2 ' Each unit is one device pixel.
CONST UnitPoint      AS INTEGER = 3 ' Each unit is a printer's point, or 1/72 inch.
CONST UnitInch       AS INTEGER = 4 ' Each unit is 1 inch.
CONST UnitDocument   AS INTEGER = 5 ' Each unit is 1/300 inch.
CONST UnitMillimeter AS INTEGER = 6 ' Each unit is 1 millimeter.

' Common color constants
' NOTE: Original enum was unnamed
CONST ColorsAliceBlue AS INTEGER = &HFFF0F8FF
CONST ColorsAntiqueWhite AS INTEGER = &HFFFAEBD7
CONST ColorsAqua AS INTEGER = &HFF00FFFF
CONST ColorsAquamarine AS INTEGER = &HFF7FFFD4
CONST ColorsAzure AS INTEGER = &HFFF0FFFF
CONST ColorsBeige AS INTEGER = &HFFF5F5DC
CONST ColorsBisque AS INTEGER = &HFFFFE4C4
CONST ColorsBlack AS INTEGER = &HFF000000
CONST ColorsBlanchedAlmond AS INTEGER = &HFFFFEBCD
CONST ColorsBlue AS INTEGER = &HFF0000FF
CONST ColorsBlueViolet AS INTEGER = &HFF8A2BE2
CONST ColorsBrown AS INTEGER = &HFFA52A2A
CONST ColorsBurlyWood AS INTEGER = &HFFDEB887
CONST ColorsCadetBlue AS INTEGER = &HFF5F9EA0
CONST ColorsChartreuse AS INTEGER = &HFF7FFF00
CONST ColorsChocolate AS INTEGER = &HFFD2691E
CONST ColorsCoral AS INTEGER = &HFFFF7F50
CONST ColorsCornflowerBlue AS INTEGER = &HFF6495ED
CONST ColorsCornsilk AS INTEGER = &HFFFFF8DC
CONST ColorsCrimson AS INTEGER = &HFFDC143C
CONST ColorsCyan AS INTEGER = &HFF00FFFF
CONST ColorsDarkBlue AS INTEGER = &HFF00008B
CONST ColorsDarkCyan AS INTEGER = &HFF008B8B
CONST ColorsDarkGoldenrod AS INTEGER = &HFFB8860B
CONST ColorsDarkGray AS INTEGER = &HFFA9A9A9
CONST ColorsDarkGreen AS INTEGER = &HFF006400
CONST ColorsDarkKhaki AS INTEGER = &HFFBDB76B
CONST ColorsDarkMagenta AS INTEGER = &HFF8B008B
CONST ColorsDarkOliveGreen AS INTEGER = &HFF556B2F
CONST ColorsDarkOrange AS INTEGER = &HFFFF8C00
CONST ColorsDarkOrchid AS INTEGER = &HFF9932CC
CONST ColorsDarkRed AS INTEGER = &HFF8B0000
CONST ColorsDarkSalmon AS INTEGER = &HFFE9967A
CONST ColorsDarkSeaGreen AS INTEGER = &HFF8FBC8B
CONST ColorsDarkSlateBlue AS INTEGER = &HFF483D8B
CONST ColorsDarkSlateGray AS INTEGER = &HFF2F4F4F
CONST ColorsDarkTurquoise AS INTEGER = &HFF00CED1
CONST ColorsDarkViolet AS INTEGER = &HFF9400D3
CONST ColorsDeepPink AS INTEGER = &HFFFF1493
CONST ColorsDeepSkyBlue AS INTEGER = &HFF00BFFF
CONST ColorsDimGray AS INTEGER = &HFF696969
CONST ColorsDodgerBlue AS INTEGER = &HFF1E90FF
CONST ColorsFirebrick AS INTEGER = &HFFB22222
CONST ColorsFloralWhite AS INTEGER = &HFFFFFAF0
CONST ColorsForestGreen AS INTEGER = &HFF228B22
CONST ColorsFuchsia AS INTEGER = &HFFFF00FF
CONST ColorsGainsboro AS INTEGER = &HFFDCDCDC
CONST ColorsGhostWhite AS INTEGER = &HFFF8F8FF
CONST ColorsGold AS INTEGER = &HFFFFD700
CONST ColorsGoldenrod AS INTEGER = &HFFDAA520
CONST ColorsGray AS INTEGER = &HFF808080
CONST ColorsGreen AS INTEGER = &HFF008000
CONST ColorsGreenYellow AS INTEGER = &HFFADFF2F
CONST ColorsHoneydew AS INTEGER = &HFFF0FFF0
CONST ColorsHotPink AS INTEGER = &HFFFF69B4
CONST ColorsIndianRed AS INTEGER = &HFFCD5C5C
CONST ColorsIndigo AS INTEGER = &HFF4B0082
CONST ColorsIvory AS INTEGER = &HFFFFFFF0
CONST ColorsKhaki AS INTEGER = &HFFF0E68C
CONST ColorsLavender AS INTEGER = &HFFE6E6FA
CONST ColorsLavenderBlush AS INTEGER = &HFFFFF0F5
CONST ColorsLawnGreen AS INTEGER = &HFF7CFC00
CONST ColorsLemonChiffon AS INTEGER = &HFFFFFACD
CONST ColorsLightBlue AS INTEGER = &HFFADD8E6
CONST ColorsLightCoral AS INTEGER = &HFFF08080
CONST ColorsLightCyan AS INTEGER = &HFFE0FFFF
CONST ColorsLightGoldenrodYellow AS INTEGER = &HFFFAFAD2
CONST ColorsLightGray AS INTEGER = &HFFD3D3D3
CONST ColorsLightGreen AS INTEGER = &HFF90EE90
CONST ColorsLightPink AS INTEGER = &HFFFFB6C1
CONST ColorsLightSalmon AS INTEGER = &HFFFFA07A
CONST ColorsLightSeaGreen AS INTEGER = &HFF20B2AA
CONST ColorsLightSkyBlue AS INTEGER = &HFF87CEFA
CONST ColorsLightSlateGray AS INTEGER = &HFF778899
CONST ColorsLightSteelBlue AS INTEGER = &HFFB0C4DE
CONST ColorsLightYellow AS INTEGER = &HFFFFFFE0
CONST ColorsLime AS INTEGER = &HFF00FF00
CONST ColorsLimeGreen AS INTEGER = &HFF32CD32
CONST ColorsLinen AS INTEGER = &HFFFAF0E6
CONST ColorsMagenta AS INTEGER = &HFFFF00FF
CONST ColorsMaroon AS INTEGER = &HFF800000
CONST ColorsMediumAquamarine AS INTEGER = &HFF66CDAA
CONST ColorsMediumBlue AS INTEGER = &HFF0000CD
CONST ColorsMediumOrchid AS INTEGER = &HFFBA55D3
CONST ColorsMediumPurple AS INTEGER = &HFF9370DB
CONST ColorsMediumSeaGreen AS INTEGER = &HFF3CB371
CONST ColorsMediumSlateBlue AS INTEGER = &HFF7B68EE
CONST ColorsMediumSpringGreen AS INTEGER = &HFF00FA9A
CONST ColorsMediumTurquoise AS INTEGER = &HFF48D1CC
CONST ColorsMediumVioletRed AS INTEGER = &HFFC71585
CONST ColorsMidnightBlue AS INTEGER = &HFF191970
CONST ColorsMintCream AS INTEGER = &HFFF5FFFA
CONST ColorsMistyRose AS INTEGER = &HFFFFE4E1
CONST ColorsMoccasin AS INTEGER = &HFFFFE4B5
CONST ColorsNavajoWhite AS INTEGER = &HFFFFDEAD
CONST ColorsNavy AS INTEGER = &HFF000080
CONST ColorsOldLace AS INTEGER = &HFFFDF5E6
CONST ColorsOlive AS INTEGER = &HFF808000
CONST ColorsOliveDrab AS INTEGER = &HFF6B8E23
CONST ColorsOrange AS INTEGER = &HFFFFA500
CONST ColorsOrangeRed AS INTEGER = &HFFFF4500
CONST ColorsOrchid AS INTEGER = &HFFDA70D6
CONST ColorsPaleGoldenrod AS INTEGER = &HFFEEE8AA
CONST ColorsPaleGreen AS INTEGER = &HFF98FB98
CONST ColorsPaleTurquoise AS INTEGER = &HFFAFEEEE
CONST ColorsPaleVioletRed AS INTEGER = &HFFDB7093
CONST ColorsPapayaWhip AS INTEGER = &HFFFFEFD5
CONST ColorsPeachPuff AS INTEGER = &HFFFFDAB9
CONST ColorsPeru AS INTEGER = &HFFCD853F
CONST ColorsPink AS INTEGER = &HFFFFC0CB
CONST ColorsPlum AS INTEGER = &HFFDDA0DD
CONST ColorsPowderBlue AS INTEGER = &HFFB0E0E6
CONST ColorsPurple AS INTEGER = &HFF800080
CONST ColorsRed AS INTEGER = &HFFFF0000
CONST ColorsRosyBrown AS INTEGER = &HFFBC8F8F
CONST ColorsRoyalBlue AS INTEGER = &HFF4169E1
CONST ColorsSaddleBrown AS INTEGER = &HFF8B4513
CONST ColorsSalmon AS INTEGER = &HFFFA8072
CONST ColorsSandyBrown AS INTEGER = &HFFF4A460
CONST ColorsSeaGreen AS INTEGER = &HFF2E8B57
CONST ColorsSeaShell AS INTEGER = &HFFFFF5EE
CONST ColorsSienna AS INTEGER = &HFFA0522D
CONST ColorsSilver AS INTEGER = &HFFC0C0C0
CONST ColorsSkyBlue AS INTEGER = &HFF87CEEB
CONST ColorsSlateBlue AS INTEGER = &HFF6A5ACD
CONST ColorsSlateGray AS INTEGER = &HFF708090
CONST ColorsSnow AS INTEGER = &HFFFFFAFA
CONST ColorsSpringGreen AS INTEGER = &HFF00FF7F
CONST ColorsSteelBlue AS INTEGER = &HFF4682B4
CONST ColorsTan AS INTEGER = &HFFD2B48C
CONST ColorsTeal AS INTEGER = &HFF008080
CONST ColorsThistle AS INTEGER = &HFFD8BFD8
CONST ColorsTomato AS INTEGER = &HFFFF6347
CONST ColorsTransparent AS INTEGER = &HFFFFFF
CONST ColorsTurquoise AS INTEGER = &HFF40E0D0
CONST ColorsViolet AS INTEGER = &HFFEE82EE
CONST ColorsWheat AS INTEGER = &HFFF5DEB3
CONST ColorsWhite AS INTEGER = &HFFFFFFFF
CONST ColorsWhiteSmoke AS INTEGER = &HFFF5F5F5
CONST ColorsYellow AS INTEGER = &HFFFFFF00
CONST ColorsYellowGreen AS INTEGER = &HFF9ACD32

' NOTE: Enums evaluate to a Long
CONST GpStatusOk AS INTEGER = 0
CONST GpStatusGenericError AS INTEGER = 1
CONST GpStatusInvalidParameter AS INTEGER = 2
CONST GpStatusOutOfMemory AS INTEGER = 3
CONST GpStatusObjectBusy AS INTEGER = 4
CONST GpStatusInsufficientBuffer AS INTEGER = 5
CONST GpStatusNotImplemented AS INTEGER = 6
CONST GpStatusWin32Error AS INTEGER = 7
CONST GpStatusWrongState AS INTEGER = 8
CONST GpStatusAborted AS INTEGER = 9
CONST GpStatusFileNotFound AS INTEGER = 10
CONST GpStatusValueOverflow AS INTEGER = 11
CONST GpStatusAccessDenied AS INTEGER = 12
CONST GpStatusUnknownImageFormat AS INTEGER = 13
CONST GpStatusFontFamilyNotFound AS INTEGER = 14
CONST GpStatusFontStyleNotFound AS INTEGER = 15
CONST GpStatusNotTrueTypeFont AS INTEGER = 16
CONST GpStatusUnsupportedGdiplusVersion AS INTEGER = 17
CONST GpStatusGdiplusNotInitialized AS INTEGER = 18
CONST GpStatusPropertyNotFound AS INTEGER = 19
CONST GpStatusPropertyNotSupported AS INTEGER = 20

'PixelFomat const
CONST PixelFormat1bppIndexed  AS LONG = 196865  'Specifies that the format is 1 bit per pixel, indexed.
CONST PixelFormat4bppIndexed  AS LONG = 197634  'Specifies that the format is 4 bits per pixel, indexed.
CONST PixelFormat8bppIndexed AS LONG = 198659   'Specifies that the format is 8 bits per pixel, indexed.
CONST PixelFormat16bppARGB1555  AS LONG = 397319  'Specifies that the format is 16 bits per pixel; 1 bit is used for the alpha component, and 5 bits each are used for the red, green, and blue components.
CONST PixelFormat16bppGrayScale  AS LONG = 1052676  'Specifies that the format is 16 bits per pixel, grayscale.
CONST PixelFormat15bppRGB555  AS LONG = 135173  'Specifies that the format is 16 bits per pixel; 5 bits each are used for the red, green, and blue components. The remaining bit is not used.
CONST PixelFormat16bppRGB555  AS LONG = 135173  'Specifies that the format is 16 bits per pixel; 5 bits each are used for the red, green, and blue components. The remaining bit is not used.
CONST PixelFormat16bppRGB565  AS LONG = 135174  'Specifies that the format is 16 bits per pixel; 5 bits are used for the red component, 6 bits are used for the green component, and 5 bits are used for the blue component.
CONST PixelFormat24bppRGB  AS LONG = 137224  'Specifies that the format is 24 bits per pixel; 8 bits each are used for the red, green, and blue components.
CONST PixelFormat32bppARGB  AS LONG = 2498570  'Specifies that the format is 32 bits per pixel; 8 bits each are used for the alpha, red, green, and blue components.
CONST PixelFormat32bppPARGB  AS LONG = 925707  'Specifies that the format is 32 bits per pixel; 8 bits each are used for the alpha, red, green, and blue components. The red, green, and blue components are premultiplied according to the alpha component.
CONST PixelFormat32bppRGB  AS LONG = 139273  'Specifies that the format is 32 bits per pixel; 8 bits each are used for the red, green, and blue components. The remaining 8 bits are not used.
CONST PixelFormat48bppRGB  AS LONG = 1060876  'Specifies that the format is 48 bits per pixel; 16 bits each are used for the red, green, and blue components.
CONST PixelFormat64bppARGB  AS LONG = 3424269  'Specifies that the format is 64 bits per pixel; 16 bits each are used for the alpha, red, green, and blue components.
CONST PixelFormat64bppPARGB  AS LONG = 1851406  'Specifies that the format is 64 bits per pixel; 16 bits each are used for the alpha, red, green, and blue components. The red, green, and blue components are premultiplied according to the alpha component.

' Quality mode constants
CONST QualityModeInvalid AS INTEGER = -1
CONST QualityModeDefault AS INTEGER = 0
CONST QualityModeLow AS INTEGER = 1        ' Best performance
CONST QualityModeHigh AS INTEGER = 2       ' Best rendering quality

' Alpha Compositing mode constants
CONST CompositingModeSourceOver AS INTEGER = 0
CONST CompositingModeSourceCopy AS INTEGER = 1

' Alpha Compositing quality constants
CONST CompositingQualityInvalid AS INTEGER = QualityModeInvalid
CONST CompositingQualityDefault AS INTEGER = QualityModeDefault
CONST CompositingQualityHighSpeed AS INTEGER = QualityModeLow
CONST CompositingQualityHighQuality AS INTEGER = QualityModeHigh
CONST CompositingQualityGammaCorrected AS INTEGER = 3
CONST CompositingQualityAssumeLinear AS INTEGER = 4

' Generic font families
CONST GenericFontFamilySerif AS INTEGER = 0
CONST GenericFontFamilySansSerif AS INTEGER = 1
CONST GenericFontFamilyMonospace AS INTEGER = 2

' FontStyle: face types and common styles
CONST FontStyleRegular AS INTEGER = 0
CONST FontStyleBold AS INTEGER = 1
CONST FontStyleItalic AS INTEGER = 2
CONST FontStyleBoldItalic AS INTEGER = 3
CONST FontStyleUnderline AS INTEGER = 4
CONST FontStyleStrikeout AS INTEGER = 8

CONST SmoothingModeInvalid AS INTEGER = QualityModeInvalid
CONST SmoothingModeDefault AS INTEGER = QualityModeDefault
CONST SmoothingModeHighSpeed AS INTEGER = QualityModeLow
CONST SmoothingModeHighQuality AS INTEGER = QualityModeHigh
CONST SmoothingModeNone AS INTEGER = 3
CONST SmoothingModeAntiAlias AS INTEGER = 4

CONST FillModeAlternate AS INTEGER = 0
CONST FillModeWinding AS INTEGER = 1

CONST InterpolationModeInvalid AS INTEGER = QualityModeInvalid
CONST InterpolationModeDefault AS INTEGER = QualityModeDefault
CONST InterpolationModeLowQuality AS INTEGER = QualityModeLow
CONST InterpolationModeHighQuality AS INTEGER = QualityModeHigh
CONST InterpolationModeBilinear AS INTEGER = 3
CONST InterpolationModeBicubic AS INTEGER = 4
CONST InterpolationModeNearestNeighbor AS INTEGER = 5
CONST InterpolationModeHighQualityBilinear AS INTEGER = 6
CONST InterpolationModeHighQualityBicubic AS INTEGER = 7

' Various wrap modes for brushes
CONST WrapModeTile        AS INTEGER = 0
CONST WrapModeTileFlipX   AS INTEGER = 1
CONST WrapModeTileFlipY   AS INTEGER = 2
CONST WrapModeTileFlipXY  AS INTEGER = 3
CONST WrapModeClamp       AS INTEGER = 4

CONST LinearGradientModeHorizontal         AS INTEGER = 0
CONST LinearGradientModeVertical           AS INTEGER = 1
CONST LinearGradientModeForwardDiagonal    AS INTEGER = 2
CONST LinearGradientModeBackwardDiagonal   AS INTEGER = 3

CONST ImageTypeUnknown   AS INTEGER = 0
CONST ImageTypeBitmap    AS INTEGER = 1
CONST ImageTypeMetafile  AS INTEGER = 2

' Various Hatch Styles
CONST HatchStyleHorizontal                  AS INTEGER = 0
CONST HatchStyleVertical                    AS INTEGER = 1
CONST HatchStyleForwardDiagonal             AS INTEGER = 2
CONST HatchStyleBackwardDiagonal            AS INTEGER = 3
CONST HatchStyleCross                       AS INTEGER = 4
CONST HatchStyleDiagonalCross               AS INTEGER = 5
CONST HatchStyle05Percent                   AS INTEGER = 6
CONST HatchStyle10Percent                   AS INTEGER = 7
CONST HatchStyle20Percent                   AS INTEGER = 8
CONST HatchStyle25Percent                   AS INTEGER = 9
CONST HatchStyle30Percent                   AS INTEGER = 10
CONST HatchStyle40Percent                   AS INTEGER = 11
CONST HatchStyle50Percent                   AS INTEGER = 12
CONST HatchStyle60Percent                   AS INTEGER = 13
CONST HatchStyle70Percent                   AS INTEGER = 14
CONST HatchStyle75Percent                   AS INTEGER = 15
CONST HatchStyle80Percent                   AS INTEGER = 16
CONST HatchStyle90Percent                   AS INTEGER = 17
CONST HatchStyleLightDownwardDiagonal       AS INTEGER = 18
CONST HatchStyleLightUpwardDiagonal         AS INTEGER = 19
CONST HatchStyleDarkDownwardDiagonal        AS INTEGER = 20
CONST HatchStyleDarkUpwardDiagonal          AS INTEGER = 21
CONST HatchStyleWideDownwardDiagonal        AS INTEGER = 22
CONST HatchStyleWideUpwardDiagonal          AS INTEGER = 23
CONST HatchStyleLightVertical               AS INTEGER = 24
CONST HatchStyleLightHorizontal             AS INTEGER = 25
CONST HatchStyleNarrowVertical              AS INTEGER = 26
CONST HatchStyleNarrowHorizontal            AS INTEGER = 27
CONST HatchStyleDarkVertical                AS INTEGER = 28
CONST HatchStyleDarkHorizontal              AS INTEGER = 29
CONST HatchStyleDashedDownwardDiagonal      AS INTEGER = 30
CONST HatchStyleDashedUpwardDiagonal        AS INTEGER = 31
CONST HatchStyleDashedHorizontal            AS INTEGER = 32
CONST HatchStyleDashedVertical              AS INTEGER = 33
CONST HatchStyleSmallConfetti               AS INTEGER = 34
CONST HatchStyleLargeConfetti               AS INTEGER = 35
CONST HatchStyleZigZag                      AS INTEGER = 36
CONST HatchStyleWave                        AS INTEGER = 37
CONST HatchStyleDiagonalBrick               AS INTEGER = 38
CONST HatchStyleHorizontalBrick             AS INTEGER = 39
CONST HatchStyleWeave                       AS INTEGER = 40
CONST HatchStylePlaid                       AS INTEGER = 41
CONST HatchStyleDivot                       AS INTEGER = 42
CONST HatchStyleDottedGrid                  AS INTEGER = 43
CONST HatchStyleDottedDiamond               AS INTEGER = 44
CONST HatchStyleShingle                     AS INTEGER = 45
CONST HatchStyleTrellis                     AS INTEGER = 46
CONST HatchStyleSphere                      AS INTEGER = 47
CONST HatchStyleSmallGrid                   AS INTEGER = 48
CONST HatchStyleSmallCheckerBoard           AS INTEGER = 49
CONST HatchStyleLargeCheckerBoard           AS INTEGER = 50
CONST HatchStyleOutlinedDiamond             AS INTEGER = 51
CONST HatchStyleSolidDiamond                AS INTEGER = 52

CONST HatchStyleTotal                       AS INTEGER = 53
CONST HatchStyleLargeGrid AS INTEGER = HatchStyleCross

CONST HatchStyleMin AS INTEGER = HatchStyleHorizontal
CONST HatchStyleMax AS INTEGER = HatchStyleTotal - 1

CONST MatrixOrderPrepend AS INTEGER = 0
CONST MatrixOrderAppend AS INTEGER = 1

CONST ColorAdjustTypeDefault AS INTEGER = 0
CONST ColorAdjustTypeBitmap  AS INTEGER = 1
CONST ColorAdjustTypeBrush   AS INTEGER = 2
CONST ColorAdjustTypePen     AS INTEGER = 3
CONST ColorAdjustTypeText    AS INTEGER = 4
CONST ColorAdjustTypeCount   AS INTEGER = 5
CONST ColorAdjustTypeAny     AS INTEGER = 6  ' Reserved

CONST ColorChannelFlagsC    AS INTEGER = 0
CONST ColorChannelFlagsM    AS INTEGER = 1
CONST ColorChannelFlagsY    AS INTEGER = 2
CONST ColorChannelFlagsK    AS INTEGER = 3
CONST ColorChannelFlagsLast AS INTEGER = 4

CONST ColorMatrixFlagsDefault AS INTEGER = 0
CONST ColorMatrixFlagsSkipGrays AS INTEGER = 1
CONST ColorMatrixFlagsAltGray AS INTEGER = 2

CONST PenAlignmentCenter AS INTEGER = 0
CONST PenAlignmentInset AS INTEGER = 1

CONST BrushTypeSolidColor AS INTEGER = 0
CONST BrushTypeHatchFill AS INTEGER = 1
CONST BrushTypeTextureFill AS INTEGER = 2
CONST BrushTypePathGradient AS INTEGER = 3
CONST BrushTypeLinearGradient AS INTEGER = 4

CONST DashStyleSolid          AS INTEGER = 0
CONST DashStyleDash           AS INTEGER = 1
CONST DashStyleDot            AS INTEGER = 2
CONST DashStyleDashDot        AS INTEGER = 3
CONST DashStyleDashDotDot     AS INTEGER = 4
CONST DashStyleCustom         AS INTEGER = 5

' Dash cap constants
CONST DashCapFlat AS INTEGER = 0
CONST DashCapRound AS INTEGER = 2
CONST DashCapTriangle AS INTEGER = 3

' Line cap constants (only the lowest 8 bits are used).
CONST LineCapFlat AS INTEGER = 0
CONST LineCapSquare AS INTEGER = 1
CONST LineCapRound AS INTEGER = 2
CONST LineCapTriangle AS INTEGER = 3

CONST LineCapNoAnchor AS INTEGER = &H10         ' corresponds to flat cap
CONST LineCapSquareAnchor AS INTEGER = &H11     ' corresponds to square cap
CONST LineCapRoundAnchor AS INTEGER = &H12      ' corresponds to round cap
CONST LineCapDiamondAnchor AS INTEGER = &H13    ' corresponds to triangle cap
CONST LineCapArrowAnchor AS INTEGER = &H14      ' no correspondence

CONST LineCapCustom AS INTEGER = &HFF           ' custom cap

CONST LineCapAnchorMask AS INTEGER = &HF0        ' mask to check for anchor or not.

' Custom Line cap type constants
CONST CustomLineCapTypeDefault AS INTEGER = 0
CONST CustomLineCapTypeAdjustableArrow AS INTEGER = 1

' Line join constants
CONST LineJoinMiter AS INTEGER = 0
CONST LineJoinBevel AS INTEGER = 1
CONST LineJoinRound AS INTEGER = 2
CONST LineJoinMiterClipped AS INTEGER = 3

' Pen's Fill types
CONST PenTypeSolidColor AS INTEGER = BrushTypeSolidColor
CONST PenTypeHatchFill AS INTEGER = BrushTypeHatchFill
CONST PenTypeTextureFill AS INTEGER = BrushTypeTextureFill
CONST PenTypePathGradient AS INTEGER = BrushTypePathGradient
CONST PenTypeLinearGradient AS INTEGER = BrushTypeLinearGradient
CONST PenTypeUnknown AS INTEGER = -1

CONST WarpModePerspective     AS INTEGER = 0
CONST WarpModeBilinear        AS INTEGER = 1

' Region Comine Modes
CONST CombineModeReplace      AS INTEGER = 0
CONST CombineModeIntersect    AS INTEGER = 1
CONST CombineModeUnion        AS INTEGER = 2
CONST CombineModeXor          AS INTEGER = 3
CONST CombineModeExclude      AS INTEGER = 4
CONST CombineModeComplement   AS INTEGER = 5 ' (Exclude From)

CONST RotateNoneFlipNone AS INTEGER = 0
CONST Rotate90FlipNone AS INTEGER = 1
CONST Rotate180FlipNone AS INTEGER = 2
CONST Rotate270FlipNone AS INTEGER = 3

CONST RotateNoneFlipX AS INTEGER = 4
CONST Rotate90FlipX AS INTEGER = 5
CONST Rotate180FlipX AS INTEGER = 6
CONST Rotate270FlipX AS INTEGER = 7

CONST RotateNoneFlipY AS INTEGER = Rotate180FlipX
CONST Rotate90FlipY AS INTEGER = Rotate270FlipX
CONST Rotate180FlipY AS INTEGER = RotateNoneFlipX
CONST Rotate270FlipY AS INTEGER = Rotate90FlipX

CONST RotateNoneFlipXY AS INTEGER = Rotate180FlipNone
CONST Rotate90FlipXY AS INTEGER = Rotate270FlipNone
CONST Rotate180FlipXY AS INTEGER = RotateNoneFlipNone
CONST Rotate270FlipXY AS INTEGER = 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.
CONST StringFormatFlagsDirectionRightToLeft AS INTEGER = &H1
CONST StringFormatFlagsDirectionVertical AS INTEGER = &H2
CONST StringFormatFlagsNoFitBlackBox AS INTEGER = &H4
CONST StringFormatFlagsDisplayFormatControl AS INTEGER = &H20
CONST StringFormatFlagsNoFontFallback AS INTEGER = &H400
CONST StringFormatFlagsMeasureTrailingSpaces AS INTEGER = &H800
CONST StringFormatFlagsNoWrap AS INTEGER = &H1000
CONST StringFormatFlagsLineLimit AS INTEGER = &H2000

CONST StringFormatFlagsNoClip AS INTEGER = &H4000

CONST StringTrimmingNone AS INTEGER = 0
CONST StringTrimmingCharacter AS INTEGER = 1
CONST StringTrimmingWord AS INTEGER = 2
CONST StringTrimmingEllipsisCharacter AS INTEGER = 3
CONST StringTrimmingEllipsisWord AS INTEGER = 4
CONST StringTrimmingEllipsisPath AS INTEGER = 5

' National language digit substitution
CONST StringDigitSubstituteUser AS INTEGER = 0         ' As NLS setting
CONST StringDigitSubstituteNone AS INTEGER = 1
CONST StringDigitSubstituteNational AS INTEGER = 2
CONST StringDigitSubstituteTraditional AS INTEGER = 3

' Hotkey prefix interpretation
CONST HotkeyPrefixNone AS INTEGER = 0
CONST HotkeyPrefixShow AS INTEGER = 1
CONST HotkeyPrefixHide AS INTEGER = 2

' Left edge for left-to-right text,
' right for right-to-left text,
' and top for vertical
CONST StringAlignmentNear AS INTEGER = 0
CONST StringAlignmentCenter AS INTEGER = 1
CONST StringAlignmentFar AS INTEGER = 2

CONST FlushIntentionFlush AS INTEGER = 0         ' Flush all batched rendering operations
CONST FlushIntentionSync AS INTEGER = 1          ' Flush all batched rendering operations
                                   ' and wait for them to complete

' Image encoder parameter related types
CONST EncoderParameterValueTypeByte AS INTEGER = 1              ' 8-bit unsigned int
CONST EncoderParameterValueTypeASCII AS INTEGER = 2             ' 8-bit byte containing one 7-bit ASCII
                                                ' code. NULL terminated.
CONST EncoderParameterValueTypeShort AS INTEGER = 3             ' 16-bit unsigned int
CONST EncoderParameterValueTypeLong AS INTEGER = 4              ' 32-bit unsigned int
CONST EncoderParameterValueTypeRational AS INTEGER = 5          ' Two Longs. The first Long is the
                                                ' numerator the second Long expresses the
                                                ' denomintor.
CONST EncoderParameterValueTypeLongRange AS INTEGER = 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
CONST EncoderParameterValueTypeUndefined AS INTEGER = 7         ' 8-bit byte that can take any value
                                                ' depending on field definition
CONST EncoderParameterValueTypeRationalRange AS INTEGER = 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
CONST EncoderValueColorTypeCMYK             AS INTEGER = 0
CONST EncoderValueColorTypeYCCK             AS INTEGER = 1
CONST EncoderValueCompressionLZW            AS INTEGER = 2
CONST EncoderValueCompressionCCITT3         AS INTEGER = 3
CONST EncoderValueCompressionCCITT4         AS INTEGER = 4
CONST EncoderValueCompressionRle            AS INTEGER = 5
CONST EncoderValueCompressionNone           AS INTEGER = 6
CONST EncoderValueScanMethodInterlaced      AS INTEGER = 7
CONST EncoderValueScanMethodNonInterlaced   AS INTEGER = 8
CONST EncoderValueVersionGif87              AS INTEGER = 9
CONST EncoderValueVersionGif89              AS INTEGER = 10
CONST EncoderValueRenderProgressive         AS INTEGER = 11
CONST EncoderValueRenderNonProgressive      AS INTEGER = 12
CONST EncoderValueTransformRotate90         AS INTEGER = 13
CONST EncoderValueTransformRotate180        AS INTEGER = 14
CONST EncoderValueTransformRotate270        AS INTEGER = 15
CONST EncoderValueTransformFlipHorizontal   AS INTEGER = 16
CONST EncoderValueTransformFlipVertical     AS INTEGER = 17
CONST EncoderValueMultiFrame                AS INTEGER = 18
CONST EncoderValueLastFrame                 AS INTEGER = 19
CONST EncoderValueFlush                     AS INTEGER = 20
CONST EncoderValueFrameDimensionTime        AS INTEGER = 21
CONST EncoderValueFrameDimensionResolution  AS INTEGER = 22
CONST EncoderValueFrameDimensionPage        AS INTEGER = 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.
CONST EncoderCompression       AS INTEGER = 0
CONST EncoderColorDepth        AS INTEGER = 1
CONST EncoderScanMethod        AS INTEGER = 2
CONST EncoderVersion           AS INTEGER = 3
CONST EncoderRenderMethod      AS INTEGER = 4
CONST EncoderQuality           AS INTEGER = 5
CONST EncoderTransformation    AS INTEGER = 6
CONST EncoderLuminanceTable    AS INTEGER = 7
CONST EncoderChrominanceTable  AS INTEGER = 8
CONST EncoderSaveFlag          AS INTEGER = 9

CONST PixelOffsetModeInvalid AS INTEGER = QualityModeInvalid
CONST PixelOffsetModeDefault AS INTEGER = QualityModeDefault
CONST PixelOffsetModeHighSpeed AS INTEGER = QualityModeLow
CONST PixelOffsetModeHighQuality AS INTEGER = QualityModeHigh
CONST PixelOffsetModeNone AS INTEGER = 3  ' No pixel offset
CONST PixelOffsetModeHalf AS INTEGER = 4    ' Offset by -0.5 -0.5 for fast anti-alias perf

CONST TextRenderingHintSystemDefault            AS INTEGER = 0 ' Glyph with system default rendering hint
CONST TextRenderingHintSingleBitPerPixelGridFit AS INTEGER = 1 ' Glyph bitmap with hinting
CONST TextRenderingHintSingleBitPerPixel        AS INTEGER = 2 ' Glyph bitmap without hinting
CONST TextRenderingHintAntiAliasGridFit         AS INTEGER = 3 ' Glyph anti-alias bitmap with hinting
CONST TextRenderingHintAntiAlias                AS INTEGER = 4 ' Glyph anti-alias bitmap without hinting
CONST TextRenderingHintClearTypeGridFit         AS INTEGER = 5 ' Glyph CT bitmap with hinting

CONST MetafileTypeInvalid           AS INTEGER = 0 ' Invalid metafile
CONST MetafileTypeWmf               AS INTEGER = 1 ' Standard WMF
CONST MetafileTypeWmfPlaceable      AS INTEGER = 2 ' Placeable WMF
CONST MetafileTypeEmf               AS INTEGER = 3 ' EMF (not EMF+)
CONST MetafileTypeEmfPlusOnly       AS INTEGER = 4 ' EMF+ without dual down-level records
CONST MetafileTypeEmfPlusDual       AS INTEGER = 5 ' EMF+ with dual down-level records

' Specifies the type of EMF to record
CONST EmfTypeEmfOnly AS INTEGER = MetafileTypeEmf               ' no EMF+  only EMF
CONST EmfTypeEmfPlusOnly AS INTEGER = MetafileTypeEmfPlusOnly   ' no EMF  only EMF+
CONST EmfTypeEmfPlusDual AS INTEGER = MetafileTypeEmfPlusDual   ' both EMF+ and EMF

' EMF+ Persistent object types
CONST ObjectTypeInvalid          AS INTEGER = 0
CONST ObjectTypeBrush            AS INTEGER = 1
CONST ObjectTypePen              AS INTEGER = 2
CONST ObjectTypePath             AS INTEGER = 3
CONST ObjectTypeRegion           AS INTEGER = 4
CONST ObjectTypeImage            AS INTEGER = 5
CONST ObjectTypeFont             AS INTEGER = 6
CONST ObjectTypeStringFormat     AS INTEGER = 7
CONST ObjectTypeImageAttributes  AS INTEGER = 8
CONST ObjectTypeCustomLineCap    AS INTEGER = 9

CONST ObjectTypeMax AS INTEGER = ObjectTypeCustomLineCap
CONST ObjectTypeMin AS INTEGER = 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.
CONST MetafileFrameUnitPixel AS INTEGER = UnitPixel
CONST MetafileFrameUnitPoint AS INTEGER = UnitPoint
CONST MetafileFrameUnitInch AS INTEGER = UnitInch
CONST MetafileFrameUnitDocument AS INTEGER = UnitDocument
CONST MetafileFrameUnitMillimeter AS INTEGER = UnitMillimeter
CONST MetafileFrameUnitGdi AS INTEGER = 7                       ' GDI compatible .01 MM units

' Coordinate space identifiers
CONST CoordinateSpaceWorld    AS INTEGER = 0
CONST CoordinateSpacePage     AS INTEGER = 1
CONST CoordinateSpaceDevice   AS INTEGER = 2

'-------------------------------
' APIs
'-------------------------------

DECLARE FUNCTION GdiplusShutdown LIB "gdiplus.dll" ALIAS "GdiplusShutdown"(ByVal token AS LONG) AS LONG
DECLARE FUNCTION GdiplusStartup LIB "gdiplus.dll" ALIAS "GdiplusStartup"(ByRef token AS LONG , byref lpInput AS GdiplusStartupInput , pOutput AS LONG) AS LONG

DECLARE FUNCTION GdipDisposeImage LIB "gdiplus.dll" ALIAS "GdipDisposeImage"(ByVal image AS LONG) AS LONG
DECLARE FUNCTION GdipCreateBitmapFromScan0 LIB "gdiplus.dll" ALIAS "GdipCreateBitmapFromScan0" (BYVAL nWidth AS LONG, BYVAL Height AS LONG, BYVAL stride AS LONG, BYVAL PixelFormat AS LONG, BYVAL scan0 AS LONG, byref 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, byref nBitmap AS LONG) AS LONG
DECLARE FUNCTION GdipSaveImageToFile LIB "gdiplus.dll" ALIAS "GdipSaveImageToFile" (BYVAL nImage AS LONG, lpFilName AS LONG, clsidEncoder AS LONG, encoderParams 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 , ByRef graphics AS LONG) AS LONG
DECLARE FUNCTION GdipCreateFromHWND LIB "gdiplus.dll" ALIAS "GdipCreateFromHWND" (BYVAL hwnd AS LONG, byref graphics AS LONG) AS LONG
DECLARE FUNCTION GdipCreateFromHWNDICM LIB "gdiplus.dll" ALIAS "GdipCreateFromHWNDICM" (BYVAL hwnd AS LONG, byref 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, byref 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 mGraphics AS LONG , ByVal mSmoothingMode 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 QRECT, 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 QRECT, 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, BYVAL imageAttributes AS LONG, BYVAL pCALLBACK AS LONG, 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, BYVAL imageAttributes AS LONG, BYVAL pCALLBACK AS LONG, 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, BYVAL imageAttributes AS LONG, BYVAL pCALLBACK AS LONG, 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, BYVAL imageAttributes AS LONG, BYVAL pCALLBACK AS LONG, 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 LONG, 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 QRECT, 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 QRECT, 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 QRECT, srcRect AS QRECT, 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 QRECT, 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 LONG) 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 QRECT) 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 QRECT) 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 QRECT, srcRect AS QRECT, 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 QRECT, 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 QRECT, 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 QRECT, 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 LONG) AS LONG
DECLARE FUNCTION GdipGetImageEncodersSize LIB "gdiplus.dll" ALIAS "GdipGetImageEncodersSize" (byref numEncoders AS LONG, byref SIZE AS LONG) AS LONG
DECLARE FUNCTION GdipGetImageEncoders LIB "gdiplus.dll" ALIAS "GdipGetImageEncoders" (BYVAL numEncoders AS LONG, BYVAL SIZE AS LONG, encoders AS LONG) AS LONG
DECLARE FUNCTION GdipComment LIB "gdiplus.dll" ALIAS "GdipComment" (BYVAL graphics AS LONG, BYVAL sizeData AS LONG, nData AS LONG) 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
' NOTE: The encoderParams parameter expects a EncoderParameters struct or a NULL
' 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, lpclsidEncoder  AS LONG, encoderParams AS LONG) 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, byref 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, byref nWidth AS LONG) AS LONG
DECLARE FUNCTION GdipGetImageHeight LIB "gdiplus.dll" ALIAS "GdipGetImageHeight" (BYVAL nImage AS LONG, byref 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, lpformatGUID  AS LONG) 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, BYVAL pCALLBACK AS LONG, BYVAL callbackData AS LONG) AS LONG
DECLARE FUNCTION GdipGetEncoderParameterListSize LIB "gdiplus.dll" ALIAS "GdipGetEncoderParameterListSize" (BYVAL nImage AS LONG, lpclsidEncoder  AS LONG, SIZE AS LONG) AS LONG
DECLARE FUNCTION GdipGetEncoderParameterList LIB "gdiplus.dll" ALIAS "GdipGetEncoderParameterList" (BYVAL nImage AS LONG, lpclsidEncoder  AS LONG, 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 LONG, BYVAL Count AS LONG) AS LONG
DECLARE FUNCTION GdipImageGetFrameCount LIB "gdiplus.dll" ALIAS "GdipImageGetFrameCount" (BYVAL nImage AS LONG, dimensionID  AS LONG, Count AS LONG) AS LONG
DECLARE FUNCTION GdipImageSelectActiveFrame LIB "gdiplus.dll" ALIAS "GdipImageSelectActiveFrame" (BYVAL nImage AS LONG, dimensionID  AS LONG, 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, byref 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, byref pen AS LONG) AS LONG
DECLARE FUNCTION GdipClonePen LIB "gdiplus.dll" ALIAS "GdipClonePen" (BYVAL pen AS LONG, byref 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, byref 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, byref 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"(lpWSTR AS LONG, BYREF Handle 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
' 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 bitmap AS LONG , byref 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 GdipBitmapUnlockBits LIB "gdiplus.dll" ALIAS "GdipBitmapUnlockBits" (BYVAL nBitmap AS LONG, byref lockedBitmapData AS BitmapData) AS LONG
DECLARE FUNCTION GdipBitmapLockBits LIB "gdiplus.dll" ALIAS "GdipBitmapLockBits" (BYVAL nBitmap AS LONG, nRect AS QRECT, BYVAL flags AS LONG, BYVAL PixelFormat AS LONG, byref 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, byref 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, byref 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 QRECT, 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 QRECT, 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 QRECT) 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 QRECT) 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 LONG, 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 LONG, 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 LONG, 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 QRECT, 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 QRECT, 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 QRECT, 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 LONG, 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 LONG, 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 LONG, 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 QRECT, 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 QRECT, 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 LONG, 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 QRECT) 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 LONG, 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 QRECT, 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 LONG, 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, lpColorMap AS LONG) 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

$ENDIF