diff --git a/Raytrace.app/Contents/Info.plist b/Raytrace.app/Contents/Info.plist new file mode 100644 index 0000000000..776fd81472 --- /dev/null +++ b/Raytrace.app/Contents/Info.plist @@ -0,0 +1,18 @@ + + + + + CFBundleExecutable + gpu.demos.raytrace + CFBundleIconFile + Icon.icns + CFBundleIdentifier + org.factor.gpu.demos.raytrace + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Raytrace.app + CFBundlePackageType + APPL + + diff --git a/basis/alien/enums/enums-tests.factor b/basis/alien/enums/enums-tests.factor index f0c665830d..a1813d632e 100644 --- a/basis/alien/enums/enums-tests.factor +++ b/basis/alien/enums/enums-tests.factor @@ -33,3 +33,19 @@ ENUM: instrument_t < ushort trombone trumpet ; { V{ { red 0 } { green 3 } { blue 4 } } } [ color_t "c-type" word-prop members>> ] unit-test + +ENUM: colores { rojo red } { verde green } { azul blue } { colorado rojo } ; + +[ { 0 3 4 0 } ] [ { rojo verde azul colorado } [ enum>number ] map ] unit-test + +SYMBOLS: couleurs rouge vert bleu jaune azure ; + +<< couleurs int { + { rouge red } + { vert green } + { bleu blue } + { jaune 14 } + { azure bleu } +} define-enum >> + +[ { 0 3 4 14 4 } ] [ { rouge vert bleu jaune azure } [ enum>number ] map ] unit-test diff --git a/basis/alien/enums/enums.factor b/basis/alien/enums/enums.factor index 18000105e7..c568c2af4c 100644 --- a/basis/alien/enums/enums.factor +++ b/basis/alien/enums/enums.factor @@ -12,7 +12,7 @@ PRIVATE> GENERIC: enum>number ( enum -- number ) foldable M: integer enum>number ; -M: symbol enum>number "enum-value" word-prop ; +M: word enum>number "enum-value" word-prop ; number ] ; M: enum-c-type c-type-setter [ enum>number ] swap base-type>> c-type-setter '[ _ 2dip @ ] ; +: define-enum-value ( class value -- ) + enum>number "enum-value" set-word-prop ; + > "<" ">" surround create-in ] keep @@ -46,10 +43,14 @@ M: enum-c-type c-type-setter PRIVATE> -: define-enum ( word base-type members -- ) +: (define-enum) ( word base-type members -- ) [ dup define-enum-constructor ] 2dip dup define-enum-members swap typedef ; + +: define-enum ( word base-type members -- ) + [ (define-enum) ] + [ [ first2 define-enum-value ] each ] bi ; PREDICATE: enum-c-type-word < c-type-word "c-type" word-prop enum-c-type? ; diff --git a/basis/alien/parser/parser.factor b/basis/alien/parser/parser.factor index 7d72442819..68d476ff29 100755 --- a/basis/alien/parser/parser.factor +++ b/basis/alien/parser/parser.factor @@ -4,7 +4,7 @@ USING: accessors alien alien.c-types alien.libraries arrays assocs classes combinators combinators.short-circuit compiler.units effects grouping kernel parser sequences splitting words fry locals lexer namespaces summary math -vocabs.parser words.constant ; +vocabs.parser words.constant alien.enums ; IN: alien.parser SYMBOL: current-library @@ -75,8 +75,12 @@ M: pointer return-type-name to>> return-type-name CHAR: * suffix ; "*" ?head [ [ ] dip parse-pointers ] when ; +: define-enum-value ( class value -- ) + enum>number "enum-value" set-word-prop ; + : next-enum-member ( members name value -- members value' ) - [ 2array suffix! ] [ 1 + ] bi ; + [ define-enum-value ] + [ [ 2array suffix! ] [ enum>number 1 + ] bi ] 2bi ; : parse-enum-name ( -- name ) scan (CREATE-C-TYPE) dup save-location ; diff --git a/basis/alien/syntax/syntax.factor b/basis/alien/syntax/syntax.factor index 6c2dc5ca85..22ad3bd174 100755 --- a/basis/alien/syntax/syntax.factor +++ b/basis/alien/syntax/syntax.factor @@ -29,7 +29,7 @@ SYNTAX: TYPEDEF: scan-c-type CREATE-C-TYPE dup save-location typedef ; SYNTAX: ENUM: - parse-enum define-enum ; + parse-enum (define-enum) ; SYNTAX: C-TYPE: void CREATE-C-TYPE typedef ; diff --git a/basis/cocoa/cocoa.factor b/basis/cocoa/cocoa.factor index fb21843c0f..53f22addcb 100644 --- a/basis/cocoa/cocoa.factor +++ b/basis/cocoa/cocoa.factor @@ -43,7 +43,9 @@ SYNTAX: IMPORT: scan [ ] import-objc-class ; "NSApplication" "NSArray" "NSAutoreleasePool" + "NSBitmapImageRep" "NSBundle" + "NSColorSpace" "NSData" "NSDictionary" "NSError" diff --git a/basis/cocoa/messages/messages.factor b/basis/cocoa/messages/messages.factor index 4d786aaf72..b607682e76 100644 --- a/basis/cocoa/messages/messages.factor +++ b/basis/cocoa/messages/messages.factor @@ -109,7 +109,7 @@ H{ { "d" c:double } { "B" c:bool } { "v" c:void } - { "*" c:c-string } + { "*" c:void* } { "?" unknown_type } { "@" id } { "#" Class } diff --git a/basis/images/cocoa/authors.txt b/basis/images/cocoa/authors.txt new file mode 100644 index 0000000000..f13c9c1e77 --- /dev/null +++ b/basis/images/cocoa/authors.txt @@ -0,0 +1 @@ +Joe Groff diff --git a/basis/images/cocoa/cocoa.factor b/basis/images/cocoa/cocoa.factor new file mode 100644 index 0000000000..115315aa18 --- /dev/null +++ b/basis/images/cocoa/cocoa.factor @@ -0,0 +1,66 @@ +! (c)2010 Joe Groff bsd license +USING: accessors alien.data cocoa cocoa.classes cocoa.messages +combinators core-foundation.data core-graphics.types fry images +images.loader io kernel literals math sequences ; +IN: images.cocoa + +SINGLETON: ns-image +"png" ns-image register-image-class +"tif" ns-image register-image-class +"tiff" ns-image register-image-class +"gif" ns-image register-image-class +"jpg" ns-image register-image-class +"jpeg" ns-image register-image-class +"bmp" ns-image register-image-class +"ico" ns-image register-image-class + +CONSTANT: NSImageRepLoadStatusUnknownType -1 +CONSTANT: NSImageRepLoadStatusReadingHeader -2 +CONSTANT: NSImageRepLoadStatusWillNeedAllData -3 +CONSTANT: NSImageRepLoadStatusInvalidData -4 +CONSTANT: NSImageRepLoadStatusUnexpectedEOF -5 +CONSTANT: NSImageRepLoadStatusCompleted -6 + +CONSTANT: NSColorRenderingIntentDefault 0 +CONSTANT: NSColorRenderingIntentAbsoluteColorimetric 1 +CONSTANT: NSColorRenderingIntentRelativeColorimetric 2 +CONSTANT: NSColorRenderingIntentPerceptual 3 +CONSTANT: NSColorRenderingIntentSaturation 4 + +ERROR: ns-image-unknown-type ; +ERROR: ns-image-invalid-data ; +ERROR: ns-image-unexpected-eof ; +ERROR: ns-image-planar-images-not-supported ; + + + +: load-image-rep ( -- image-rep ) + NSBitmapImageRep contents -> autorelease -> imageRepWithData: + NSColorSpace -> genericRGBColorSpace + NSColorRenderingIntentDefault + -> bitmapImageRepByConvertingToColorSpace:renderingIntent: ; + +: image-rep>image ( image-rep -- image ) + image new swap { + [ -> size CGSize>dim [ >integer ] map >>dim ] + [ -> bitmapData ] + [ -> bytesPerPlane memory>byte-array >>bitmap ] + } cleave + RGBA >>component-order + ubyte-components >>component-type + t >>premultiplied-alpha? + f >>upside-down? ; + +M: ns-image stream>image + drop + [ load-image-rep ] with-input-stream image-rep>image ; diff --git a/basis/images/cocoa/platforms.txt b/basis/images/cocoa/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/images/cocoa/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/images/cocoa/summary.txt b/basis/images/cocoa/summary.txt new file mode 100644 index 0000000000..628cce90e9 --- /dev/null +++ b/basis/images/cocoa/summary.txt @@ -0,0 +1 @@ +Image loading using MacOS X's native Cocoa APIs diff --git a/basis/images/gdiplus/gdiplus.factor b/basis/images/gdiplus/gdiplus.factor new file mode 100644 index 0000000000..97bc52375f --- /dev/null +++ b/basis/images/gdiplus/gdiplus.factor @@ -0,0 +1,63 @@ +! (c)2010 Joe Groff bsd license +USING: accessors alien.c-types alien.data alien.enums +classes.struct destructors images images.loader +io.streams.limited kernel locals math windows.com +windows.gdiplus windows.streams windows.types typed +byte-arrays grouping sequences ; +IN: images.gdiplus + +SINGLETON: gdi+-image +"png" gdi+-image register-image-class +"tif" gdi+-image register-image-class +"tiff" gdi+-image register-image-class +"gif" gdi+-image register-image-class +"jpg" gdi+-image register-image-class +"jpeg" gdi+-image register-image-class +"bmp" gdi+-image register-image-class +"ico" gdi+-image register-image-class + + ( x y w h -- rect ) + GpRect ; inline + +: stream>gdi+-bitmap ( stream -- bitmap ) + stream>IStream &com-release + { void* } [ GdipCreateBitmapFromStream check-gdi+-status ] + [ ] with-out-parameters &GdipFree ; + +: gdi+-bitmap-width ( bitmap -- w ) + { UINT } [ GdipGetImageWidth check-gdi+-status ] + [ ] with-out-parameters ; +: gdi+-bitmap-height ( bitmap -- w ) + { UINT } [ GdipGetImageHeight check-gdi+-status ] + [ ] with-out-parameters ; +: gdi+-lock-bitmap ( bitmap rect mode format -- data ) + { BitmapData } [ GdipBitmapLockBits check-gdi+-status ] + [ clone ] with-out-parameters ; + +:: gdi+-bitmap>data ( bitmap -- w h pixels ) + bitmap [ gdi+-bitmap-width ] [ gdi+-bitmap-height ] bi :> ( w h ) + bitmap 0 0 w h ImageLockModeRead enum>number + PixelFormat32bppARGB gdi+-lock-bitmap :> bitmap-data + bitmap-data [ Scan0>> ] [ Stride>> ] [ Height>> * ] tri + memory>byte-array :> pixels + bitmap bitmap-data GdipBitmapUnlockBits check-gdi+-status + w h pixels ; + +:: data>image ( w h pixels -- image ) + image new + { w h } >>dim + pixels >>bitmap + BGRA >>component-order + ubyte-components >>component-type + f >>upside-down? ; + +PRIVATE> + +M: gdi+-image stream>image + drop [ + start-gdi+ &stop-gdi+ drop + stream>gdi+-bitmap + gdi+-bitmap>data + data>image + ] with-destructors ; diff --git a/basis/images/images.factor b/basis/images/images.factor index 6cbcdb9508..db731d2045 100644 --- a/basis/images/images.factor +++ b/basis/images/images.factor @@ -62,7 +62,10 @@ UNION: alpha-channel BGRA RGBA ABGR ARGB LA A INTENSITY ; UNION: alpha-channel-precedes-colors ABGR ARGB XBGR XRGB ; -TUPLE: image dim component-order component-type upside-down? bitmap ; +TUPLE: image + dim component-order component-type + upside-down? premultiplied-alpha? + bitmap ; : ( -- image ) image new ; inline diff --git a/basis/opengl/textures/textures.factor b/basis/opengl/textures/textures.factor index f33ea9e47d..0aaa9dcf9b 100644 --- a/basis/opengl/textures/textures.factor +++ b/basis/opengl/textures/textures.factor @@ -312,12 +312,21 @@ TUPLE: single-texture < disposable image dim loc texture-coords texture display- [ init-texture texture-coords>> gl-texture-coord-pointer ] tri swap gl-fill-rect ; +: set-blend-mode ( texture -- ) + image>> dup has-alpha? + [ premultiplied-alpha?>> [ GL_ONE GL_ONE_MINUS_SRC_ALPHA glBlendFunc ] when ] + [ drop GL_BLEND glDisable ] if ; + +: reset-blend-mode ( texture -- ) + image>> dup has-alpha? + [ premultiplied-alpha?>> [ GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA glBlendFunc ] when ] + [ drop GL_BLEND glEnable ] if ; + : draw-textured-rect ( dim texture -- ) [ - [ image>> has-alpha? [ GL_BLEND glDisable ] unless ] + [ set-blend-mode ] [ (draw-textured-rect) GL_TEXTURE_2D 0 glBindTexture ] - [ image>> has-alpha? [ GL_BLEND glEnable ] unless ] - tri + [ reset-blend-mode ] tri ] with-texturing ; : texture-coords ( texture -- coords ) diff --git a/basis/ui/images/images.factor b/basis/ui/images/images.factor index b97a5c14fe..7084f1aac1 100644 --- a/basis/ui/images/images.factor +++ b/basis/ui/images/images.factor @@ -1,8 +1,8 @@ ! Copyright (C) 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: namespaces cache images images.loader accessors assocs -kernel opengl opengl.gl opengl.textures ui.gadgets.worlds -memoize images.png images.tiff ; +USING: accessors assocs cache combinators images images.loader +kernel memoize namespaces opengl opengl.gl opengl.textures system +ui.gadgets.worlds vocabs.loader ; IN: ui.images TUPLE: image-name path ; @@ -30,3 +30,14 @@ PRIVATE> : image-dim ( image-name -- dim ) cached-image dim>> ; + +<< +{ + { [ os macosx? ] [ "images.cocoa" require ] } + { [ os winnt? ] [ "images.gdiplus" require ] } + [ + "images.png" require + "images.tiff" require + ] +} cond +>> diff --git a/basis/windows/com/com.factor b/basis/windows/com/com.factor index 094859009d..46ae1ae154 100644 --- a/basis/windows/com/com.factor +++ b/basis/windows/com/com.factor @@ -1,6 +1,6 @@ USING: alien alien.c-types alien.destructors windows.com.syntax windows.ole32 windows.types continuations kernel alien.syntax -libc destructors accessors alien.data ; +libc destructors accessors alien.data classes.struct windows.kernel32 ; IN: windows.com LIBRARY: ole32 @@ -31,6 +31,55 @@ COM-INTERFACE: IDropTarget IUnknown {00000122-0000-0000-C000-000000000046} HRESULT DragLeave ( ) HRESULT Drop ( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect ) ; +COM-INTERFACE: ISequentialStream IUnknown {0C733A30-2A1C-11CE-ADE5-00AA0044773D} + HRESULT Read ( void* pv, ULONG cb, ULONG* pcbRead ) + HRESULT Write ( void* pv, ULONG cb, ULONG* pcbWritten ) ; + +STRUCT: STATSTG + { pwcsName LPOLESTR } + { type DWORD } + { cbSize ULARGE_INTEGER } + { mtime FILETIME } + { ctime FILETIME } + { atime FILETIME } + { grfMode DWORD } + { grfLocksSupported DWORD } + { clsid CLSID } + { grfStateBits DWORD } + { reserved DWORD } ; + +CONSTANT: STGM_READ 0 +CONSTANT: STGM_WRITE 1 +CONSTANT: STGM_READWRITE 2 + +CONSTANT: STG_E_INVALIDFUNCTION HEX: 80030001 + +CONSTANT: STGTY_STORAGE 1 +CONSTANT: STGTY_STREAM 2 +CONSTANT: STGTY_LOCKBYTES 3 +CONSTANT: STGTY_PROPERTY 4 + +CONSTANT: STREAM_SEEK_SET 0 +CONSTANT: STREAM_SEEK_CUR 1 +CONSTANT: STREAM_SEEK_END 2 + +CONSTANT: LOCK_WRITE 1 +CONSTANT: LOCK_EXCLUSIVE 2 +CONSTANT: LOCK_ONLYONCE 4 + +CONSTANT: GUID_NULL GUID: {00000000-0000-0000-0000-000000000000} + +COM-INTERFACE: IStream ISequentialStream {0000000C-0000-0000-C000-000000000046} + HRESULT Seek ( LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition ) + HRESULT SetSize ( ULARGE_INTEGER* libNewSize ) + HRESULT CopyTo ( IStream* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten ) + HRESULT Commit ( DWORD grfCommitFlags ) + HRESULT Revert ( ) + HRESULT LockRegion ( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType ) + HRESULT UnlockRegion ( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType ) + HRESULT Stat ( STATSTG* pstatstg, DWORD grfStatFlag ) + HRESULT Clone ( IStream** ppstm ) ; + FUNCTION: HRESULT RegisterDragDrop ( HWND hWnd, IDropTarget* pDropTarget ) ; FUNCTION: HRESULT RevokeDragDrop ( HWND hWnd ) ; FUNCTION: void ReleaseStgMedium ( LPSTGMEDIUM pmedium ) ; @@ -51,3 +100,5 @@ FUNCTION: void ReleaseStgMedium ( LPSTGMEDIUM pmedium ) ; over [ com-release ] curry [ ] cleanup ; inline DESTRUCTOR: com-release + + diff --git a/basis/windows/gdiplus/gdiplus.factor b/basis/windows/gdiplus/gdiplus.factor new file mode 100644 index 0000000000..66300f9a90 --- /dev/null +++ b/basis/windows/gdiplus/gdiplus.factor @@ -0,0 +1,1649 @@ +! (c)2010 Joe Groff bsd license +USING: alien.c-types alien.data alien.destructors alien.syntax +classes.struct kernel math windows.com windows.com.syntax +windows.kernel32 windows.ole32 windows.types ; +FROM: alien.c-types => float ; +IN: windows.gdiplus + +LIBRARY: gdiplus + +FUNCTION: void* GdipAlloc ( SIZE_T size ) ; +FUNCTION: void GdipFree ( void* mem ) ; + +DESTRUCTOR: GdipFree + +TYPEDEF: float REAL + +ENUM: GpStatus + { Ok 0 } + { GenericError 1 } + { InvalidParameter 2 } + { OutOfMemory 3 } + { ObjectBusy 4 } + { InsufficientBuffer 5 } + { NotImplemented 6 } + { Win32Error 7 } + { WrongState 8 } + { Aborted 9 } + { FileNotFound 10 } + { ValueOverflow 11 } + { AccessDenied 12 } + { UnknownImageFormat 13 } + { FontFamilyNotFound 14 } + { FontStyleNotFound 15 } + { NotTrueTypeFont 16 } + { UnsupportedGdiplusVersion 17 } + { GdiplusNotInitialized 18 } + { PropertyNotFound 19 } + { PropertyNotSupported 20 } + { ProfileNotFound 21 } ; + +CALLBACK: BOOL ImageAbort ( void* data ) ; +TYPEDEF: ImageAbort DrawImageAbort +TYPEDEF: ImageAbort GetThumbnailImageAbort + +STRUCT: GpPoint + { X INT } + { Y INT } ; + +STRUCT: GpPointF + { X REAL } + { Y REAL } ; + +STRUCT: GpPathData + { Count INT } + { Points GpPointF* } + { Types BYTE* } ; + +STRUCT: GpRectF + { X REAL } + { Y REAL } + { Width REAL } + { Height REAL } ; + +STRUCT: GpRect + { X INT } + { Y INT } + { Width INT } + { Height INT } ; + +STRUCT: CharacterRange + { First INT } + { Length INT } ; + +TYPEDEF: UINT GraphicsState +TYPEDEF: UINT GraphicsContainer + +ENUM: GpUnit + { UnitWorld 0 } + { UnitDisplay 1 } + { UnitPixel 2 } + { UnitPoint 3 } + { UnitInch 4 } + { UnitDocument 5 } + { UnitMillimeter 6 } ; + +ENUM: GpBrushType + { BrushTypeSolidColor 0 } + { BrushTypeHatchFill 1 } + { BrushTypeTextureFill 2 } + { BrushTypePathGradient 3 } + { BrushTypeLinearGradient 4 } ; + +ENUM: GpFillMode + { FillModeAlternate 0 } + { FillModeWinding 1 } ; + +ENUM: GpLineCap + { LineCapFlat HEX: 00 } + { LineCapSquare HEX: 01 } + { LineCapRound HEX: 02 } + { LineCapTriangle HEX: 03 } + + { LineCapNoAnchor HEX: 10 } + { LineCapSquareAnchor HEX: 11 } + { LineCapRoundAnchor HEX: 12 } + { LineCapDiamondAnchor HEX: 13 } + { LineCapArrowAnchor HEX: 14 } + + { LineCapCustom HEX: ff } + { LineCapAnchorMask HEX: f0 } ; + +ENUM: PathPointType + { PathPointTypeStart 0 } + { PathPointTypeLine 1 } + { PathPointTypeBezier 3 } + { PathPointTypePathTypeMask 7 } + { PathPointTypePathDashMode 16 } + { PathPointTypePathMarker 32 } + { PathPointTypeCloseSubpath 128 } + { PathPointTypeBezier3 3 } ; + +ENUM: GpPenType + { PenTypeSolidColor BrushTypeSolidColor } + { PenTypeHatchFill BrushTypeHatchFill } + { PenTypeTextureFill BrushTypeTextureFill } + { PenTypePathGradient BrushTypePathGradient } + { PenTypeLinearGradient BrushTypeLinearGradient } + { PenTypeUnknown -1 } ; + +ENUM: GpLineJoin + { LineJoinMiter 0 } + { LineJoinBevel 1 } + { LineJoinRound 2 } + { LineJoinMiterClipped 3 } ; + +ENUM: QualityMode + { QualityModeInvalid -1 } + { QualityModeDefault 0 } + { QualityModeLow 1 } + { QualityModeHigh 2 } ; + +ENUM: SmoothingMode + { SmoothingModeInvalid QualityModeInvalid } + { SmoothingModeDefault QualityModeDefault } + { SmoothingModeHighSpeed QualityModeLow } + { SmoothingModeHighQuality QualityModeHigh } + SmoothingModeNone + SmoothingModeAntiAlias ; + +ENUM: CompositingQuality + { CompositingQualityInvalid QualityModeInvalid } + { CompositingQualityDefault QualityModeDefault } + { CompositingQualityHighSpeed QualityModeLow } + { CompositingQualityHighQuality QualityModeHigh } + CompositingQualityGammaCorrected + CompositingQualityAssumeLinear ; + +ENUM: InterpolationMode + { InterpolationModeInvalid QualityModeInvalid } + { InterpolationModeDefault QualityModeDefault } + { InterpolationModeLowQuality QualityModeLow } + { InterpolationModeHighQuality QualityModeHigh } + InterpolationModeBilinear + InterpolationModeBicubic + InterpolationModeNearestNeighbor + InterpolationModeHighQualityBilinear + InterpolationModeHighQualityBicubic ; + +ENUM: GpPenAlignment + { PenAlignmentCenter 0 } + { PenAlignmentInset 1 } ; + +ENUM: PixelOffsetMode + { PixelOffsetModeInvalid QualityModeInvalid } + { PixelOffsetModeDefault QualityModeDefault } + { PixelOffsetModeHighSpeed QualityModeLow } + { PixelOffsetModeHighQuality QualityModeHigh } + PixelOffsetModeNone + PixelOffsetModeHalf ; + +ENUM: GpDashCap + { DashCapFlat 0 } + { DashCapRound 2 } + { DashCapTriangle 3 } ; + +ENUM: GpDashStyle + DashStyleSolid + DashStyleDash + DashStyleDot + DashStyleDashDot + DashStyleDashDotDot + DashStyleCustom ; + +ENUM: GpMatrixOrder + { MatrixOrderPrepend 0 } + { MatrixOrderAppend 1 } ; + +ENUM: ImageType + ImageTypeUnknown + ImageTypeBitmap + ImageTypeMetafile ; + +ENUM: WarpMode + WarpModePerspective + WarpModeBilinear ; + +ENUM: GpWrapMode + WrapModeTile + WrapModeTileFlipX + WrapModeTileFlipY + WrapModeTileFlipXY + WrapModeClamp ; + +ENUM: MetafileType + MetafileTypeInvalid + MetafileTypeWmf + MetafileTypeWmfPlaceable + MetafileTypeEmf + MetafileTypeEmfPlusOnly + MetafileTypeEmfPlusDual ; + +ENUM: LinearGradientMode + LinearGradientModeHorizontal + LinearGradientModeVertical + LinearGradientModeForwardDiagonal + LinearGradientModeBackwardDiagonal ; + +ENUM: EmfType + { EmfTypeEmfOnly MetafileTypeEmf } + { EmfTypeEmfPlusOnly MetafileTypeEmfPlusOnly } + { EmfTypeEmfPlusDual MetafileTypeEmfPlusDual } ; + +ENUM: CompositingMode + CompositingModeSourceOver + CompositingModeSourceCopy ; + +ENUM: TextRenderingHint + { TextRenderingHintSystemDefault 0 } + TextRenderingHintSingleBitPerPixelGridFit + TextRenderingHintSingleBitPerPixel + TextRenderingHintAntiAliasGridFit + TextRenderingHintAntiAlias + TextRenderingHintClearTypeGridFit ; + +ENUM: StringAlignment + { StringAlignmentNear 0 } + { StringAlignmentCenter 1 } + { StringAlignmentFar 2 } ; + +ENUM: StringDigitSubstitute + { StringDigitSubstituteUser 0 } + { StringDigitSubstituteNone 1 } + { StringDigitSubstituteNational 2 } + { StringDigitSubstituteTraditional 3 } ; + +ENUM: StringFormatFlags + { StringFormatFlagsDirectionRightToLeft HEX: 00000001 } + { StringFormatFlagsDirectionVertical HEX: 00000002 } + { StringFormatFlagsNoFitBlackBox HEX: 00000004 } + { StringFormatFlagsDisplayFormatControl HEX: 00000020 } + { StringFormatFlagsNoFontFallback HEX: 00000400 } + { StringFormatFlagsMeasureTrailingSpaces HEX: 00000800 } + { StringFormatFlagsNoWrap HEX: 00001000 } + { StringFormatFlagsLineLimit HEX: 00002000 } + { StringFormatFlagsNoClip HEX: 00004000 } ; + +ENUM: StringTrimming + { StringTrimmingNone 0 } + { StringTrimmingCharacter 1 } + { StringTrimmingWord 2 } + { StringTrimmingEllipsisCharacter 3 } + { StringTrimmingEllipsisWord 4 } + { StringTrimmingEllipsisPath 5 } ; + +ENUM: FontStyle + { FontStyleRegular 0 } + { FontStyleBold 1 } + { FontStyleItalic 2 } + { FontStyleBoldItalic 3 } + { FontStyleUnderline 4 } + { FontStyleStrikeout 8 } ; + +ENUM: HotkeyPrefix + { HotkeyPrefixNone 0 } + { HotkeyPrefixShow 1 } + { HotkeyPrefixHide 2 } ; + +ENUM: PaletteFlags + { PaletteFlagsHasAlpha 1 } + { PaletteFlagsGrayScale 2 } + { PaletteFlagsHalftone 4 } ; + +ENUM: ImageCodecFlags + { ImageCodecFlagsEncoder 1 } + { ImageCodecFlagsDecoder 2 } + { ImageCodecFlagsSupportBitmap 4 } + { ImageCodecFlagsSupportVector 8 } + { ImageCodecFlagsSeekableEncode 16 } + { ImageCodecFlagsBlockingDecode 32 } + { ImageCodecFlagsBuiltin 65536 } + { ImageCodecFlagsSystem 131072 } + { ImageCodecFlagsUser 262144 } ; + +ENUM: ImageFlags + { ImageFlagsNone 0 } + { ImageFlagsScalable HEX: 0001 } + { ImageFlagsHasAlpha HEX: 0002 } + { ImageFlagsHasTranslucent HEX: 0004 } + { ImageFlagsPartiallyScalable HEX: 0008 } + { ImageFlagsColorSpaceRGB HEX: 0010 } + { ImageFlagsColorSpaceCMYK HEX: 0020 } + { ImageFlagsColorSpaceGRAY HEX: 0040 } + { ImageFlagsColorSpaceYCBCR HEX: 0080 } + { ImageFlagsColorSpaceYCCK HEX: 0100 } + { ImageFlagsHasRealDPI HEX: 1000 } + { ImageFlagsHasRealPixelSize HEX: 2000 } + { ImageFlagsReadOnly HEX: 00010000 } + { ImageFlagsCaching HEX: 00020000 } ; + +ENUM: CombineMode + CombineModeReplace + CombineModeIntersect + CombineModeUnion + CombineModeXor + CombineModeExclude + CombineModeComplement ; + +ENUM: GpFlushIntention + { FlushIntentionFlush 0 } + { FlushIntentionSync 1 } ; + +ENUM: GpCoordinateSpace + CoordinateSpaceWorld + CoordinateSpacePage + CoordinateSpaceDevice ; + +ENUM: GpTestControlEnum + { TestControlForceBilinear 0 } + { TestControlNoICM 1 } + { TestControlGetBuildNumber 2 } ; + +ENUM: MetafileFrameUnit + { MetafileFrameUnitPixel UnitPixel } + { MetafileFrameUnitPoint UnitPoint } + { MetafileFrameUnitInch UnitInch } + { MetafileFrameUnitDocument UnitDocument } + { MetafileFrameUnitMillimeter UnitMillimeter } + MetafileFrameUnitGdi ; + +ENUM: HatchStyle + { HatchStyleHorizontal 0 } + { HatchStyleVertical 1 } + { HatchStyleForwardDiagonal 2 } + { HatchStyleBackwardDiagonal 3 } + { HatchStyleCross 4 } + { HatchStyleDiagonalCross 5 } + { HatchStyle05Percent 6 } + { HatchStyle10Percent 7 } + { HatchStyle20Percent 8 } + { HatchStyle25Percent 9 } + { HatchStyle30Percent 10 } + { HatchStyle40Percent 11 } + { HatchStyle50Percent 12 } + { HatchStyle60Percent 13 } + { HatchStyle70Percent 14 } + { HatchStyle75Percent 15 } + { HatchStyle80Percent 16 } + { HatchStyle90Percent 17 } + { HatchStyleLightDownwardDiagonal 18 } + { HatchStyleLightUpwardDiagonal 19 } + { HatchStyleDarkDownwardDiagonal 20 } + { HatchStyleDarkUpwardDiagonal 21 } + { HatchStyleWideDownwardDiagonal 22 } + { HatchStyleWideUpwardDiagonal 23 } + { HatchStyleLightVertical 24 } + { HatchStyleLightHorizontal 25 } + { HatchStyleNarrowVertical 26 } + { HatchStyleNarrowHorizontal 27 } + { HatchStyleDarkVertical 28 } + { HatchStyleDarkHorizontal 29 } + { HatchStyleDashedDownwardDiagonal 30 } + { HatchStyleDashedUpwardDiagonal 31 } + { HatchStyleDashedHorizontal 32 } + { HatchStyleDashedVertical 33 } + { HatchStyleSmallConfetti 34 } + { HatchStyleLargeConfetti 35 } + { HatchStyleZigZag 36 } + { HatchStyleWave 37 } + { HatchStyleDiagonalBrick 38 } + { HatchStyleHorizontalBrick 39 } + { HatchStyleWeave 40 } + { HatchStylePlaid 41 } + { HatchStyleDivot 42 } + { HatchStyleDottedGrid 43 } + { HatchStyleDottedDiamond 44 } + { HatchStyleShingle 45 } + { HatchStyleTrellis 46 } + { HatchStyleSphere 47 } + { HatchStyleSmallGrid 48 } + { HatchStyleSmallCheckerBoard 49 } + { HatchStyleLargeCheckerBoard 50 } + { HatchStyleOutlinedDiamond 51 } + { HatchStyleSolidDiamond 52 } + { HatchStyleTotal 53 } + { HatchStyleLargeGrid 4 } + { HatchStyleMin 0 } + { HatchStyleMax 52 } ; + +ENUM: DebugEventLevel + DebugEventLevelFatal + DebugEventLevelWarning ; + +CALLBACK: void DebugEventProc ( DebugEventLevel level, c-string msg ) ; +CALLBACK: GpStatus NotificationHookProc ( ULONG_PTR* x ) ; +CALLBACK: void NotificationUnhookProc ( ULONG_PTR x ) ; + +STRUCT: GdiplusStartupInput + { GdiplusVersion UINT32 } + { DebugEventCallback DebugEventProc } + { SuppressBackgroundThread BOOL } + { SuppressExternalCodecs BOOL } ; + +STRUCT: GdiplusStartupOutput + { NotificationHook NotificationHookProc } + { NotificationUnhook NotificationUnhookProc } ; + +FUNCTION: GpStatus GdiplusStartup ( ULONG_PTR* x, GdiplusStartupInput* in, GdiplusStartupOutput* out ) ; +FUNCTION: void GdiplusShutdown ( ULONG_PTR x ) ; + +TYPEDEF: DWORD ARGB +TYPEDEF: INT PixelFormat + + + +CONSTANT: PixelFormatIndexed HEX: 00010000 +CONSTANT: PixelFormatGDI HEX: 00020000 +CONSTANT: PixelFormatAlpha HEX: 00040000 +CONSTANT: PixelFormatPAlpha HEX: 00080000 +CONSTANT: PixelFormatExtended HEX: 00100000 +CONSTANT: PixelFormatCanonical HEX: 00200000 + +CONSTANT: PixelFormatUndefined 0 +CONSTANT: PixelFormatDontCare 0 +CONSTANT: PixelFormatMax 15 + +: PixelFormat1bppIndexed ( -- x ) + 1 1 PixelFormatIndexed PixelFormatGDI bitor pixel-format-constant ; inline +: PixelFormat4bppIndexed ( -- x ) + 2 4 PixelFormatIndexed PixelFormatGDI bitor pixel-format-constant ; inline +: PixelFormat8bppIndexed ( -- x ) + 3 8 PixelFormatIndexed PixelFormatGDI bitor pixel-format-constant ; inline +: PixelFormat16bppGrayScale ( -- x ) + 4 16 PixelFormatExtended pixel-format-constant ; inline +: PixelFormat16bppRGB555 ( -- x ) + 5 16 PixelFormatGDI pixel-format-constant ; inline +: PixelFormat16bppRGB565 ( -- x ) + 6 16 PixelFormatGDI pixel-format-constant ; inline +: PixelFormat16bppARGB1555 ( -- x ) + 7 16 PixelFormatAlpha PixelFormatGDI bitor pixel-format-constant ; inline +: PixelFormat24bppRGB ( -- x ) + 8 24 PixelFormatGDI pixel-format-constant ; inline +: PixelFormat32bppRGB ( -- x ) + 9 32 PixelFormatGDI pixel-format-constant ; inline +: PixelFormat32bppARGB ( -- x ) + 10 32 PixelFormatAlpha PixelFormatGDI PixelFormatCanonical bitor bitor pixel-format-constant ; inline +: PixelFormat32bppPARGB ( -- x ) + 11 32 PixelFormatAlpha PixelFormatPAlpha PixelFormatGDI bitor bitor pixel-format-constant ; inline +: PixelFormat48bppRGB ( -- x ) + 12 48 PixelFormatExtended pixel-format-constant ; inline +: PixelFormat64bppARGB ( -- x ) + 13 64 PixelFormatAlpha PixelFormatCanonical PixelFormatExtended bitor bitor pixel-format-constant ; inline +: PixelFormat64bppPARGB ( -- x ) + 14 64 PixelFormatAlpha PixelFormatPAlpha PixelFormatExtended bitor bitor pixel-format-constant ; inline + +STRUCT: ColorPalette + { Flags UINT } + { Count UINT } + { Entries ARGB[1] } ; + +! XXX RECTL and SIZEL should go with other metafile definitions if we add them +STRUCT: RECTL + { left LONG } + { top LONG } + { right LONG } + { bottom LONG } ; + +STRUCT: SIZEL + { width LONG } + { height LONG } ; + +STRUCT: ENHMETAHEADER3 + { iType DWORD } + { nSize DWORD } + { rclBounds RECTL } + { rclFrame RECTL } + { dSignature DWORD } + { nVersion DWORD } + { nBytes DWORD } + { nRecords DWORD } + { nHandles WORD } + { sReserved WORD } + { nDescription DWORD } + { offDescription DWORD } + { nPalEntries DWORD } + { szlDevice SIZEL } + { szlMillimeters SIZEL } ; + +STRUCT: PWMFRect16 + { Left INT16 } + { Top INT16 } + { Right INT16 } + { Bottom INT16 } ; + +STRUCT: WmfPlaceableFileHeader + { Key UINT32 } + { Hmf INT16 } + { BoundingBox PWMFRect16 } + { Inch INT16 } + { Reserved INT16[2] } + { Checksum INT16 } ; + +CONSTANT: GDIP_EMFPLUSFLAGS_DISPLAY 1 + +! XXX we don't have a METAHEADER struct defined +! UNION-STRUCT: MetafileHeader-union +! { WmfHeader METAHEADER } +! { EmfHeader ENHMETAHEADER3 } ; + +UNION-STRUCT: MetafileHeader-union + { EmfHeader ENHMETAHEADER3 } ; + +STRUCT: MetafileHeader + { Type MetafileType } + { Size UINT } + { Version UINT } + { EmfPlusFlags UINT } + { DpiX REAL } + { DpiY REAL } + { X INT } + { Y INT } + { Width INT } + { Height INT } + { Header-union MetafileHeader-union } + { EmfPlusHeaderSize INT } + { LogicalDpiX INT } + { LogicalDpiY INT } ; + +CONSTANT: ImageFormatUndefined GUID: {b96b3ca9-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatMemoryBMP GUID: {b96b3caa-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatBMP GUID: {b96b3cab-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatEMF GUID: {b96b3cac-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatWMF GUID: {b96b3cad-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatJPEG GUID: {b96b3cae-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatPNG GUID: {b96b3caf-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatGIF GUID: {b96b3cb0-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatTIFF GUID: {b96b3cb1-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatEXIF GUID: {b96b3cb2-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatIcon GUID: {b96b3cb5-0728-11d3-9d7b-0000f81ef32e} + +CONSTANT: FrameDimensionTime GUID: {6aedbd6d-3fb5-418a-83a6-7f45229dc872} +CONSTANT: FrameDimensionPage GUID: {7462dc86-6180-4c7e-8e3f-ee7333a7a483} +CONSTANT: FrameDimensionResolution GUID: {84236f7b-3bd3-428f-8dab-4ea1439ca315} + +ENUM: ImageLockMode + { ImageLockModeRead 1 } + { ImageLockModeWrite 2 } + { ImageLockModeUserInputBuf 4 } ; + +ENUM: RotateFlipType + { RotateNoneFlipNone 0 } + { Rotate180FlipXY RotateNoneFlipNone } + + { Rotate90FlipNone 1 } + { Rotate270FlipXY Rotate90FlipNone } + + { Rotate180FlipNone 2 } + { RotateNoneFlipXY Rotate180FlipNone } + + { Rotate270FlipNone 3 } + { Rotate90FlipXY Rotate270FlipNone } + + { RotateNoneFlipX 4 } + { Rotate180FlipY RotateNoneFlipX } + + { Rotate90FlipX 5 } + { Rotate270FlipY Rotate90FlipX } + + { Rotate180FlipX 6 } + { RotateNoneFlipY Rotate180FlipX } + + { Rotate270FlipX 7 } + { Rotate90FlipY Rotate270FlipX } ; + +STRUCT: EncoderParameter + { Guid GUID } + { NumberOfValues ULONG } + { Type ULONG } + { Value void* } ; + +STRUCT: EncoderParameters + { Count UINT } + { Parameter EncoderParameter[1] } ; + +STRUCT: ImageCodecInfo + { Clsid CLSID } + { FormatID GUID } + { CodecName WCHAR* } + { DllName WCHAR* } + { FormatDescription WCHAR* } + { FilenameExtension WCHAR* } + { MimeType WCHAR* } + { Flags DWORD } + { Version DWORD } + { SigCount DWORD } + { SigSize DWORD } + { SigPattern BYTE* } + { SigMask BYTE* } ; + +STRUCT: BitmapData + { Width UINT } + { Height UINT } + { Stride INT } + { PixelFormat PixelFormat } + { Scan0 void* } + { Reserved UINT_PTR } ; + +STRUCT: ImageItemData + { Size UINT } + { Position UINT } + { Desc void* } + { DescSize UINT } + { Data void* } + { DataSize UINT } + { Cookie UINT } ; + +STRUCT: PropertyItem + { id PROPID } + { length ULONG } + { type WORD } + { value void* } ; + +CONSTANT: PropertyTagTypeByte 1 +CONSTANT: PropertyTagTypeASCII 2 +CONSTANT: PropertyTagTypeShort 3 +CONSTANT: PropertyTagTypeLong 4 +CONSTANT: PropertyTagTypeRational 5 +CONSTANT: PropertyTagTypeUndefined 7 +CONSTANT: PropertyTagTypeSLONG 9 +CONSTANT: PropertyTagTypeSRational 10 + +CONSTANT: PropertyTagExifIFD HEX: 8769 +CONSTANT: PropertyTagGpsIFD HEX: 8825 + +CONSTANT: PropertyTagNewSubfileType HEX: 00FE +CONSTANT: PropertyTagSubfileType HEX: 00FF +CONSTANT: PropertyTagImageWidth HEX: 0100 +CONSTANT: PropertyTagImageHeight HEX: 0101 +CONSTANT: PropertyTagBitsPerSample HEX: 0102 +CONSTANT: PropertyTagCompression HEX: 0103 +CONSTANT: PropertyTagPhotometricInterp HEX: 0106 +CONSTANT: PropertyTagThreshHolding HEX: 0107 +CONSTANT: PropertyTagCellWidth HEX: 0108 +CONSTANT: PropertyTagCellHeight HEX: 0109 +CONSTANT: PropertyTagFillOrder HEX: 010A +CONSTANT: PropertyTagDocumentName HEX: 010D +CONSTANT: PropertyTagImageDescription HEX: 010E +CONSTANT: PropertyTagEquipMake HEX: 010F +CONSTANT: PropertyTagEquipModel HEX: 0110 +CONSTANT: PropertyTagStripOffsets HEX: 0111 +CONSTANT: PropertyTagOrientation HEX: 0112 +CONSTANT: PropertyTagSamplesPerPixel HEX: 0115 +CONSTANT: PropertyTagRowsPerStrip HEX: 0116 +CONSTANT: PropertyTagStripBytesCount HEX: 0117 +CONSTANT: PropertyTagMinSampleValue HEX: 0118 +CONSTANT: PropertyTagMaxSampleValue HEX: 0119 +CONSTANT: PropertyTagXResolution HEX: 011A +CONSTANT: PropertyTagYResolution HEX: 011B +CONSTANT: PropertyTagPlanarConfig HEX: 011C +CONSTANT: PropertyTagPageName HEX: 011D +CONSTANT: PropertyTagXPosition HEX: 011E +CONSTANT: PropertyTagYPosition HEX: 011F +CONSTANT: PropertyTagFreeOffset HEX: 0120 +CONSTANT: PropertyTagFreeByteCounts HEX: 0121 +CONSTANT: PropertyTagGrayResponseUnit HEX: 0122 +CONSTANT: PropertyTagGrayResponseCurve HEX: 0123 +CONSTANT: PropertyTagT4Option HEX: 0124 +CONSTANT: PropertyTagT6Option HEX: 0125 +CONSTANT: PropertyTagResolutionUnit HEX: 0128 +CONSTANT: PropertyTagPageNumber HEX: 0129 +CONSTANT: PropertyTagTransferFuncition HEX: 012D +CONSTANT: PropertyTagSoftwareUsed HEX: 0131 +CONSTANT: PropertyTagDateTime HEX: 0132 +CONSTANT: PropertyTagArtist HEX: 013B +CONSTANT: PropertyTagHostComputer HEX: 013C +CONSTANT: PropertyTagPredictor HEX: 013D +CONSTANT: PropertyTagWhitePoint HEX: 013E +CONSTANT: PropertyTagPrimaryChromaticities HEX: 013F +CONSTANT: PropertyTagColorMap HEX: 0140 +CONSTANT: PropertyTagHalftoneHints HEX: 0141 +CONSTANT: PropertyTagTileWidth HEX: 0142 +CONSTANT: PropertyTagTileLength HEX: 0143 +CONSTANT: PropertyTagTileOffset HEX: 0144 +CONSTANT: PropertyTagTileByteCounts HEX: 0145 +CONSTANT: PropertyTagInkSet HEX: 014C +CONSTANT: PropertyTagInkNames HEX: 014D +CONSTANT: PropertyTagNumberOfInks HEX: 014E +CONSTANT: PropertyTagDotRange HEX: 0150 +CONSTANT: PropertyTagTargetPrinter HEX: 0151 +CONSTANT: PropertyTagExtraSamples HEX: 0152 +CONSTANT: PropertyTagSampleFormat HEX: 0153 +CONSTANT: PropertyTagSMinSampleValue HEX: 0154 +CONSTANT: PropertyTagSMaxSampleValue HEX: 0155 +CONSTANT: PropertyTagTransferRange HEX: 0156 + +CONSTANT: PropertyTagJPEGProc HEX: 0200 +CONSTANT: PropertyTagJPEGInterFormat HEX: 0201 +CONSTANT: PropertyTagJPEGInterLength HEX: 0202 +CONSTANT: PropertyTagJPEGRestartInterval HEX: 0203 +CONSTANT: PropertyTagJPEGLosslessPredictors HEX: 0205 +CONSTANT: PropertyTagJPEGPointTransforms HEX: 0206 +CONSTANT: PropertyTagJPEGQTables HEX: 0207 +CONSTANT: PropertyTagJPEGDCTables HEX: 0208 +CONSTANT: PropertyTagJPEGACTables HEX: 0209 + +CONSTANT: PropertyTagYCbCrCoefficients HEX: 0211 +CONSTANT: PropertyTagYCbCrSubsampling HEX: 0212 +CONSTANT: PropertyTagYCbCrPositioning HEX: 0213 +CONSTANT: PropertyTagREFBlackWhite HEX: 0214 + +CONSTANT: PropertyTagICCProfile HEX: 8773 + +CONSTANT: PropertyTagGamma HEX: 0301 +CONSTANT: PropertyTagICCProfileDescriptor HEX: 0302 +CONSTANT: PropertyTagSRGBRenderingIntent HEX: 0303 + +CONSTANT: PropertyTagImageTitle HEX: 0320 +CONSTANT: PropertyTagCopyright HEX: 8298 + +CONSTANT: PropertyTagResolutionXUnit HEX: 5001 +CONSTANT: PropertyTagResolutionYUnit HEX: 5002 +CONSTANT: PropertyTagResolutionXLengthUnit HEX: 5003 +CONSTANT: PropertyTagResolutionYLengthUnit HEX: 5004 +CONSTANT: PropertyTagPrintFlags HEX: 5005 +CONSTANT: PropertyTagPrintFlagsVersion HEX: 5006 +CONSTANT: PropertyTagPrintFlagsCrop HEX: 5007 +CONSTANT: PropertyTagPrintFlagsBleedWidth HEX: 5008 +CONSTANT: PropertyTagPrintFlagsBleedWidthScale HEX: 5009 +CONSTANT: PropertyTagHalftoneLPI HEX: 500A +CONSTANT: PropertyTagHalftoneLPIUnit HEX: 500B +CONSTANT: PropertyTagHalftoneDegree HEX: 500C +CONSTANT: PropertyTagHalftoneShape HEX: 500D +CONSTANT: PropertyTagHalftoneMisc HEX: 500E +CONSTANT: PropertyTagHalftoneScreen HEX: 500F +CONSTANT: PropertyTagJPEGQuality HEX: 5010 +CONSTANT: PropertyTagGridSize HEX: 5011 +CONSTANT: PropertyTagThumbnailFormat HEX: 5012 +CONSTANT: PropertyTagThumbnailWidth HEX: 5013 +CONSTANT: PropertyTagThumbnailHeight HEX: 5014 +CONSTANT: PropertyTagThumbnailColorDepth HEX: 5015 +CONSTANT: PropertyTagThumbnailPlanes HEX: 5016 +CONSTANT: PropertyTagThumbnailRawBytes HEX: 5017 +CONSTANT: PropertyTagThumbnailSize HEX: 5018 +CONSTANT: PropertyTagThumbnailCompressedSize HEX: 5019 +CONSTANT: PropertyTagColorTransferFunction HEX: 501A +CONSTANT: PropertyTagThumbnailData HEX: 501B + +CONSTANT: PropertyTagThumbnailImageWidth HEX: 5020 +CONSTANT: PropertyTagThumbnailImageHeight HEX: 5021 +CONSTANT: PropertyTagThumbnailBitsPerSample HEX: 5022 +CONSTANT: PropertyTagThumbnailCompression HEX: 5023 +CONSTANT: PropertyTagThumbnailPhotometricInterp HEX: 5024 +CONSTANT: PropertyTagThumbnailImageDescription HEX: 5025 +CONSTANT: PropertyTagThumbnailEquipMake HEX: 5026 +CONSTANT: PropertyTagThumbnailEquipModel HEX: 5027 +CONSTANT: PropertyTagThumbnailStripOffsets HEX: 5028 +CONSTANT: PropertyTagThumbnailOrientation HEX: 5029 +CONSTANT: PropertyTagThumbnailSamplesPerPixel HEX: 502A +CONSTANT: PropertyTagThumbnailRowsPerStrip HEX: 502B +CONSTANT: PropertyTagThumbnailStripBytesCount HEX: 502C +CONSTANT: PropertyTagThumbnailResolutionX HEX: 502D +CONSTANT: PropertyTagThumbnailResolutionY HEX: 502E +CONSTANT: PropertyTagThumbnailPlanarConfig HEX: 502F +CONSTANT: PropertyTagThumbnailResolutionUnit HEX: 5030 +CONSTANT: PropertyTagThumbnailTransferFunction HEX: 5031 +CONSTANT: PropertyTagThumbnailSoftwareUsed HEX: 5032 +CONSTANT: PropertyTagThumbnailDateTime HEX: 5033 +CONSTANT: PropertyTagThumbnailArtist HEX: 5034 +CONSTANT: PropertyTagThumbnailWhitePoint HEX: 5035 +CONSTANT: PropertyTagThumbnailPrimaryChromaticities HEX: 5036 +CONSTANT: PropertyTagThumbnailYCbCrCoefficients HEX: 5037 +CONSTANT: PropertyTagThumbnailYCbCrSubsampling HEX: 5038 +CONSTANT: PropertyTagThumbnailYCbCrPositioning HEX: 5039 +CONSTANT: PropertyTagThumbnailRefBlackWhite HEX: 503A +CONSTANT: PropertyTagThumbnailCopyRight HEX: 503B + +CONSTANT: PropertyTagLuminanceTable HEX: 5090 +CONSTANT: PropertyTagChrominanceTable HEX: 5091 + +CONSTANT: PropertyTagFrameDelay HEX: 5100 +CONSTANT: PropertyTagLoopCount HEX: 5101 + +CONSTANT: PropertyTagPixelUnit HEX: 5110 +CONSTANT: PropertyTagPixelPerUnitX HEX: 5111 +CONSTANT: PropertyTagPixelPerUnitY HEX: 5112 +CONSTANT: PropertyTagPaletteHistogram HEX: 5113 + +CONSTANT: PropertyTagExifExposureTime HEX: 829A +CONSTANT: PropertyTagExifFNumber HEX: 829D + +CONSTANT: PropertyTagExifExposureProg HEX: 8822 +CONSTANT: PropertyTagExifSpectralSense HEX: 8824 +CONSTANT: PropertyTagExifISOSpeed HEX: 8827 +CONSTANT: PropertyTagExifOECF HEX: 8828 + +CONSTANT: PropertyTagExifVer HEX: 9000 +CONSTANT: PropertyTagExifDTOrig HEX: 9003 +CONSTANT: PropertyTagExifDTDigitized HEX: 9004 + +CONSTANT: PropertyTagExifCompConfig HEX: 9101 +CONSTANT: PropertyTagExifCompBPP HEX: 9102 + +CONSTANT: PropertyTagExifShutterSpeed HEX: 9201 +CONSTANT: PropertyTagExifAperture HEX: 9202 +CONSTANT: PropertyTagExifBrightness HEX: 9203 +CONSTANT: PropertyTagExifExposureBias HEX: 9204 +CONSTANT: PropertyTagExifMaxAperture HEX: 9205 +CONSTANT: PropertyTagExifSubjectDist HEX: 9206 +CONSTANT: PropertyTagExifMeteringMode HEX: 9207 +CONSTANT: PropertyTagExifLightSource HEX: 9208 +CONSTANT: PropertyTagExifFlash HEX: 9209 +CONSTANT: PropertyTagExifFocalLength HEX: 920A +CONSTANT: PropertyTagExifMakerNote HEX: 927C +CONSTANT: PropertyTagExifUserComment HEX: 9286 +CONSTANT: PropertyTagExifDTSubsec HEX: 9290 +CONSTANT: PropertyTagExifDTOrigSS HEX: 9291 +CONSTANT: PropertyTagExifDTDigSS HEX: 9292 + +CONSTANT: PropertyTagExifFPXVer HEX: A000 +CONSTANT: PropertyTagExifColorSpace HEX: A001 +CONSTANT: PropertyTagExifPixXDim HEX: A002 +CONSTANT: PropertyTagExifPixYDim HEX: A003 +CONSTANT: PropertyTagExifRelatedWav HEX: A004 +CONSTANT: PropertyTagExifInterop HEX: A005 +CONSTANT: PropertyTagExifFlashEnergy HEX: A20B +CONSTANT: PropertyTagExifSpatialFR HEX: A20C +CONSTANT: PropertyTagExifFocalXRes HEX: A20E +CONSTANT: PropertyTagExifFocalYRes HEX: A20F +CONSTANT: PropertyTagExifFocalResUnit HEX: A210 +CONSTANT: PropertyTagExifSubjectLoc HEX: A214 +CONSTANT: PropertyTagExifExposureIndex HEX: A215 +CONSTANT: PropertyTagExifSensingMethod HEX: A217 +CONSTANT: PropertyTagExifFileSource HEX: A300 +CONSTANT: PropertyTagExifSceneType HEX: A301 +CONSTANT: PropertyTagExifCfaPattern HEX: A302 + +CONSTANT: PropertyTagGpsVer HEX: 0000 +CONSTANT: PropertyTagGpsLatitudeRef HEX: 0001 +CONSTANT: PropertyTagGpsLatitude HEX: 0002 +CONSTANT: PropertyTagGpsLongitudeRef HEX: 0003 +CONSTANT: PropertyTagGpsLongitude HEX: 0004 +CONSTANT: PropertyTagGpsAltitudeRef HEX: 0005 +CONSTANT: PropertyTagGpsAltitude HEX: 0006 +CONSTANT: PropertyTagGpsGpsTime HEX: 0007 +CONSTANT: PropertyTagGpsGpsSatellites HEX: 0008 +CONSTANT: PropertyTagGpsGpsStatus HEX: 0009 +CONSTANT: PropertyTagGpsGpsMeasureMode HEX: 000A +CONSTANT: PropertyTagGpsGpsDop HEX: 000B +CONSTANT: PropertyTagGpsSpeedRef HEX: 000C +CONSTANT: PropertyTagGpsSpeed HEX: 000D +CONSTANT: PropertyTagGpsTrackRef HEX: 000E +CONSTANT: PropertyTagGpsTrack HEX: 000F +CONSTANT: PropertyTagGpsImgDirRef HEX: 0010 +CONSTANT: PropertyTagGpsImgDir HEX: 0011 +CONSTANT: PropertyTagGpsMapDatum HEX: 0012 +CONSTANT: PropertyTagGpsDestLatRef HEX: 0013 +CONSTANT: PropertyTagGpsDestLat HEX: 0014 +CONSTANT: PropertyTagGpsDestLongRef HEX: 0015 +CONSTANT: PropertyTagGpsDestLong HEX: 0016 +CONSTANT: PropertyTagGpsDestBearRef HEX: 0017 +CONSTANT: PropertyTagGpsDestBear HEX: 0018 +CONSTANT: PropertyTagGpsDestDistRef HEX: 0019 +CONSTANT: PropertyTagGpsDestDist HEX: 001A + +ENUM: ColorChannelFlags + ColorChannelFlagsC + ColorChannelFlagsM + ColorChannelFlagsY + ColorChannelFlagsK + ColorChannelFlagsLast ; + +STRUCT: GpColor + { Argb ARGB } ; + +STRUCT: ColorMatrix + { m REAL[5][5] } ; + +ENUM: ColorMatrixFlags + { ColorMatrixFlagsDefault 0 } + { ColorMatrixFlagsSkipGrays 1 } + { ColorMatrixFlagsAltGray 2 } ; + +ENUM: ColorAdjustType + ColorAdjustTypeDefault + ColorAdjustTypeBitmap + ColorAdjustTypeBrush + ColorAdjustTypePen + ColorAdjustTypeText + ColorAdjustTypeCount + ColorAdjustTypeAny ; + +STRUCT: ColorMap + { oldColor GpColor } + { newColor GpColor } ; + +C-TYPE: GpGraphics +C-TYPE: GpPen +C-TYPE: GpBrush +C-TYPE: GpHatch +C-TYPE: GpSolidFill +C-TYPE: GpPath +C-TYPE: GpMatrix +C-TYPE: GpPathIterator +C-TYPE: GpCustomLineCap +C-TYPE: GpAdjustableArrowCap +C-TYPE: GpImage +C-TYPE: GpMetafile +C-TYPE: GpImageAttributes +C-TYPE: GpCachedBitmap +C-TYPE: GpBitmap +C-TYPE: GpPathGradient +C-TYPE: GpLineGradient +C-TYPE: GpTexture +C-TYPE: GpFont +C-TYPE: GpFontCollection +C-TYPE: GpFontFamily +C-TYPE: GpStringFormat +C-TYPE: GpRegion +C-TYPE: CGpEffect + +! dummy out other windows types we don't care to define yet +C-TYPE: LOGFONTA +C-TYPE: LOGFONTW + +FUNCTION: GpStatus GdipCreateAdjustableArrowCap ( REAL x, REAL x, BOOL x, GpAdjustableArrowCap** x ) ; +FUNCTION: GpStatus GdipGetAdjustableArrowCapFillState ( GpAdjustableArrowCap* x, BOOL* x ) ; +FUNCTION: GpStatus GdipGetAdjustableArrowCapHeight ( GpAdjustableArrowCap* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetAdjustableArrowCapMiddleInset ( GpAdjustableArrowCap* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetAdjustableArrowCapWidth ( GpAdjustableArrowCap* x, REAL* x ) ; +FUNCTION: GpStatus GdipSetAdjustableArrowCapFillState ( GpAdjustableArrowCap* x, BOOL x ) ; +FUNCTION: GpStatus GdipSetAdjustableArrowCapHeight ( GpAdjustableArrowCap* x, REAL x ) ; +FUNCTION: GpStatus GdipSetAdjustableArrowCapMiddleInset ( GpAdjustableArrowCap* x, REAL x ) ; +FUNCTION: GpStatus GdipSetAdjustableArrowCapWidth ( GpAdjustableArrowCap* x, REAL x ) ; + +FUNCTION: GpStatus GdipBitmapApplyEffect ( GpBitmap* x, CGpEffect* x, RECT* x, BOOL x, VOID** x, INT* x ) ; +FUNCTION: GpStatus GdipBitmapCreateApplyEffect ( GpBitmap** x, INT x, CGpEffect* x, RECT* x, RECT* x, GpBitmap** x, BOOL x, VOID** x, INT* x ) ; +FUNCTION: GpStatus GdipBitmapGetPixel ( GpBitmap* x, INT x, INT x, ARGB* x ) ; +FUNCTION: GpStatus GdipBitmapLockBits ( GpBitmap* x, GpRect* x, UINT x, + PixelFormat x, BitmapData* x ) ; +FUNCTION: GpStatus GdipBitmapSetPixel ( GpBitmap* x, INT x, INT x, ARGB x ) ; +FUNCTION: GpStatus GdipBitmapSetResolution ( GpBitmap* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipBitmapUnlockBits ( GpBitmap* x, BitmapData* x ) ; +FUNCTION: GpStatus GdipCloneBitmapArea ( REAL x, REAL x, REAL x, REAL x, PixelFormat x, GpBitmap* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCloneBitmapAreaI ( INT x, INT x, INT x, INT x, PixelFormat x, GpBitmap* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromFile ( WCHAR* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromFileICM ( WCHAR* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromGdiDib ( BITMAPINFO* x, VOID* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromGraphics ( INT x, INT x, GpGraphics* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromHBITMAP ( HBITMAP x, HPALETTE x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromHICON ( HICON x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromResource ( HINSTANCE x, WCHAR* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromScan0 ( INT x, INT x, INT x, PixelFormat x, BYTE* x, + GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromStream ( IStream* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromStreamICM ( IStream* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateHBITMAPFromBitmap ( GpBitmap* x, HBITMAP* x, ARGB x ) ; +FUNCTION: GpStatus GdipCreateHICONFromBitmap ( GpBitmap* x, HICON* x ) ; +FUNCTION: GpStatus GdipDeleteEffect ( CGpEffect* x ) ; +FUNCTION: GpStatus GdipSetEffectParameters ( CGpEffect* x, VOID* x, UINT x ) ; + + +FUNCTION: GpStatus GdipCloneBrush ( GpBrush* x, GpBrush** x ) ; +FUNCTION: GpStatus GdipDeleteBrush ( GpBrush* x ) ; +FUNCTION: GpStatus GdipGetBrushType ( GpBrush* x, GpBrushType* x ) ; + + +FUNCTION: GpStatus GdipCreateCachedBitmap ( GpBitmap* x, GpGraphics* x, + GpCachedBitmap** x ) ; +FUNCTION: GpStatus GdipDeleteCachedBitmap ( GpCachedBitmap* x ) ; +FUNCTION: GpStatus GdipDrawCachedBitmap ( GpGraphics* x, GpCachedBitmap* x, INT x, INT x ) ; + + +FUNCTION: GpStatus GdipCloneCustomLineCap ( GpCustomLineCap* x, GpCustomLineCap** x ) ; +FUNCTION: GpStatus GdipCreateCustomLineCap ( GpPath* x, GpPath* x, GpLineCap x, REAL x, + GpCustomLineCap** x ) ; +FUNCTION: GpStatus GdipDeleteCustomLineCap ( GpCustomLineCap* x ) ; +FUNCTION: GpStatus GdipGetCustomLineCapBaseCap ( GpCustomLineCap* x, GpLineCap* x ) ; +FUNCTION: GpStatus GdipSetCustomLineCapBaseCap ( GpCustomLineCap* x, GpLineCap x ) ; +FUNCTION: GpStatus GdipGetCustomLineCapBaseInset ( GpCustomLineCap* x, REAL* x ) ; +FUNCTION: GpStatus GdipSetCustomLineCapBaseInset ( GpCustomLineCap* x, REAL x ) ; +FUNCTION: GpStatus GdipSetCustomLineCapStrokeCaps ( GpCustomLineCap* x, GpLineCap x, + GpLineCap x ) ; +FUNCTION: GpStatus GdipGetCustomLineCapStrokeJoin ( GpCustomLineCap* x, GpLineJoin* x ) ; +FUNCTION: GpStatus GdipSetCustomLineCapStrokeJoin ( GpCustomLineCap* x, GpLineJoin x ) ; +FUNCTION: GpStatus GdipGetCustomLineCapWidthScale ( GpCustomLineCap* x, REAL* x ) ; +FUNCTION: GpStatus GdipSetCustomLineCapWidthScale ( GpCustomLineCap* x, REAL x ) ; + +FUNCTION: GpStatus GdipCloneFont ( GpFont* x, GpFont** x ) ; +FUNCTION: GpStatus GdipCreateFont ( GpFontFamily* x, REAL x, INT x, GpUnit x, + GpFont** x ) ; +FUNCTION: GpStatus GdipCreateFontFromDC ( HDC x, GpFont** x ) ; +FUNCTION: GpStatus GdipCreateFontFromLogfontA ( HDC x, LOGFONTA* x, GpFont** x ) ; +FUNCTION: GpStatus GdipCreateFontFromLogfontW ( HDC x, LOGFONTW* x, GpFont** x ) ; +FUNCTION: GpStatus GdipDeleteFont ( GpFont* x ) ; +FUNCTION: GpStatus GdipGetLogFontA ( GpFont* x, GpGraphics* x, LOGFONTA* x ) ; +FUNCTION: GpStatus GdipGetLogFontW ( GpFont* x, GpGraphics* x, LOGFONTW* x ) ; +FUNCTION: GpStatus GdipGetFamily ( GpFont* x, GpFontFamily** x ) ; +FUNCTION: GpStatus GdipGetFontUnit ( GpFont* x, GpUnit* x ) ; +FUNCTION: GpStatus GdipGetFontSize ( GpFont* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetFontStyle ( GpFont* x, INT* x ) ; +FUNCTION: GpStatus GdipGetFontHeight ( GpFont* x, GpGraphics* x, + REAL* x ) ; +FUNCTION: GpStatus GdipGetFontHeightGivenDPI ( GpFont* x, REAL x, REAL* x ) ; + + +FUNCTION: GpStatus GdipNewInstalledFontCollection ( GpFontCollection** x ) ; +FUNCTION: GpStatus GdipNewPrivateFontCollection ( GpFontCollection** x ) ; +FUNCTION: GpStatus GdipDeletePrivateFontCollection ( GpFontCollection** x ) ; +FUNCTION: GpStatus GdipPrivateAddFontFile ( GpFontCollection* x, WCHAR* x ) ; +FUNCTION: GpStatus GdipPrivateAddMemoryFont ( GpFontCollection* x, + void* x, INT x ) ; +FUNCTION: GpStatus GdipGetFontCollectionFamilyCount ( GpFontCollection* x, INT* x ) ; +FUNCTION: GpStatus GdipGetFontCollectionFamilyList ( GpFontCollection* x, INT x, + GpFontFamily** x, INT* x ) ; + + +FUNCTION: GpStatus GdipCloneFontFamily ( GpFontFamily* x, GpFontFamily** x ) ; +FUNCTION: GpStatus GdipCreateFontFamilyFromName ( WCHAR* x, + GpFontCollection* x, GpFontFamily** x ) ; +FUNCTION: GpStatus GdipDeleteFontFamily ( GpFontFamily* x ) ; +FUNCTION: GpStatus GdipGetFamilyName ( GpFontFamily* x, WCHAR* x, LANGID x ) ; +FUNCTION: GpStatus GdipGetCellAscent ( GpFontFamily* x, INT x, UINT16* x ) ; +FUNCTION: GpStatus GdipGetCellDescent ( GpFontFamily* x, INT x, UINT16* x ) ; +FUNCTION: GpStatus GdipGetEmHeight ( GpFontFamily* x, INT x, UINT16* x ) ; +FUNCTION: GpStatus GdipGetGenericFontFamilySansSerif ( GpFontFamily** x ) ; +FUNCTION: GpStatus GdipGetGenericFontFamilySerif ( GpFontFamily** x ) ; +FUNCTION: GpStatus GdipGetGenericFontFamilyMonospace ( GpFontFamily** x ) ; +FUNCTION: GpStatus GdipGetLineSpacing ( GpFontFamily* x, INT x, UINT16* x ) ; +FUNCTION: GpStatus GdipIsStyleAvailable ( GpFontFamily* x, INT x, BOOL* x ) ; + + +FUNCTION: GpStatus GdipFlush ( GpGraphics* x, GpFlushIntention x ) ; +FUNCTION: GpStatus GdipBeginContainer ( GpGraphics* x, GpRectF* x, GpRectF* x, GpUnit x, GraphicsContainer* x ) ; +FUNCTION: GpStatus GdipBeginContainer2 ( GpGraphics* x, GraphicsContainer* x ) ; +FUNCTION: GpStatus GdipBeginContainerI ( GpGraphics* x, GpRect* x, GpRect* x, GpUnit x, GraphicsContainer* x ) ; +FUNCTION: GpStatus GdipEndContainer ( GpGraphics* x, GraphicsContainer x ) ; +FUNCTION: GpStatus GdipComment ( GpGraphics* x, UINT x, BYTE* x ) ; +FUNCTION: GpStatus GdipCreateFromHDC ( HDC x, GpGraphics** x ) ; +FUNCTION: GpStatus GdipCreateFromHDC2 ( HDC x, HANDLE x, GpGraphics** x ) ; +FUNCTION: GpStatus GdipCreateFromHWND ( HWND x, GpGraphics** x ) ; +FUNCTION: GpStatus GdipCreateFromHWNDICM ( HWND x, GpGraphics** x ) ; +FUNCTION: HPALETTE GdipCreateHalftonePalette ( ) ; +FUNCTION: GpStatus GdipDeleteGraphics ( GpGraphics* x ) ; +FUNCTION: GpStatus GdipDrawArc ( GpGraphics* x, GpPen* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawArcI ( GpGraphics* x, GpPen* x, INT x, INT x, INT x, INT x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawBezier ( GpGraphics* x, GpPen* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawBezierI ( GpGraphics* x, GpPen* x, INT x, INT x, INT x, INT x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipDrawBeziers ( GpGraphics* x, GpPen* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawBeziersI ( GpGraphics* x, GpPen* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipDrawClosedCurve ( GpGraphics* x, GpPen* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawClosedCurveI ( GpGraphics* x, GpPen* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipDrawClosedCurve2 ( GpGraphics* x, GpPen* x, GpPointF* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipDrawClosedCurve2I ( GpGraphics* x, GpPen* x, GpPoint* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipDrawCurve ( GpGraphics* x, GpPen* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawCurveI ( GpGraphics* x, GpPen* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipDrawCurve2 ( GpGraphics* x, GpPen* x, GpPointF* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipDrawCurve2I ( GpGraphics* x, GpPen* x, GpPoint* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipDrawCurve3 ( GpGraphics* x, GpPen* x, GpPointF* x, INT x, INT x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipDrawCurve3I ( GpGraphics* x, GpPen* x, GpPoint* x, INT x, INT x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipDrawDriverString ( GpGraphics* x, UINT16* x, INT x, + GpFont* x, GpBrush* x, GpPointF* x, INT x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipDrawEllipse ( GpGraphics* x, GpPen* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawEllipseI ( GpGraphics* x, GpPen* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipDrawImage ( GpGraphics* x, GpImage* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawImageI ( GpGraphics* x, GpImage* x, INT x, INT x ) ; +FUNCTION: GpStatus GdipDrawImagePointRect ( GpGraphics* x, GpImage* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x, GpUnit x ) ; +FUNCTION: GpStatus GdipDrawImagePointRectI ( GpGraphics* x, GpImage* x, INT x, INT x, INT x, INT x, INT x, INT x, GpUnit x ) ; +FUNCTION: GpStatus GdipDrawImagePoints ( GpGraphics* x, GpImage* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawImagePointsI ( GpGraphics* x, GpImage* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipDrawImagePointsRect ( GpGraphics* x, GpImage* x, + GpPointF* x, INT x, REAL x, REAL x, REAL x, REAL x, GpUnit x, + GpImageAttributes* x, DrawImageAbort x, VOID* x ) ; +FUNCTION: GpStatus GdipDrawImagePointsRectI ( GpGraphics* x, GpImage* x, + GpPoint* x, INT x, INT x, INT x, INT x, INT x, GpUnit x, + GpImageAttributes* x, DrawImageAbort x, VOID* x ) ; +FUNCTION: GpStatus GdipDrawImageRect ( GpGraphics* x, GpImage* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawImageRectI ( GpGraphics* x, GpImage* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipDrawImageRectRect ( GpGraphics* x, GpImage* x, REAL x, REAL x, REAL x, + REAL x, REAL x, REAL x, REAL x, REAL x, GpUnit x, GpImageAttributes* x, DrawImageAbort x, + VOID* x ) ; +FUNCTION: GpStatus GdipDrawImageRectRectI ( GpGraphics* x, GpImage* x, INT x, INT x, INT x, + INT x, INT x, INT x, INT x, INT x, GpUnit x, GpImageAttributes* x, DrawImageAbort x, + VOID* x ) ; +FUNCTION: GpStatus GdipDrawLine ( GpGraphics* x, GpPen* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawLineI ( GpGraphics* x, GpPen* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipDrawLines ( GpGraphics* x, GpPen* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawLinesI ( GpGraphics* x, GpPen* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipDrawPath ( GpGraphics* x, GpPen* x, GpPath* x ) ; +FUNCTION: GpStatus GdipDrawPie ( GpGraphics* x, GpPen* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawPieI ( GpGraphics* x, GpPen* x, INT x, INT x, INT x, INT x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawPolygon ( GpGraphics* x, GpPen* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawPolygonI ( GpGraphics* x, GpPen* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipDrawRectangle ( GpGraphics* x, GpPen* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawRectangleI ( GpGraphics* x, GpPen* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipDrawRectangles ( GpGraphics* x, GpPen* x, GpRectF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawRectanglesI ( GpGraphics* x, GpPen* x, GpRect* x, INT x ) ; +FUNCTION: GpStatus GdipDrawString ( GpGraphics* x, WCHAR* x, INT x, + GpFont* x, GpRectF* x, GpStringFormat* x, + GpBrush* x ) ; +FUNCTION: GpStatus GdipFillClosedCurve2 ( GpGraphics* x, GpBrush* x, GpPointF* x, INT x, + REAL x, GpFillMode x ) ; +FUNCTION: GpStatus GdipFillClosedCurve2I ( GpGraphics* x, GpBrush* x, GpPoint* x, INT x, + REAL x, GpFillMode x ) ; +FUNCTION: GpStatus GdipFillEllipse ( GpGraphics* x, GpBrush* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipFillEllipseI ( GpGraphics* x, GpBrush* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipFillPath ( GpGraphics* x, GpBrush* x, GpPath* x ) ; +FUNCTION: GpStatus GdipFillPie ( GpGraphics* x, GpBrush* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipFillPieI ( GpGraphics* x, GpBrush* x, INT x, INT x, INT x, INT x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipFillPolygon ( GpGraphics* x, GpBrush* x, GpPointF* x, + INT x, GpFillMode x ) ; +FUNCTION: GpStatus GdipFillPolygonI ( GpGraphics* x, GpBrush* x, GpPoint* x, + INT x, GpFillMode x ) ; +FUNCTION: GpStatus GdipFillPolygon2 ( GpGraphics* x, GpBrush* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipFillPolygon2I ( GpGraphics* x, GpBrush* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipFillRectangle ( GpGraphics* x, GpBrush* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipFillRectangleI ( GpGraphics* x, GpBrush* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipFillRectangles ( GpGraphics* x, GpBrush* x, GpRectF* x, INT x ) ; +FUNCTION: GpStatus GdipFillRectanglesI ( GpGraphics* x, GpBrush* x, GpRect* x, INT x ) ; +FUNCTION: GpStatus GdipFillRegion ( GpGraphics* x, GpBrush* x, GpRegion* x ) ; +FUNCTION: GpStatus GdipGetClip ( GpGraphics* x, GpRegion* x ) ; +FUNCTION: GpStatus GdipGetClipBounds ( GpGraphics* x, GpRectF* x ) ; +FUNCTION: GpStatus GdipGetClipBoundsI ( GpGraphics* x, GpRect* x ) ; +FUNCTION: GpStatus GdipGetCompositingMode ( GpGraphics* x, CompositingMode* x ) ; +FUNCTION: GpStatus GdipGetCompositingQuality ( GpGraphics* x, CompositingQuality* x ) ; +FUNCTION: GpStatus GdipGetDC ( GpGraphics* x, HDC* x ) ; +FUNCTION: GpStatus GdipGetDpiX ( GpGraphics* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetDpiY ( GpGraphics* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetImageDecoders ( UINT x, UINT x, ImageCodecInfo* x ) ; +FUNCTION: GpStatus GdipGetImageDecodersSize ( UINT* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetImageGraphicsContext ( GpImage* x, GpGraphics** x ) ; +FUNCTION: GpStatus GdipGetInterpolationMode ( GpGraphics* x, InterpolationMode* x ) ; +FUNCTION: GpStatus GdipGetNearestColor ( GpGraphics* x, ARGB* x ) ; +FUNCTION: GpStatus GdipGetPageScale ( GpGraphics* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetPageUnit ( GpGraphics* x, GpUnit* x ) ; +FUNCTION: GpStatus GdipGetPixelOffsetMode ( GpGraphics* x, PixelOffsetMode* x ) ; +FUNCTION: GpStatus GdipGetSmoothingMode ( GpGraphics* x, SmoothingMode* x ) ; +FUNCTION: GpStatus GdipGetTextContrast ( GpGraphics* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetTextRenderingHint ( GpGraphics* x, TextRenderingHint* x ) ; +FUNCTION: GpStatus GdipGetWorldTransform ( GpGraphics* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipGraphicsClear ( GpGraphics* x, ARGB x ) ; +FUNCTION: GpStatus GdipGetVisibleClipBounds ( GpGraphics* x, GpRectF* x ) ; +FUNCTION: GpStatus GdipGetVisibleClipBoundsI ( GpGraphics* x, GpRect* x ) ; +FUNCTION: GpStatus GdipIsClipEmpty ( GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisiblePoint ( GpGraphics* x, REAL x, REAL x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisiblePointI ( GpGraphics* x, INT x, INT x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisibleRect ( GpGraphics* x, REAL x, REAL x, REAL x, REAL x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisibleRectI ( GpGraphics* x, INT x, INT x, INT x, INT x, BOOL* x ) ; +FUNCTION: GpStatus GdipMeasureCharacterRanges ( GpGraphics* x, WCHAR* x, + INT x, GpFont* x, GpRectF* x, GpStringFormat* x, INT x, + GpRegion** x ) ; +FUNCTION: GpStatus GdipMeasureDriverString ( GpGraphics* x, UINT16* x, INT x, + GpFont* x, GpPointF* x, INT x, GpMatrix* x, GpRectF* x ) ; +FUNCTION: GpStatus GdipMeasureString ( GpGraphics* x, WCHAR* x, INT x, + GpFont* x, GpRectF* x, GpStringFormat* x, GpRectF* x, INT* x, INT* x ) ; +FUNCTION: GpStatus GdipMultiplyWorldTransform ( GpGraphics* x, GpMatrix* x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipRecordMetafileFileName ( WCHAR* x, HDC x, EmfType x, + GpRectF* x, MetafileFrameUnit x, WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipRecordMetafileFileNameI ( WCHAR* x, HDC x, EmfType x, + GpRect* x, MetafileFrameUnit x, WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipRecordMetafileI ( HDC x, EmfType x, GpRect* x, + MetafileFrameUnit x, WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipReleaseDC ( GpGraphics* x, HDC x ) ; +FUNCTION: GpStatus GdipResetClip ( GpGraphics* x ) ; +FUNCTION: GpStatus GdipResetWorldTransform ( GpGraphics* x ) ; +FUNCTION: GpStatus GdipRestoreGraphics ( GpGraphics* x, GraphicsState x ) ; +FUNCTION: GpStatus GdipRotateWorldTransform ( GpGraphics* x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipSaveGraphics ( GpGraphics* x, GraphicsState* x ) ; +FUNCTION: GpStatus GdipScaleWorldTransform ( GpGraphics* x, REAL x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipSetClipHrgn ( GpGraphics* x, HRGN x, CombineMode x ) ; +FUNCTION: GpStatus GdipSetClipGraphics ( GpGraphics* x, GpGraphics* x, CombineMode x ) ; +FUNCTION: GpStatus GdipSetClipPath ( GpGraphics* x, GpPath* x, CombineMode x ) ; +FUNCTION: GpStatus GdipSetClipRect ( GpGraphics* x, REAL x, REAL x, REAL x, REAL x, CombineMode x ) ; +FUNCTION: GpStatus GdipSetClipRectI ( GpGraphics* x, INT x, INT x, INT x, INT x, CombineMode x ) ; +FUNCTION: GpStatus GdipSetClipRegion ( GpGraphics* x, GpRegion* x, CombineMode x ) ; +FUNCTION: GpStatus GdipSetCompositingMode ( GpGraphics* x, CompositingMode x ) ; +FUNCTION: GpStatus GdipSetCompositingQuality ( GpGraphics* x, CompositingQuality x ) ; +FUNCTION: GpStatus GdipSetInterpolationMode ( GpGraphics* x, InterpolationMode x ) ; +FUNCTION: GpStatus GdipSetPageScale ( GpGraphics* x, REAL x ) ; +FUNCTION: GpStatus GdipSetPageUnit ( GpGraphics* x, GpUnit x ) ; +FUNCTION: GpStatus GdipSetPixelOffsetMode ( GpGraphics* x, PixelOffsetMode x ) ; +FUNCTION: GpStatus GdipSetRenderingOrigin ( GpGraphics* x, INT x, INT x ) ; +FUNCTION: GpStatus GdipSetSmoothingMode ( GpGraphics* x, SmoothingMode x ) ; +FUNCTION: GpStatus GdipSetTextContrast ( GpGraphics* x, UINT x ) ; +FUNCTION: GpStatus GdipSetTextRenderingHint ( GpGraphics* x, TextRenderingHint x ) ; +FUNCTION: GpStatus GdipSetWorldTransform ( GpGraphics* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipTransformPoints ( GpGraphics* x, GpCoordinateSpace x, GpCoordinateSpace x, + GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipTransformPointsI ( GpGraphics* x, GpCoordinateSpace x, GpCoordinateSpace x, + GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipTranslateClip ( GpGraphics* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipTranslateClipI ( GpGraphics* x, INT x, INT x ) ; +FUNCTION: GpStatus GdipTranslateWorldTransform ( GpGraphics* x, REAL x, REAL x, GpMatrixOrder x ) ; + + +FUNCTION: GpStatus GdipAddPathArc ( GpPath* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathArcI ( GpPath* x, INT x, INT x, INT x, INT x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathBezier ( GpPath* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathBezierI ( GpPath* x, INT x, INT x, INT x, INT x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipAddPathBeziers ( GpPath* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathBeziersI ( GpPath* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathClosedCurve ( GpPath* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathClosedCurveI ( GpPath* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathClosedCurve2 ( GpPath* x, GpPointF* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathClosedCurve2I ( GpPath* x, GpPoint* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathCurve ( GpPath* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathCurveI ( GpPath* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathCurve2 ( GpPath* x, GpPointF* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathCurve2I ( GpPath* x, GpPoint* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathCurve3 ( GpPath* x, GpPointF* x, INT x, INT x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathCurve3I ( GpPath* x, GpPoint* x, INT x, INT x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathEllipse ( GpPath* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathEllipseI ( GpPath* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipAddPathLine ( GpPath* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathLineI ( GpPath* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipAddPathLine2 ( GpPath* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathLine2I ( GpPath* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathPath ( GpPath* x, GpPath* x, BOOL x ) ; +FUNCTION: GpStatus GdipAddPathPie ( GpPath* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathPieI ( GpPath* x, INT x, INT x, INT x, INT x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathPolygon ( GpPath* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathPolygonI ( GpPath* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathRectangle ( GpPath* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathRectangleI ( GpPath* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipAddPathRectangles ( GpPath* x, GpRectF* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathRectanglesI ( GpPath* x, GpRect* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathString ( GpPath* x, WCHAR* x, INT x, GpFontFamily* x, INT x, REAL x, GpRectF* x, GpStringFormat* x ) ; +FUNCTION: GpStatus GdipAddPathStringI ( GpPath* x, WCHAR* x, INT x, GpFontFamily* x, INT x, REAL x, GpRect* x, GpStringFormat* x ) ; +FUNCTION: GpStatus GdipClearPathMarkers ( GpPath* x ) ; +FUNCTION: GpStatus GdipClonePath ( GpPath* x, GpPath** x ) ; +FUNCTION: GpStatus GdipClosePathFigure ( GpPath* x ) ; +FUNCTION: GpStatus GdipClosePathFigures ( GpPath* x ) ; +FUNCTION: GpStatus GdipCreatePath ( GpFillMode x, GpPath** x ) ; +FUNCTION: GpStatus GdipCreatePath2 ( GpPointF* x, BYTE* x, INT x, + GpFillMode x, GpPath** x ) ; +FUNCTION: GpStatus GdipCreatePath2I ( GpPoint* x, BYTE* x, INT x, GpFillMode x, GpPath** x ) ; +FUNCTION: GpStatus GdipDeletePath ( GpPath* x ) ; +FUNCTION: GpStatus GdipFlattenPath ( GpPath* x, GpMatrix* x, REAL x ) ; +FUNCTION: GpStatus GdipIsOutlineVisiblePathPoint ( GpPath* x, REAL x, REAL x, GpPen* x, + GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsOutlineVisiblePathPointI ( GpPath* x, INT x, INT x, GpPen* x, + GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisiblePathPoint ( GpPath* x, REAL x, REAL x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisiblePathPointI ( GpPath* x, INT x, INT x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipGetPathData ( GpPath* x, GpPathData* x ) ; +FUNCTION: GpStatus GdipGetPathFillMode ( GpPath* x, GpFillMode* x ) ; +FUNCTION: GpStatus GdipGetPathLastPoint ( GpPath* x, GpPointF* x ) ; +FUNCTION: GpStatus GdipGetPathPoints ( GpPath* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipGetPathPointsI ( GpPath* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipGetPathTypes ( GpPath* x, BYTE* x, INT x ) ; +FUNCTION: GpStatus GdipGetPathWorldBounds ( GpPath* x, GpRectF* x, GpMatrix* x, GpPen* x ) ; +FUNCTION: GpStatus GdipGetPathWorldBoundsI ( GpPath* x, GpRect* x, GpMatrix* x, GpPen* x ) ; +FUNCTION: GpStatus GdipGetPointCount ( GpPath* x, INT* x ) ; +FUNCTION: GpStatus GdipResetPath ( GpPath* x ) ; +FUNCTION: GpStatus GdipReversePath ( GpPath* x ) ; +FUNCTION: GpStatus GdipSetPathFillMode ( GpPath* x, GpFillMode x ) ; +FUNCTION: GpStatus GdipSetPathMarker ( GpPath* x ) ; +FUNCTION: GpStatus GdipStartPathFigure ( GpPath* x ) ; +FUNCTION: GpStatus GdipTransformPath ( GpPath* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipWarpPath ( GpPath* x, GpMatrix* x, GpPointF* x, INT x, REAL x, + REAL x, REAL x, REAL x, WarpMode x, REAL x ) ; +FUNCTION: GpStatus GdipWidenPath ( GpPath* x, GpPen* x, GpMatrix* x, REAL x ) ; + + +FUNCTION: GpStatus GdipCreateHatchBrush ( HatchStyle x, ARGB x, ARGB x, GpHatch** x ) ; +FUNCTION: GpStatus GdipGetHatchBackgroundColor ( GpHatch* x, ARGB* x ) ; +FUNCTION: GpStatus GdipGetHatchForegroundColor ( GpHatch* x, ARGB* x ) ; +FUNCTION: GpStatus GdipGetHatchStyle ( GpHatch* x, HatchStyle* x ) ; + + +FUNCTION: GpStatus GdipCloneImage ( GpImage* x, GpImage** x ) ; +FUNCTION: GpStatus GdipCloneImageAttributes ( GpImageAttributes* x, GpImageAttributes** x ) ; +FUNCTION: GpStatus GdipDisposeImage ( GpImage* x ) ; +FUNCTION: GpStatus GdipEmfToWmfBits ( HENHMETAFILE x, UINT x, LPBYTE x, INT x, INT x ) ; +FUNCTION: GpStatus GdipFindFirstImageItem ( GpImage* x, ImageItemData* x ) ; +FUNCTION: GpStatus GdipFindNextImageItem ( GpImage* x, ImageItemData* x ) ; +FUNCTION: GpStatus GdipGetAllPropertyItems ( GpImage* x, UINT x, UINT x, PropertyItem* x ) ; +FUNCTION: GpStatus GdipGetImageBounds ( GpImage* x, GpRectF* x, GpUnit* x ) ; +FUNCTION: GpStatus GdipGetImageDimension ( GpImage* x, REAL* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetImageFlags ( GpImage* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetImageHeight ( GpImage* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetImageHorizontalResolution ( GpImage* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetImageItemData ( GpImage* x, ImageItemData* x ) ; +FUNCTION: GpStatus GdipGetImagePalette ( GpImage* x, ColorPalette* x, INT x ) ; +FUNCTION: GpStatus GdipGetImagePaletteSize ( GpImage* x, INT* x ) ; +FUNCTION: GpStatus GdipGetImagePixelFormat ( GpImage* x, PixelFormat* x ) ; +FUNCTION: GpStatus GdipGetImageRawFormat ( GpImage* x, GUID* x ) ; +FUNCTION: GpStatus GdipGetImageThumbnail ( GpImage* x, UINT x, UINT x, GpImage** x, GetThumbnailImageAbort x, VOID* x ) ; +FUNCTION: GpStatus GdipGetImageType ( GpImage* x, ImageType* x ) ; +FUNCTION: GpStatus GdipGetImageVerticalResolution ( GpImage* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetImageWidth ( GpImage* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetPropertyCount ( GpImage* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetPropertyIdList ( GpImage* x, UINT x, PROPID* x ) ; +FUNCTION: GpStatus GdipGetPropertyItem ( GpImage* x, PROPID x, UINT x, PropertyItem* x ) ; +FUNCTION: GpStatus GdipGetPropertyItemSize ( GpImage* x, PROPID x, UINT* x ) ; +FUNCTION: GpStatus GdipGetPropertySize ( GpImage* x, UINT* x, UINT* x ) ; +FUNCTION: GpStatus GdipImageForceValidation ( GpImage* x ) ; +FUNCTION: GpStatus GdipImageGetFrameCount ( GpImage* x, GUID* x, UINT* x ) ; +FUNCTION: GpStatus GdipImageGetFrameDimensionsCount ( GpImage* x, UINT* x ) ; +FUNCTION: GpStatus GdipImageGetFrameDimensionsList ( GpImage* x, GUID* x, UINT x ) ; +FUNCTION: GpStatus GdipImageRotateFlip ( GpImage* x, RotateFlipType x ) ; +FUNCTION: GpStatus GdipImageSelectActiveFrame ( GpImage* x, GUID* x, UINT x ) ; +FUNCTION: GpStatus GdipLoadImageFromFile ( WCHAR* x, GpImage** x ) ; +FUNCTION: GpStatus GdipLoadImageFromFileICM ( WCHAR* x, GpImage** x ) ; +FUNCTION: GpStatus GdipLoadImageFromStream ( IStream* x, GpImage** x ) ; +FUNCTION: GpStatus GdipLoadImageFromStreamICM ( IStream* x, GpImage** x ) ; +FUNCTION: GpStatus GdipRemovePropertyItem ( GpImage* x, PROPID x ) ; +FUNCTION: GpStatus GdipSaveImageToFile ( GpImage* x, WCHAR* x, CLSID* x, EncoderParameters* x ) ; +FUNCTION: GpStatus GdipSaveImageToStream ( GpImage* x, IStream* x, + CLSID* x, EncoderParameters* x ) ; +FUNCTION: GpStatus GdipSetImagePalette ( GpImage* x, ColorPalette* x ) ; +FUNCTION: GpStatus GdipSetPropertyItem ( GpImage* x, PropertyItem* x ) ; + + +FUNCTION: GpStatus GdipCreateImageAttributes ( GpImageAttributes** x ) ; +FUNCTION: GpStatus GdipDisposeImageAttributes ( GpImageAttributes* x ) ; +FUNCTION: GpStatus GdipSetImageAttributesCachedBackground ( GpImageAttributes* x, + BOOL x ) ; +FUNCTION: GpStatus GdipSetImageAttributesColorKeys ( GpImageAttributes* x, + ColorAdjustType x, BOOL x, ARGB x, ARGB x ) ; +FUNCTION: GpStatus GdipSetImageAttributesColorMatrix ( GpImageAttributes* x, + ColorAdjustType x, BOOL x, ColorMatrix* x, ColorMatrix* x, + ColorMatrixFlags x ) ; +FUNCTION: GpStatus GdipSetImageAttributesGamma ( GpImageAttributes* x, + ColorAdjustType x, BOOL x, REAL x ) ; +FUNCTION: GpStatus GdipSetImageAttributesNoOp ( GpImageAttributes* x, + ColorAdjustType x, BOOL x ) ; +FUNCTION: GpStatus GdipSetImageAttributesOutputChannel ( GpImageAttributes* x, + ColorAdjustType x, BOOL x, ColorChannelFlags x ) ; +FUNCTION: GpStatus GdipSetImageAttributesOutputChannelColorProfile ( + GpImageAttributes* x, ColorAdjustType x, BOOL x, WCHAR* x ) ; +FUNCTION: GpStatus GdipSetImageAttributesRemapTable ( GpImageAttributes* x, + ColorAdjustType x, BOOL x, UINT x, ColorMap* x ) ; +FUNCTION: GpStatus GdipSetImageAttributesThreshold ( GpImageAttributes* x, + ColorAdjustType x, BOOL x, REAL x ) ; +FUNCTION: GpStatus GdipSetImageAttributesToIdentity ( GpImageAttributes* x, + ColorAdjustType x ) ; +FUNCTION: GpStatus GdipSetImageAttributesWrapMode ( GpImageAttributes* x, GpWrapMode x, + ARGB x, BOOL x ) ; + + +FUNCTION: GpStatus GdipCreateLineBrush ( GpPointF* x, GpPointF* x, + ARGB x, ARGB x, GpWrapMode x, GpLineGradient** x ) ; +FUNCTION: GpStatus GdipCreateLineBrushI ( GpPoint* x, GpPoint* x, + ARGB x, ARGB x, GpWrapMode x, GpLineGradient** x ) ; +FUNCTION: GpStatus GdipCreateLineBrushFromRect ( GpRectF* x, ARGB x, ARGB x, + LinearGradientMode x, GpWrapMode x, GpLineGradient** x ) ; +FUNCTION: GpStatus GdipCreateLineBrushFromRectI ( GpRect* x, ARGB x, ARGB x, + LinearGradientMode x, GpWrapMode x, GpLineGradient** x ) ; +FUNCTION: GpStatus GdipCreateLineBrushFromRectWithAngle ( GpRectF* x, + ARGB x, ARGB x, REAL x, BOOL x, GpWrapMode x, GpLineGradient** x ) ; +FUNCTION: GpStatus GdipCreateLineBrushFromRectWithAngleI ( GpRect* x, + ARGB x, ARGB x, REAL x, BOOL x, GpWrapMode x, GpLineGradient** x ) ; +FUNCTION: GpStatus GdipGetLineColors ( GpLineGradient* x, ARGB* x ) ; +FUNCTION: GpStatus GdipGetLineGammaCorrection ( GpLineGradient* x, BOOL* x ) ; +FUNCTION: GpStatus GdipGetLineRect ( GpLineGradient* x, GpRectF* x ) ; +FUNCTION: GpStatus GdipGetLineRectI ( GpLineGradient* x, GpRect* x ) ; +FUNCTION: GpStatus GdipGetLineWrapMode ( GpLineGradient* x, GpWrapMode* x ) ; +FUNCTION: GpStatus GdipSetLineBlend ( GpLineGradient* x, REAL* x, + REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetLineBlend ( GpLineGradient* x, REAL* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetLineBlendCount ( GpLineGradient* x, INT* x ) ; +FUNCTION: GpStatus GdipSetLinePresetBlend ( GpLineGradient* x, ARGB* x, + REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetLinePresetBlend ( GpLineGradient* x, ARGB* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetLinePresetBlendCount ( GpLineGradient* x, INT* x ) ; +FUNCTION: GpStatus GdipResetLineTransform ( GpLineGradient* x ) ; +FUNCTION: GpStatus GdipRotateLineTransform ( GpLineGradient* x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipScaleLineTransform ( GpLineGradient* x, REAL x, REAL x, + GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipSetLineColors ( GpLineGradient* x, ARGB x, ARGB x ) ; +FUNCTION: GpStatus GdipSetLineGammaCorrection ( GpLineGradient* x, BOOL x ) ; +FUNCTION: GpStatus GdipSetLineSigmaBlend ( GpLineGradient* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipSetLineTransform ( GpLineGradient* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipSetLineLinearBlend ( GpLineGradient* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipSetLineWrapMode ( GpLineGradient* x, GpWrapMode x ) ; +FUNCTION: GpStatus GdipTranslateLineTransform ( GpLineGradient* x, REAL x, REAL x, + GpMatrixOrder x ) ; + + +FUNCTION: GpStatus GdipCloneMatrix ( GpMatrix* x, GpMatrix** x ) ; +FUNCTION: GpStatus GdipCreateMatrix ( GpMatrix** x ) ; +FUNCTION: GpStatus GdipCreateMatrix2 ( REAL x, REAL x, REAL x, REAL x, REAL x, REAL x, GpMatrix** x ) ; +FUNCTION: GpStatus GdipCreateMatrix3 ( GpRectF* x, GpPointF* x, GpMatrix** x ) ; +FUNCTION: GpStatus GdipCreateMatrix3I ( GpRect* x, GpPoint* x, GpMatrix** x ) ; +FUNCTION: GpStatus GdipDeleteMatrix ( GpMatrix* x ) ; +FUNCTION: GpStatus GdipGetMatrixElements ( GpMatrix* x, REAL* x ) ; +FUNCTION: GpStatus GdipInvertMatrix ( GpMatrix* x ) ; +FUNCTION: GpStatus GdipIsMatrixEqual ( GpMatrix* x, GpMatrix* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsMatrixIdentity ( GpMatrix* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsMatrixInvertible ( GpMatrix* x, BOOL* x ) ; +FUNCTION: GpStatus GdipMultiplyMatrix ( GpMatrix* x, GpMatrix* x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipRotateMatrix ( GpMatrix* x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipShearMatrix ( GpMatrix* x, REAL x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipScaleMatrix ( GpMatrix* x, REAL x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipSetMatrixElements ( GpMatrix* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipTransformMatrixPoints ( GpMatrix* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipTransformMatrixPointsI ( GpMatrix* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipTranslateMatrix ( GpMatrix* x, REAL x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipVectorTransformMatrixPoints ( GpMatrix* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipVectorTransformMatrixPointsI ( GpMatrix* x, GpPoint* x, INT x ) ; + + +FUNCTION: GpStatus GdipConvertToEmfPlus ( GpGraphics* x, GpMetafile* x, INT* x, + EmfType x, WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipConvertToEmfPlusToFile ( GpGraphics* x, GpMetafile* x, INT* x, WCHAR* x, EmfType x, WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipConvertToEmfPlusToStream ( GpGraphics* x, GpMetafile* x, INT* x, IStream* x, EmfType x, WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipCreateMetafileFromEmf ( HENHMETAFILE x, BOOL x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipCreateMetafileFromWmf ( HMETAFILE x, BOOL x, + WmfPlaceableFileHeader* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipCreateMetafileFromWmfFile ( WCHAR* x, WmfPlaceableFileHeader* x, + GpMetafile** x ) ; +FUNCTION: GpStatus GdipCreateMetafileFromFile ( WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipCreateMetafileFromStream ( IStream* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipSetMetafileDownLevelRasterizationLimit ( GpMetafile* x, UINT x ) ; + + +FUNCTION: GpStatus GdipGetMetafileHeaderFromEmf ( HENHMETAFILE x, MetafileHeader* x ) ; +FUNCTION: GpStatus GdipGetMetafileHeaderFromFile ( WCHAR* x, MetafileHeader* x ) ; +FUNCTION: GpStatus GdipGetMetafileHeaderFromMetafile ( GpMetafile* x, MetafileHeader* x ) ; +FUNCTION: GpStatus GdipGetMetafileHeaderFromStream ( IStream* x, MetafileHeader* x ) ; +FUNCTION: GpStatus GdipGetMetafileHeaderFromWmf ( HMETAFILE x, WmfPlaceableFileHeader* x, MetafileHeader* x ) ; + + +FUNCTION: GpStatus GdiplusNotificationHook ( ULONG_PTR* x ) ; +FUNCTION: void GdiplusNotificationUnhook ( ULONG_PTR x ) ; + + +FUNCTION: GpStatus GdipCreatePathGradient ( GpPointF* x, INT x, GpWrapMode x, GpPathGradient** x ) ; +FUNCTION: GpStatus GdipCreatePathGradientI ( GpPoint* x, INT x, GpWrapMode x, GpPathGradient** x ) ; +FUNCTION: GpStatus GdipCreatePathGradientFromPath ( GpPath* x, + GpPathGradient** x ) ; +FUNCTION: GpStatus GdipGetPathGradientBlend ( GpPathGradient* x, REAL* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetPathGradientBlendCount ( GpPathGradient* x, INT* x ) ; +FUNCTION: GpStatus GdipGetPathGradientCenterColor ( GpPathGradient* x, ARGB* x ) ; +FUNCTION: GpStatus GdipGetPathGradientCenterPoint ( GpPathGradient* x, GpPointF* x ) ; +FUNCTION: GpStatus GdipGetPathGradientCenterPointI ( GpPathGradient* x, GpPoint* x ) ; +FUNCTION: GpStatus GdipGetPathGradientFocusScales ( GpPathGradient* x, REAL* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetPathGradientGammaCorrection ( GpPathGradient* x, BOOL* x ) ; +FUNCTION: GpStatus GdipGetPathGradientPointCount ( GpPathGradient* x, INT* x ) ; +FUNCTION: GpStatus GdipSetPathGradientPresetBlend ( GpPathGradient* x, + ARGB* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetPathGradientRect ( GpPathGradient* x, GpRectF* x ) ; +FUNCTION: GpStatus GdipGetPathGradientRectI ( GpPathGradient* x, GpRect* x ) ; +FUNCTION: GpStatus GdipGetPathGradientSurroundColorsWithCount ( GpPathGradient* x, + ARGB* x, INT* x ) ; +FUNCTION: GpStatus GdipGetPathGradientWrapMode ( GpPathGradient* x, GpWrapMode* x ) ; +FUNCTION: GpStatus GdipSetPathGradientBlend ( GpPathGradient* x, REAL* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipSetPathGradientCenterColor ( GpPathGradient* x, ARGB x ) ; +FUNCTION: GpStatus GdipSetPathGradientCenterPoint ( GpPathGradient* x, GpPointF* x ) ; +FUNCTION: GpStatus GdipSetPathGradientCenterPointI ( GpPathGradient* x, GpPoint* x ) ; +FUNCTION: GpStatus GdipSetPathGradientFocusScales ( GpPathGradient* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipSetPathGradientGammaCorrection ( GpPathGradient* x, BOOL x ) ; +FUNCTION: GpStatus GdipSetPathGradientSigmaBlend ( GpPathGradient* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipSetPathGradientSurroundColorsWithCount ( GpPathGradient* x, + ARGB* x, INT* x ) ; +FUNCTION: GpStatus GdipSetPathGradientWrapMode ( GpPathGradient* x, GpWrapMode x ) ; +FUNCTION: GpStatus GdipGetPathGradientSurroundColorCount ( GpPathGradient* x, INT* x ) ; + + +FUNCTION: GpStatus GdipCreatePathIter ( GpPathIterator** x, GpPath* x ) ; +FUNCTION: GpStatus GdipDeletePathIter ( GpPathIterator* x ) ; +FUNCTION: GpStatus GdipPathIterCopyData ( GpPathIterator* x, INT* x, GpPointF* x, BYTE* x, + INT x, INT x ) ; +FUNCTION: GpStatus GdipPathIterGetCount ( GpPathIterator* x, INT* x ) ; +FUNCTION: GpStatus GdipPathIterGetSubpathCount ( GpPathIterator* x, INT* x ) ; +FUNCTION: GpStatus GdipPathIterEnumerate ( GpPathIterator* x, INT* x, GpPointF* x, BYTE* x, INT x ) ; +FUNCTION: GpStatus GdipPathIterHasCurve ( GpPathIterator* x, BOOL* x ) ; +FUNCTION: GpStatus GdipPathIterIsValid ( GpPathIterator* x, BOOL* x ) ; +FUNCTION: GpStatus GdipPathIterNextMarker ( GpPathIterator* x, INT* x, INT* x, INT* x ) ; +FUNCTION: GpStatus GdipPathIterNextMarkerPath ( GpPathIterator* x, INT* x, GpPath* x ) ; +FUNCTION: GpStatus GdipPathIterNextPathType ( GpPathIterator* x, INT* x, BYTE* x, INT* x, INT* x ) ; +FUNCTION: GpStatus GdipPathIterNextSubpath ( GpPathIterator* x, INT* x, INT* x, INT* x, BOOL* x ) ; +FUNCTION: GpStatus GdipPathIterNextSubpathPath ( GpPathIterator* x, INT* x, GpPath* x, BOOL* x ) ; +FUNCTION: GpStatus GdipPathIterRewind ( GpPathIterator* x ) ; + + +FUNCTION: GpStatus GdipClonePen ( GpPen* x, GpPen** x ) ; +FUNCTION: GpStatus GdipCreatePen1 ( ARGB x, REAL x, GpUnit x, GpPen** x ) ; +FUNCTION: GpStatus GdipCreatePen2 ( GpBrush* x, REAL x, GpUnit x, GpPen** x ) ; +FUNCTION: GpStatus GdipDeletePen ( GpPen* x ) ; +FUNCTION: GpStatus GdipGetPenBrushFill ( GpPen* x, GpBrush** x ) ; +FUNCTION: GpStatus GdipGetPenColor ( GpPen* x, ARGB* x ) ; +FUNCTION: GpStatus GdipGetPenCustomStartCap ( GpPen* x, GpCustomLineCap** x ) ; +FUNCTION: GpStatus GdipGetPenCustomEndCap ( GpPen* x, GpCustomLineCap** x ) ; +FUNCTION: GpStatus GdipGetPenDashArray ( GpPen* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetPenDashCount ( GpPen* x, INT* x ) ; +FUNCTION: GpStatus GdipGetPenDashOffset ( GpPen* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetPenDashStyle ( GpPen* x, GpDashStyle* x ) ; +FUNCTION: GpStatus GdipGetPenMode ( GpPen* x, GpPenAlignment* x ) ; +FUNCTION: GpStatus GdipResetPenTransform ( GpPen* x ) ; +FUNCTION: GpStatus GdipScalePenTransform ( GpPen* x, REAL x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipSetPenBrushFill ( GpPen* x, GpBrush* x ) ; +FUNCTION: GpStatus GdipSetPenColor ( GpPen* x, ARGB x ) ; +FUNCTION: GpStatus GdipSetPenCompoundArray ( GpPen* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipSetPenCustomEndCap ( GpPen* x, GpCustomLineCap* x ) ; +FUNCTION: GpStatus GdipSetPenCustomStartCap ( GpPen* x, GpCustomLineCap* x ) ; +FUNCTION: GpStatus GdipSetPenDashArray ( GpPen* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipSetPenDashCap197819 ( GpPen* x, GpDashCap x ) ; +FUNCTION: GpStatus GdipSetPenDashOffset ( GpPen* x, REAL x ) ; +FUNCTION: GpStatus GdipSetPenDashStyle ( GpPen* x, GpDashStyle x ) ; +FUNCTION: GpStatus GdipSetPenEndCap ( GpPen* x, GpLineCap x ) ; +FUNCTION: GpStatus GdipGetPenFillType ( GpPen* x, GpPenType* x ) ; +FUNCTION: GpStatus GdipSetPenLineCap197819 ( GpPen* x, GpLineCap x, GpLineCap x, GpDashCap x ) ; +FUNCTION: GpStatus GdipSetPenLineJoin ( GpPen* x, GpLineJoin x ) ; +FUNCTION: GpStatus GdipSetPenMode ( GpPen* x, GpPenAlignment x ) ; +FUNCTION: GpStatus GdipSetPenMiterLimit ( GpPen* x, REAL x ) ; +FUNCTION: GpStatus GdipSetPenStartCap ( GpPen* x, GpLineCap x ) ; +FUNCTION: GpStatus GdipSetPenWidth ( GpPen* x, REAL x ) ; +FUNCTION: GpStatus GdipGetPenDashCap197819 ( GpPen* x, GpDashCap* x ) ; +FUNCTION: GpStatus GdipGetPenEndCap ( GpPen* x, GpLineCap* x ) ; +FUNCTION: GpStatus GdipGetPenLineJoin ( GpPen* x, GpLineJoin* x ) ; +FUNCTION: GpStatus GdipGetPenMiterLimit ( GpPen* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetPenStartCap ( GpPen* x, GpLineCap* x ) ; +FUNCTION: GpStatus GdipGetPenUnit ( GpPen* x, GpUnit* x ) ; +FUNCTION: GpStatus GdipGetPenWidth ( GpPen* x, REAL* x ) ; + + +FUNCTION: GpStatus GdipCloneRegion ( GpRegion* x, GpRegion** x ) ; +FUNCTION: GpStatus GdipCombineRegionPath ( GpRegion* x, GpPath* x, CombineMode x ) ; +FUNCTION: GpStatus GdipCombineRegionRect ( GpRegion* x, GpRectF* x, CombineMode x ) ; +FUNCTION: GpStatus GdipCombineRegionRectI ( GpRegion* x, GpRect* x, CombineMode x ) ; +FUNCTION: GpStatus GdipCombineRegionRegion ( GpRegion* x, GpRegion* x, CombineMode x ) ; +FUNCTION: GpStatus GdipCreateRegion ( GpRegion** x ) ; +FUNCTION: GpStatus GdipCreateRegionPath ( GpPath* x, GpRegion** x ) ; +FUNCTION: GpStatus GdipCreateRegionRect ( GpRectF* x, GpRegion** x ) ; +FUNCTION: GpStatus GdipCreateRegionRectI ( GpRect* x, GpRegion** x ) ; +FUNCTION: GpStatus GdipCreateRegionRgnData ( BYTE* x, INT x, GpRegion** x ) ; +FUNCTION: GpStatus GdipCreateRegionHrgn ( HRGN x, GpRegion** x ) ; +FUNCTION: GpStatus GdipDeleteRegion ( GpRegion* x ) ; +FUNCTION: GpStatus GdipGetRegionBounds ( GpRegion* x, GpGraphics* x, GpRectF* x ) ; +FUNCTION: GpStatus GdipGetRegionBoundsI ( GpRegion* x, GpGraphics* x, GpRect* x ) ; +FUNCTION: GpStatus GdipGetRegionData ( GpRegion* x, BYTE* x, UINT x, UINT* x ) ; +FUNCTION: GpStatus GdipGetRegionDataSize ( GpRegion* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetRegionHRgn ( GpRegion* x, GpGraphics* x, HRGN* x ) ; +FUNCTION: GpStatus GdipIsEmptyRegion ( GpRegion* x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsEqualRegion ( GpRegion* x, GpRegion* x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsInfiniteRegion ( GpRegion* x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisibleRegionPoint ( GpRegion* x, REAL x, REAL x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisibleRegionPointI ( GpRegion* x, INT x, INT x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisibleRegionRect ( GpRegion* x, REAL x, REAL x, REAL x, REAL x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisibleRegionRectI ( GpRegion* x, INT x, INT x, INT x, INT x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipSetEmpty ( GpRegion* x ) ; +FUNCTION: GpStatus GdipSetInfinite ( GpRegion* x ) ; +FUNCTION: GpStatus GdipTransformRegion ( GpRegion* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipTranslateRegion ( GpRegion* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipTranslateRegionI ( GpRegion* x, INT x, INT x ) ; + + +FUNCTION: GpStatus GdipCreateSolidFill ( ARGB x, GpSolidFill** x ) ; +FUNCTION: GpStatus GdipGetSolidFillColor ( GpSolidFill* x, ARGB* x ) ; +FUNCTION: GpStatus GdipSetSolidFillColor ( GpSolidFill* x, ARGB x ) ; + + +FUNCTION: GpStatus GdipCloneStringFormat ( GpStringFormat* x, GpStringFormat** x ) ; +FUNCTION: GpStatus GdipCreateStringFormat ( INT x, LANGID x, GpStringFormat** x ) ; +FUNCTION: GpStatus GdipDeleteStringFormat ( GpStringFormat* x ) ; +FUNCTION: GpStatus GdipGetStringFormatAlign ( GpStringFormat* x, StringAlignment* x ) ; +FUNCTION: GpStatus GdipGetStringFormatDigitSubstitution ( GpStringFormat* x, LANGID* x, + StringDigitSubstitute* x ) ; +FUNCTION: GpStatus GdipGetStringFormatFlags ( GpStringFormat* x, INT* x ) ; +FUNCTION: GpStatus GdipGetStringFormatHotkeyPrefix ( GpStringFormat* x, INT* x ) ; +FUNCTION: GpStatus GdipGetStringFormatLineAlign ( GpStringFormat* x, StringAlignment* x ) ; +FUNCTION: GpStatus GdipGetStringFormatMeasurableCharacterRangeCount ( + GpStringFormat* x, INT* x ) ; +FUNCTION: GpStatus GdipGetStringFormatTabStopCount ( GpStringFormat* x, INT* x ) ; +FUNCTION: GpStatus GdipGetStringFormatTabStops ( GpStringFormat* x, INT x, REAL* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetStringFormatTrimming ( GpStringFormat* x, StringTrimming* x ) ; +FUNCTION: GpStatus GdipSetStringFormatAlign ( GpStringFormat* x, StringAlignment x ) ; +FUNCTION: GpStatus GdipSetStringFormatDigitSubstitution ( GpStringFormat* x, LANGID x, StringDigitSubstitute x ) ; +FUNCTION: GpStatus GdipSetStringFormatHotkeyPrefix ( GpStringFormat* x, INT x ) ; +FUNCTION: GpStatus GdipSetStringFormatLineAlign ( GpStringFormat* x, StringAlignment x ) ; +FUNCTION: GpStatus GdipSetStringFormatMeasurableCharacterRanges ( + GpStringFormat* x, INT x, CharacterRange* x ) ; +FUNCTION: GpStatus GdipSetStringFormatTabStops ( GpStringFormat* x, REAL x, INT x, REAL* x ) ; +FUNCTION: GpStatus GdipSetStringFormatTrimming ( GpStringFormat* x, StringTrimming x ) ; +FUNCTION: GpStatus GdipSetStringFormatFlags ( GpStringFormat* x, INT x ) ; +FUNCTION: GpStatus GdipStringFormatGetGenericDefault ( GpStringFormat** x ) ; +FUNCTION: GpStatus GdipStringFormatGetGenericTypographic ( GpStringFormat** x ) ; + + +FUNCTION: GpStatus GdipCreateTexture ( GpImage* x, GpWrapMode x, GpTexture** x ) ; +FUNCTION: GpStatus GdipCreateTexture2 ( GpImage* x, GpWrapMode x, REAL x, REAL x, REAL x, REAL x, GpTexture** x ) ; +FUNCTION: GpStatus GdipCreateTexture2I ( GpImage* x, GpWrapMode x, INT x, INT x, INT x, INT x, GpTexture** x ) ; +FUNCTION: GpStatus GdipCreateTextureIA ( GpImage* x, GpImageAttributes* x, + REAL x, REAL x, REAL x, REAL x, GpTexture** x ) ; +FUNCTION: GpStatus GdipCreateTextureIAI ( GpImage* x, GpImageAttributes* x, + INT x, INT x, INT x, INT x, GpTexture** x ) ; +FUNCTION: GpStatus GdipGetTextureTransform ( GpTexture* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipGetTextureWrapMode ( GpTexture* x, GpWrapMode* x ) ; +FUNCTION: GpStatus GdipMultiplyTextureTransform ( GpTexture* x, + GpMatrix* x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipResetTextureTransform ( GpTexture* x ) ; +FUNCTION: GpStatus GdipRotateTextureTransform ( GpTexture* x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipScaleTextureTransform ( GpTexture* x, REAL x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipSetTextureTransform ( GpTexture* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipSetTextureWrapMode ( GpTexture* x, GpWrapMode x ) ; +FUNCTION: GpStatus GdipTranslateTextureTransform ( GpTexture* x, REAL x, REAL x, + GpMatrixOrder x ) ; + + +FUNCTION: GpStatus GdipCreateStreamOnFile ( WCHAR* x, UINT x, IStream** x ) ; +FUNCTION: GpStatus GdipGetImageEncodersSize ( UINT* numEncoders, UINT* size ) ; +FUNCTION: GpStatus GdipGetImageEncoders ( UINT numEncoders, UINT size, ImageCodecInfo* encoders ) ; +FUNCTION: GpStatus GdipTestControl ( GpTestControlEnum x, void* x ) ; + +ERROR: gdi+-error status ; + +: check-gdi+-status ( GpStatus -- ) + dup Ok = [ drop ] [ gdi+-error ] if ; + +CONSTANT: standard-gdi+-startup-input + S{ GdiplusStartupInput + { GdiplusVersion 1 } + { DebugEventCallback f } + { SuppressBackgroundThread 0 } + { SuppressExternalCodecs 0 } + } + +: (start-gdi+) ( startup-input -- token startup-output ) + { ULONG_PTR GdiplusStartupOutput } + [ swapd GdiplusStartup check-gdi+-status ] [ ] with-out-parameters ; +: start-gdi+ ( -- token ) + standard-gdi+-startup-input (start-gdi+) drop ; inline +: stop-gdi+ ( token -- ) + GdiplusShutdown ; + +DESTRUCTOR: stop-gdi+ diff --git a/basis/windows/gdiplus/platforms.txt b/basis/windows/gdiplus/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/gdiplus/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/nt/nt.factor b/basis/windows/nt/nt.factor index 4b119ba5fa..7a875b295b 100644 --- a/basis/windows/nt/nt.factor +++ b/basis/windows/nt/nt.factor @@ -12,6 +12,7 @@ USING: alien sequences alien.libraries ; { "libm" "msvcrt.dll" cdecl } { "gl" "opengl32.dll" stdcall } { "glu" "glu32.dll" stdcall } + { "gdiplus" "gdiplus.dll" stdcall } { "ole32" "ole32.dll" stdcall } { "usp10" "usp10.dll" stdcall } { "psapi" "psapi.dll" stdcall } diff --git a/basis/windows/ole32/ole32.factor b/basis/windows/ole32/ole32.factor index 538a142878..8b0a2406c7 100644 --- a/basis/windows/ole32/ole32.factor +++ b/basis/windows/ole32/ole32.factor @@ -13,6 +13,9 @@ TYPEDEF: void* LPUNKNOWN TYPEDEF: LPWSTR LPOLESTR TYPEDEF: LPWSTR LPCOLESTR +TYPEDEF: GUID IID +TYPEDEF: GUID CLSID + TYPEDEF: REFGUID LPGUID TYPEDEF: REFGUID REFIID TYPEDEF: REFGUID REFCLSID diff --git a/basis/windows/streams/platforms.txt b/basis/windows/streams/platforms.txt new file mode 100644 index 0000000000..3646795db5 --- /dev/null +++ b/basis/windows/streams/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/streams/streams.factor b/basis/windows/streams/streams.factor new file mode 100644 index 0000000000..33c519e500 --- /dev/null +++ b/basis/windows/streams/streams.factor @@ -0,0 +1,123 @@ +USING: accessors alien.c-types classes.struct combinators +continuations io kernel libc literals locals sequences +specialized-arrays windows.com memoize +windows.com.wrapper windows.kernel32 windows.ole32 +windows.types ; +IN: windows.streams + +SPECIALIZED-ARRAY: uchar + + buf + buf length :> bytes + pv buf bytes memcpy + out-read [ bytes out-read 0 ULONG set-alien-value ] when + + cb bytes = [ S_OK ] [ S_FALSE ] if + ] with-hresult ; inline + +:: IStream-write ( stream pv cb out-written -- hresult ) + [ + pv cb stream stream-write + out-written [ cb out-written 0 ULONG set-alien-value ] when + S_OK + ] with-hresult ; inline + +: origin>seek-type ( origin -- seek-type ) + { + { $ STREAM_SEEK_SET [ seek-absolute ] } + { $ STREAM_SEEK_CUR [ seek-relative ] } + { $ STREAM_SEEK_END [ seek-end ] } + } case ; + +:: IStream-seek ( stream move origin new-position -- hresult ) + [ + move origin origin>seek-type stream stream-seek + new-position [ + stream stream-tell new-position 0 ULARGE_INTEGER set-alien-value + ] when + S_OK + ] with-hresult ; inline + +:: IStream-set-size ( stream new-size -- hresult ) + STG_E_INVALIDFUNCTION ; + +:: IStream-copy-to ( stream other-stream cb out-read out-written -- hresult ) + [ + cb stream stream-read :> buf + buf length :> bytes + out-read [ bytes out-read 0 ULONG set-alien-value ] when + + other-stream buf bytes out-written IStream::Write + ] with-hresult ; inline + +:: IStream-commit ( stream flags -- hresult ) + stream stream-flush S_OK ; + +:: IStream-revert ( stream -- hresult ) + STG_E_INVALIDFUNCTION ; + +:: IStream-lock-region ( stream offset cb lock-type -- hresult ) + STG_E_INVALIDFUNCTION ; + +:: IStream-unlock-region ( stream offset cb lock-type -- hresult ) + STG_E_INVALIDFUNCTION ; + +:: stream-size ( stream -- size ) + stream stream-tell :> old-pos + 0 seek-end stream stream-seek + stream stream-tell :> size + old-pos seek-absolute stream stream-seek + size ; + +:: IStream-stat ( stream out-stat stat-flag -- hresult ) + [ + out-stat + f >>pwcsName + STGTY_STREAM >>type + stream stream-size >>cbSize + FILETIME >>mtime + FILETIME >>ctime + FILETIME >>atime + STGM_READWRITE >>grfMode + 0 >>grfLocksSupported + GUID_NULL >>clsid + 0 >>grfStateBits + 0 >>reserved + drop + S_OK + ] with-hresult ; + +:: IStream-clone ( out-clone-stream -- hresult ) + f out-clone-stream 0 void* set-alien-value + STG_E_INVALIDFUNCTION ; + +CONSTANT: stream-wrapper + $[ + { + { IStream { + [ IStream-read ] + [ IStream-write ] + [ IStream-seek ] + [ IStream-set-size ] + [ IStream-copy-to ] + [ IStream-commit ] + [ IStream-revert ] + [ IStream-lock-region ] + [ IStream-unlock-region ] + [ IStream-stat ] + [ IStream-clone ] + } } + } + ] + +PRIVATE> + +: stream>IStream ( stream -- IStream ) + stream-wrapper com-wrap ; diff --git a/basis/windows/streams/summary.txt b/basis/windows/streams/summary.txt new file mode 100644 index 0000000000..3578124ca3 --- /dev/null +++ b/basis/windows/streams/summary.txt @@ -0,0 +1 @@ +IStream interface wrapper for Factor stream objects diff --git a/basis/windows/types/types.factor b/basis/windows/types/types.factor index e2e4b113a4..3490e8083d 100644 --- a/basis/windows/types/types.factor +++ b/basis/windows/types/types.factor @@ -16,6 +16,8 @@ TYPEDEF: wchar_t WCHAR TYPEDEF: short SHORT TYPEDEF: ushort USHORT +TYPEDEF: short INT16 +TYPEDEF: ushort UINT16 TYPEDEF: ushort WORD TYPEDEF: ulong DWORD @@ -94,7 +96,7 @@ TYPEDEF: HANDLE HDDEDATA TYPEDEF: HANDLE HDESK TYPEDEF: HANDLE HDROP TYPEDEF: HANDLE HDWP -TYPEDEF: HANDLE HENMETAFILE +TYPEDEF: HANDLE HENHMETAFILE TYPEDEF: HANDLE HFONT TYPEDEF: HANDLE HGDIOBJ TYPEDEF: HANDLE HGLOBAL @@ -398,3 +400,5 @@ STRUCT: TEXTMETRICW { tmCharSet BYTE } ; TYPEDEF: TEXTMETRICW* LPTEXTMETRIC + +TYPEDEF: ULONG PROPID diff --git a/extra/gpu/textures/textures.factor b/extra/gpu/textures/textures.factor index a240aae945..55e6f7c0f4 100644 --- a/extra/gpu/textures/textures.factor +++ b/extra/gpu/textures/textures.factor @@ -309,7 +309,7 @@ TYPED: read-compressed-texture ( tdt: texture-data-target level: integer -- byte : read-texture-image ( tdt level -- image ) [ texture-dim ] - [ drop texture-object [ component-order>> ] [ component-type>> ] bi f ] + [ drop texture-object [ component-order>> ] [ component-type>> ] bi f f ] [ read-texture ] 2tri image boa ; inline