From 05faf6919b74153a080ff6cdc00914b6bdf7fd7c Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Sun, 27 Jun 2010 12:29:21 -0700 Subject: [PATCH 01/23] new vocab images.cocoa: load image objects using native cocoa api --- basis/cocoa/cocoa.factor | 2 + basis/images/cocoa/authors.txt | 1 + basis/images/cocoa/cocoa.factor | 64 ++++++++++++++++++++++++++++++++ basis/images/cocoa/platforms.txt | 1 + basis/images/cocoa/summary.txt | 1 + 5 files changed, 69 insertions(+) create mode 100644 basis/images/cocoa/authors.txt create mode 100644 basis/images/cocoa/cocoa.factor create mode 100644 basis/images/cocoa/platforms.txt create mode 100644 basis/images/cocoa/summary.txt 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/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..2150747138 --- /dev/null +++ b/basis/images/cocoa/cocoa.factor @@ -0,0 +1,64 @@ +! (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 ; +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 >>dim ] + [ -> bitmapData ] + [ -> bytesPerPlane memory>byte-array >>bitmap ] + } cleave + RGBA >>component-order + ubyte-components >>component-type + 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 From e433b16b42983eb4f3faa29a744db382bbed2e24 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Sun, 27 Jun 2010 12:42:14 -0700 Subject: [PATCH 02/23] cocoa.messages: return cocoa char* values as void* instead of c-string --- basis/cocoa/messages/messages.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/cocoa/messages/messages.factor b/basis/cocoa/messages/messages.factor index 029b3f46e6..4b2c2f2a33 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 } From 3029a9475648c250d3d9aab853d7c881a0e70b28 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Sun, 27 Jun 2010 13:31:07 -0700 Subject: [PATCH 03/23] images.cocoa: work around broken limited-stream behavior --- basis/images/cocoa/cocoa.factor | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/basis/images/cocoa/cocoa.factor b/basis/images/cocoa/cocoa.factor index 2150747138..1d71738904 100644 --- a/basis/images/cocoa/cocoa.factor +++ b/basis/images/cocoa/cocoa.factor @@ -1,18 +1,18 @@ ! (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 ; +images.loader io io.streams.limited kernel literals ; 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 +"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 @@ -61,4 +61,6 @@ PRIVATE> f >>upside-down? ; M: ns-image stream>image - drop [ load-image-rep ] with-input-stream image-rep>image ; + drop + dup limited-stream? [ stream-eofs >>mode ] when + [ load-image-rep ] with-input-stream image-rep>image ; From 0d35e277ea4fe0d46c02fbab6fe602efc61d3cfb Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Sun, 27 Jun 2010 13:44:16 -0700 Subject: [PATCH 04/23] images, opengl.textures, images.cocoa: add support for premultiplied alpha so we can use data from cocoa images --- Raytrace.app/Contents/Info.plist | 18 ++++++++++++++++++ basis/images/cocoa/cocoa.factor | 6 ++++-- basis/images/images.factor | 5 ++++- basis/opengl/textures/textures.factor | 15 ++++++++++++--- extra/gpu/textures/textures.factor | 2 +- 5 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 Raytrace.app/Contents/Info.plist 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/images/cocoa/cocoa.factor b/basis/images/cocoa/cocoa.factor index 1d71738904..166a5f8196 100644 --- a/basis/images/cocoa/cocoa.factor +++ b/basis/images/cocoa/cocoa.factor @@ -1,7 +1,8 @@ ! (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 io.streams.limited kernel literals ; +images.loader io io.streams.limited kernel literals math +sequences ; IN: images.cocoa SINGLETON: ns-image @@ -52,12 +53,13 @@ PRIVATE> : image-rep>image ( image-rep -- image ) image new swap { - [ -> size CGSize>dim >>dim ] + [ -> 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 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 dacea0888a..bba4165304 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/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 From 5c95d90da3b95834a3a1a8b8eedd0437680c5d84 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Sun, 27 Jun 2010 13:45:04 -0700 Subject: [PATCH 05/23] ui.images: load images.cocoa backend by default instead of images.png/images.tiff on macosx --- basis/ui/images/images.factor | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/basis/ui/images/images.factor b/basis/ui/images/images.factor index b97a5c14fe..e9c527a3a6 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,15 @@ PRIVATE> : image-dim ( image-name -- dim ) cached-image dim>> ; + +<< +{ + { [ os macosx? ] [ + "images.cocoa" require + ] } + [ + "images.png" require + "images.tiff" require + ] +} cond +>> From cd183a24b411cbdac7aeef6682fe822631c4e928 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Mon, 28 Jun 2010 11:33:25 -0700 Subject: [PATCH 06/23] new vocab windows.gdiplus: bindings to GDI+ (not tested yet) --- basis/windows/gdiplus/gdiplus.factor | 1610 ++++++++++++++++++++++++++ basis/windows/gdiplus/platforms.txt | 1 + basis/windows/nt/nt.factor | 1 + 3 files changed, 1612 insertions(+) create mode 100644 basis/windows/gdiplus/gdiplus.factor create mode 100644 basis/windows/gdiplus/platforms.txt diff --git a/basis/windows/gdiplus/gdiplus.factor b/basis/windows/gdiplus/gdiplus.factor new file mode 100644 index 0000000000..0199fe685e --- /dev/null +++ b/basis/windows/gdiplus/gdiplus.factor @@ -0,0 +1,1610 @@ +! (c)2010 Joe Groff bsd license +USING: alien.c-types alien.destructors alien.syntax windows.types ; +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: PenAlignment + { 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: +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] } ; + +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 Rotate270Flip } ; + +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 + +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, const VOID* x, const 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 GdipSetCustomLineCapBaseInset ( GpCustomLineCap* x, REAL x ) ; + + +FUNCTION: GpStatus GdipCloneFont ( GpFont* x, GpFont** x ) ; +FUNCTION: GpStatus GdipCreateFont ( GpFontFamily* x, REAL x, INT x, Unit 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, Unit* 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 ( void x ) ; +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, PointF* 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, RectF* 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, RectF* x, GpStringFormat* x, INT x, + GpRegion** x ) ; +FUNCTION: GpStatus GdipMeasureDriverString ( GpGraphics* x, UINT16* x, INT x, + GpFont* x, PointF* x, INT x, GpMatrix* x, RectF* x ) ; +FUNCTION: GpStatus GdipMeasureString ( GpGraphics* x, WCHAR* x, INT x, + GpFont* x, RectF* x, GpStringFormat* x, RectF* 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, RectF* x, GpStringFormat* x ) ; +FUNCTION: GpStatus GdipAddPathStringI ( GpPath* x, WCHAR* x, INT x, GpFontFamily* x, INT x, REAL x, Rect* 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, WrapMode 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 ( const GpGraphics* x, GpMetafile* x, INT* x, + EmfType x, const WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipConvertToEmfPlusToFile ( const GpGraphics* x, GpMetafile* x, INT* x, const WCHAR* x, EmfType x, const WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipConvertToEmfPlusToStream ( const GpGraphics* x, GpMetafile* x, INT* x, IStream* x, EmfType x, const 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 WINAPI GdiplusNotificationHook ( ULONG_PTR* x ) ; +FUNCTION: void WINAPI 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 x, UINT *size x ) ; +FUNCTION: GpStatus GdipGetImageEncoders ( UINT numEncoders x, UINT size x, ImageCodecInfo *encoders x ) ; +FUNCTION: GpStatus GdipTestControl ( GpTestControlEnum x, void* x ) ; 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 } From 0cb3eff34b1d03344d2894fdf34d6f99e21bf5f5 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Mon, 28 Jun 2010 15:56:44 -0700 Subject: [PATCH 07/23] alien.enums: allow enum members to be given values based on other enum symbols' values --- basis/alien/enums/enums-tests.factor | 4 ++++ basis/alien/enums/enums.factor | 9 +++------ basis/alien/parser/parser.factor | 8 ++++++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/basis/alien/enums/enums-tests.factor b/basis/alien/enums/enums-tests.factor index f0c665830d..52337594a1 100644 --- a/basis/alien/enums/enums-tests.factor +++ b/basis/alien/enums/enums-tests.factor @@ -33,3 +33,7 @@ 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 diff --git a/basis/alien/enums/enums.factor b/basis/alien/enums/enums.factor index 18000105e7..4ac7c24cb5 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 "enum-value" set-word-prop ; : define-enum-members ( member-names -- ) - [ - [ first define-symbol ] - [ first2 define-enum-value ] bi - ] each ; + [ first define-symbol ] each ; : define-enum-constructor ( word -- ) [ name>> "<" ">" surround create-in ] keep diff --git a/basis/alien/parser/parser.factor b/basis/alien/parser/parser.factor index 332683a0ac..baca25e078 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 ; From e140cf09f49dcfb3147ae5a7378ecb94ce5f4208 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Mon, 28 Jun 2010 16:30:45 -0700 Subject: [PATCH 08/23] windows.gdiplus: clean up so it loads --- basis/windows/com/com.factor | 4 + basis/windows/gdiplus/gdiplus.factor | 159 +++++++++++++++------------ basis/windows/ole32/ole32.factor | 3 + basis/windows/types/types.factor | 6 +- 4 files changed, 99 insertions(+), 73 deletions(-) diff --git a/basis/windows/com/com.factor b/basis/windows/com/com.factor index 094859009d..bdc055f787 100644 --- a/basis/windows/com/com.factor +++ b/basis/windows/com/com.factor @@ -51,3 +51,7 @@ FUNCTION: void ReleaseStgMedium ( LPSTGMEDIUM pmedium ) ; over [ com-release ] curry [ ] cleanup ; inline DESTRUCTOR: com-release + +! XXX interfaces used by other libraries that should be fleshed out +C-TYPE: IStream + diff --git a/basis/windows/gdiplus/gdiplus.factor b/basis/windows/gdiplus/gdiplus.factor index 0199fe685e..9e8bb692ab 100644 --- a/basis/windows/gdiplus/gdiplus.factor +++ b/basis/windows/gdiplus/gdiplus.factor @@ -1,5 +1,7 @@ ! (c)2010 Joe Groff bsd license -USING: alien.c-types alien.destructors alien.syntax windows.types ; +USING: alien.c-types alien.destructors alien.syntax +classes.struct kernel math windows.com windows.com.syntax +windows.kernel32 windows.ole32 windows.types ; IN: windows.gdiplus LIBRARY: gdiplus @@ -163,7 +165,7 @@ ENUM: InterpolationMode InterpolationModeHighQualityBilinear InterpolationModeHighQualityBicubic ; -ENUM: PenAlignment +ENUM: GpPenAlignment { PenAlignmentCenter 0 } { PenAlignmentInset 1 } ; @@ -422,7 +424,7 @@ STRUCT: GdiplusStartupOutput { NotificationUnhook NotificationUnhookProc } ; FUNCTION: GpStatus GdiplusStartup ( ULONG_PTR* x, GdiplusStartupInput* in, GdiplusStartupOutput* out ) ; -FUNCTION: void GdiplusShutdown ( ULONG_PTR x ); +FUNCTION: void GdiplusShutdown ( ULONG_PTR x ) ; TYPEDEF: DWORD ARGB TYPEDEF: INT PixelFormat @@ -438,7 +440,7 @@ CONSTANT: PixelFormatAlpha HEX: 00040000 CONSTANT: PixelFormatPAlpha HEX: 00080000 CONSTANT: PixelFormatExtended HEX: 00100000 CONSTANT: PixelFormatCanonical HEX: 00200000 -CONSTANT: + CONSTANT: PixelFormatUndefined 0 CONSTANT: PixelFormatDontCare 0 CONSTANT: PixelFormatMax 15 @@ -477,6 +479,17 @@ STRUCT: ColorPalette { 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 } @@ -578,7 +591,7 @@ ENUM: RotateFlipType { RotateNoneFlipY Rotate180FlipX } { Rotate270FlipX 7 } - { Rotate90FlipY Rotate270Flip } ; + { Rotate90FlipY Rotate270FlipX } ; STRUCT: EncoderParameter { Guid GUID } @@ -889,13 +902,13 @@ ENUM: ColorMatrixFlags { ColorMatrixFlagsAltGray 2 } ; ENUM: ColorAdjustType - { ColorAdjustTypeDefault } - { ColorAdjustTypeBitmap } - { ColorAdjustTypeBrush } - { ColorAdjustTypePen } - { ColorAdjustTypeText } - { ColorAdjustTypeCount } - { ColorAdjustTypeAny } ; + ColorAdjustTypeDefault + ColorAdjustTypeBitmap + ColorAdjustTypeBrush + ColorAdjustTypePen + ColorAdjustTypeText + ColorAdjustTypeCount + ColorAdjustTypeAny ; STRUCT: ColorMap { oldColor GpColor } @@ -926,6 +939,10 @@ 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 ) ; @@ -960,7 +977,7 @@ 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, const VOID* x, const UINT x ) ; +FUNCTION: GpStatus GdipSetEffectParameters ( CGpEffect* x, VOID* x, UINT x ) ; FUNCTION: GpStatus GdipCloneBrush ( GpBrush* x, GpBrush** x ) ; @@ -988,11 +1005,9 @@ FUNCTION: GpStatus GdipGetCustomLineCapStrokeJoin ( GpCustomLineCap* x, GpLineJo FUNCTION: GpStatus GdipSetCustomLineCapStrokeJoin ( GpCustomLineCap* x, GpLineJoin x ) ; FUNCTION: GpStatus GdipGetCustomLineCapWidthScale ( GpCustomLineCap* x, REAL* x ) ; FUNCTION: GpStatus GdipSetCustomLineCapWidthScale ( GpCustomLineCap* x, REAL x ) ; -FUNCTION: GpStatus GdipSetCustomLineCapBaseInset ( GpCustomLineCap* x, REAL x ) ; - FUNCTION: GpStatus GdipCloneFont ( GpFont* x, GpFont** x ) ; -FUNCTION: GpStatus GdipCreateFont ( GpFontFamily* x, REAL x, INT x, Unit 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 ) ; @@ -1001,7 +1016,7 @@ 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, Unit* 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, @@ -1017,7 +1032,7 @@ 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 ) ; + GpFontFamily** x, INT* x ) ; FUNCTION: GpStatus GdipCloneFontFamily ( GpFontFamily* x, GpFontFamily** x ) ; @@ -1032,7 +1047,7 @@ 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 GdipIsStyleAvailable ( GpFontFamily* x, INT x, BOOL* x ) ; FUNCTION: GpStatus GdipFlush ( GpGraphics* x, GpFlushIntention x ) ; @@ -1045,8 +1060,8 @@ 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 ( void x ) ; -FUNCTION: GpStatus GdipDeleteGraphics ( 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 ) ; @@ -1064,7 +1079,7 @@ FUNCTION: GpStatus GdipDrawCurve2I ( GpGraphics* x, GpPen* x, GpPoint* x, INT 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, PointF* x, INT x, GpMatrix* 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 ) ; @@ -1101,7 +1116,7 @@ FUNCTION: GpStatus GdipDrawRectangleI ( GpGraphics* x, GpPen* x, INT x, INT x, I 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, RectF* x, GpStringFormat* x, + GpFont* x, GpRectF* x, GpStringFormat* x, GpBrush* x ) ; FUNCTION: GpStatus GdipFillClosedCurve2 ( GpGraphics* x, GpBrush* x, GpPointF* x, INT x, REAL x, GpFillMode x ) ; @@ -1152,12 +1167,12 @@ 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, RectF* x, GpStringFormat* x, INT x, + INT x, GpFont* x, GpRectF* x, GpStringFormat* x, INT x, GpRegion** x ) ; FUNCTION: GpStatus GdipMeasureDriverString ( GpGraphics* x, UINT16* x, INT x, - GpFont* x, PointF* x, INT x, GpMatrix* x, RectF* x ) ; + GpFont* x, GpPointF* x, INT x, GpMatrix* x, GpRectF* x ) ; FUNCTION: GpStatus GdipMeasureString ( GpGraphics* x, WCHAR* x, INT x, - GpFont* x, RectF* x, GpStringFormat* x, RectF* x, INT* 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 ) ; @@ -1190,9 +1205,9 @@ 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 ) ; + GpPointF* x, INT x ) ; FUNCTION: GpStatus GdipTransformPointsI ( GpGraphics* x, GpCoordinateSpace x, GpCoordinateSpace x, - GpPoint * x, INT 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 ) ; @@ -1229,8 +1244,8 @@ FUNCTION: GpStatus GdipAddPathRectangle ( GpPath* x, REAL x, REAL x, REAL x, REA 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, RectF* x, GpStringFormat* x ) ; -FUNCTION: GpStatus GdipAddPathStringI ( GpPath* x, WCHAR* x, INT x, GpFontFamily* x, INT x, REAL x, Rect* x, GpStringFormat* 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 ) ; @@ -1340,7 +1355,7 @@ FUNCTION: GpStatus GdipSetImageAttributesThreshold ( GpImageAttributes* x, ColorAdjustType x, BOOL x, REAL x ) ; FUNCTION: GpStatus GdipSetImageAttributesToIdentity ( GpImageAttributes* x, ColorAdjustType x ) ; -FUNCTION: GpStatus GdipSetImageAttributesWrapMode ( GpImageAttributes* x, WrapMode x, +FUNCTION: GpStatus GdipSetImageAttributesWrapMode ( GpImageAttributes* x, GpWrapMode x, ARGB x, BOOL x ) ; @@ -1386,7 +1401,7 @@ FUNCTION: GpStatus GdipTranslateLineTransform ( GpLineGradient* x, REAL x, REAL 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 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 ) ; @@ -1406,10 +1421,10 @@ FUNCTION: GpStatus GdipVectorTransformMatrixPoints ( GpMatrix* x, GpPointF* x, I FUNCTION: GpStatus GdipVectorTransformMatrixPointsI ( GpMatrix* x, GpPoint* x, INT x ) ; -FUNCTION: GpStatus GdipConvertToEmfPlus ( const GpGraphics* x, GpMetafile* x, INT* x, - EmfType x, const WCHAR* x, GpMetafile** x ) ; -FUNCTION: GpStatus GdipConvertToEmfPlusToFile ( const GpGraphics* x, GpMetafile* x, INT* x, const WCHAR* x, EmfType x, const WCHAR* x, GpMetafile** x ) ; -FUNCTION: GpStatus GdipConvertToEmfPlusToStream ( const GpGraphics* x, GpMetafile* x, INT* x, IStream* x, EmfType x, const WCHAR* x, GpMetafile** 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 ) ; @@ -1427,8 +1442,8 @@ FUNCTION: GpStatus GdipGetMetafileHeaderFromStream ( IStream* x, MetafileHeader* FUNCTION: GpStatus GdipGetMetafileHeaderFromWmf ( HMETAFILE x, WmfPlaceableFileHeader* x, MetafileHeader* x ) ; -FUNCTION: GpStatus WINAPI GdiplusNotificationHook ( ULONG_PTR* x ) ; -FUNCTION: void WINAPI GdiplusNotificationUnhook ( ULONG_PTR x ) ; +FUNCTION: GpStatus GdiplusNotificationHook ( ULONG_PTR* x ) ; +FUNCTION: void GdiplusNotificationUnhook ( ULONG_PTR x ) ; FUNCTION: GpStatus GdipCreatePathGradient ( GpPointF* x, INT x, GpWrapMode x, GpPathGradient** x ) ; @@ -1521,35 +1536,35 @@ 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 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 ) ; @@ -1580,8 +1595,8 @@ FUNCTION: GpStatus GdipSetStringFormatMeasurableCharacterRanges ( 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 GdipStringFormatGetGenericDefault ( GpStringFormat** x ) ; +FUNCTION: GpStatus GdipStringFormatGetGenericTypographic ( GpStringFormat** x ) ; FUNCTION: GpStatus GdipCreateTexture ( GpImage* x, GpWrapMode x, GpTexture** x ) ; @@ -1598,13 +1613,13 @@ FUNCTION: GpStatus GdipMultiplyTextureTransform ( GpTexture* 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 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 x, UINT *size x ) ; -FUNCTION: GpStatus GdipGetImageEncoders ( UINT numEncoders x, UINT size x, ImageCodecInfo *encoders x ) ; +FUNCTION: GpStatus GdipGetImageEncodersSize ( UINT* numEncoders, UINT* size ) ; +FUNCTION: GpStatus GdipGetImageEncoders ( UINT numEncoders, UINT size, ImageCodecInfo* encoders ) ; FUNCTION: GpStatus GdipTestControl ( GpTestControlEnum x, void* x ) ; 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/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 From 93a893f8f47c0baa6638b984f19a0801d85d0013 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Mon, 28 Jun 2010 16:42:15 -0700 Subject: [PATCH 09/23] windows.gdiplus: resolve ambiguity introduced by auto-use --- basis/windows/gdiplus/gdiplus.factor | 1 + 1 file changed, 1 insertion(+) diff --git a/basis/windows/gdiplus/gdiplus.factor b/basis/windows/gdiplus/gdiplus.factor index 9e8bb692ab..2291628f17 100644 --- a/basis/windows/gdiplus/gdiplus.factor +++ b/basis/windows/gdiplus/gdiplus.factor @@ -2,6 +2,7 @@ USING: alien.c-types 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 From 6bca9f2e15bc9fa08c000abd80b28055af33999b Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Mon, 28 Jun 2010 19:41:51 -0700 Subject: [PATCH 10/23] windows.com: add IStream interface --- basis/windows/com/com.factor | 45 +++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/basis/windows/com/com.factor b/basis/windows/com/com.factor index bdc055f787..b69189786f 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,47 @@ 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: 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 + +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 ) ; @@ -52,6 +93,4 @@ FUNCTION: void ReleaseStgMedium ( LPSTGMEDIUM pmedium ) ; DESTRUCTOR: com-release -! XXX interfaces used by other libraries that should be fleshed out -C-TYPE: IStream From 780c190d69d5a7a484f2aceae2aa926a651d762f Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Mon, 28 Jun 2010 21:51:49 -0700 Subject: [PATCH 11/23] new vocab windows.streams: COM IStream wrapper for factor streams --- basis/windows/com/com.factor | 10 ++- basis/windows/streams/platforms.txt | 1 + basis/windows/streams/streams.factor | 112 +++++++++++++++++++++++++++ basis/windows/streams/summary.txt | 1 + 4 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 basis/windows/streams/platforms.txt create mode 100644 basis/windows/streams/streams.factor create mode 100644 basis/windows/streams/summary.txt diff --git a/basis/windows/com/com.factor b/basis/windows/com/com.factor index b69189786f..46ae1ae154 100644 --- a/basis/windows/com/com.factor +++ b/basis/windows/com/com.factor @@ -48,6 +48,12 @@ STRUCT: STATSTG { 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 @@ -61,10 +67,12 @@ 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 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 ) 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..f16fe5a927 --- /dev/null +++ b/basis/windows/streams/streams.factor @@ -0,0 +1,112 @@ +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 ; + +:: IStream-stat ( stream out-stat stat-flag -- hresult ) + [ + out-stat + f >>pwcsName + STGTY_STREAM >>type + 0 >>cbSize + FILETIME >>mtime + FILETIME >>ctime + FILETIME >>atime + STGM_READWRITE >>grfMode + 0 >>grfLocksSupported + GUID_NULL >>clsid + 0 >>grfStateBits + 0 >>reserved + ] with-hresult ; + +:: IStream-clone ( out-clone-stream -- hresult ) + f out-clone-stream 0 void* set-alien-value + STG_E_INVALIDFUNCTION ; + +MEMO: stream-wrapper ( -- 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 From 5a3b6960e0f520339c8032866fa5e8705a139af5 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Tue, 6 Jul 2010 22:35:49 -0700 Subject: [PATCH 12/23] windows.streams: attempt to determine stream size because GdipCreateBitmapFromStream requires its IStream to report it --- basis/windows/streams/streams.factor | 60 ++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 17 deletions(-) diff --git a/basis/windows/streams/streams.factor b/basis/windows/streams/streams.factor index f16fe5a927..956b4aad10 100644 --- a/basis/windows/streams/streams.factor +++ b/basis/windows/streams/streams.factor @@ -69,12 +69,20 @@ SPECIALIZED-ARRAY: uchar :: IStream-unlock-region ( stream offset cb lock-type -- hresult ) STG_E_INVALIDFUNCTION ; +FROM: io.ports => tell-handle ; +:: stream-size ( stream -- size ) + stream stream-tell :> old-pos + 0 seek-end stream stream-seek + stream handle>> tell-handle :> size + old-pos seek-absolute stream stream-seek + size ; + :: IStream-stat ( stream out-stat stat-flag -- hresult ) [ out-stat f >>pwcsName STGTY_STREAM >>type - 0 >>cbSize + stream stream-size >>cbSize FILETIME >>mtime FILETIME >>ctime FILETIME >>atime @@ -83,28 +91,46 @@ SPECIALIZED-ARRAY: uchar 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 ; -MEMO: stream-wrapper ( -- 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 ] - } } - } ; +USE: tools.annotations +: watch-istream-callbacks ( -- ) + \ IStream-read watch + \ IStream-write watch + \ IStream-seek watch + \ IStream-set-size watch + \ IStream-copy-to watch + \ IStream-commit watch + \ IStream-revert watch + \ IStream-lock-region watch + \ IStream-unlock-region watch + \ IStream-stat watch + \ IStream-clone watch ; + +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> From 099607bfdd70bf25d96619b5c6a467d1b4806c03 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Tue, 6 Jul 2010 22:36:24 -0700 Subject: [PATCH 13/23] windows.gdiplus: start-gdi+/stop-gdi+/check-gdi+-status helper words --- basis/windows/gdiplus/gdiplus.factor | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/basis/windows/gdiplus/gdiplus.factor b/basis/windows/gdiplus/gdiplus.factor index 2291628f17..66300f9a90 100644 --- a/basis/windows/gdiplus/gdiplus.factor +++ b/basis/windows/gdiplus/gdiplus.factor @@ -1,5 +1,5 @@ ! (c)2010 Joe Groff bsd license -USING: alien.c-types alien.destructors alien.syntax +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 ; @@ -1624,3 +1624,26 @@ 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+ From 958e08690378c26341cab4aaff481852f04eda62 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Tue, 6 Jul 2010 22:37:14 -0700 Subject: [PATCH 14/23] new vocab images.gdiplus: image loading using standard windows gdi+ library --- basis/images/gdiplus/gdiplus.factor | 64 +++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 basis/images/gdiplus/gdiplus.factor diff --git a/basis/images/gdiplus/gdiplus.factor b/basis/images/gdiplus/gdiplus.factor new file mode 100644 index 0000000000..bc5d031820 --- /dev/null +++ b/basis/images/gdiplus/gdiplus.factor @@ -0,0 +1,64 @@ +! (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 ; +FROM: images => ARGB ; +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>> * 4 * ] 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 + ARGB >>component-order + ubyte-components >>component-type + f >>upside-down? ; + +PRIVATE> + +M: gdi+-image stream>image + drop + dup limited-stream? [ stream-eofs >>mode ] when [ + start-gdi+ &stop-gdi+ drop + stream>gdi+-bitmap + gdi+-bitmap>data + data>image + ] with-destructors ; From 509f100806b28694aa23588586b240cc1f8b379e Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Tue, 6 Jul 2010 22:47:01 -0700 Subject: [PATCH 15/23] windows.streams: remove some code used for debugging --- basis/windows/streams/streams.factor | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/basis/windows/streams/streams.factor b/basis/windows/streams/streams.factor index 956b4aad10..5ec2664ea8 100644 --- a/basis/windows/streams/streams.factor +++ b/basis/windows/streams/streams.factor @@ -99,20 +99,6 @@ FROM: io.ports => tell-handle ; f out-clone-stream 0 void* set-alien-value STG_E_INVALIDFUNCTION ; -USE: tools.annotations -: watch-istream-callbacks ( -- ) - \ IStream-read watch - \ IStream-write watch - \ IStream-seek watch - \ IStream-set-size watch - \ IStream-copy-to watch - \ IStream-commit watch - \ IStream-revert watch - \ IStream-lock-region watch - \ IStream-unlock-region watch - \ IStream-stat watch - \ IStream-clone watch ; - CONSTANT: stream-wrapper $[ { From 8816b1e215d9bee3b44d9e279cb3e6d60204b694 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Wed, 7 Jul 2010 09:07:26 -0700 Subject: [PATCH 16/23] ui.images: load images.gdiplus as default image handler on windows --- basis/images/gdiplus/gdiplus.factor | 16 ++++++++-------- basis/ui/images/images.factor | 5 ++--- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/basis/images/gdiplus/gdiplus.factor b/basis/images/gdiplus/gdiplus.factor index bc5d031820..95fdc3dd44 100644 --- a/basis/images/gdiplus/gdiplus.factor +++ b/basis/images/gdiplus/gdiplus.factor @@ -7,14 +7,14 @@ FROM: images => ARGB ; 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 +"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 ) diff --git a/basis/ui/images/images.factor b/basis/ui/images/images.factor index e9c527a3a6..7084f1aac1 100644 --- a/basis/ui/images/images.factor +++ b/basis/ui/images/images.factor @@ -33,9 +33,8 @@ PRIVATE> << { - { [ os macosx? ] [ - "images.cocoa" require - ] } + { [ os macosx? ] [ "images.cocoa" require ] } + { [ os winnt? ] [ "images.gdiplus" require ] } [ "images.png" require "images.tiff" require From 987c2b81535ff6656961dc2a71135a98be8176ef Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Wed, 7 Jul 2010 13:52:18 -0700 Subject: [PATCH 17/23] windows.streams: get rid of workaround for stream-tell bug --- basis/windows/streams/streams.factor | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/basis/windows/streams/streams.factor b/basis/windows/streams/streams.factor index 5ec2664ea8..33c519e500 100644 --- a/basis/windows/streams/streams.factor +++ b/basis/windows/streams/streams.factor @@ -69,11 +69,10 @@ SPECIALIZED-ARRAY: uchar :: IStream-unlock-region ( stream offset cb lock-type -- hresult ) STG_E_INVALIDFUNCTION ; -FROM: io.ports => tell-handle ; :: stream-size ( stream -- size ) stream stream-tell :> old-pos 0 seek-end stream stream-seek - stream handle>> tell-handle :> size + stream stream-tell :> size old-pos seek-absolute stream stream-seek size ; From aa047a8c793b4d995b41f62413bca8c23915b2fa Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Wed, 7 Jul 2010 13:54:24 -0700 Subject: [PATCH 18/23] images.gdiplus: don't multiply stride by pixel size because that's part of the stride already, noob --- basis/images/gdiplus/gdiplus.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/images/gdiplus/gdiplus.factor b/basis/images/gdiplus/gdiplus.factor index 95fdc3dd44..b2c31f383e 100644 --- a/basis/images/gdiplus/gdiplus.factor +++ b/basis/images/gdiplus/gdiplus.factor @@ -39,7 +39,7 @@ SINGLETON: gdi+-image 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>> * 4 * ] tri + bitmap-data [ Scan0>> ] [ Stride>> ] [ Height>> * ] tri memory>byte-array :> pixels bitmap bitmap-data GdipBitmapUnlockBits check-gdi+-status w h pixels ; From e228d8478f47e6dedebe51d9f3d1ade1333316ee Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Wed, 7 Jul 2010 14:51:16 -0700 Subject: [PATCH 19/23] images.gdiplus: GDI+ "ARGB" is little-endian, so really maps to opengl BGRA --- basis/images/gdiplus/gdiplus.factor | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/basis/images/gdiplus/gdiplus.factor b/basis/images/gdiplus/gdiplus.factor index b2c31f383e..0e9549f892 100644 --- a/basis/images/gdiplus/gdiplus.factor +++ b/basis/images/gdiplus/gdiplus.factor @@ -2,8 +2,8 @@ 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 ; -FROM: images => ARGB ; +windows.gdiplus windows.streams windows.types typed +byte-arrays grouping sequences ; IN: images.gdiplus SINGLETON: gdi+-image @@ -48,7 +48,7 @@ SINGLETON: gdi+-image image new { w h } >>dim pixels >>bitmap - ARGB >>component-order + BGRA >>component-order ubyte-components >>component-type f >>upside-down? ; From abf0aed9853134ec649cd0a903a2c5bb3ac75d57 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Sun, 11 Jul 2010 08:41:55 -0700 Subject: [PATCH 20/23] images.cocoa, images.gdiplus: remove hacks around old limited-stream throwing behavior --- basis/images/cocoa/cocoa.factor | 4 +--- basis/images/gdiplus/gdiplus.factor | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/basis/images/cocoa/cocoa.factor b/basis/images/cocoa/cocoa.factor index 166a5f8196..115315aa18 100644 --- a/basis/images/cocoa/cocoa.factor +++ b/basis/images/cocoa/cocoa.factor @@ -1,8 +1,7 @@ ! (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 io.streams.limited kernel literals math -sequences ; +images.loader io kernel literals math sequences ; IN: images.cocoa SINGLETON: ns-image @@ -64,5 +63,4 @@ PRIVATE> M: ns-image stream>image drop - dup limited-stream? [ stream-eofs >>mode ] when [ load-image-rep ] with-input-stream image-rep>image ; diff --git a/basis/images/gdiplus/gdiplus.factor b/basis/images/gdiplus/gdiplus.factor index 0e9549f892..97bc52375f 100644 --- a/basis/images/gdiplus/gdiplus.factor +++ b/basis/images/gdiplus/gdiplus.factor @@ -55,8 +55,7 @@ SINGLETON: gdi+-image PRIVATE> M: gdi+-image stream>image - drop - dup limited-stream? [ stream-eofs >>mode ] when [ + drop [ start-gdi+ &stop-gdi+ drop stream>gdi+-bitmap gdi+-bitmap>data From 67a1a0bdead3309e9ea5057284da98d037e155a5 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Sun, 11 Jul 2010 08:44:27 -0700 Subject: [PATCH 21/23] ui.images, images.loader: move platform-specific image loader setup into images.loader --- basis/images/loader/loader.factor | 12 +++++++++++- basis/ui/images/images.factor | 10 ---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/basis/images/loader/loader.factor b/basis/images/loader/loader.factor index 7e1dc9ca31..461131fdf9 100644 --- a/basis/images/loader/loader.factor +++ b/basis/images/loader/loader.factor @@ -3,7 +3,7 @@ USING: assocs byte-arrays io.encodings.binary io.files io.pathnames io.streams.byte-array io.streams.limited io.streams.throwing kernel namespaces sequences strings -unicode.case fry ; +unicode.case fry system vocabs.loader combinators ; IN: images.loader ERROR: unknown-image-extension extension ; @@ -51,3 +51,13 @@ GENERIC: image>stream ( image class -- ) [ image-class ] [ ] bi binary [ image>stream ] with-file-writer ; +<< +{ + { [ os macosx? ] [ "images.cocoa" require ] } + { [ os winnt? ] [ "images.gdiplus" require ] } + [ + "images.png" require + "images.tiff" require + ] +} cond +>> diff --git a/basis/ui/images/images.factor b/basis/ui/images/images.factor index 7084f1aac1..2ec04a532e 100644 --- a/basis/ui/images/images.factor +++ b/basis/ui/images/images.factor @@ -31,13 +31,3 @@ 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 ->> From 74dc8db962c7f31ab7b9503153f21e1a2be41171 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Fri, 16 Jul 2010 11:36:20 -0700 Subject: [PATCH 22/23] Revert "ui.images, images.loader: move platform-specific image loader setup into images.loader" This reverts commit 2bbf752cbeeccc555c66fcb2b16a29e0369765b8. --- basis/images/loader/loader.factor | 12 +----------- basis/ui/images/images.factor | 10 ++++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/basis/images/loader/loader.factor b/basis/images/loader/loader.factor index 461131fdf9..7e1dc9ca31 100644 --- a/basis/images/loader/loader.factor +++ b/basis/images/loader/loader.factor @@ -3,7 +3,7 @@ USING: assocs byte-arrays io.encodings.binary io.files io.pathnames io.streams.byte-array io.streams.limited io.streams.throwing kernel namespaces sequences strings -unicode.case fry system vocabs.loader combinators ; +unicode.case fry ; IN: images.loader ERROR: unknown-image-extension extension ; @@ -51,13 +51,3 @@ GENERIC: image>stream ( image class -- ) [ image-class ] [ ] bi binary [ image>stream ] with-file-writer ; -<< -{ - { [ os macosx? ] [ "images.cocoa" require ] } - { [ os winnt? ] [ "images.gdiplus" require ] } - [ - "images.png" require - "images.tiff" require - ] -} cond ->> diff --git a/basis/ui/images/images.factor b/basis/ui/images/images.factor index 2ec04a532e..7084f1aac1 100644 --- a/basis/ui/images/images.factor +++ b/basis/ui/images/images.factor @@ -31,3 +31,13 @@ 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 +>> From a4e71b2cad73b3d273ddb4dbccfab578ac4bd50f Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Fri, 16 Jul 2010 11:47:23 -0700 Subject: [PATCH 23/23] alien.enums: make it so that define-enum assigns enum values again for non-parsed enum types --- basis/alien/enums/enums-tests.factor | 12 ++++++++++++ basis/alien/enums/enums.factor | 10 +++++++--- basis/alien/syntax/syntax.factor | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/basis/alien/enums/enums-tests.factor b/basis/alien/enums/enums-tests.factor index 52337594a1..a1813d632e 100644 --- a/basis/alien/enums/enums-tests.factor +++ b/basis/alien/enums/enums-tests.factor @@ -37,3 +37,15 @@ ENUM: instrument_t < ushort trombone trumpet ; 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 4ac7c24cb5..c568c2af4c 100644 --- a/basis/alien/enums/enums.factor +++ b/basis/alien/enums/enums.factor @@ -29,11 +29,11 @@ M: enum-c-type c-type-unboxer-quot drop [ enum>number ] ; M: enum-c-type c-type-setter [ enum>number ] swap base-type>> c-type-setter '[ _ 2dip @ ] ; -number "enum-value" set-word-prop ; + -: 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/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 ;