diff --git a/basis/alien/enums/enums-tests.factor b/basis/alien/enums/enums-tests.factor index f0c665830d..a7fd665e13 100644 --- a/basis/alien/enums/enums-tests.factor +++ b/basis/alien/enums/enums-tests.factor @@ -33,3 +33,19 @@ ENUM: instrument_t < ushort trombone trumpet ; { V{ { red 0 } { green 3 } { blue 4 } } } [ color_t "c-type" word-prop members>> ] unit-test + +ENUM: colores { rojo red } { verde green } { azul blue } { colorado rojo } ; + +[ { 0 3 4 0 } ] [ { rojo verde azul colorado } [ enum>number ] map ] unit-test + +SYMBOLS: couleurs rouge vert bleu jaune azure ; + +<< \ couleurs int { + { rouge red } + { vert green } + { bleu blue } + { jaune 14 } + { azure bleu } +} define-enum >> + +[ { 0 3 4 14 4 } ] [ { rouge vert bleu jaune azure } [ enum>number ] map ] unit-test diff --git a/basis/alien/enums/enums.factor b/basis/alien/enums/enums.factor index b0755c130b..5634805f5d 100644 --- a/basis/alien/enums/enums.factor +++ b/basis/alien/enums/enums.factor @@ -30,16 +30,13 @@ 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 @ ] ; +: define-enum-value ( class value -- ) + enum>number "enum-value" set-word-prop ; + > "<" ">" surround create-in ] keep @@ -47,10 +44,14 @@ M: enum-c-type c-type-setter PRIVATE> -: define-enum ( word base-type members -- ) +: (define-enum) ( word base-type members -- ) [ dup define-enum-constructor ] 2dip [ define-enum-members ] [ swap typedef ] bi ; + +: define-enum ( word base-type members -- ) + [ (define-enum) ] + [ [ define-enum-value ] assoc-each ] bi ; PREDICATE: enum-c-type-word < c-type-word "c-type" word-prop enum-c-type? ; diff --git a/basis/alien/parser/parser.factor b/basis/alien/parser/parser.factor index 6d0cbb79cc..09fedc5e3c 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 classes.parser ; +vocabs.parser words.constant classes.parser alien.enums ; IN: alien.parser SYMBOL: current-library @@ -84,7 +84,8 @@ M: pointer return-type-name to>> return-type-name CHAR: * suffix ; [ [ ] dip parse-pointers ] when ; : next-enum-member ( members name value -- members value' ) - [ 2array suffix! ] [ 1 + ] bi ; + [ define-enum-value ] + [ [ 2array suffix! ] [ enum>number 1 + ] bi ] 2bi ; : parse-enum-name ( -- name ) scan (CREATE-C-TYPE) dup save-location ; diff --git a/basis/alien/syntax/syntax.factor b/basis/alien/syntax/syntax.factor index 259f99a833..fe5a6dcadc 100755 --- a/basis/alien/syntax/syntax.factor +++ b/basis/alien/syntax/syntax.factor @@ -29,7 +29,7 @@ SYNTAX: TYPEDEF: scan-c-type CREATE-C-TYPE dup save-location typedef ; SYNTAX: ENUM: - parse-enum define-enum ; + parse-enum (define-enum) ; SYNTAX: C-TYPE: void CREATE-C-TYPE typedef ; diff --git a/basis/bit-arrays/bit-arrays-tests.factor b/basis/bit-arrays/bit-arrays-tests.factor index 46089e3f7b..3e9daa291d 100644 --- a/basis/bit-arrays/bit-arrays-tests.factor +++ b/basis/bit-arrays/bit-arrays-tests.factor @@ -2,6 +2,8 @@ USING: alien sequences sequences.private arrays bit-arrays kernel tools.test math random ; IN: bit-arrays.tests +[ -1 ] [ T{ bad-array-length f -1 } = ] must-fail-with + [ 100 ] [ 100 length ] unit-test [ diff --git a/basis/bit-arrays/bit-arrays.factor b/basis/bit-arrays/bit-arrays.factor index ade7d8ddac..6097bed4f9 100644 --- a/basis/bit-arrays/bit-arrays.factor +++ b/basis/bit-arrays/bit-arrays.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2007, 2010 Slava Pestov. +! Copyright (C) 2007, 2011 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.data accessors io.binary math math.bitwise alien.accessors kernel kernel.private sequences @@ -41,8 +41,12 @@ TUPLE: bit-array PRIVATE> +ERROR: bad-array-length n ; + : ( n -- bit-array ) - dup bits>bytes bit-array boa ; inline + dup 0 < [ bad-array-length ] when + dup bits>bytes + bit-array boa ; inline M: bit-array length length>> ; inline diff --git a/basis/cocoa/cocoa.factor b/basis/cocoa/cocoa.factor index fb21843c0f..53f22addcb 100644 --- a/basis/cocoa/cocoa.factor +++ b/basis/cocoa/cocoa.factor @@ -43,7 +43,9 @@ SYNTAX: IMPORT: scan [ ] import-objc-class ; "NSApplication" "NSArray" "NSAutoreleasePool" + "NSBitmapImageRep" "NSBundle" + "NSColorSpace" "NSData" "NSDictionary" "NSError" diff --git a/basis/cocoa/messages/messages.factor b/basis/cocoa/messages/messages.factor index 4d786aaf72..b607682e76 100644 --- a/basis/cocoa/messages/messages.factor +++ b/basis/cocoa/messages/messages.factor @@ -109,7 +109,7 @@ H{ { "d" c:double } { "B" c:bool } { "v" c:void } - { "*" c:c-string } + { "*" c:void* } { "?" unknown_type } { "@" id } { "#" Class } diff --git a/basis/gdk/pixbuf/ffi/ffi.factor b/basis/gdk/pixbuf/ffi/ffi.factor index 113cf8d0c8..2a4f64f042 100644 --- a/basis/gdk/pixbuf/ffi/ffi.factor +++ b/basis/gdk/pixbuf/ffi/ffi.factor @@ -1,12 +1,12 @@ ! Copyright (C) 2010 Anton Gorenko. ! See http://factorcode.org/license.txt for BSD license. -USING: alien alien.libraries alien.syntax combinators -gobject-introspection kernel system vocabs.loader ; +USING: alien alien.data alien.libraries alien.syntax +combinators gio.ffi glib.ffi gmodule.ffi gobject-introspection +gobject.ffi kernel libc sequences system ; +EXCLUDE: alien.c-types => pointer ; IN: gdk.pixbuf.ffi -<< "gio.ffi" require ->> LIBRARY: gdk.pixbuf @@ -18,3 +18,12 @@ LIBRARY: gdk.pixbuf >> GIR: vocab:gdk/pixbuf/GdkPixbuf-2.0.gir + +: data>GInputStream ( data -- GInputStream ) + [ malloc-byte-array &free ] [ length ] bi + f g_memory_input_stream_new_from_data ; + +: GInputStream>GdkPixbuf ( GInputStream -- GdkPixbuf ) + f { { pointer: GError initial: f } } + [ gdk_pixbuf_new_from_stream ] with-out-parameters + handle-GError ; diff --git a/basis/glib/ffi/ffi.factor b/basis/glib/ffi/ffi.factor index 860d34bb8d..5eefe08cd0 100644 --- a/basis/glib/ffi/ffi.factor +++ b/basis/glib/ffi/ffi.factor @@ -1,8 +1,9 @@ ! Copyright (C) 2010 Anton Gorenko. ! See http://factorcode.org/license.txt for BSD license. -USING: alien alien.destructors alien.libraries alien.syntax -combinators kernel gobject-introspection -gobject-introspection.standard-types system ; +USING: accessors alien alien.c-types alien.destructors +alien.libraries alien.strings alien.syntax combinators +gobject-introspection gobject-introspection.standard-types +io.encodings.utf8 kernel system vocabs.parser words ; IN: glib.ffi LIBRARY: glib @@ -15,7 +16,62 @@ LIBRARY: glib } cond >> -IMPLEMENT-STRUCTS: GPollFD GSource GSourceFuncs ; + +TYPEDEF: char gchar +TYPEDEF: uchar guchar +TYPEDEF: short gshort +TYPEDEF: ushort gushort +TYPEDEF: long glong +TYPEDEF: ulong gulong +TYPEDEF: int gint +TYPEDEF: uint guint + +<< +int c-type clone + [ >c-bool ] >>unboxer-quot + [ c-bool> ] >>boxer-quot + object >>boxed-class +"gboolean" current-vocab create typedef +>> + +TYPEDEF: char gint8 +TYPEDEF: uchar guint8 +TYPEDEF: short gint16 +TYPEDEF: ushort guint16 +TYPEDEF: int gint32 +TYPEDEF: uint guint32 +TYPEDEF: longlong gint64 +TYPEDEF: ulonglong guint64 + +TYPEDEF: float gfloat +TYPEDEF: double gdouble + +TYPEDEF: long ssize_t +TYPEDEF: long time_t +TYPEDEF: size_t gsize +TYPEDEF: ssize_t gssize +TYPEDEF: size_t GType + +TYPEDEF: void* gpointer +TYPEDEF: void* gconstpointer + +TYPEDEF: guint8 GDateDay +TYPEDEF: guint16 GDateYear +TYPEDEF: gint GPid +TYPEDEF: guint32 GQuark +TYPEDEF: gint32 GTime +TYPEDEF: glong gintptr +TYPEDEF: gint64 goffset +TYPEDEF: gulong guintptr +TYPEDEF: guint32 gunichar +TYPEDEF: guint16 gunichar2 + +TYPEDEF: gpointer pointer + +REPLACE-C-TYPE: long\sdouble double +REPLACE-C-TYPE: any gpointer + +IMPLEMENT-STRUCTS: GError GPollFD GSource GSourceFuncs ; CONSTANT: G_MININT8 HEX: -80 CONSTANT: G_MAXINT8 HEX: 7f @@ -38,3 +94,18 @@ DESTRUCTOR: g_free CALLBACK: gboolean GSourceFuncsPrepareFunc ( GSource* source, gint* timeout_ ) ; CALLBACK: gboolean GSourceFuncsCheckFunc ( GSource* source ) ; CALLBACK: gboolean GSourceFuncsDispatchFunc ( GSource* source, GSourceFunc callback, gpointer user_data ) ; + +ERROR: g-error domain code message ; + +: GError>g-error ( GError -- g-error ) + [ domain>> g_quark_to_string utf8 alien>string ] + [ code>> ] + [ message>> utf8 alien>string ] tri + \ g-error boa ; + +: handle-GError ( GError/f -- ) + [ + [ GError>g-error ] + [ g_error_free ] bi + throw + ] when* ; diff --git a/basis/images/cocoa/authors.txt b/basis/images/cocoa/authors.txt new file mode 100644 index 0000000000..f13c9c1e77 --- /dev/null +++ b/basis/images/cocoa/authors.txt @@ -0,0 +1 @@ +Joe Groff diff --git a/basis/images/cocoa/cocoa.factor b/basis/images/cocoa/cocoa.factor new file mode 100644 index 0000000000..115315aa18 --- /dev/null +++ b/basis/images/cocoa/cocoa.factor @@ -0,0 +1,66 @@ +! (c)2010 Joe Groff bsd license +USING: accessors alien.data cocoa cocoa.classes cocoa.messages +combinators core-foundation.data core-graphics.types fry images +images.loader io kernel literals math sequences ; +IN: images.cocoa + +SINGLETON: ns-image +"png" ns-image register-image-class +"tif" ns-image register-image-class +"tiff" ns-image register-image-class +"gif" ns-image register-image-class +"jpg" ns-image register-image-class +"jpeg" ns-image register-image-class +"bmp" ns-image register-image-class +"ico" ns-image register-image-class + +CONSTANT: NSImageRepLoadStatusUnknownType -1 +CONSTANT: NSImageRepLoadStatusReadingHeader -2 +CONSTANT: NSImageRepLoadStatusWillNeedAllData -3 +CONSTANT: NSImageRepLoadStatusInvalidData -4 +CONSTANT: NSImageRepLoadStatusUnexpectedEOF -5 +CONSTANT: NSImageRepLoadStatusCompleted -6 + +CONSTANT: NSColorRenderingIntentDefault 0 +CONSTANT: NSColorRenderingIntentAbsoluteColorimetric 1 +CONSTANT: NSColorRenderingIntentRelativeColorimetric 2 +CONSTANT: NSColorRenderingIntentPerceptual 3 +CONSTANT: NSColorRenderingIntentSaturation 4 + +ERROR: ns-image-unknown-type ; +ERROR: ns-image-invalid-data ; +ERROR: ns-image-unexpected-eof ; +ERROR: ns-image-planar-images-not-supported ; + + + +: load-image-rep ( -- image-rep ) + NSBitmapImageRep contents -> autorelease -> imageRepWithData: + NSColorSpace -> genericRGBColorSpace + NSColorRenderingIntentDefault + -> bitmapImageRepByConvertingToColorSpace:renderingIntent: ; + +: image-rep>image ( image-rep -- image ) + image new swap { + [ -> size CGSize>dim [ >integer ] map >>dim ] + [ -> bitmapData ] + [ -> bytesPerPlane memory>byte-array >>bitmap ] + } cleave + RGBA >>component-order + ubyte-components >>component-type + t >>premultiplied-alpha? + f >>upside-down? ; + +M: ns-image stream>image + drop + [ load-image-rep ] with-input-stream image-rep>image ; diff --git a/basis/images/cocoa/platforms.txt b/basis/images/cocoa/platforms.txt new file mode 100644 index 0000000000..6e806f449e --- /dev/null +++ b/basis/images/cocoa/platforms.txt @@ -0,0 +1 @@ +macosx diff --git a/basis/images/cocoa/summary.txt b/basis/images/cocoa/summary.txt new file mode 100644 index 0000000000..628cce90e9 --- /dev/null +++ b/basis/images/cocoa/summary.txt @@ -0,0 +1 @@ +Image loading using MacOS X's native Cocoa APIs diff --git a/basis/images/gdiplus/gdiplus.factor b/basis/images/gdiplus/gdiplus.factor new file mode 100644 index 0000000000..97bc52375f --- /dev/null +++ b/basis/images/gdiplus/gdiplus.factor @@ -0,0 +1,63 @@ +! (c)2010 Joe Groff bsd license +USING: accessors alien.c-types alien.data alien.enums +classes.struct destructors images images.loader +io.streams.limited kernel locals math windows.com +windows.gdiplus windows.streams windows.types typed +byte-arrays grouping sequences ; +IN: images.gdiplus + +SINGLETON: gdi+-image +"png" gdi+-image register-image-class +"tif" gdi+-image register-image-class +"tiff" gdi+-image register-image-class +"gif" gdi+-image register-image-class +"jpg" gdi+-image register-image-class +"jpeg" gdi+-image register-image-class +"bmp" gdi+-image register-image-class +"ico" gdi+-image register-image-class + + ( x y w h -- rect ) + GpRect ; inline + +: stream>gdi+-bitmap ( stream -- bitmap ) + stream>IStream &com-release + { void* } [ GdipCreateBitmapFromStream check-gdi+-status ] + [ ] with-out-parameters &GdipFree ; + +: gdi+-bitmap-width ( bitmap -- w ) + { UINT } [ GdipGetImageWidth check-gdi+-status ] + [ ] with-out-parameters ; +: gdi+-bitmap-height ( bitmap -- w ) + { UINT } [ GdipGetImageHeight check-gdi+-status ] + [ ] with-out-parameters ; +: gdi+-lock-bitmap ( bitmap rect mode format -- data ) + { BitmapData } [ GdipBitmapLockBits check-gdi+-status ] + [ clone ] with-out-parameters ; + +:: gdi+-bitmap>data ( bitmap -- w h pixels ) + bitmap [ gdi+-bitmap-width ] [ gdi+-bitmap-height ] bi :> ( w h ) + bitmap 0 0 w h ImageLockModeRead enum>number + PixelFormat32bppARGB gdi+-lock-bitmap :> bitmap-data + bitmap-data [ Scan0>> ] [ Stride>> ] [ Height>> * ] tri + memory>byte-array :> pixels + bitmap bitmap-data GdipBitmapUnlockBits check-gdi+-status + w h pixels ; + +:: data>image ( w h pixels -- image ) + image new + { w h } >>dim + pixels >>bitmap + BGRA >>component-order + ubyte-components >>component-type + f >>upside-down? ; + +PRIVATE> + +M: gdi+-image stream>image + drop [ + start-gdi+ &stop-gdi+ drop + stream>gdi+-bitmap + gdi+-bitmap>data + data>image + ] with-destructors ; diff --git a/basis/images/gdiplus/platforms.txt b/basis/images/gdiplus/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/images/gdiplus/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/images/gtk/authors.txt b/basis/images/gtk/authors.txt new file mode 100644 index 0000000000..156a81af57 --- /dev/null +++ b/basis/images/gtk/authors.txt @@ -0,0 +1 @@ +Philipp Brüschweiler diff --git a/basis/images/gtk/gtk.factor b/basis/images/gtk/gtk.factor new file mode 100644 index 0000000000..4957a4d216 --- /dev/null +++ b/basis/images/gtk/gtk.factor @@ -0,0 +1,68 @@ +! Copyright (C) 2010 Philipp Brüschweiler. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors alien.c-types alien.data arrays combinators +destructors gdk.pixbuf.ffi gobject.ffi grouping images +images.loader io kernel locals math sequences +specialized-arrays ; +IN: images.gtk +SPECIALIZED-ARRAY: uchar + +SINGLETON: gtk-image +"png" gtk-image register-image-class +"tif" gtk-image register-image-class +"tiff" gtk-image register-image-class +"gif" gtk-image register-image-class +"jpg" gtk-image register-image-class +"jpeg" gtk-image register-image-class +"bmp" gtk-image register-image-class +"ico" gtk-image register-image-class + + ( pixels w h rowstride channels bps ) + bps channels * 7 + 8 /i w * :> bytes-per-row + + bytes-per-row rowstride = + [ pixels h rowstride * memory>byte-array ] + [ + pixels rowstride h * + rowstride + [ bytes-per-row head-slice ] map concat + ] if + ] ; + +: component-type ( GdkPixbuf -- component-type ) + gdk_pixbuf_get_bits_per_sample { + { 8 [ ubyte-components ] } + { 16 [ ushort-components ] } + { 32 [ uint-components ] } + } case ; + +: GdkPixbuf>image ( GdkPixbuf -- image ) + [ image new ] dip + { + [ [ gdk_pixbuf_get_width ] [ gdk_pixbuf_get_height ] bi 2array >>dim ] + [ image-data >>bitmap ] + [ gdk_pixbuf_get_has_alpha RGBA RGB ? >>component-order ] + [ component-type >>component-type ] + } cleave + f >>premultiplied-alpha? + f >>upside-down? ; + +PRIVATE> + +M: gtk-image stream>image + drop [ + stream-contents data>GInputStream &g_object_unref + GInputStream>GdkPixbuf &g_object_unref + GdkPixbuf>image + ] with-destructors ; diff --git a/basis/images/gtk/platforms.txt b/basis/images/gtk/platforms.txt new file mode 100644 index 0000000000..a26481a4e1 --- /dev/null +++ b/basis/images/gtk/platforms.txt @@ -0,0 +1,2 @@ +linux +bsd diff --git a/basis/images/gtk/summary.txt b/basis/images/gtk/summary.txt new file mode 100644 index 0000000000..7813e5636c --- /dev/null +++ b/basis/images/gtk/summary.txt @@ -0,0 +1 @@ +Image loading using GTK's GdkPixbuf API diff --git a/basis/images/images-tests.factor b/basis/images/images-tests.factor index ff49834a65..1fda9b3b81 100644 --- a/basis/images/images-tests.factor +++ b/basis/images/images-tests.factor @@ -3,7 +3,7 @@ USING: images tools.test kernel accessors ; IN: images.tests -[ B{ 57 57 57 255 } ] [ 1 1 T{ image f { 2 3 } RGBA ubyte-components f B{ +[ B{ 57 57 57 255 } ] [ 1 1 T{ image f { 2 3 } RGBA ubyte-components f f B{ 0 0 0 0 0 0 0 0 0 0 0 0 @@ -19,7 +19,7 @@ IN: images.tests 57 57 57 255 0 0 0 0 0 0 0 0 -} ] [ B{ 57 57 57 255 } 1 1 T{ image f { 2 3 } RGBA ubyte-components f B{ +} ] [ B{ 57 57 57 255 } 1 1 T{ image f { 2 3 } RGBA ubyte-components f f B{ 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/basis/images/images.factor b/basis/images/images.factor index 99f0bb91b9..d033186fc0 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/images/tesselation/tesselation-tests.factor b/basis/images/tesselation/tesselation-tests.factor index 9db58649a0..5999c15d5c 100644 --- a/basis/images/tesselation/tesselation-tests.factor +++ b/basis/images/tesselation/tesselation-tests.factor @@ -10,12 +10,12 @@ IN: images.tesselation [ { { - T{ image f { 2 2 } L ubyte-components f B{ 1 2 5 6 } } - T{ image f { 2 2 } L ubyte-components f B{ 3 4 7 8 } } + T{ image f { 2 2 } L ubyte-components f f B{ 1 2 5 6 } } + T{ image f { 2 2 } L ubyte-components f f B{ 3 4 7 8 } } } { - T{ image f { 2 2 } L ubyte-components f B{ 9 10 13 14 } } - T{ image f { 2 2 } L ubyte-components f B{ 11 12 15 16 } } + T{ image f { 2 2 } L ubyte-components f f B{ 9 10 13 14 } } + T{ image f { 2 2 } L ubyte-components f f B{ 11 12 15 16 } } } } ] [ @@ -30,12 +30,12 @@ IN: images.tesselation [ { { - T{ image f { 2 2 } L ubyte-components f B{ 1 2 4 5 } } - T{ image f { 1 2 } L ubyte-components f B{ 3 6 } } + T{ image f { 2 2 } L ubyte-components f f B{ 1 2 4 5 } } + T{ image f { 1 2 } L ubyte-components f f B{ 3 6 } } } { - T{ image f { 2 1 } L ubyte-components f B{ 7 8 } } - T{ image f { 1 1 } L ubyte-components f B{ 9 } } + T{ image f { 2 1 } L ubyte-components f f B{ 7 8 } } + T{ image f { 1 1 } L ubyte-components f f B{ 9 } } } } ] [ diff --git a/basis/nibble-arrays/nibble-arrays-tests.factor b/basis/nibble-arrays/nibble-arrays-tests.factor index 363f30678d..92a38e509b 100644 --- a/basis/nibble-arrays/nibble-arrays-tests.factor +++ b/basis/nibble-arrays/nibble-arrays-tests.factor @@ -1,6 +1,8 @@ USING: nibble-arrays tools.test sequences kernel math ; IN: nibble-arrays.tests +[ -1 ] [ T{ bad-array-length f -1 } = ] must-fail-with + [ t ] [ 16 iota dup >nibble-array sequence= ] unit-test [ N{ 4 2 1 3 } ] [ N{ 3 1 2 4 } reverse ] unit-test [ N{ 1 4 9 0 9 4 } ] [ N{ 1 2 3 4 5 6 } [ sq ] map ] unit-test diff --git a/basis/nibble-arrays/nibble-arrays.factor b/basis/nibble-arrays/nibble-arrays.factor index 712b62f20b..0e7298165c 100644 --- a/basis/nibble-arrays/nibble-arrays.factor +++ b/basis/nibble-arrays/nibble-arrays.factor @@ -30,7 +30,10 @@ CONSTANT: nibble BIN: 1111 PRIVATE> +ERROR: bad-array-length n ; + : ( n -- nibble-array ) + dup 0 < [ bad-array-length ] when dup nibbles>bytes nibble-array boa ; inline M: nibble-array length length>> ; diff --git a/basis/opengl/textures/textures.factor b/basis/opengl/textures/textures.factor index f33ea9e47d..0aaa9dcf9b 100644 --- a/basis/opengl/textures/textures.factor +++ b/basis/opengl/textures/textures.factor @@ -312,12 +312,21 @@ TUPLE: single-texture < disposable image dim loc texture-coords texture display- [ init-texture texture-coords>> gl-texture-coord-pointer ] tri swap gl-fill-rect ; +: set-blend-mode ( texture -- ) + image>> dup has-alpha? + [ premultiplied-alpha?>> [ GL_ONE GL_ONE_MINUS_SRC_ALPHA glBlendFunc ] when ] + [ drop GL_BLEND glDisable ] if ; + +: reset-blend-mode ( texture -- ) + image>> dup has-alpha? + [ premultiplied-alpha?>> [ GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA glBlendFunc ] when ] + [ drop GL_BLEND glEnable ] if ; + : draw-textured-rect ( dim texture -- ) [ - [ image>> has-alpha? [ GL_BLEND glDisable ] unless ] + [ set-blend-mode ] [ (draw-textured-rect) GL_TEXTURE_2D 0 glBindTexture ] - [ image>> has-alpha? [ GL_BLEND glEnable ] unless ] - tri + [ reset-blend-mode ] tri ] with-texturing ; : texture-coords ( texture -- coords ) diff --git a/basis/tools/deploy/shaker/shaker.factor b/basis/tools/deploy/shaker/shaker.factor index 2329b06b13..dca9345cd1 100755 --- a/basis/tools/deploy/shaker/shaker.factor +++ b/basis/tools/deploy/shaker/shaker.factor @@ -100,6 +100,13 @@ IN: tools.deploy.shaker run-file ] when ; +: strip-gtk-icon ( -- ) + "ui.backend.gtk" vocab [ + "Stripping GTK icon loading code" show + "vocab:tools/deploy/shaker/strip-gtk-icon.factor" + run-file + ] when ; + : strip-specialized-arrays ( -- ) strip-dictionary? "specialized-arrays" vocab and [ "Stripping specialized arrays" show @@ -542,6 +549,7 @@ SYMBOL: deploy-vocab strip-call strip-cocoa strip-gobject + strip-gtk-icon strip-debugger strip-ui-error-hook strip-specialized-arrays diff --git a/basis/tools/deploy/shaker/strip-gtk-icon.factor b/basis/tools/deploy/shaker/strip-gtk-icon.factor new file mode 100644 index 0000000000..c472b3e020 --- /dev/null +++ b/basis/tools/deploy/shaker/strip-gtk-icon.factor @@ -0,0 +1,13 @@ +! Copyright (C) 2010 Philipp Brüschweiler +! See http://factorcode.org/license.txt for BSD license. +USING: kernel tools.deploy.shaker literals namespaces +vocabs.loader io.pathnames io.files io.encodings.binary ; +IN: ui.backend.gtk + +CONSTANT: get-icon-data + $[ + deploy-vocab get + dup vocab-dir "icon.png" append-path vocab-append-path + [ exists? ] keep "resource:misc/icons/Factor_48x48.png" ? + binary file-contents + ] diff --git a/basis/tools/deploy/unix/unix.factor b/basis/tools/deploy/unix/unix.factor index 1b6b8596e2..95abb0d875 100644 --- a/basis/tools/deploy/unix/unix.factor +++ b/basis/tools/deploy/unix/unix.factor @@ -1,9 +1,8 @@ ! Copyright (C) 2008 James Cash ! See http://factorcode.org/license.txt for BSD license. -USING: io io.pathnames io.directories io.files -io.files.info.unix io.backend kernel namespaces make sequences -system tools.deploy.backend tools.deploy.config -tools.deploy.config.editor assocs hashtables prettyprint ; +USING: io io.backend io.directories io.files.info.unix kernel +namespaces sequences system tools.deploy.backend +tools.deploy.config tools.deploy.config.editor ; IN: tools.deploy.unix : create-app-dir ( vocab bundle-name -- vm ) @@ -14,12 +13,12 @@ IN: tools.deploy.unix deploy-name get ; M: unix deploy* ( vocab -- ) - "." resource-path [ + "resource:" [ dup deploy-config [ [ bundle-name create-app-dir ] keep [ bundle-name image-name ] keep namespace make-deploy-image bundle-name "" [ copy-resources ] [ copy-libraries ] 3bi - bundle-name normalize-path [ "Binary deployed to " % % "." % ] "" make print + bundle-name normalize-path "Binary deployed to " "." surround print ] bind ] with-directory ; diff --git a/basis/ui/backend/gtk/gtk.factor b/basis/ui/backend/gtk/gtk.factor index fba30fc15a..fe2732fb9f 100644 --- a/basis/ui/backend/gtk/gtk.factor +++ b/basis/ui/backend/gtk/gtk.factor @@ -3,14 +3,18 @@ USING: accessors alien.accessors alien.c-types alien.data alien.strings arrays assocs classes.struct command-line continuations destructors environment gdk.ffi gdk.gl.ffi -glib.ffi gobject-introspection.standard-types gobject.ffi -gtk.ffi gtk.gl.ffi io.encodings.utf8 kernel libc literals locals -math math.bitwise math.order math.vectors namespaces sequences -strings system threads ui ui.backend ui.backend.gtk.input-methods -ui.backend.gtk.io ui.clipboards ui.event-loop ui.gadgets -ui.gadgets.private ui.gadgets.worlds ui.gestures -ui.pixel-formats ui.pixel-formats.private ui.private -vocabs.loader combinators prettyprint io ; +gdk.pixbuf.ffi glib.ffi +gobject-introspection.standard-types +gobject.ffi gtk.ffi gtk.gl.ffi io.backend +io.backend.unix.multiplexers io.encodings.binary +io.encodings.utf8 io.files io.thread kernel libc literals +locals math math.bitwise math.order math.vectors namespaces +sequences strings system threads ui ui.backend ui.backend.gtk.input-methods +ui.backend.gtk.io ui.clipboards +ui.commands ui.event-loop ui.gadgets ui.gadgets.editors +ui.gadgets.menus ui.gadgets.private ui.gadgets.worlds +ui.gestures ui.pixel-formats ui.pixel-formats.private +ui.private vocabs.loader combinators io ; IN: ui.backend.gtk SINGLETON: gtk-ui-backend @@ -156,9 +160,6 @@ CONSTANT: action-key-codes { $ GDK_SCROLL_RIGHT { 1 0 } } } at ; -: mouse-event>gesture ( event -- modifiers button loc ) - [ event-modifiers ] [ button>> ] [ event-loc ] tri ; - : on-motion ( win event user-data -- ? ) drop swap [ event-loc ] dip window @@ -169,23 +170,33 @@ CONSTANT: action-key-codes :: on-button-press ( win event user-data -- ? ) win window :> world - event mouse-event>gesture :> ( modifiers button loc ) - button { - { 8 [ ] } - { 9 [ ] } - [ modifiers swap loc world - send-button-down ] - } case t ; + event type>> GDK_BUTTON_PRESS = [ + event button>> { + { 8 [ ] } + { 9 [ ] } + [ + event event-modifiers swap + event event-loc + world + send-button-down + ] + } case + ] when t ; :: on-button-release ( win event user-data -- ? ) win window :> world - event mouse-event>gesture :> ( modifiers button loc ) - button { - { 8 [ world left-action send-action ] } - { 9 [ world right-action send-action ] } - [ modifiers swap loc world - send-button-up ] - } case t ; + event type>> GDK_BUTTON_RELEASE = [ + event button>> { + { 8 [ world left-action send-action ] } + { 9 [ world right-action send-action ] } + [ + event event-modifiers swap + event event-loc + world + send-button-up + ] + } case + ] when t ; : on-scroll ( win event user-data -- ? ) drop swap [ @@ -198,7 +209,7 @@ CONSTANT: action-key-codes : key-event>gesture ( event -- mods sym/f action? ) [ event-modifiers ] [ key-sym ] bi ; - + : on-key-press ( win event user-data -- ? ) drop swap [ key-event>gesture ] [ window ] bi* propagate-key-gesture t ; @@ -213,6 +224,17 @@ CONSTANT: action-key-codes : on-focus-out ( win event user-data -- ? ) 2drop window unfocus-world t ; +! This word gets replaced when deploying. See 'Vocabulary icons' +! in the docs and tools.deploy.shaker.gtk-icon +: get-icon-data ( -- byte-array ) + "resource:misc/icons/Factor_48x48.png" binary file-contents ; + +: load-icon ( -- ) + get-icon-data [ + data>GInputStream &g_object_unref + GInputStream>GdkPixbuf gtk_window_set_default_icon + ] with-destructors ; + :: connect-user-input-signals ( win -- ) win events-mask gtk_widget_add_events win "motion-notify-event" [ on-motion yield ] @@ -303,7 +325,7 @@ CONSTANT: action-key-codes :: configure-im ( win im -- ) im win gtk_widget_get_window gtk_im_context_set_client_window im f gtk_im_context_set_use_preedit - + im "commit" [ on-commit yield ] GtkIMContext:commit win connect-signal-with-data im "retrieve-surrounding" [ on-retrieve-surrounding yield ] @@ -334,7 +356,7 @@ CONSTANT: window-controls>decor-flags { normal-title-bar $ GDK_DECOR_TITLE } { textured-background 0 } } - + CONSTANT: window-controls>func-flags H{ { close-button $ GDK_FUNC_CLOSE } @@ -429,18 +451,18 @@ M:: gtk-ui-backend (open-window) ( world -- ) win im world handle<< world win register-window - + win world [ window-loc>> auto-position ] [ dim>> first2 gtk_window_set_default_size ] 2bi win "factor" "Factor" [ utf8 string>alien ] bi@ gtk_window_set_wmclass - + world configure-gl win gtk_widget_realize win world window-controls>> configure-window-controls - + win im configure-im win connect-user-input-signals win connect-win-state-signals @@ -463,7 +485,7 @@ M: gtk-ui-backend (set-fullscreen) M: gtk-ui-backend (fullscreen?) handle>> fullscreen?>> ; - + M: gtk-ui-backend raise-window* handle>> window>> gtk_window_present ; @@ -502,6 +524,7 @@ M: gtk-ui-backend (with-ui) [ 0 gint f void* gtk_init 0 gint f void* gtk_gl_init + load-icon init-clipboard start-ui [ diff --git a/basis/ui/gadgets/glass/glass.factor b/basis/ui/gadgets/glass/glass.factor index d6b87193ca..34c641040e 100644 --- a/basis/ui/gadgets/glass/glass.factor +++ b/basis/ui/gadgets/glass/glass.factor @@ -45,7 +45,7 @@ PRIVATE> : show-glass ( owner child visible-rect -- ) - dup gadget-child hand-clicked set + dup gadget-child hand-clicked set-global dup owner>> find-world add-glass ; \ glass H{ diff --git a/basis/ui/images/images.factor b/basis/ui/images/images.factor index b97a5c14fe..e5d81b8ccc 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,11 @@ PRIVATE> : image-dim ( image-name -- dim ) cached-image dim>> ; + +<< +{ + { [ os macosx? ] [ "images.cocoa" require ] } + { [ os winnt? ] [ "images.gdiplus" require ] } + [ "images.gtk" require ] +} cond +>> diff --git a/basis/windows/com/com.factor b/basis/windows/com/com.factor index e4b6d1e85a..7bdf8d1a9f 100644 --- a/basis/windows/com/com.factor +++ b/basis/windows/com/com.factor @@ -1,6 +1,6 @@ USING: alien alien.c-types alien.destructors windows.com.syntax windows.ole32 windows.types continuations kernel alien.syntax -libc destructors accessors alien.data ; +libc destructors accessors alien.data classes.struct windows.kernel32 ; IN: windows.com LIBRARY: ole32 @@ -31,6 +31,55 @@ COM-INTERFACE: IDropTarget IUnknown {00000122-0000-0000-C000-000000000046} HRESULT DragLeave ( ) HRESULT Drop ( IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect ) ; +COM-INTERFACE: ISequentialStream IUnknown {0C733A30-2A1C-11CE-ADE5-00AA0044773D} + HRESULT Read ( void* pv, ULONG cb, ULONG* pcbRead ) + HRESULT Write ( void* pv, ULONG cb, ULONG* pcbWritten ) ; + +STRUCT: STATSTG + { pwcsName LPOLESTR } + { type DWORD } + { cbSize ULARGE_INTEGER } + { mtime FILETIME } + { ctime FILETIME } + { atime FILETIME } + { grfMode DWORD } + { grfLocksSupported DWORD } + { clsid CLSID } + { grfStateBits DWORD } + { reserved DWORD } ; + +CONSTANT: STGM_READ 0 +CONSTANT: STGM_WRITE 1 +CONSTANT: STGM_READWRITE 2 + +CONSTANT: STG_E_INVALIDFUNCTION HEX: 80030001 + +CONSTANT: STGTY_STORAGE 1 +CONSTANT: STGTY_STREAM 2 +CONSTANT: STGTY_LOCKBYTES 3 +CONSTANT: STGTY_PROPERTY 4 + +CONSTANT: STREAM_SEEK_SET 0 +CONSTANT: STREAM_SEEK_CUR 1 +CONSTANT: STREAM_SEEK_END 2 + +CONSTANT: LOCK_WRITE 1 +CONSTANT: LOCK_EXCLUSIVE 2 +CONSTANT: LOCK_ONLYONCE 4 + +CONSTANT: GUID_NULL GUID: {00000000-0000-0000-0000-000000000000} + +COM-INTERFACE: IStream ISequentialStream {0000000C-0000-0000-C000-000000000046} + HRESULT Seek ( LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition ) + HRESULT SetSize ( ULARGE_INTEGER* libNewSize ) + HRESULT CopyTo ( IStream* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten ) + HRESULT Commit ( DWORD grfCommitFlags ) + HRESULT Revert ( ) + HRESULT LockRegion ( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType ) + HRESULT UnlockRegion ( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType ) + HRESULT Stat ( STATSTG* pstatstg, DWORD grfStatFlag ) + HRESULT Clone ( IStream** ppstm ) ; + FUNCTION: HRESULT RegisterDragDrop ( HWND hWnd, IDropTarget* pDropTarget ) ; FUNCTION: HRESULT RevokeDragDrop ( HWND hWnd ) ; FUNCTION: void ReleaseStgMedium ( LPSTGMEDIUM pmedium ) ; @@ -50,3 +99,5 @@ FUNCTION: void ReleaseStgMedium ( LPSTGMEDIUM pmedium ) ; over [ com-release ] curry [ ] cleanup ; inline DESTRUCTOR: com-release + + diff --git a/basis/windows/gdiplus/gdiplus.factor b/basis/windows/gdiplus/gdiplus.factor new file mode 100644 index 0000000000..66300f9a90 --- /dev/null +++ b/basis/windows/gdiplus/gdiplus.factor @@ -0,0 +1,1649 @@ +! (c)2010 Joe Groff bsd license +USING: alien.c-types alien.data alien.destructors alien.syntax +classes.struct kernel math windows.com windows.com.syntax +windows.kernel32 windows.ole32 windows.types ; +FROM: alien.c-types => float ; +IN: windows.gdiplus + +LIBRARY: gdiplus + +FUNCTION: void* GdipAlloc ( SIZE_T size ) ; +FUNCTION: void GdipFree ( void* mem ) ; + +DESTRUCTOR: GdipFree + +TYPEDEF: float REAL + +ENUM: GpStatus + { Ok 0 } + { GenericError 1 } + { InvalidParameter 2 } + { OutOfMemory 3 } + { ObjectBusy 4 } + { InsufficientBuffer 5 } + { NotImplemented 6 } + { Win32Error 7 } + { WrongState 8 } + { Aborted 9 } + { FileNotFound 10 } + { ValueOverflow 11 } + { AccessDenied 12 } + { UnknownImageFormat 13 } + { FontFamilyNotFound 14 } + { FontStyleNotFound 15 } + { NotTrueTypeFont 16 } + { UnsupportedGdiplusVersion 17 } + { GdiplusNotInitialized 18 } + { PropertyNotFound 19 } + { PropertyNotSupported 20 } + { ProfileNotFound 21 } ; + +CALLBACK: BOOL ImageAbort ( void* data ) ; +TYPEDEF: ImageAbort DrawImageAbort +TYPEDEF: ImageAbort GetThumbnailImageAbort + +STRUCT: GpPoint + { X INT } + { Y INT } ; + +STRUCT: GpPointF + { X REAL } + { Y REAL } ; + +STRUCT: GpPathData + { Count INT } + { Points GpPointF* } + { Types BYTE* } ; + +STRUCT: GpRectF + { X REAL } + { Y REAL } + { Width REAL } + { Height REAL } ; + +STRUCT: GpRect + { X INT } + { Y INT } + { Width INT } + { Height INT } ; + +STRUCT: CharacterRange + { First INT } + { Length INT } ; + +TYPEDEF: UINT GraphicsState +TYPEDEF: UINT GraphicsContainer + +ENUM: GpUnit + { UnitWorld 0 } + { UnitDisplay 1 } + { UnitPixel 2 } + { UnitPoint 3 } + { UnitInch 4 } + { UnitDocument 5 } + { UnitMillimeter 6 } ; + +ENUM: GpBrushType + { BrushTypeSolidColor 0 } + { BrushTypeHatchFill 1 } + { BrushTypeTextureFill 2 } + { BrushTypePathGradient 3 } + { BrushTypeLinearGradient 4 } ; + +ENUM: GpFillMode + { FillModeAlternate 0 } + { FillModeWinding 1 } ; + +ENUM: GpLineCap + { LineCapFlat HEX: 00 } + { LineCapSquare HEX: 01 } + { LineCapRound HEX: 02 } + { LineCapTriangle HEX: 03 } + + { LineCapNoAnchor HEX: 10 } + { LineCapSquareAnchor HEX: 11 } + { LineCapRoundAnchor HEX: 12 } + { LineCapDiamondAnchor HEX: 13 } + { LineCapArrowAnchor HEX: 14 } + + { LineCapCustom HEX: ff } + { LineCapAnchorMask HEX: f0 } ; + +ENUM: PathPointType + { PathPointTypeStart 0 } + { PathPointTypeLine 1 } + { PathPointTypeBezier 3 } + { PathPointTypePathTypeMask 7 } + { PathPointTypePathDashMode 16 } + { PathPointTypePathMarker 32 } + { PathPointTypeCloseSubpath 128 } + { PathPointTypeBezier3 3 } ; + +ENUM: GpPenType + { PenTypeSolidColor BrushTypeSolidColor } + { PenTypeHatchFill BrushTypeHatchFill } + { PenTypeTextureFill BrushTypeTextureFill } + { PenTypePathGradient BrushTypePathGradient } + { PenTypeLinearGradient BrushTypeLinearGradient } + { PenTypeUnknown -1 } ; + +ENUM: GpLineJoin + { LineJoinMiter 0 } + { LineJoinBevel 1 } + { LineJoinRound 2 } + { LineJoinMiterClipped 3 } ; + +ENUM: QualityMode + { QualityModeInvalid -1 } + { QualityModeDefault 0 } + { QualityModeLow 1 } + { QualityModeHigh 2 } ; + +ENUM: SmoothingMode + { SmoothingModeInvalid QualityModeInvalid } + { SmoothingModeDefault QualityModeDefault } + { SmoothingModeHighSpeed QualityModeLow } + { SmoothingModeHighQuality QualityModeHigh } + SmoothingModeNone + SmoothingModeAntiAlias ; + +ENUM: CompositingQuality + { CompositingQualityInvalid QualityModeInvalid } + { CompositingQualityDefault QualityModeDefault } + { CompositingQualityHighSpeed QualityModeLow } + { CompositingQualityHighQuality QualityModeHigh } + CompositingQualityGammaCorrected + CompositingQualityAssumeLinear ; + +ENUM: InterpolationMode + { InterpolationModeInvalid QualityModeInvalid } + { InterpolationModeDefault QualityModeDefault } + { InterpolationModeLowQuality QualityModeLow } + { InterpolationModeHighQuality QualityModeHigh } + InterpolationModeBilinear + InterpolationModeBicubic + InterpolationModeNearestNeighbor + InterpolationModeHighQualityBilinear + InterpolationModeHighQualityBicubic ; + +ENUM: GpPenAlignment + { PenAlignmentCenter 0 } + { PenAlignmentInset 1 } ; + +ENUM: PixelOffsetMode + { PixelOffsetModeInvalid QualityModeInvalid } + { PixelOffsetModeDefault QualityModeDefault } + { PixelOffsetModeHighSpeed QualityModeLow } + { PixelOffsetModeHighQuality QualityModeHigh } + PixelOffsetModeNone + PixelOffsetModeHalf ; + +ENUM: GpDashCap + { DashCapFlat 0 } + { DashCapRound 2 } + { DashCapTriangle 3 } ; + +ENUM: GpDashStyle + DashStyleSolid + DashStyleDash + DashStyleDot + DashStyleDashDot + DashStyleDashDotDot + DashStyleCustom ; + +ENUM: GpMatrixOrder + { MatrixOrderPrepend 0 } + { MatrixOrderAppend 1 } ; + +ENUM: ImageType + ImageTypeUnknown + ImageTypeBitmap + ImageTypeMetafile ; + +ENUM: WarpMode + WarpModePerspective + WarpModeBilinear ; + +ENUM: GpWrapMode + WrapModeTile + WrapModeTileFlipX + WrapModeTileFlipY + WrapModeTileFlipXY + WrapModeClamp ; + +ENUM: MetafileType + MetafileTypeInvalid + MetafileTypeWmf + MetafileTypeWmfPlaceable + MetafileTypeEmf + MetafileTypeEmfPlusOnly + MetafileTypeEmfPlusDual ; + +ENUM: LinearGradientMode + LinearGradientModeHorizontal + LinearGradientModeVertical + LinearGradientModeForwardDiagonal + LinearGradientModeBackwardDiagonal ; + +ENUM: EmfType + { EmfTypeEmfOnly MetafileTypeEmf } + { EmfTypeEmfPlusOnly MetafileTypeEmfPlusOnly } + { EmfTypeEmfPlusDual MetafileTypeEmfPlusDual } ; + +ENUM: CompositingMode + CompositingModeSourceOver + CompositingModeSourceCopy ; + +ENUM: TextRenderingHint + { TextRenderingHintSystemDefault 0 } + TextRenderingHintSingleBitPerPixelGridFit + TextRenderingHintSingleBitPerPixel + TextRenderingHintAntiAliasGridFit + TextRenderingHintAntiAlias + TextRenderingHintClearTypeGridFit ; + +ENUM: StringAlignment + { StringAlignmentNear 0 } + { StringAlignmentCenter 1 } + { StringAlignmentFar 2 } ; + +ENUM: StringDigitSubstitute + { StringDigitSubstituteUser 0 } + { StringDigitSubstituteNone 1 } + { StringDigitSubstituteNational 2 } + { StringDigitSubstituteTraditional 3 } ; + +ENUM: StringFormatFlags + { StringFormatFlagsDirectionRightToLeft HEX: 00000001 } + { StringFormatFlagsDirectionVertical HEX: 00000002 } + { StringFormatFlagsNoFitBlackBox HEX: 00000004 } + { StringFormatFlagsDisplayFormatControl HEX: 00000020 } + { StringFormatFlagsNoFontFallback HEX: 00000400 } + { StringFormatFlagsMeasureTrailingSpaces HEX: 00000800 } + { StringFormatFlagsNoWrap HEX: 00001000 } + { StringFormatFlagsLineLimit HEX: 00002000 } + { StringFormatFlagsNoClip HEX: 00004000 } ; + +ENUM: StringTrimming + { StringTrimmingNone 0 } + { StringTrimmingCharacter 1 } + { StringTrimmingWord 2 } + { StringTrimmingEllipsisCharacter 3 } + { StringTrimmingEllipsisWord 4 } + { StringTrimmingEllipsisPath 5 } ; + +ENUM: FontStyle + { FontStyleRegular 0 } + { FontStyleBold 1 } + { FontStyleItalic 2 } + { FontStyleBoldItalic 3 } + { FontStyleUnderline 4 } + { FontStyleStrikeout 8 } ; + +ENUM: HotkeyPrefix + { HotkeyPrefixNone 0 } + { HotkeyPrefixShow 1 } + { HotkeyPrefixHide 2 } ; + +ENUM: PaletteFlags + { PaletteFlagsHasAlpha 1 } + { PaletteFlagsGrayScale 2 } + { PaletteFlagsHalftone 4 } ; + +ENUM: ImageCodecFlags + { ImageCodecFlagsEncoder 1 } + { ImageCodecFlagsDecoder 2 } + { ImageCodecFlagsSupportBitmap 4 } + { ImageCodecFlagsSupportVector 8 } + { ImageCodecFlagsSeekableEncode 16 } + { ImageCodecFlagsBlockingDecode 32 } + { ImageCodecFlagsBuiltin 65536 } + { ImageCodecFlagsSystem 131072 } + { ImageCodecFlagsUser 262144 } ; + +ENUM: ImageFlags + { ImageFlagsNone 0 } + { ImageFlagsScalable HEX: 0001 } + { ImageFlagsHasAlpha HEX: 0002 } + { ImageFlagsHasTranslucent HEX: 0004 } + { ImageFlagsPartiallyScalable HEX: 0008 } + { ImageFlagsColorSpaceRGB HEX: 0010 } + { ImageFlagsColorSpaceCMYK HEX: 0020 } + { ImageFlagsColorSpaceGRAY HEX: 0040 } + { ImageFlagsColorSpaceYCBCR HEX: 0080 } + { ImageFlagsColorSpaceYCCK HEX: 0100 } + { ImageFlagsHasRealDPI HEX: 1000 } + { ImageFlagsHasRealPixelSize HEX: 2000 } + { ImageFlagsReadOnly HEX: 00010000 } + { ImageFlagsCaching HEX: 00020000 } ; + +ENUM: CombineMode + CombineModeReplace + CombineModeIntersect + CombineModeUnion + CombineModeXor + CombineModeExclude + CombineModeComplement ; + +ENUM: GpFlushIntention + { FlushIntentionFlush 0 } + { FlushIntentionSync 1 } ; + +ENUM: GpCoordinateSpace + CoordinateSpaceWorld + CoordinateSpacePage + CoordinateSpaceDevice ; + +ENUM: GpTestControlEnum + { TestControlForceBilinear 0 } + { TestControlNoICM 1 } + { TestControlGetBuildNumber 2 } ; + +ENUM: MetafileFrameUnit + { MetafileFrameUnitPixel UnitPixel } + { MetafileFrameUnitPoint UnitPoint } + { MetafileFrameUnitInch UnitInch } + { MetafileFrameUnitDocument UnitDocument } + { MetafileFrameUnitMillimeter UnitMillimeter } + MetafileFrameUnitGdi ; + +ENUM: HatchStyle + { HatchStyleHorizontal 0 } + { HatchStyleVertical 1 } + { HatchStyleForwardDiagonal 2 } + { HatchStyleBackwardDiagonal 3 } + { HatchStyleCross 4 } + { HatchStyleDiagonalCross 5 } + { HatchStyle05Percent 6 } + { HatchStyle10Percent 7 } + { HatchStyle20Percent 8 } + { HatchStyle25Percent 9 } + { HatchStyle30Percent 10 } + { HatchStyle40Percent 11 } + { HatchStyle50Percent 12 } + { HatchStyle60Percent 13 } + { HatchStyle70Percent 14 } + { HatchStyle75Percent 15 } + { HatchStyle80Percent 16 } + { HatchStyle90Percent 17 } + { HatchStyleLightDownwardDiagonal 18 } + { HatchStyleLightUpwardDiagonal 19 } + { HatchStyleDarkDownwardDiagonal 20 } + { HatchStyleDarkUpwardDiagonal 21 } + { HatchStyleWideDownwardDiagonal 22 } + { HatchStyleWideUpwardDiagonal 23 } + { HatchStyleLightVertical 24 } + { HatchStyleLightHorizontal 25 } + { HatchStyleNarrowVertical 26 } + { HatchStyleNarrowHorizontal 27 } + { HatchStyleDarkVertical 28 } + { HatchStyleDarkHorizontal 29 } + { HatchStyleDashedDownwardDiagonal 30 } + { HatchStyleDashedUpwardDiagonal 31 } + { HatchStyleDashedHorizontal 32 } + { HatchStyleDashedVertical 33 } + { HatchStyleSmallConfetti 34 } + { HatchStyleLargeConfetti 35 } + { HatchStyleZigZag 36 } + { HatchStyleWave 37 } + { HatchStyleDiagonalBrick 38 } + { HatchStyleHorizontalBrick 39 } + { HatchStyleWeave 40 } + { HatchStylePlaid 41 } + { HatchStyleDivot 42 } + { HatchStyleDottedGrid 43 } + { HatchStyleDottedDiamond 44 } + { HatchStyleShingle 45 } + { HatchStyleTrellis 46 } + { HatchStyleSphere 47 } + { HatchStyleSmallGrid 48 } + { HatchStyleSmallCheckerBoard 49 } + { HatchStyleLargeCheckerBoard 50 } + { HatchStyleOutlinedDiamond 51 } + { HatchStyleSolidDiamond 52 } + { HatchStyleTotal 53 } + { HatchStyleLargeGrid 4 } + { HatchStyleMin 0 } + { HatchStyleMax 52 } ; + +ENUM: DebugEventLevel + DebugEventLevelFatal + DebugEventLevelWarning ; + +CALLBACK: void DebugEventProc ( DebugEventLevel level, c-string msg ) ; +CALLBACK: GpStatus NotificationHookProc ( ULONG_PTR* x ) ; +CALLBACK: void NotificationUnhookProc ( ULONG_PTR x ) ; + +STRUCT: GdiplusStartupInput + { GdiplusVersion UINT32 } + { DebugEventCallback DebugEventProc } + { SuppressBackgroundThread BOOL } + { SuppressExternalCodecs BOOL } ; + +STRUCT: GdiplusStartupOutput + { NotificationHook NotificationHookProc } + { NotificationUnhook NotificationUnhookProc } ; + +FUNCTION: GpStatus GdiplusStartup ( ULONG_PTR* x, GdiplusStartupInput* in, GdiplusStartupOutput* out ) ; +FUNCTION: void GdiplusShutdown ( ULONG_PTR x ) ; + +TYPEDEF: DWORD ARGB +TYPEDEF: INT PixelFormat + + + +CONSTANT: PixelFormatIndexed HEX: 00010000 +CONSTANT: PixelFormatGDI HEX: 00020000 +CONSTANT: PixelFormatAlpha HEX: 00040000 +CONSTANT: PixelFormatPAlpha HEX: 00080000 +CONSTANT: PixelFormatExtended HEX: 00100000 +CONSTANT: PixelFormatCanonical HEX: 00200000 + +CONSTANT: PixelFormatUndefined 0 +CONSTANT: PixelFormatDontCare 0 +CONSTANT: PixelFormatMax 15 + +: PixelFormat1bppIndexed ( -- x ) + 1 1 PixelFormatIndexed PixelFormatGDI bitor pixel-format-constant ; inline +: PixelFormat4bppIndexed ( -- x ) + 2 4 PixelFormatIndexed PixelFormatGDI bitor pixel-format-constant ; inline +: PixelFormat8bppIndexed ( -- x ) + 3 8 PixelFormatIndexed PixelFormatGDI bitor pixel-format-constant ; inline +: PixelFormat16bppGrayScale ( -- x ) + 4 16 PixelFormatExtended pixel-format-constant ; inline +: PixelFormat16bppRGB555 ( -- x ) + 5 16 PixelFormatGDI pixel-format-constant ; inline +: PixelFormat16bppRGB565 ( -- x ) + 6 16 PixelFormatGDI pixel-format-constant ; inline +: PixelFormat16bppARGB1555 ( -- x ) + 7 16 PixelFormatAlpha PixelFormatGDI bitor pixel-format-constant ; inline +: PixelFormat24bppRGB ( -- x ) + 8 24 PixelFormatGDI pixel-format-constant ; inline +: PixelFormat32bppRGB ( -- x ) + 9 32 PixelFormatGDI pixel-format-constant ; inline +: PixelFormat32bppARGB ( -- x ) + 10 32 PixelFormatAlpha PixelFormatGDI PixelFormatCanonical bitor bitor pixel-format-constant ; inline +: PixelFormat32bppPARGB ( -- x ) + 11 32 PixelFormatAlpha PixelFormatPAlpha PixelFormatGDI bitor bitor pixel-format-constant ; inline +: PixelFormat48bppRGB ( -- x ) + 12 48 PixelFormatExtended pixel-format-constant ; inline +: PixelFormat64bppARGB ( -- x ) + 13 64 PixelFormatAlpha PixelFormatCanonical PixelFormatExtended bitor bitor pixel-format-constant ; inline +: PixelFormat64bppPARGB ( -- x ) + 14 64 PixelFormatAlpha PixelFormatPAlpha PixelFormatExtended bitor bitor pixel-format-constant ; inline + +STRUCT: ColorPalette + { Flags UINT } + { Count UINT } + { Entries ARGB[1] } ; + +! XXX RECTL and SIZEL should go with other metafile definitions if we add them +STRUCT: RECTL + { left LONG } + { top LONG } + { right LONG } + { bottom LONG } ; + +STRUCT: SIZEL + { width LONG } + { height LONG } ; + +STRUCT: ENHMETAHEADER3 + { iType DWORD } + { nSize DWORD } + { rclBounds RECTL } + { rclFrame RECTL } + { dSignature DWORD } + { nVersion DWORD } + { nBytes DWORD } + { nRecords DWORD } + { nHandles WORD } + { sReserved WORD } + { nDescription DWORD } + { offDescription DWORD } + { nPalEntries DWORD } + { szlDevice SIZEL } + { szlMillimeters SIZEL } ; + +STRUCT: PWMFRect16 + { Left INT16 } + { Top INT16 } + { Right INT16 } + { Bottom INT16 } ; + +STRUCT: WmfPlaceableFileHeader + { Key UINT32 } + { Hmf INT16 } + { BoundingBox PWMFRect16 } + { Inch INT16 } + { Reserved INT16[2] } + { Checksum INT16 } ; + +CONSTANT: GDIP_EMFPLUSFLAGS_DISPLAY 1 + +! XXX we don't have a METAHEADER struct defined +! UNION-STRUCT: MetafileHeader-union +! { WmfHeader METAHEADER } +! { EmfHeader ENHMETAHEADER3 } ; + +UNION-STRUCT: MetafileHeader-union + { EmfHeader ENHMETAHEADER3 } ; + +STRUCT: MetafileHeader + { Type MetafileType } + { Size UINT } + { Version UINT } + { EmfPlusFlags UINT } + { DpiX REAL } + { DpiY REAL } + { X INT } + { Y INT } + { Width INT } + { Height INT } + { Header-union MetafileHeader-union } + { EmfPlusHeaderSize INT } + { LogicalDpiX INT } + { LogicalDpiY INT } ; + +CONSTANT: ImageFormatUndefined GUID: {b96b3ca9-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatMemoryBMP GUID: {b96b3caa-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatBMP GUID: {b96b3cab-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatEMF GUID: {b96b3cac-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatWMF GUID: {b96b3cad-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatJPEG GUID: {b96b3cae-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatPNG GUID: {b96b3caf-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatGIF GUID: {b96b3cb0-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatTIFF GUID: {b96b3cb1-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatEXIF GUID: {b96b3cb2-0728-11d3-9d7b-0000f81ef32e} +CONSTANT: ImageFormatIcon GUID: {b96b3cb5-0728-11d3-9d7b-0000f81ef32e} + +CONSTANT: FrameDimensionTime GUID: {6aedbd6d-3fb5-418a-83a6-7f45229dc872} +CONSTANT: FrameDimensionPage GUID: {7462dc86-6180-4c7e-8e3f-ee7333a7a483} +CONSTANT: FrameDimensionResolution GUID: {84236f7b-3bd3-428f-8dab-4ea1439ca315} + +ENUM: ImageLockMode + { ImageLockModeRead 1 } + { ImageLockModeWrite 2 } + { ImageLockModeUserInputBuf 4 } ; + +ENUM: RotateFlipType + { RotateNoneFlipNone 0 } + { Rotate180FlipXY RotateNoneFlipNone } + + { Rotate90FlipNone 1 } + { Rotate270FlipXY Rotate90FlipNone } + + { Rotate180FlipNone 2 } + { RotateNoneFlipXY Rotate180FlipNone } + + { Rotate270FlipNone 3 } + { Rotate90FlipXY Rotate270FlipNone } + + { RotateNoneFlipX 4 } + { Rotate180FlipY RotateNoneFlipX } + + { Rotate90FlipX 5 } + { Rotate270FlipY Rotate90FlipX } + + { Rotate180FlipX 6 } + { RotateNoneFlipY Rotate180FlipX } + + { Rotate270FlipX 7 } + { Rotate90FlipY Rotate270FlipX } ; + +STRUCT: EncoderParameter + { Guid GUID } + { NumberOfValues ULONG } + { Type ULONG } + { Value void* } ; + +STRUCT: EncoderParameters + { Count UINT } + { Parameter EncoderParameter[1] } ; + +STRUCT: ImageCodecInfo + { Clsid CLSID } + { FormatID GUID } + { CodecName WCHAR* } + { DllName WCHAR* } + { FormatDescription WCHAR* } + { FilenameExtension WCHAR* } + { MimeType WCHAR* } + { Flags DWORD } + { Version DWORD } + { SigCount DWORD } + { SigSize DWORD } + { SigPattern BYTE* } + { SigMask BYTE* } ; + +STRUCT: BitmapData + { Width UINT } + { Height UINT } + { Stride INT } + { PixelFormat PixelFormat } + { Scan0 void* } + { Reserved UINT_PTR } ; + +STRUCT: ImageItemData + { Size UINT } + { Position UINT } + { Desc void* } + { DescSize UINT } + { Data void* } + { DataSize UINT } + { Cookie UINT } ; + +STRUCT: PropertyItem + { id PROPID } + { length ULONG } + { type WORD } + { value void* } ; + +CONSTANT: PropertyTagTypeByte 1 +CONSTANT: PropertyTagTypeASCII 2 +CONSTANT: PropertyTagTypeShort 3 +CONSTANT: PropertyTagTypeLong 4 +CONSTANT: PropertyTagTypeRational 5 +CONSTANT: PropertyTagTypeUndefined 7 +CONSTANT: PropertyTagTypeSLONG 9 +CONSTANT: PropertyTagTypeSRational 10 + +CONSTANT: PropertyTagExifIFD HEX: 8769 +CONSTANT: PropertyTagGpsIFD HEX: 8825 + +CONSTANT: PropertyTagNewSubfileType HEX: 00FE +CONSTANT: PropertyTagSubfileType HEX: 00FF +CONSTANT: PropertyTagImageWidth HEX: 0100 +CONSTANT: PropertyTagImageHeight HEX: 0101 +CONSTANT: PropertyTagBitsPerSample HEX: 0102 +CONSTANT: PropertyTagCompression HEX: 0103 +CONSTANT: PropertyTagPhotometricInterp HEX: 0106 +CONSTANT: PropertyTagThreshHolding HEX: 0107 +CONSTANT: PropertyTagCellWidth HEX: 0108 +CONSTANT: PropertyTagCellHeight HEX: 0109 +CONSTANT: PropertyTagFillOrder HEX: 010A +CONSTANT: PropertyTagDocumentName HEX: 010D +CONSTANT: PropertyTagImageDescription HEX: 010E +CONSTANT: PropertyTagEquipMake HEX: 010F +CONSTANT: PropertyTagEquipModel HEX: 0110 +CONSTANT: PropertyTagStripOffsets HEX: 0111 +CONSTANT: PropertyTagOrientation HEX: 0112 +CONSTANT: PropertyTagSamplesPerPixel HEX: 0115 +CONSTANT: PropertyTagRowsPerStrip HEX: 0116 +CONSTANT: PropertyTagStripBytesCount HEX: 0117 +CONSTANT: PropertyTagMinSampleValue HEX: 0118 +CONSTANT: PropertyTagMaxSampleValue HEX: 0119 +CONSTANT: PropertyTagXResolution HEX: 011A +CONSTANT: PropertyTagYResolution HEX: 011B +CONSTANT: PropertyTagPlanarConfig HEX: 011C +CONSTANT: PropertyTagPageName HEX: 011D +CONSTANT: PropertyTagXPosition HEX: 011E +CONSTANT: PropertyTagYPosition HEX: 011F +CONSTANT: PropertyTagFreeOffset HEX: 0120 +CONSTANT: PropertyTagFreeByteCounts HEX: 0121 +CONSTANT: PropertyTagGrayResponseUnit HEX: 0122 +CONSTANT: PropertyTagGrayResponseCurve HEX: 0123 +CONSTANT: PropertyTagT4Option HEX: 0124 +CONSTANT: PropertyTagT6Option HEX: 0125 +CONSTANT: PropertyTagResolutionUnit HEX: 0128 +CONSTANT: PropertyTagPageNumber HEX: 0129 +CONSTANT: PropertyTagTransferFuncition HEX: 012D +CONSTANT: PropertyTagSoftwareUsed HEX: 0131 +CONSTANT: PropertyTagDateTime HEX: 0132 +CONSTANT: PropertyTagArtist HEX: 013B +CONSTANT: PropertyTagHostComputer HEX: 013C +CONSTANT: PropertyTagPredictor HEX: 013D +CONSTANT: PropertyTagWhitePoint HEX: 013E +CONSTANT: PropertyTagPrimaryChromaticities HEX: 013F +CONSTANT: PropertyTagColorMap HEX: 0140 +CONSTANT: PropertyTagHalftoneHints HEX: 0141 +CONSTANT: PropertyTagTileWidth HEX: 0142 +CONSTANT: PropertyTagTileLength HEX: 0143 +CONSTANT: PropertyTagTileOffset HEX: 0144 +CONSTANT: PropertyTagTileByteCounts HEX: 0145 +CONSTANT: PropertyTagInkSet HEX: 014C +CONSTANT: PropertyTagInkNames HEX: 014D +CONSTANT: PropertyTagNumberOfInks HEX: 014E +CONSTANT: PropertyTagDotRange HEX: 0150 +CONSTANT: PropertyTagTargetPrinter HEX: 0151 +CONSTANT: PropertyTagExtraSamples HEX: 0152 +CONSTANT: PropertyTagSampleFormat HEX: 0153 +CONSTANT: PropertyTagSMinSampleValue HEX: 0154 +CONSTANT: PropertyTagSMaxSampleValue HEX: 0155 +CONSTANT: PropertyTagTransferRange HEX: 0156 + +CONSTANT: PropertyTagJPEGProc HEX: 0200 +CONSTANT: PropertyTagJPEGInterFormat HEX: 0201 +CONSTANT: PropertyTagJPEGInterLength HEX: 0202 +CONSTANT: PropertyTagJPEGRestartInterval HEX: 0203 +CONSTANT: PropertyTagJPEGLosslessPredictors HEX: 0205 +CONSTANT: PropertyTagJPEGPointTransforms HEX: 0206 +CONSTANT: PropertyTagJPEGQTables HEX: 0207 +CONSTANT: PropertyTagJPEGDCTables HEX: 0208 +CONSTANT: PropertyTagJPEGACTables HEX: 0209 + +CONSTANT: PropertyTagYCbCrCoefficients HEX: 0211 +CONSTANT: PropertyTagYCbCrSubsampling HEX: 0212 +CONSTANT: PropertyTagYCbCrPositioning HEX: 0213 +CONSTANT: PropertyTagREFBlackWhite HEX: 0214 + +CONSTANT: PropertyTagICCProfile HEX: 8773 + +CONSTANT: PropertyTagGamma HEX: 0301 +CONSTANT: PropertyTagICCProfileDescriptor HEX: 0302 +CONSTANT: PropertyTagSRGBRenderingIntent HEX: 0303 + +CONSTANT: PropertyTagImageTitle HEX: 0320 +CONSTANT: PropertyTagCopyright HEX: 8298 + +CONSTANT: PropertyTagResolutionXUnit HEX: 5001 +CONSTANT: PropertyTagResolutionYUnit HEX: 5002 +CONSTANT: PropertyTagResolutionXLengthUnit HEX: 5003 +CONSTANT: PropertyTagResolutionYLengthUnit HEX: 5004 +CONSTANT: PropertyTagPrintFlags HEX: 5005 +CONSTANT: PropertyTagPrintFlagsVersion HEX: 5006 +CONSTANT: PropertyTagPrintFlagsCrop HEX: 5007 +CONSTANT: PropertyTagPrintFlagsBleedWidth HEX: 5008 +CONSTANT: PropertyTagPrintFlagsBleedWidthScale HEX: 5009 +CONSTANT: PropertyTagHalftoneLPI HEX: 500A +CONSTANT: PropertyTagHalftoneLPIUnit HEX: 500B +CONSTANT: PropertyTagHalftoneDegree HEX: 500C +CONSTANT: PropertyTagHalftoneShape HEX: 500D +CONSTANT: PropertyTagHalftoneMisc HEX: 500E +CONSTANT: PropertyTagHalftoneScreen HEX: 500F +CONSTANT: PropertyTagJPEGQuality HEX: 5010 +CONSTANT: PropertyTagGridSize HEX: 5011 +CONSTANT: PropertyTagThumbnailFormat HEX: 5012 +CONSTANT: PropertyTagThumbnailWidth HEX: 5013 +CONSTANT: PropertyTagThumbnailHeight HEX: 5014 +CONSTANT: PropertyTagThumbnailColorDepth HEX: 5015 +CONSTANT: PropertyTagThumbnailPlanes HEX: 5016 +CONSTANT: PropertyTagThumbnailRawBytes HEX: 5017 +CONSTANT: PropertyTagThumbnailSize HEX: 5018 +CONSTANT: PropertyTagThumbnailCompressedSize HEX: 5019 +CONSTANT: PropertyTagColorTransferFunction HEX: 501A +CONSTANT: PropertyTagThumbnailData HEX: 501B + +CONSTANT: PropertyTagThumbnailImageWidth HEX: 5020 +CONSTANT: PropertyTagThumbnailImageHeight HEX: 5021 +CONSTANT: PropertyTagThumbnailBitsPerSample HEX: 5022 +CONSTANT: PropertyTagThumbnailCompression HEX: 5023 +CONSTANT: PropertyTagThumbnailPhotometricInterp HEX: 5024 +CONSTANT: PropertyTagThumbnailImageDescription HEX: 5025 +CONSTANT: PropertyTagThumbnailEquipMake HEX: 5026 +CONSTANT: PropertyTagThumbnailEquipModel HEX: 5027 +CONSTANT: PropertyTagThumbnailStripOffsets HEX: 5028 +CONSTANT: PropertyTagThumbnailOrientation HEX: 5029 +CONSTANT: PropertyTagThumbnailSamplesPerPixel HEX: 502A +CONSTANT: PropertyTagThumbnailRowsPerStrip HEX: 502B +CONSTANT: PropertyTagThumbnailStripBytesCount HEX: 502C +CONSTANT: PropertyTagThumbnailResolutionX HEX: 502D +CONSTANT: PropertyTagThumbnailResolutionY HEX: 502E +CONSTANT: PropertyTagThumbnailPlanarConfig HEX: 502F +CONSTANT: PropertyTagThumbnailResolutionUnit HEX: 5030 +CONSTANT: PropertyTagThumbnailTransferFunction HEX: 5031 +CONSTANT: PropertyTagThumbnailSoftwareUsed HEX: 5032 +CONSTANT: PropertyTagThumbnailDateTime HEX: 5033 +CONSTANT: PropertyTagThumbnailArtist HEX: 5034 +CONSTANT: PropertyTagThumbnailWhitePoint HEX: 5035 +CONSTANT: PropertyTagThumbnailPrimaryChromaticities HEX: 5036 +CONSTANT: PropertyTagThumbnailYCbCrCoefficients HEX: 5037 +CONSTANT: PropertyTagThumbnailYCbCrSubsampling HEX: 5038 +CONSTANT: PropertyTagThumbnailYCbCrPositioning HEX: 5039 +CONSTANT: PropertyTagThumbnailRefBlackWhite HEX: 503A +CONSTANT: PropertyTagThumbnailCopyRight HEX: 503B + +CONSTANT: PropertyTagLuminanceTable HEX: 5090 +CONSTANT: PropertyTagChrominanceTable HEX: 5091 + +CONSTANT: PropertyTagFrameDelay HEX: 5100 +CONSTANT: PropertyTagLoopCount HEX: 5101 + +CONSTANT: PropertyTagPixelUnit HEX: 5110 +CONSTANT: PropertyTagPixelPerUnitX HEX: 5111 +CONSTANT: PropertyTagPixelPerUnitY HEX: 5112 +CONSTANT: PropertyTagPaletteHistogram HEX: 5113 + +CONSTANT: PropertyTagExifExposureTime HEX: 829A +CONSTANT: PropertyTagExifFNumber HEX: 829D + +CONSTANT: PropertyTagExifExposureProg HEX: 8822 +CONSTANT: PropertyTagExifSpectralSense HEX: 8824 +CONSTANT: PropertyTagExifISOSpeed HEX: 8827 +CONSTANT: PropertyTagExifOECF HEX: 8828 + +CONSTANT: PropertyTagExifVer HEX: 9000 +CONSTANT: PropertyTagExifDTOrig HEX: 9003 +CONSTANT: PropertyTagExifDTDigitized HEX: 9004 + +CONSTANT: PropertyTagExifCompConfig HEX: 9101 +CONSTANT: PropertyTagExifCompBPP HEX: 9102 + +CONSTANT: PropertyTagExifShutterSpeed HEX: 9201 +CONSTANT: PropertyTagExifAperture HEX: 9202 +CONSTANT: PropertyTagExifBrightness HEX: 9203 +CONSTANT: PropertyTagExifExposureBias HEX: 9204 +CONSTANT: PropertyTagExifMaxAperture HEX: 9205 +CONSTANT: PropertyTagExifSubjectDist HEX: 9206 +CONSTANT: PropertyTagExifMeteringMode HEX: 9207 +CONSTANT: PropertyTagExifLightSource HEX: 9208 +CONSTANT: PropertyTagExifFlash HEX: 9209 +CONSTANT: PropertyTagExifFocalLength HEX: 920A +CONSTANT: PropertyTagExifMakerNote HEX: 927C +CONSTANT: PropertyTagExifUserComment HEX: 9286 +CONSTANT: PropertyTagExifDTSubsec HEX: 9290 +CONSTANT: PropertyTagExifDTOrigSS HEX: 9291 +CONSTANT: PropertyTagExifDTDigSS HEX: 9292 + +CONSTANT: PropertyTagExifFPXVer HEX: A000 +CONSTANT: PropertyTagExifColorSpace HEX: A001 +CONSTANT: PropertyTagExifPixXDim HEX: A002 +CONSTANT: PropertyTagExifPixYDim HEX: A003 +CONSTANT: PropertyTagExifRelatedWav HEX: A004 +CONSTANT: PropertyTagExifInterop HEX: A005 +CONSTANT: PropertyTagExifFlashEnergy HEX: A20B +CONSTANT: PropertyTagExifSpatialFR HEX: A20C +CONSTANT: PropertyTagExifFocalXRes HEX: A20E +CONSTANT: PropertyTagExifFocalYRes HEX: A20F +CONSTANT: PropertyTagExifFocalResUnit HEX: A210 +CONSTANT: PropertyTagExifSubjectLoc HEX: A214 +CONSTANT: PropertyTagExifExposureIndex HEX: A215 +CONSTANT: PropertyTagExifSensingMethod HEX: A217 +CONSTANT: PropertyTagExifFileSource HEX: A300 +CONSTANT: PropertyTagExifSceneType HEX: A301 +CONSTANT: PropertyTagExifCfaPattern HEX: A302 + +CONSTANT: PropertyTagGpsVer HEX: 0000 +CONSTANT: PropertyTagGpsLatitudeRef HEX: 0001 +CONSTANT: PropertyTagGpsLatitude HEX: 0002 +CONSTANT: PropertyTagGpsLongitudeRef HEX: 0003 +CONSTANT: PropertyTagGpsLongitude HEX: 0004 +CONSTANT: PropertyTagGpsAltitudeRef HEX: 0005 +CONSTANT: PropertyTagGpsAltitude HEX: 0006 +CONSTANT: PropertyTagGpsGpsTime HEX: 0007 +CONSTANT: PropertyTagGpsGpsSatellites HEX: 0008 +CONSTANT: PropertyTagGpsGpsStatus HEX: 0009 +CONSTANT: PropertyTagGpsGpsMeasureMode HEX: 000A +CONSTANT: PropertyTagGpsGpsDop HEX: 000B +CONSTANT: PropertyTagGpsSpeedRef HEX: 000C +CONSTANT: PropertyTagGpsSpeed HEX: 000D +CONSTANT: PropertyTagGpsTrackRef HEX: 000E +CONSTANT: PropertyTagGpsTrack HEX: 000F +CONSTANT: PropertyTagGpsImgDirRef HEX: 0010 +CONSTANT: PropertyTagGpsImgDir HEX: 0011 +CONSTANT: PropertyTagGpsMapDatum HEX: 0012 +CONSTANT: PropertyTagGpsDestLatRef HEX: 0013 +CONSTANT: PropertyTagGpsDestLat HEX: 0014 +CONSTANT: PropertyTagGpsDestLongRef HEX: 0015 +CONSTANT: PropertyTagGpsDestLong HEX: 0016 +CONSTANT: PropertyTagGpsDestBearRef HEX: 0017 +CONSTANT: PropertyTagGpsDestBear HEX: 0018 +CONSTANT: PropertyTagGpsDestDistRef HEX: 0019 +CONSTANT: PropertyTagGpsDestDist HEX: 001A + +ENUM: ColorChannelFlags + ColorChannelFlagsC + ColorChannelFlagsM + ColorChannelFlagsY + ColorChannelFlagsK + ColorChannelFlagsLast ; + +STRUCT: GpColor + { Argb ARGB } ; + +STRUCT: ColorMatrix + { m REAL[5][5] } ; + +ENUM: ColorMatrixFlags + { ColorMatrixFlagsDefault 0 } + { ColorMatrixFlagsSkipGrays 1 } + { ColorMatrixFlagsAltGray 2 } ; + +ENUM: ColorAdjustType + ColorAdjustTypeDefault + ColorAdjustTypeBitmap + ColorAdjustTypeBrush + ColorAdjustTypePen + ColorAdjustTypeText + ColorAdjustTypeCount + ColorAdjustTypeAny ; + +STRUCT: ColorMap + { oldColor GpColor } + { newColor GpColor } ; + +C-TYPE: GpGraphics +C-TYPE: GpPen +C-TYPE: GpBrush +C-TYPE: GpHatch +C-TYPE: GpSolidFill +C-TYPE: GpPath +C-TYPE: GpMatrix +C-TYPE: GpPathIterator +C-TYPE: GpCustomLineCap +C-TYPE: GpAdjustableArrowCap +C-TYPE: GpImage +C-TYPE: GpMetafile +C-TYPE: GpImageAttributes +C-TYPE: GpCachedBitmap +C-TYPE: GpBitmap +C-TYPE: GpPathGradient +C-TYPE: GpLineGradient +C-TYPE: GpTexture +C-TYPE: GpFont +C-TYPE: GpFontCollection +C-TYPE: GpFontFamily +C-TYPE: GpStringFormat +C-TYPE: GpRegion +C-TYPE: CGpEffect + +! dummy out other windows types we don't care to define yet +C-TYPE: LOGFONTA +C-TYPE: LOGFONTW + +FUNCTION: GpStatus GdipCreateAdjustableArrowCap ( REAL x, REAL x, BOOL x, GpAdjustableArrowCap** x ) ; +FUNCTION: GpStatus GdipGetAdjustableArrowCapFillState ( GpAdjustableArrowCap* x, BOOL* x ) ; +FUNCTION: GpStatus GdipGetAdjustableArrowCapHeight ( GpAdjustableArrowCap* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetAdjustableArrowCapMiddleInset ( GpAdjustableArrowCap* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetAdjustableArrowCapWidth ( GpAdjustableArrowCap* x, REAL* x ) ; +FUNCTION: GpStatus GdipSetAdjustableArrowCapFillState ( GpAdjustableArrowCap* x, BOOL x ) ; +FUNCTION: GpStatus GdipSetAdjustableArrowCapHeight ( GpAdjustableArrowCap* x, REAL x ) ; +FUNCTION: GpStatus GdipSetAdjustableArrowCapMiddleInset ( GpAdjustableArrowCap* x, REAL x ) ; +FUNCTION: GpStatus GdipSetAdjustableArrowCapWidth ( GpAdjustableArrowCap* x, REAL x ) ; + +FUNCTION: GpStatus GdipBitmapApplyEffect ( GpBitmap* x, CGpEffect* x, RECT* x, BOOL x, VOID** x, INT* x ) ; +FUNCTION: GpStatus GdipBitmapCreateApplyEffect ( GpBitmap** x, INT x, CGpEffect* x, RECT* x, RECT* x, GpBitmap** x, BOOL x, VOID** x, INT* x ) ; +FUNCTION: GpStatus GdipBitmapGetPixel ( GpBitmap* x, INT x, INT x, ARGB* x ) ; +FUNCTION: GpStatus GdipBitmapLockBits ( GpBitmap* x, GpRect* x, UINT x, + PixelFormat x, BitmapData* x ) ; +FUNCTION: GpStatus GdipBitmapSetPixel ( GpBitmap* x, INT x, INT x, ARGB x ) ; +FUNCTION: GpStatus GdipBitmapSetResolution ( GpBitmap* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipBitmapUnlockBits ( GpBitmap* x, BitmapData* x ) ; +FUNCTION: GpStatus GdipCloneBitmapArea ( REAL x, REAL x, REAL x, REAL x, PixelFormat x, GpBitmap* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCloneBitmapAreaI ( INT x, INT x, INT x, INT x, PixelFormat x, GpBitmap* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromFile ( WCHAR* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromFileICM ( WCHAR* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromGdiDib ( BITMAPINFO* x, VOID* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromGraphics ( INT x, INT x, GpGraphics* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromHBITMAP ( HBITMAP x, HPALETTE x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromHICON ( HICON x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromResource ( HINSTANCE x, WCHAR* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromScan0 ( INT x, INT x, INT x, PixelFormat x, BYTE* x, + GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromStream ( IStream* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateBitmapFromStreamICM ( IStream* x, GpBitmap** x ) ; +FUNCTION: GpStatus GdipCreateHBITMAPFromBitmap ( GpBitmap* x, HBITMAP* x, ARGB x ) ; +FUNCTION: GpStatus GdipCreateHICONFromBitmap ( GpBitmap* x, HICON* x ) ; +FUNCTION: GpStatus GdipDeleteEffect ( CGpEffect* x ) ; +FUNCTION: GpStatus GdipSetEffectParameters ( CGpEffect* x, VOID* x, UINT x ) ; + + +FUNCTION: GpStatus GdipCloneBrush ( GpBrush* x, GpBrush** x ) ; +FUNCTION: GpStatus GdipDeleteBrush ( GpBrush* x ) ; +FUNCTION: GpStatus GdipGetBrushType ( GpBrush* x, GpBrushType* x ) ; + + +FUNCTION: GpStatus GdipCreateCachedBitmap ( GpBitmap* x, GpGraphics* x, + GpCachedBitmap** x ) ; +FUNCTION: GpStatus GdipDeleteCachedBitmap ( GpCachedBitmap* x ) ; +FUNCTION: GpStatus GdipDrawCachedBitmap ( GpGraphics* x, GpCachedBitmap* x, INT x, INT x ) ; + + +FUNCTION: GpStatus GdipCloneCustomLineCap ( GpCustomLineCap* x, GpCustomLineCap** x ) ; +FUNCTION: GpStatus GdipCreateCustomLineCap ( GpPath* x, GpPath* x, GpLineCap x, REAL x, + GpCustomLineCap** x ) ; +FUNCTION: GpStatus GdipDeleteCustomLineCap ( GpCustomLineCap* x ) ; +FUNCTION: GpStatus GdipGetCustomLineCapBaseCap ( GpCustomLineCap* x, GpLineCap* x ) ; +FUNCTION: GpStatus GdipSetCustomLineCapBaseCap ( GpCustomLineCap* x, GpLineCap x ) ; +FUNCTION: GpStatus GdipGetCustomLineCapBaseInset ( GpCustomLineCap* x, REAL* x ) ; +FUNCTION: GpStatus GdipSetCustomLineCapBaseInset ( GpCustomLineCap* x, REAL x ) ; +FUNCTION: GpStatus GdipSetCustomLineCapStrokeCaps ( GpCustomLineCap* x, GpLineCap x, + GpLineCap x ) ; +FUNCTION: GpStatus GdipGetCustomLineCapStrokeJoin ( GpCustomLineCap* x, GpLineJoin* x ) ; +FUNCTION: GpStatus GdipSetCustomLineCapStrokeJoin ( GpCustomLineCap* x, GpLineJoin x ) ; +FUNCTION: GpStatus GdipGetCustomLineCapWidthScale ( GpCustomLineCap* x, REAL* x ) ; +FUNCTION: GpStatus GdipSetCustomLineCapWidthScale ( GpCustomLineCap* x, REAL x ) ; + +FUNCTION: GpStatus GdipCloneFont ( GpFont* x, GpFont** x ) ; +FUNCTION: GpStatus GdipCreateFont ( GpFontFamily* x, REAL x, INT x, GpUnit x, + GpFont** x ) ; +FUNCTION: GpStatus GdipCreateFontFromDC ( HDC x, GpFont** x ) ; +FUNCTION: GpStatus GdipCreateFontFromLogfontA ( HDC x, LOGFONTA* x, GpFont** x ) ; +FUNCTION: GpStatus GdipCreateFontFromLogfontW ( HDC x, LOGFONTW* x, GpFont** x ) ; +FUNCTION: GpStatus GdipDeleteFont ( GpFont* x ) ; +FUNCTION: GpStatus GdipGetLogFontA ( GpFont* x, GpGraphics* x, LOGFONTA* x ) ; +FUNCTION: GpStatus GdipGetLogFontW ( GpFont* x, GpGraphics* x, LOGFONTW* x ) ; +FUNCTION: GpStatus GdipGetFamily ( GpFont* x, GpFontFamily** x ) ; +FUNCTION: GpStatus GdipGetFontUnit ( GpFont* x, GpUnit* x ) ; +FUNCTION: GpStatus GdipGetFontSize ( GpFont* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetFontStyle ( GpFont* x, INT* x ) ; +FUNCTION: GpStatus GdipGetFontHeight ( GpFont* x, GpGraphics* x, + REAL* x ) ; +FUNCTION: GpStatus GdipGetFontHeightGivenDPI ( GpFont* x, REAL x, REAL* x ) ; + + +FUNCTION: GpStatus GdipNewInstalledFontCollection ( GpFontCollection** x ) ; +FUNCTION: GpStatus GdipNewPrivateFontCollection ( GpFontCollection** x ) ; +FUNCTION: GpStatus GdipDeletePrivateFontCollection ( GpFontCollection** x ) ; +FUNCTION: GpStatus GdipPrivateAddFontFile ( GpFontCollection* x, WCHAR* x ) ; +FUNCTION: GpStatus GdipPrivateAddMemoryFont ( GpFontCollection* x, + void* x, INT x ) ; +FUNCTION: GpStatus GdipGetFontCollectionFamilyCount ( GpFontCollection* x, INT* x ) ; +FUNCTION: GpStatus GdipGetFontCollectionFamilyList ( GpFontCollection* x, INT x, + GpFontFamily** x, INT* x ) ; + + +FUNCTION: GpStatus GdipCloneFontFamily ( GpFontFamily* x, GpFontFamily** x ) ; +FUNCTION: GpStatus GdipCreateFontFamilyFromName ( WCHAR* x, + GpFontCollection* x, GpFontFamily** x ) ; +FUNCTION: GpStatus GdipDeleteFontFamily ( GpFontFamily* x ) ; +FUNCTION: GpStatus GdipGetFamilyName ( GpFontFamily* x, WCHAR* x, LANGID x ) ; +FUNCTION: GpStatus GdipGetCellAscent ( GpFontFamily* x, INT x, UINT16* x ) ; +FUNCTION: GpStatus GdipGetCellDescent ( GpFontFamily* x, INT x, UINT16* x ) ; +FUNCTION: GpStatus GdipGetEmHeight ( GpFontFamily* x, INT x, UINT16* x ) ; +FUNCTION: GpStatus GdipGetGenericFontFamilySansSerif ( GpFontFamily** x ) ; +FUNCTION: GpStatus GdipGetGenericFontFamilySerif ( GpFontFamily** x ) ; +FUNCTION: GpStatus GdipGetGenericFontFamilyMonospace ( GpFontFamily** x ) ; +FUNCTION: GpStatus GdipGetLineSpacing ( GpFontFamily* x, INT x, UINT16* x ) ; +FUNCTION: GpStatus GdipIsStyleAvailable ( GpFontFamily* x, INT x, BOOL* x ) ; + + +FUNCTION: GpStatus GdipFlush ( GpGraphics* x, GpFlushIntention x ) ; +FUNCTION: GpStatus GdipBeginContainer ( GpGraphics* x, GpRectF* x, GpRectF* x, GpUnit x, GraphicsContainer* x ) ; +FUNCTION: GpStatus GdipBeginContainer2 ( GpGraphics* x, GraphicsContainer* x ) ; +FUNCTION: GpStatus GdipBeginContainerI ( GpGraphics* x, GpRect* x, GpRect* x, GpUnit x, GraphicsContainer* x ) ; +FUNCTION: GpStatus GdipEndContainer ( GpGraphics* x, GraphicsContainer x ) ; +FUNCTION: GpStatus GdipComment ( GpGraphics* x, UINT x, BYTE* x ) ; +FUNCTION: GpStatus GdipCreateFromHDC ( HDC x, GpGraphics** x ) ; +FUNCTION: GpStatus GdipCreateFromHDC2 ( HDC x, HANDLE x, GpGraphics** x ) ; +FUNCTION: GpStatus GdipCreateFromHWND ( HWND x, GpGraphics** x ) ; +FUNCTION: GpStatus GdipCreateFromHWNDICM ( HWND x, GpGraphics** x ) ; +FUNCTION: HPALETTE GdipCreateHalftonePalette ( ) ; +FUNCTION: GpStatus GdipDeleteGraphics ( GpGraphics* x ) ; +FUNCTION: GpStatus GdipDrawArc ( GpGraphics* x, GpPen* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawArcI ( GpGraphics* x, GpPen* x, INT x, INT x, INT x, INT x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawBezier ( GpGraphics* x, GpPen* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawBezierI ( GpGraphics* x, GpPen* x, INT x, INT x, INT x, INT x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipDrawBeziers ( GpGraphics* x, GpPen* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawBeziersI ( GpGraphics* x, GpPen* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipDrawClosedCurve ( GpGraphics* x, GpPen* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawClosedCurveI ( GpGraphics* x, GpPen* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipDrawClosedCurve2 ( GpGraphics* x, GpPen* x, GpPointF* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipDrawClosedCurve2I ( GpGraphics* x, GpPen* x, GpPoint* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipDrawCurve ( GpGraphics* x, GpPen* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawCurveI ( GpGraphics* x, GpPen* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipDrawCurve2 ( GpGraphics* x, GpPen* x, GpPointF* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipDrawCurve2I ( GpGraphics* x, GpPen* x, GpPoint* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipDrawCurve3 ( GpGraphics* x, GpPen* x, GpPointF* x, INT x, INT x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipDrawCurve3I ( GpGraphics* x, GpPen* x, GpPoint* x, INT x, INT x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipDrawDriverString ( GpGraphics* x, UINT16* x, INT x, + GpFont* x, GpBrush* x, GpPointF* x, INT x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipDrawEllipse ( GpGraphics* x, GpPen* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawEllipseI ( GpGraphics* x, GpPen* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipDrawImage ( GpGraphics* x, GpImage* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawImageI ( GpGraphics* x, GpImage* x, INT x, INT x ) ; +FUNCTION: GpStatus GdipDrawImagePointRect ( GpGraphics* x, GpImage* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x, GpUnit x ) ; +FUNCTION: GpStatus GdipDrawImagePointRectI ( GpGraphics* x, GpImage* x, INT x, INT x, INT x, INT x, INT x, INT x, GpUnit x ) ; +FUNCTION: GpStatus GdipDrawImagePoints ( GpGraphics* x, GpImage* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawImagePointsI ( GpGraphics* x, GpImage* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipDrawImagePointsRect ( GpGraphics* x, GpImage* x, + GpPointF* x, INT x, REAL x, REAL x, REAL x, REAL x, GpUnit x, + GpImageAttributes* x, DrawImageAbort x, VOID* x ) ; +FUNCTION: GpStatus GdipDrawImagePointsRectI ( GpGraphics* x, GpImage* x, + GpPoint* x, INT x, INT x, INT x, INT x, INT x, GpUnit x, + GpImageAttributes* x, DrawImageAbort x, VOID* x ) ; +FUNCTION: GpStatus GdipDrawImageRect ( GpGraphics* x, GpImage* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawImageRectI ( GpGraphics* x, GpImage* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipDrawImageRectRect ( GpGraphics* x, GpImage* x, REAL x, REAL x, REAL x, + REAL x, REAL x, REAL x, REAL x, REAL x, GpUnit x, GpImageAttributes* x, DrawImageAbort x, + VOID* x ) ; +FUNCTION: GpStatus GdipDrawImageRectRectI ( GpGraphics* x, GpImage* x, INT x, INT x, INT x, + INT x, INT x, INT x, INT x, INT x, GpUnit x, GpImageAttributes* x, DrawImageAbort x, + VOID* x ) ; +FUNCTION: GpStatus GdipDrawLine ( GpGraphics* x, GpPen* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawLineI ( GpGraphics* x, GpPen* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipDrawLines ( GpGraphics* x, GpPen* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawLinesI ( GpGraphics* x, GpPen* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipDrawPath ( GpGraphics* x, GpPen* x, GpPath* x ) ; +FUNCTION: GpStatus GdipDrawPie ( GpGraphics* x, GpPen* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawPieI ( GpGraphics* x, GpPen* x, INT x, INT x, INT x, INT x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawPolygon ( GpGraphics* x, GpPen* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawPolygonI ( GpGraphics* x, GpPen* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipDrawRectangle ( GpGraphics* x, GpPen* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipDrawRectangleI ( GpGraphics* x, GpPen* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipDrawRectangles ( GpGraphics* x, GpPen* x, GpRectF* x, INT x ) ; +FUNCTION: GpStatus GdipDrawRectanglesI ( GpGraphics* x, GpPen* x, GpRect* x, INT x ) ; +FUNCTION: GpStatus GdipDrawString ( GpGraphics* x, WCHAR* x, INT x, + GpFont* x, GpRectF* x, GpStringFormat* x, + GpBrush* x ) ; +FUNCTION: GpStatus GdipFillClosedCurve2 ( GpGraphics* x, GpBrush* x, GpPointF* x, INT x, + REAL x, GpFillMode x ) ; +FUNCTION: GpStatus GdipFillClosedCurve2I ( GpGraphics* x, GpBrush* x, GpPoint* x, INT x, + REAL x, GpFillMode x ) ; +FUNCTION: GpStatus GdipFillEllipse ( GpGraphics* x, GpBrush* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipFillEllipseI ( GpGraphics* x, GpBrush* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipFillPath ( GpGraphics* x, GpBrush* x, GpPath* x ) ; +FUNCTION: GpStatus GdipFillPie ( GpGraphics* x, GpBrush* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipFillPieI ( GpGraphics* x, GpBrush* x, INT x, INT x, INT x, INT x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipFillPolygon ( GpGraphics* x, GpBrush* x, GpPointF* x, + INT x, GpFillMode x ) ; +FUNCTION: GpStatus GdipFillPolygonI ( GpGraphics* x, GpBrush* x, GpPoint* x, + INT x, GpFillMode x ) ; +FUNCTION: GpStatus GdipFillPolygon2 ( GpGraphics* x, GpBrush* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipFillPolygon2I ( GpGraphics* x, GpBrush* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipFillRectangle ( GpGraphics* x, GpBrush* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipFillRectangleI ( GpGraphics* x, GpBrush* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipFillRectangles ( GpGraphics* x, GpBrush* x, GpRectF* x, INT x ) ; +FUNCTION: GpStatus GdipFillRectanglesI ( GpGraphics* x, GpBrush* x, GpRect* x, INT x ) ; +FUNCTION: GpStatus GdipFillRegion ( GpGraphics* x, GpBrush* x, GpRegion* x ) ; +FUNCTION: GpStatus GdipGetClip ( GpGraphics* x, GpRegion* x ) ; +FUNCTION: GpStatus GdipGetClipBounds ( GpGraphics* x, GpRectF* x ) ; +FUNCTION: GpStatus GdipGetClipBoundsI ( GpGraphics* x, GpRect* x ) ; +FUNCTION: GpStatus GdipGetCompositingMode ( GpGraphics* x, CompositingMode* x ) ; +FUNCTION: GpStatus GdipGetCompositingQuality ( GpGraphics* x, CompositingQuality* x ) ; +FUNCTION: GpStatus GdipGetDC ( GpGraphics* x, HDC* x ) ; +FUNCTION: GpStatus GdipGetDpiX ( GpGraphics* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetDpiY ( GpGraphics* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetImageDecoders ( UINT x, UINT x, ImageCodecInfo* x ) ; +FUNCTION: GpStatus GdipGetImageDecodersSize ( UINT* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetImageGraphicsContext ( GpImage* x, GpGraphics** x ) ; +FUNCTION: GpStatus GdipGetInterpolationMode ( GpGraphics* x, InterpolationMode* x ) ; +FUNCTION: GpStatus GdipGetNearestColor ( GpGraphics* x, ARGB* x ) ; +FUNCTION: GpStatus GdipGetPageScale ( GpGraphics* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetPageUnit ( GpGraphics* x, GpUnit* x ) ; +FUNCTION: GpStatus GdipGetPixelOffsetMode ( GpGraphics* x, PixelOffsetMode* x ) ; +FUNCTION: GpStatus GdipGetSmoothingMode ( GpGraphics* x, SmoothingMode* x ) ; +FUNCTION: GpStatus GdipGetTextContrast ( GpGraphics* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetTextRenderingHint ( GpGraphics* x, TextRenderingHint* x ) ; +FUNCTION: GpStatus GdipGetWorldTransform ( GpGraphics* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipGraphicsClear ( GpGraphics* x, ARGB x ) ; +FUNCTION: GpStatus GdipGetVisibleClipBounds ( GpGraphics* x, GpRectF* x ) ; +FUNCTION: GpStatus GdipGetVisibleClipBoundsI ( GpGraphics* x, GpRect* x ) ; +FUNCTION: GpStatus GdipIsClipEmpty ( GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisiblePoint ( GpGraphics* x, REAL x, REAL x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisiblePointI ( GpGraphics* x, INT x, INT x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisibleRect ( GpGraphics* x, REAL x, REAL x, REAL x, REAL x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisibleRectI ( GpGraphics* x, INT x, INT x, INT x, INT x, BOOL* x ) ; +FUNCTION: GpStatus GdipMeasureCharacterRanges ( GpGraphics* x, WCHAR* x, + INT x, GpFont* x, GpRectF* x, GpStringFormat* x, INT x, + GpRegion** x ) ; +FUNCTION: GpStatus GdipMeasureDriverString ( GpGraphics* x, UINT16* x, INT x, + GpFont* x, GpPointF* x, INT x, GpMatrix* x, GpRectF* x ) ; +FUNCTION: GpStatus GdipMeasureString ( GpGraphics* x, WCHAR* x, INT x, + GpFont* x, GpRectF* x, GpStringFormat* x, GpRectF* x, INT* x, INT* x ) ; +FUNCTION: GpStatus GdipMultiplyWorldTransform ( GpGraphics* x, GpMatrix* x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipRecordMetafileFileName ( WCHAR* x, HDC x, EmfType x, + GpRectF* x, MetafileFrameUnit x, WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipRecordMetafileFileNameI ( WCHAR* x, HDC x, EmfType x, + GpRect* x, MetafileFrameUnit x, WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipRecordMetafileI ( HDC x, EmfType x, GpRect* x, + MetafileFrameUnit x, WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipReleaseDC ( GpGraphics* x, HDC x ) ; +FUNCTION: GpStatus GdipResetClip ( GpGraphics* x ) ; +FUNCTION: GpStatus GdipResetWorldTransform ( GpGraphics* x ) ; +FUNCTION: GpStatus GdipRestoreGraphics ( GpGraphics* x, GraphicsState x ) ; +FUNCTION: GpStatus GdipRotateWorldTransform ( GpGraphics* x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipSaveGraphics ( GpGraphics* x, GraphicsState* x ) ; +FUNCTION: GpStatus GdipScaleWorldTransform ( GpGraphics* x, REAL x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipSetClipHrgn ( GpGraphics* x, HRGN x, CombineMode x ) ; +FUNCTION: GpStatus GdipSetClipGraphics ( GpGraphics* x, GpGraphics* x, CombineMode x ) ; +FUNCTION: GpStatus GdipSetClipPath ( GpGraphics* x, GpPath* x, CombineMode x ) ; +FUNCTION: GpStatus GdipSetClipRect ( GpGraphics* x, REAL x, REAL x, REAL x, REAL x, CombineMode x ) ; +FUNCTION: GpStatus GdipSetClipRectI ( GpGraphics* x, INT x, INT x, INT x, INT x, CombineMode x ) ; +FUNCTION: GpStatus GdipSetClipRegion ( GpGraphics* x, GpRegion* x, CombineMode x ) ; +FUNCTION: GpStatus GdipSetCompositingMode ( GpGraphics* x, CompositingMode x ) ; +FUNCTION: GpStatus GdipSetCompositingQuality ( GpGraphics* x, CompositingQuality x ) ; +FUNCTION: GpStatus GdipSetInterpolationMode ( GpGraphics* x, InterpolationMode x ) ; +FUNCTION: GpStatus GdipSetPageScale ( GpGraphics* x, REAL x ) ; +FUNCTION: GpStatus GdipSetPageUnit ( GpGraphics* x, GpUnit x ) ; +FUNCTION: GpStatus GdipSetPixelOffsetMode ( GpGraphics* x, PixelOffsetMode x ) ; +FUNCTION: GpStatus GdipSetRenderingOrigin ( GpGraphics* x, INT x, INT x ) ; +FUNCTION: GpStatus GdipSetSmoothingMode ( GpGraphics* x, SmoothingMode x ) ; +FUNCTION: GpStatus GdipSetTextContrast ( GpGraphics* x, UINT x ) ; +FUNCTION: GpStatus GdipSetTextRenderingHint ( GpGraphics* x, TextRenderingHint x ) ; +FUNCTION: GpStatus GdipSetWorldTransform ( GpGraphics* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipTransformPoints ( GpGraphics* x, GpCoordinateSpace x, GpCoordinateSpace x, + GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipTransformPointsI ( GpGraphics* x, GpCoordinateSpace x, GpCoordinateSpace x, + GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipTranslateClip ( GpGraphics* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipTranslateClipI ( GpGraphics* x, INT x, INT x ) ; +FUNCTION: GpStatus GdipTranslateWorldTransform ( GpGraphics* x, REAL x, REAL x, GpMatrixOrder x ) ; + + +FUNCTION: GpStatus GdipAddPathArc ( GpPath* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathArcI ( GpPath* x, INT x, INT x, INT x, INT x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathBezier ( GpPath* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathBezierI ( GpPath* x, INT x, INT x, INT x, INT x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipAddPathBeziers ( GpPath* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathBeziersI ( GpPath* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathClosedCurve ( GpPath* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathClosedCurveI ( GpPath* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathClosedCurve2 ( GpPath* x, GpPointF* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathClosedCurve2I ( GpPath* x, GpPoint* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathCurve ( GpPath* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathCurveI ( GpPath* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathCurve2 ( GpPath* x, GpPointF* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathCurve2I ( GpPath* x, GpPoint* x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathCurve3 ( GpPath* x, GpPointF* x, INT x, INT x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathCurve3I ( GpPath* x, GpPoint* x, INT x, INT x, INT x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathEllipse ( GpPath* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathEllipseI ( GpPath* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipAddPathLine ( GpPath* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathLineI ( GpPath* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipAddPathLine2 ( GpPath* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathLine2I ( GpPath* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathPath ( GpPath* x, GpPath* x, BOOL x ) ; +FUNCTION: GpStatus GdipAddPathPie ( GpPath* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathPieI ( GpPath* x, INT x, INT x, INT x, INT x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathPolygon ( GpPath* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathPolygonI ( GpPath* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathRectangle ( GpPath* x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipAddPathRectangleI ( GpPath* x, INT x, INT x, INT x, INT x ) ; +FUNCTION: GpStatus GdipAddPathRectangles ( GpPath* x, GpRectF* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathRectanglesI ( GpPath* x, GpRect* x, INT x ) ; +FUNCTION: GpStatus GdipAddPathString ( GpPath* x, WCHAR* x, INT x, GpFontFamily* x, INT x, REAL x, GpRectF* x, GpStringFormat* x ) ; +FUNCTION: GpStatus GdipAddPathStringI ( GpPath* x, WCHAR* x, INT x, GpFontFamily* x, INT x, REAL x, GpRect* x, GpStringFormat* x ) ; +FUNCTION: GpStatus GdipClearPathMarkers ( GpPath* x ) ; +FUNCTION: GpStatus GdipClonePath ( GpPath* x, GpPath** x ) ; +FUNCTION: GpStatus GdipClosePathFigure ( GpPath* x ) ; +FUNCTION: GpStatus GdipClosePathFigures ( GpPath* x ) ; +FUNCTION: GpStatus GdipCreatePath ( GpFillMode x, GpPath** x ) ; +FUNCTION: GpStatus GdipCreatePath2 ( GpPointF* x, BYTE* x, INT x, + GpFillMode x, GpPath** x ) ; +FUNCTION: GpStatus GdipCreatePath2I ( GpPoint* x, BYTE* x, INT x, GpFillMode x, GpPath** x ) ; +FUNCTION: GpStatus GdipDeletePath ( GpPath* x ) ; +FUNCTION: GpStatus GdipFlattenPath ( GpPath* x, GpMatrix* x, REAL x ) ; +FUNCTION: GpStatus GdipIsOutlineVisiblePathPoint ( GpPath* x, REAL x, REAL x, GpPen* x, + GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsOutlineVisiblePathPointI ( GpPath* x, INT x, INT x, GpPen* x, + GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisiblePathPoint ( GpPath* x, REAL x, REAL x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisiblePathPointI ( GpPath* x, INT x, INT x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipGetPathData ( GpPath* x, GpPathData* x ) ; +FUNCTION: GpStatus GdipGetPathFillMode ( GpPath* x, GpFillMode* x ) ; +FUNCTION: GpStatus GdipGetPathLastPoint ( GpPath* x, GpPointF* x ) ; +FUNCTION: GpStatus GdipGetPathPoints ( GpPath* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipGetPathPointsI ( GpPath* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipGetPathTypes ( GpPath* x, BYTE* x, INT x ) ; +FUNCTION: GpStatus GdipGetPathWorldBounds ( GpPath* x, GpRectF* x, GpMatrix* x, GpPen* x ) ; +FUNCTION: GpStatus GdipGetPathWorldBoundsI ( GpPath* x, GpRect* x, GpMatrix* x, GpPen* x ) ; +FUNCTION: GpStatus GdipGetPointCount ( GpPath* x, INT* x ) ; +FUNCTION: GpStatus GdipResetPath ( GpPath* x ) ; +FUNCTION: GpStatus GdipReversePath ( GpPath* x ) ; +FUNCTION: GpStatus GdipSetPathFillMode ( GpPath* x, GpFillMode x ) ; +FUNCTION: GpStatus GdipSetPathMarker ( GpPath* x ) ; +FUNCTION: GpStatus GdipStartPathFigure ( GpPath* x ) ; +FUNCTION: GpStatus GdipTransformPath ( GpPath* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipWarpPath ( GpPath* x, GpMatrix* x, GpPointF* x, INT x, REAL x, + REAL x, REAL x, REAL x, WarpMode x, REAL x ) ; +FUNCTION: GpStatus GdipWidenPath ( GpPath* x, GpPen* x, GpMatrix* x, REAL x ) ; + + +FUNCTION: GpStatus GdipCreateHatchBrush ( HatchStyle x, ARGB x, ARGB x, GpHatch** x ) ; +FUNCTION: GpStatus GdipGetHatchBackgroundColor ( GpHatch* x, ARGB* x ) ; +FUNCTION: GpStatus GdipGetHatchForegroundColor ( GpHatch* x, ARGB* x ) ; +FUNCTION: GpStatus GdipGetHatchStyle ( GpHatch* x, HatchStyle* x ) ; + + +FUNCTION: GpStatus GdipCloneImage ( GpImage* x, GpImage** x ) ; +FUNCTION: GpStatus GdipCloneImageAttributes ( GpImageAttributes* x, GpImageAttributes** x ) ; +FUNCTION: GpStatus GdipDisposeImage ( GpImage* x ) ; +FUNCTION: GpStatus GdipEmfToWmfBits ( HENHMETAFILE x, UINT x, LPBYTE x, INT x, INT x ) ; +FUNCTION: GpStatus GdipFindFirstImageItem ( GpImage* x, ImageItemData* x ) ; +FUNCTION: GpStatus GdipFindNextImageItem ( GpImage* x, ImageItemData* x ) ; +FUNCTION: GpStatus GdipGetAllPropertyItems ( GpImage* x, UINT x, UINT x, PropertyItem* x ) ; +FUNCTION: GpStatus GdipGetImageBounds ( GpImage* x, GpRectF* x, GpUnit* x ) ; +FUNCTION: GpStatus GdipGetImageDimension ( GpImage* x, REAL* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetImageFlags ( GpImage* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetImageHeight ( GpImage* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetImageHorizontalResolution ( GpImage* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetImageItemData ( GpImage* x, ImageItemData* x ) ; +FUNCTION: GpStatus GdipGetImagePalette ( GpImage* x, ColorPalette* x, INT x ) ; +FUNCTION: GpStatus GdipGetImagePaletteSize ( GpImage* x, INT* x ) ; +FUNCTION: GpStatus GdipGetImagePixelFormat ( GpImage* x, PixelFormat* x ) ; +FUNCTION: GpStatus GdipGetImageRawFormat ( GpImage* x, GUID* x ) ; +FUNCTION: GpStatus GdipGetImageThumbnail ( GpImage* x, UINT x, UINT x, GpImage** x, GetThumbnailImageAbort x, VOID* x ) ; +FUNCTION: GpStatus GdipGetImageType ( GpImage* x, ImageType* x ) ; +FUNCTION: GpStatus GdipGetImageVerticalResolution ( GpImage* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetImageWidth ( GpImage* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetPropertyCount ( GpImage* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetPropertyIdList ( GpImage* x, UINT x, PROPID* x ) ; +FUNCTION: GpStatus GdipGetPropertyItem ( GpImage* x, PROPID x, UINT x, PropertyItem* x ) ; +FUNCTION: GpStatus GdipGetPropertyItemSize ( GpImage* x, PROPID x, UINT* x ) ; +FUNCTION: GpStatus GdipGetPropertySize ( GpImage* x, UINT* x, UINT* x ) ; +FUNCTION: GpStatus GdipImageForceValidation ( GpImage* x ) ; +FUNCTION: GpStatus GdipImageGetFrameCount ( GpImage* x, GUID* x, UINT* x ) ; +FUNCTION: GpStatus GdipImageGetFrameDimensionsCount ( GpImage* x, UINT* x ) ; +FUNCTION: GpStatus GdipImageGetFrameDimensionsList ( GpImage* x, GUID* x, UINT x ) ; +FUNCTION: GpStatus GdipImageRotateFlip ( GpImage* x, RotateFlipType x ) ; +FUNCTION: GpStatus GdipImageSelectActiveFrame ( GpImage* x, GUID* x, UINT x ) ; +FUNCTION: GpStatus GdipLoadImageFromFile ( WCHAR* x, GpImage** x ) ; +FUNCTION: GpStatus GdipLoadImageFromFileICM ( WCHAR* x, GpImage** x ) ; +FUNCTION: GpStatus GdipLoadImageFromStream ( IStream* x, GpImage** x ) ; +FUNCTION: GpStatus GdipLoadImageFromStreamICM ( IStream* x, GpImage** x ) ; +FUNCTION: GpStatus GdipRemovePropertyItem ( GpImage* x, PROPID x ) ; +FUNCTION: GpStatus GdipSaveImageToFile ( GpImage* x, WCHAR* x, CLSID* x, EncoderParameters* x ) ; +FUNCTION: GpStatus GdipSaveImageToStream ( GpImage* x, IStream* x, + CLSID* x, EncoderParameters* x ) ; +FUNCTION: GpStatus GdipSetImagePalette ( GpImage* x, ColorPalette* x ) ; +FUNCTION: GpStatus GdipSetPropertyItem ( GpImage* x, PropertyItem* x ) ; + + +FUNCTION: GpStatus GdipCreateImageAttributes ( GpImageAttributes** x ) ; +FUNCTION: GpStatus GdipDisposeImageAttributes ( GpImageAttributes* x ) ; +FUNCTION: GpStatus GdipSetImageAttributesCachedBackground ( GpImageAttributes* x, + BOOL x ) ; +FUNCTION: GpStatus GdipSetImageAttributesColorKeys ( GpImageAttributes* x, + ColorAdjustType x, BOOL x, ARGB x, ARGB x ) ; +FUNCTION: GpStatus GdipSetImageAttributesColorMatrix ( GpImageAttributes* x, + ColorAdjustType x, BOOL x, ColorMatrix* x, ColorMatrix* x, + ColorMatrixFlags x ) ; +FUNCTION: GpStatus GdipSetImageAttributesGamma ( GpImageAttributes* x, + ColorAdjustType x, BOOL x, REAL x ) ; +FUNCTION: GpStatus GdipSetImageAttributesNoOp ( GpImageAttributes* x, + ColorAdjustType x, BOOL x ) ; +FUNCTION: GpStatus GdipSetImageAttributesOutputChannel ( GpImageAttributes* x, + ColorAdjustType x, BOOL x, ColorChannelFlags x ) ; +FUNCTION: GpStatus GdipSetImageAttributesOutputChannelColorProfile ( + GpImageAttributes* x, ColorAdjustType x, BOOL x, WCHAR* x ) ; +FUNCTION: GpStatus GdipSetImageAttributesRemapTable ( GpImageAttributes* x, + ColorAdjustType x, BOOL x, UINT x, ColorMap* x ) ; +FUNCTION: GpStatus GdipSetImageAttributesThreshold ( GpImageAttributes* x, + ColorAdjustType x, BOOL x, REAL x ) ; +FUNCTION: GpStatus GdipSetImageAttributesToIdentity ( GpImageAttributes* x, + ColorAdjustType x ) ; +FUNCTION: GpStatus GdipSetImageAttributesWrapMode ( GpImageAttributes* x, GpWrapMode x, + ARGB x, BOOL x ) ; + + +FUNCTION: GpStatus GdipCreateLineBrush ( GpPointF* x, GpPointF* x, + ARGB x, ARGB x, GpWrapMode x, GpLineGradient** x ) ; +FUNCTION: GpStatus GdipCreateLineBrushI ( GpPoint* x, GpPoint* x, + ARGB x, ARGB x, GpWrapMode x, GpLineGradient** x ) ; +FUNCTION: GpStatus GdipCreateLineBrushFromRect ( GpRectF* x, ARGB x, ARGB x, + LinearGradientMode x, GpWrapMode x, GpLineGradient** x ) ; +FUNCTION: GpStatus GdipCreateLineBrushFromRectI ( GpRect* x, ARGB x, ARGB x, + LinearGradientMode x, GpWrapMode x, GpLineGradient** x ) ; +FUNCTION: GpStatus GdipCreateLineBrushFromRectWithAngle ( GpRectF* x, + ARGB x, ARGB x, REAL x, BOOL x, GpWrapMode x, GpLineGradient** x ) ; +FUNCTION: GpStatus GdipCreateLineBrushFromRectWithAngleI ( GpRect* x, + ARGB x, ARGB x, REAL x, BOOL x, GpWrapMode x, GpLineGradient** x ) ; +FUNCTION: GpStatus GdipGetLineColors ( GpLineGradient* x, ARGB* x ) ; +FUNCTION: GpStatus GdipGetLineGammaCorrection ( GpLineGradient* x, BOOL* x ) ; +FUNCTION: GpStatus GdipGetLineRect ( GpLineGradient* x, GpRectF* x ) ; +FUNCTION: GpStatus GdipGetLineRectI ( GpLineGradient* x, GpRect* x ) ; +FUNCTION: GpStatus GdipGetLineWrapMode ( GpLineGradient* x, GpWrapMode* x ) ; +FUNCTION: GpStatus GdipSetLineBlend ( GpLineGradient* x, REAL* x, + REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetLineBlend ( GpLineGradient* x, REAL* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetLineBlendCount ( GpLineGradient* x, INT* x ) ; +FUNCTION: GpStatus GdipSetLinePresetBlend ( GpLineGradient* x, ARGB* x, + REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetLinePresetBlend ( GpLineGradient* x, ARGB* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetLinePresetBlendCount ( GpLineGradient* x, INT* x ) ; +FUNCTION: GpStatus GdipResetLineTransform ( GpLineGradient* x ) ; +FUNCTION: GpStatus GdipRotateLineTransform ( GpLineGradient* x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipScaleLineTransform ( GpLineGradient* x, REAL x, REAL x, + GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipSetLineColors ( GpLineGradient* x, ARGB x, ARGB x ) ; +FUNCTION: GpStatus GdipSetLineGammaCorrection ( GpLineGradient* x, BOOL x ) ; +FUNCTION: GpStatus GdipSetLineSigmaBlend ( GpLineGradient* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipSetLineTransform ( GpLineGradient* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipSetLineLinearBlend ( GpLineGradient* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipSetLineWrapMode ( GpLineGradient* x, GpWrapMode x ) ; +FUNCTION: GpStatus GdipTranslateLineTransform ( GpLineGradient* x, REAL x, REAL x, + GpMatrixOrder x ) ; + + +FUNCTION: GpStatus GdipCloneMatrix ( GpMatrix* x, GpMatrix** x ) ; +FUNCTION: GpStatus GdipCreateMatrix ( GpMatrix** x ) ; +FUNCTION: GpStatus GdipCreateMatrix2 ( REAL x, REAL x, REAL x, REAL x, REAL x, REAL x, GpMatrix** x ) ; +FUNCTION: GpStatus GdipCreateMatrix3 ( GpRectF* x, GpPointF* x, GpMatrix** x ) ; +FUNCTION: GpStatus GdipCreateMatrix3I ( GpRect* x, GpPoint* x, GpMatrix** x ) ; +FUNCTION: GpStatus GdipDeleteMatrix ( GpMatrix* x ) ; +FUNCTION: GpStatus GdipGetMatrixElements ( GpMatrix* x, REAL* x ) ; +FUNCTION: GpStatus GdipInvertMatrix ( GpMatrix* x ) ; +FUNCTION: GpStatus GdipIsMatrixEqual ( GpMatrix* x, GpMatrix* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsMatrixIdentity ( GpMatrix* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsMatrixInvertible ( GpMatrix* x, BOOL* x ) ; +FUNCTION: GpStatus GdipMultiplyMatrix ( GpMatrix* x, GpMatrix* x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipRotateMatrix ( GpMatrix* x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipShearMatrix ( GpMatrix* x, REAL x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipScaleMatrix ( GpMatrix* x, REAL x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipSetMatrixElements ( GpMatrix* x, REAL x, REAL x, REAL x, REAL x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipTransformMatrixPoints ( GpMatrix* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipTransformMatrixPointsI ( GpMatrix* x, GpPoint* x, INT x ) ; +FUNCTION: GpStatus GdipTranslateMatrix ( GpMatrix* x, REAL x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipVectorTransformMatrixPoints ( GpMatrix* x, GpPointF* x, INT x ) ; +FUNCTION: GpStatus GdipVectorTransformMatrixPointsI ( GpMatrix* x, GpPoint* x, INT x ) ; + + +FUNCTION: GpStatus GdipConvertToEmfPlus ( GpGraphics* x, GpMetafile* x, INT* x, + EmfType x, WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipConvertToEmfPlusToFile ( GpGraphics* x, GpMetafile* x, INT* x, WCHAR* x, EmfType x, WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipConvertToEmfPlusToStream ( GpGraphics* x, GpMetafile* x, INT* x, IStream* x, EmfType x, WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipCreateMetafileFromEmf ( HENHMETAFILE x, BOOL x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipCreateMetafileFromWmf ( HMETAFILE x, BOOL x, + WmfPlaceableFileHeader* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipCreateMetafileFromWmfFile ( WCHAR* x, WmfPlaceableFileHeader* x, + GpMetafile** x ) ; +FUNCTION: GpStatus GdipCreateMetafileFromFile ( WCHAR* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipCreateMetafileFromStream ( IStream* x, GpMetafile** x ) ; +FUNCTION: GpStatus GdipSetMetafileDownLevelRasterizationLimit ( GpMetafile* x, UINT x ) ; + + +FUNCTION: GpStatus GdipGetMetafileHeaderFromEmf ( HENHMETAFILE x, MetafileHeader* x ) ; +FUNCTION: GpStatus GdipGetMetafileHeaderFromFile ( WCHAR* x, MetafileHeader* x ) ; +FUNCTION: GpStatus GdipGetMetafileHeaderFromMetafile ( GpMetafile* x, MetafileHeader* x ) ; +FUNCTION: GpStatus GdipGetMetafileHeaderFromStream ( IStream* x, MetafileHeader* x ) ; +FUNCTION: GpStatus GdipGetMetafileHeaderFromWmf ( HMETAFILE x, WmfPlaceableFileHeader* x, MetafileHeader* x ) ; + + +FUNCTION: GpStatus GdiplusNotificationHook ( ULONG_PTR* x ) ; +FUNCTION: void GdiplusNotificationUnhook ( ULONG_PTR x ) ; + + +FUNCTION: GpStatus GdipCreatePathGradient ( GpPointF* x, INT x, GpWrapMode x, GpPathGradient** x ) ; +FUNCTION: GpStatus GdipCreatePathGradientI ( GpPoint* x, INT x, GpWrapMode x, GpPathGradient** x ) ; +FUNCTION: GpStatus GdipCreatePathGradientFromPath ( GpPath* x, + GpPathGradient** x ) ; +FUNCTION: GpStatus GdipGetPathGradientBlend ( GpPathGradient* x, REAL* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetPathGradientBlendCount ( GpPathGradient* x, INT* x ) ; +FUNCTION: GpStatus GdipGetPathGradientCenterColor ( GpPathGradient* x, ARGB* x ) ; +FUNCTION: GpStatus GdipGetPathGradientCenterPoint ( GpPathGradient* x, GpPointF* x ) ; +FUNCTION: GpStatus GdipGetPathGradientCenterPointI ( GpPathGradient* x, GpPoint* x ) ; +FUNCTION: GpStatus GdipGetPathGradientFocusScales ( GpPathGradient* x, REAL* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetPathGradientGammaCorrection ( GpPathGradient* x, BOOL* x ) ; +FUNCTION: GpStatus GdipGetPathGradientPointCount ( GpPathGradient* x, INT* x ) ; +FUNCTION: GpStatus GdipSetPathGradientPresetBlend ( GpPathGradient* x, + ARGB* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetPathGradientRect ( GpPathGradient* x, GpRectF* x ) ; +FUNCTION: GpStatus GdipGetPathGradientRectI ( GpPathGradient* x, GpRect* x ) ; +FUNCTION: GpStatus GdipGetPathGradientSurroundColorsWithCount ( GpPathGradient* x, + ARGB* x, INT* x ) ; +FUNCTION: GpStatus GdipGetPathGradientWrapMode ( GpPathGradient* x, GpWrapMode* x ) ; +FUNCTION: GpStatus GdipSetPathGradientBlend ( GpPathGradient* x, REAL* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipSetPathGradientCenterColor ( GpPathGradient* x, ARGB x ) ; +FUNCTION: GpStatus GdipSetPathGradientCenterPoint ( GpPathGradient* x, GpPointF* x ) ; +FUNCTION: GpStatus GdipSetPathGradientCenterPointI ( GpPathGradient* x, GpPoint* x ) ; +FUNCTION: GpStatus GdipSetPathGradientFocusScales ( GpPathGradient* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipSetPathGradientGammaCorrection ( GpPathGradient* x, BOOL x ) ; +FUNCTION: GpStatus GdipSetPathGradientSigmaBlend ( GpPathGradient* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipSetPathGradientSurroundColorsWithCount ( GpPathGradient* x, + ARGB* x, INT* x ) ; +FUNCTION: GpStatus GdipSetPathGradientWrapMode ( GpPathGradient* x, GpWrapMode x ) ; +FUNCTION: GpStatus GdipGetPathGradientSurroundColorCount ( GpPathGradient* x, INT* x ) ; + + +FUNCTION: GpStatus GdipCreatePathIter ( GpPathIterator** x, GpPath* x ) ; +FUNCTION: GpStatus GdipDeletePathIter ( GpPathIterator* x ) ; +FUNCTION: GpStatus GdipPathIterCopyData ( GpPathIterator* x, INT* x, GpPointF* x, BYTE* x, + INT x, INT x ) ; +FUNCTION: GpStatus GdipPathIterGetCount ( GpPathIterator* x, INT* x ) ; +FUNCTION: GpStatus GdipPathIterGetSubpathCount ( GpPathIterator* x, INT* x ) ; +FUNCTION: GpStatus GdipPathIterEnumerate ( GpPathIterator* x, INT* x, GpPointF* x, BYTE* x, INT x ) ; +FUNCTION: GpStatus GdipPathIterHasCurve ( GpPathIterator* x, BOOL* x ) ; +FUNCTION: GpStatus GdipPathIterIsValid ( GpPathIterator* x, BOOL* x ) ; +FUNCTION: GpStatus GdipPathIterNextMarker ( GpPathIterator* x, INT* x, INT* x, INT* x ) ; +FUNCTION: GpStatus GdipPathIterNextMarkerPath ( GpPathIterator* x, INT* x, GpPath* x ) ; +FUNCTION: GpStatus GdipPathIterNextPathType ( GpPathIterator* x, INT* x, BYTE* x, INT* x, INT* x ) ; +FUNCTION: GpStatus GdipPathIterNextSubpath ( GpPathIterator* x, INT* x, INT* x, INT* x, BOOL* x ) ; +FUNCTION: GpStatus GdipPathIterNextSubpathPath ( GpPathIterator* x, INT* x, GpPath* x, BOOL* x ) ; +FUNCTION: GpStatus GdipPathIterRewind ( GpPathIterator* x ) ; + + +FUNCTION: GpStatus GdipClonePen ( GpPen* x, GpPen** x ) ; +FUNCTION: GpStatus GdipCreatePen1 ( ARGB x, REAL x, GpUnit x, GpPen** x ) ; +FUNCTION: GpStatus GdipCreatePen2 ( GpBrush* x, REAL x, GpUnit x, GpPen** x ) ; +FUNCTION: GpStatus GdipDeletePen ( GpPen* x ) ; +FUNCTION: GpStatus GdipGetPenBrushFill ( GpPen* x, GpBrush** x ) ; +FUNCTION: GpStatus GdipGetPenColor ( GpPen* x, ARGB* x ) ; +FUNCTION: GpStatus GdipGetPenCustomStartCap ( GpPen* x, GpCustomLineCap** x ) ; +FUNCTION: GpStatus GdipGetPenCustomEndCap ( GpPen* x, GpCustomLineCap** x ) ; +FUNCTION: GpStatus GdipGetPenDashArray ( GpPen* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipGetPenDashCount ( GpPen* x, INT* x ) ; +FUNCTION: GpStatus GdipGetPenDashOffset ( GpPen* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetPenDashStyle ( GpPen* x, GpDashStyle* x ) ; +FUNCTION: GpStatus GdipGetPenMode ( GpPen* x, GpPenAlignment* x ) ; +FUNCTION: GpStatus GdipResetPenTransform ( GpPen* x ) ; +FUNCTION: GpStatus GdipScalePenTransform ( GpPen* x, REAL x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipSetPenBrushFill ( GpPen* x, GpBrush* x ) ; +FUNCTION: GpStatus GdipSetPenColor ( GpPen* x, ARGB x ) ; +FUNCTION: GpStatus GdipSetPenCompoundArray ( GpPen* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipSetPenCustomEndCap ( GpPen* x, GpCustomLineCap* x ) ; +FUNCTION: GpStatus GdipSetPenCustomStartCap ( GpPen* x, GpCustomLineCap* x ) ; +FUNCTION: GpStatus GdipSetPenDashArray ( GpPen* x, REAL* x, INT x ) ; +FUNCTION: GpStatus GdipSetPenDashCap197819 ( GpPen* x, GpDashCap x ) ; +FUNCTION: GpStatus GdipSetPenDashOffset ( GpPen* x, REAL x ) ; +FUNCTION: GpStatus GdipSetPenDashStyle ( GpPen* x, GpDashStyle x ) ; +FUNCTION: GpStatus GdipSetPenEndCap ( GpPen* x, GpLineCap x ) ; +FUNCTION: GpStatus GdipGetPenFillType ( GpPen* x, GpPenType* x ) ; +FUNCTION: GpStatus GdipSetPenLineCap197819 ( GpPen* x, GpLineCap x, GpLineCap x, GpDashCap x ) ; +FUNCTION: GpStatus GdipSetPenLineJoin ( GpPen* x, GpLineJoin x ) ; +FUNCTION: GpStatus GdipSetPenMode ( GpPen* x, GpPenAlignment x ) ; +FUNCTION: GpStatus GdipSetPenMiterLimit ( GpPen* x, REAL x ) ; +FUNCTION: GpStatus GdipSetPenStartCap ( GpPen* x, GpLineCap x ) ; +FUNCTION: GpStatus GdipSetPenWidth ( GpPen* x, REAL x ) ; +FUNCTION: GpStatus GdipGetPenDashCap197819 ( GpPen* x, GpDashCap* x ) ; +FUNCTION: GpStatus GdipGetPenEndCap ( GpPen* x, GpLineCap* x ) ; +FUNCTION: GpStatus GdipGetPenLineJoin ( GpPen* x, GpLineJoin* x ) ; +FUNCTION: GpStatus GdipGetPenMiterLimit ( GpPen* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetPenStartCap ( GpPen* x, GpLineCap* x ) ; +FUNCTION: GpStatus GdipGetPenUnit ( GpPen* x, GpUnit* x ) ; +FUNCTION: GpStatus GdipGetPenWidth ( GpPen* x, REAL* x ) ; + + +FUNCTION: GpStatus GdipCloneRegion ( GpRegion* x, GpRegion** x ) ; +FUNCTION: GpStatus GdipCombineRegionPath ( GpRegion* x, GpPath* x, CombineMode x ) ; +FUNCTION: GpStatus GdipCombineRegionRect ( GpRegion* x, GpRectF* x, CombineMode x ) ; +FUNCTION: GpStatus GdipCombineRegionRectI ( GpRegion* x, GpRect* x, CombineMode x ) ; +FUNCTION: GpStatus GdipCombineRegionRegion ( GpRegion* x, GpRegion* x, CombineMode x ) ; +FUNCTION: GpStatus GdipCreateRegion ( GpRegion** x ) ; +FUNCTION: GpStatus GdipCreateRegionPath ( GpPath* x, GpRegion** x ) ; +FUNCTION: GpStatus GdipCreateRegionRect ( GpRectF* x, GpRegion** x ) ; +FUNCTION: GpStatus GdipCreateRegionRectI ( GpRect* x, GpRegion** x ) ; +FUNCTION: GpStatus GdipCreateRegionRgnData ( BYTE* x, INT x, GpRegion** x ) ; +FUNCTION: GpStatus GdipCreateRegionHrgn ( HRGN x, GpRegion** x ) ; +FUNCTION: GpStatus GdipDeleteRegion ( GpRegion* x ) ; +FUNCTION: GpStatus GdipGetRegionBounds ( GpRegion* x, GpGraphics* x, GpRectF* x ) ; +FUNCTION: GpStatus GdipGetRegionBoundsI ( GpRegion* x, GpGraphics* x, GpRect* x ) ; +FUNCTION: GpStatus GdipGetRegionData ( GpRegion* x, BYTE* x, UINT x, UINT* x ) ; +FUNCTION: GpStatus GdipGetRegionDataSize ( GpRegion* x, UINT* x ) ; +FUNCTION: GpStatus GdipGetRegionHRgn ( GpRegion* x, GpGraphics* x, HRGN* x ) ; +FUNCTION: GpStatus GdipIsEmptyRegion ( GpRegion* x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsEqualRegion ( GpRegion* x, GpRegion* x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsInfiniteRegion ( GpRegion* x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisibleRegionPoint ( GpRegion* x, REAL x, REAL x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisibleRegionPointI ( GpRegion* x, INT x, INT x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisibleRegionRect ( GpRegion* x, REAL x, REAL x, REAL x, REAL x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipIsVisibleRegionRectI ( GpRegion* x, INT x, INT x, INT x, INT x, GpGraphics* x, BOOL* x ) ; +FUNCTION: GpStatus GdipSetEmpty ( GpRegion* x ) ; +FUNCTION: GpStatus GdipSetInfinite ( GpRegion* x ) ; +FUNCTION: GpStatus GdipTransformRegion ( GpRegion* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipTranslateRegion ( GpRegion* x, REAL x, REAL x ) ; +FUNCTION: GpStatus GdipTranslateRegionI ( GpRegion* x, INT x, INT x ) ; + + +FUNCTION: GpStatus GdipCreateSolidFill ( ARGB x, GpSolidFill** x ) ; +FUNCTION: GpStatus GdipGetSolidFillColor ( GpSolidFill* x, ARGB* x ) ; +FUNCTION: GpStatus GdipSetSolidFillColor ( GpSolidFill* x, ARGB x ) ; + + +FUNCTION: GpStatus GdipCloneStringFormat ( GpStringFormat* x, GpStringFormat** x ) ; +FUNCTION: GpStatus GdipCreateStringFormat ( INT x, LANGID x, GpStringFormat** x ) ; +FUNCTION: GpStatus GdipDeleteStringFormat ( GpStringFormat* x ) ; +FUNCTION: GpStatus GdipGetStringFormatAlign ( GpStringFormat* x, StringAlignment* x ) ; +FUNCTION: GpStatus GdipGetStringFormatDigitSubstitution ( GpStringFormat* x, LANGID* x, + StringDigitSubstitute* x ) ; +FUNCTION: GpStatus GdipGetStringFormatFlags ( GpStringFormat* x, INT* x ) ; +FUNCTION: GpStatus GdipGetStringFormatHotkeyPrefix ( GpStringFormat* x, INT* x ) ; +FUNCTION: GpStatus GdipGetStringFormatLineAlign ( GpStringFormat* x, StringAlignment* x ) ; +FUNCTION: GpStatus GdipGetStringFormatMeasurableCharacterRangeCount ( + GpStringFormat* x, INT* x ) ; +FUNCTION: GpStatus GdipGetStringFormatTabStopCount ( GpStringFormat* x, INT* x ) ; +FUNCTION: GpStatus GdipGetStringFormatTabStops ( GpStringFormat* x, INT x, REAL* x, REAL* x ) ; +FUNCTION: GpStatus GdipGetStringFormatTrimming ( GpStringFormat* x, StringTrimming* x ) ; +FUNCTION: GpStatus GdipSetStringFormatAlign ( GpStringFormat* x, StringAlignment x ) ; +FUNCTION: GpStatus GdipSetStringFormatDigitSubstitution ( GpStringFormat* x, LANGID x, StringDigitSubstitute x ) ; +FUNCTION: GpStatus GdipSetStringFormatHotkeyPrefix ( GpStringFormat* x, INT x ) ; +FUNCTION: GpStatus GdipSetStringFormatLineAlign ( GpStringFormat* x, StringAlignment x ) ; +FUNCTION: GpStatus GdipSetStringFormatMeasurableCharacterRanges ( + GpStringFormat* x, INT x, CharacterRange* x ) ; +FUNCTION: GpStatus GdipSetStringFormatTabStops ( GpStringFormat* x, REAL x, INT x, REAL* x ) ; +FUNCTION: GpStatus GdipSetStringFormatTrimming ( GpStringFormat* x, StringTrimming x ) ; +FUNCTION: GpStatus GdipSetStringFormatFlags ( GpStringFormat* x, INT x ) ; +FUNCTION: GpStatus GdipStringFormatGetGenericDefault ( GpStringFormat** x ) ; +FUNCTION: GpStatus GdipStringFormatGetGenericTypographic ( GpStringFormat** x ) ; + + +FUNCTION: GpStatus GdipCreateTexture ( GpImage* x, GpWrapMode x, GpTexture** x ) ; +FUNCTION: GpStatus GdipCreateTexture2 ( GpImage* x, GpWrapMode x, REAL x, REAL x, REAL x, REAL x, GpTexture** x ) ; +FUNCTION: GpStatus GdipCreateTexture2I ( GpImage* x, GpWrapMode x, INT x, INT x, INT x, INT x, GpTexture** x ) ; +FUNCTION: GpStatus GdipCreateTextureIA ( GpImage* x, GpImageAttributes* x, + REAL x, REAL x, REAL x, REAL x, GpTexture** x ) ; +FUNCTION: GpStatus GdipCreateTextureIAI ( GpImage* x, GpImageAttributes* x, + INT x, INT x, INT x, INT x, GpTexture** x ) ; +FUNCTION: GpStatus GdipGetTextureTransform ( GpTexture* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipGetTextureWrapMode ( GpTexture* x, GpWrapMode* x ) ; +FUNCTION: GpStatus GdipMultiplyTextureTransform ( GpTexture* x, + GpMatrix* x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipResetTextureTransform ( GpTexture* x ) ; +FUNCTION: GpStatus GdipRotateTextureTransform ( GpTexture* x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipScaleTextureTransform ( GpTexture* x, REAL x, REAL x, GpMatrixOrder x ) ; +FUNCTION: GpStatus GdipSetTextureTransform ( GpTexture* x, GpMatrix* x ) ; +FUNCTION: GpStatus GdipSetTextureWrapMode ( GpTexture* x, GpWrapMode x ) ; +FUNCTION: GpStatus GdipTranslateTextureTransform ( GpTexture* x, REAL x, REAL x, + GpMatrixOrder x ) ; + + +FUNCTION: GpStatus GdipCreateStreamOnFile ( WCHAR* x, UINT x, IStream** x ) ; +FUNCTION: GpStatus GdipGetImageEncodersSize ( UINT* numEncoders, UINT* size ) ; +FUNCTION: GpStatus GdipGetImageEncoders ( UINT numEncoders, UINT size, ImageCodecInfo* encoders ) ; +FUNCTION: GpStatus GdipTestControl ( GpTestControlEnum x, void* x ) ; + +ERROR: gdi+-error status ; + +: check-gdi+-status ( GpStatus -- ) + dup Ok = [ drop ] [ gdi+-error ] if ; + +CONSTANT: standard-gdi+-startup-input + S{ GdiplusStartupInput + { GdiplusVersion 1 } + { DebugEventCallback f } + { SuppressBackgroundThread 0 } + { SuppressExternalCodecs 0 } + } + +: (start-gdi+) ( startup-input -- token startup-output ) + { ULONG_PTR GdiplusStartupOutput } + [ swapd GdiplusStartup check-gdi+-status ] [ ] with-out-parameters ; +: start-gdi+ ( -- token ) + standard-gdi+-startup-input (start-gdi+) drop ; inline +: stop-gdi+ ( token -- ) + GdiplusShutdown ; + +DESTRUCTOR: stop-gdi+ diff --git a/basis/windows/gdiplus/platforms.txt b/basis/windows/gdiplus/platforms.txt new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/basis/windows/gdiplus/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/ole32/ole32.factor b/basis/windows/ole32/ole32.factor index 538a142878..8b0a2406c7 100644 --- a/basis/windows/ole32/ole32.factor +++ b/basis/windows/ole32/ole32.factor @@ -13,6 +13,9 @@ TYPEDEF: void* LPUNKNOWN TYPEDEF: LPWSTR LPOLESTR TYPEDEF: LPWSTR LPCOLESTR +TYPEDEF: GUID IID +TYPEDEF: GUID CLSID + TYPEDEF: REFGUID LPGUID TYPEDEF: REFGUID REFIID TYPEDEF: REFGUID REFCLSID diff --git a/basis/windows/streams/platforms.txt b/basis/windows/streams/platforms.txt new file mode 100644 index 0000000000..3646795db5 --- /dev/null +++ b/basis/windows/streams/platforms.txt @@ -0,0 +1 @@ +windows diff --git a/basis/windows/streams/streams.factor b/basis/windows/streams/streams.factor new file mode 100644 index 0000000000..33c519e500 --- /dev/null +++ b/basis/windows/streams/streams.factor @@ -0,0 +1,123 @@ +USING: accessors alien.c-types classes.struct combinators +continuations io kernel libc literals locals sequences +specialized-arrays windows.com memoize +windows.com.wrapper windows.kernel32 windows.ole32 +windows.types ; +IN: windows.streams + +SPECIALIZED-ARRAY: uchar + + buf + buf length :> bytes + pv buf bytes memcpy + out-read [ bytes out-read 0 ULONG set-alien-value ] when + + cb bytes = [ S_OK ] [ S_FALSE ] if + ] with-hresult ; inline + +:: IStream-write ( stream pv cb out-written -- hresult ) + [ + pv cb stream stream-write + out-written [ cb out-written 0 ULONG set-alien-value ] when + S_OK + ] with-hresult ; inline + +: origin>seek-type ( origin -- seek-type ) + { + { $ STREAM_SEEK_SET [ seek-absolute ] } + { $ STREAM_SEEK_CUR [ seek-relative ] } + { $ STREAM_SEEK_END [ seek-end ] } + } case ; + +:: IStream-seek ( stream move origin new-position -- hresult ) + [ + move origin origin>seek-type stream stream-seek + new-position [ + stream stream-tell new-position 0 ULARGE_INTEGER set-alien-value + ] when + S_OK + ] with-hresult ; inline + +:: IStream-set-size ( stream new-size -- hresult ) + STG_E_INVALIDFUNCTION ; + +:: IStream-copy-to ( stream other-stream cb out-read out-written -- hresult ) + [ + cb stream stream-read :> buf + buf length :> bytes + out-read [ bytes out-read 0 ULONG set-alien-value ] when + + other-stream buf bytes out-written IStream::Write + ] with-hresult ; inline + +:: IStream-commit ( stream flags -- hresult ) + stream stream-flush S_OK ; + +:: IStream-revert ( stream -- hresult ) + STG_E_INVALIDFUNCTION ; + +:: IStream-lock-region ( stream offset cb lock-type -- hresult ) + STG_E_INVALIDFUNCTION ; + +:: IStream-unlock-region ( stream offset cb lock-type -- hresult ) + STG_E_INVALIDFUNCTION ; + +:: stream-size ( stream -- size ) + stream stream-tell :> old-pos + 0 seek-end stream stream-seek + stream stream-tell :> size + old-pos seek-absolute stream stream-seek + size ; + +:: IStream-stat ( stream out-stat stat-flag -- hresult ) + [ + out-stat + f >>pwcsName + STGTY_STREAM >>type + stream stream-size >>cbSize + FILETIME >>mtime + FILETIME >>ctime + FILETIME >>atime + STGM_READWRITE >>grfMode + 0 >>grfLocksSupported + GUID_NULL >>clsid + 0 >>grfStateBits + 0 >>reserved + drop + S_OK + ] with-hresult ; + +:: IStream-clone ( out-clone-stream -- hresult ) + f out-clone-stream 0 void* set-alien-value + STG_E_INVALIDFUNCTION ; + +CONSTANT: stream-wrapper + $[ + { + { IStream { + [ IStream-read ] + [ IStream-write ] + [ IStream-seek ] + [ IStream-set-size ] + [ IStream-copy-to ] + [ IStream-commit ] + [ IStream-revert ] + [ IStream-lock-region ] + [ IStream-unlock-region ] + [ IStream-stat ] + [ IStream-clone ] + } } + } + ] + +PRIVATE> + +: stream>IStream ( stream -- IStream ) + stream-wrapper com-wrap ; diff --git a/basis/windows/streams/summary.txt b/basis/windows/streams/summary.txt new file mode 100644 index 0000000000..3578124ca3 --- /dev/null +++ b/basis/windows/streams/summary.txt @@ -0,0 +1 @@ +IStream interface wrapper for Factor stream objects diff --git a/basis/windows/types/types.factor b/basis/windows/types/types.factor index e2e4b113a4..3490e8083d 100644 --- a/basis/windows/types/types.factor +++ b/basis/windows/types/types.factor @@ -16,6 +16,8 @@ TYPEDEF: wchar_t WCHAR TYPEDEF: short SHORT TYPEDEF: ushort USHORT +TYPEDEF: short INT16 +TYPEDEF: ushort UINT16 TYPEDEF: ushort WORD TYPEDEF: ulong DWORD @@ -94,7 +96,7 @@ TYPEDEF: HANDLE HDDEDATA TYPEDEF: HANDLE HDESK TYPEDEF: HANDLE HDROP TYPEDEF: HANDLE HDWP -TYPEDEF: HANDLE HENMETAFILE +TYPEDEF: HANDLE HENHMETAFILE TYPEDEF: HANDLE HFONT TYPEDEF: HANDLE HGDIOBJ TYPEDEF: HANDLE HGLOBAL @@ -398,3 +400,5 @@ STRUCT: TEXTMETRICW { tmCharSet BYTE } ; TYPEDEF: TEXTMETRICW* LPTEXTMETRIC + +TYPEDEF: ULONG PROPID diff --git a/basis/windows/windows.factor b/basis/windows/windows.factor index 4996d55f2e..f3bf040bcb 100644 --- a/basis/windows/windows.factor +++ b/basis/windows/windows.factor @@ -17,6 +17,7 @@ CONSTANT: MAX_UNICODE_PATH 32768 { "iphlpapi" "iphlpapi.dll" stdcall } { "libc" "msvcrt.dll" cdecl } { "libm" "msvcrt.dll" cdecl } + { "gdiplus" "gdiplus.dll" stdcall } { "gl" "opengl32.dll" stdcall } { "glu" "glu32.dll" stdcall } { "ole32" "ole32.dll" stdcall } diff --git a/core/vocabs/loader/loader-docs.factor b/core/vocabs/loader/loader-docs.factor index bcb4463e6e..8a0a346a1b 100755 --- a/core/vocabs/loader/loader-docs.factor +++ b/core/vocabs/loader/loader-docs.factor @@ -28,7 +28,12 @@ ARTICLE: "vocabs.roots" "Vocabulary roots" { $subsections "add-vocab-roots" } ; ARTICLE: "vocabs.icons" "Vocabulary icons" -"An icon file representing the vocabulary can be provided for use by " { $link "tools.deploy" } ". A file named " { $snippet "icon.ico" } " will be used as the application icon when the application is deployed on Windows. A file named " { $snippet "icon.icns" } " will be used when the application is deployed on MacOS X." ; +"An icon file representing the vocabulary can be provided for use by " { $link "tools.deploy" } ". If any of the following files exist inside the vocabulary directory, they will be used as icons when the application is deployed." +{ $list + { { $snippet "icon.ico" } " on Windows" } + { { $snippet "icon.icns" } " on MacOS X" } + { { $snippet "icon.png" } " on Linux and *BSD" } +} ; ARTICLE: "vocabs.loader" "Vocabulary loader" "The " { $link POSTPONE: USE: } " and " { $link POSTPONE: USING: } " words load vocabularies using the vocabulary loader. The vocabulary loader is implemented in the " { $vocab-link "vocabs.loader" } " vocabulary." 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 diff --git a/extra/graphviz/ffi/ffi-docs.factor b/extra/graphviz/ffi/ffi-docs.factor index 0398e17223..adbedd7cff 100644 --- a/extra/graphviz/ffi/ffi-docs.factor +++ b/extra/graphviz/ffi/ffi-docs.factor @@ -13,7 +13,7 @@ HELP: ffi-errors HELP: supported-engines { $values - { "value" array } + { "seq" array } } { $description "An " { $link array } " of " { $link string } "s representing all valid " { $emphasis "layout engines" } ". For example, the " { $emphasis "dot" } " engine is typically included in a Graphviz installation, so " { $snippet "\"dot\"" } " will be an element of " { $link supported-engines } ". See " { $url "http://graphviz.org/Documentation.php" } " for more details." } { $notes "This constant's definition is determined at parse-time by asking the system's Graphviz installation what engines are supported." } @@ -21,7 +21,7 @@ HELP: supported-engines HELP: supported-formats { $values - { "value" array } + { "seq" array } } { $description "An " { $link array } " of " { $link string } "s representing all valid " { $emphasis "layout formats" } ". For example, Graphviz can typically render using the Postscript format, in which case " { $snippet "\"ps\"" } " will be an element of " { $link supported-formats } ". See " { $url "http://graphviz.org/Documentation.php" } " for more details." } { $notes "This constant's definition is determined at parse-time by asking the system's Graphviz installation what formats are supported." diff --git a/extra/graphviz/ffi/ffi.factor b/extra/graphviz/ffi/ffi.factor index 2ec65cf7ca..50fccf0a1f 100644 --- a/extra/graphviz/ffi/ffi.factor +++ b/extra/graphviz/ffi/ffi.factor @@ -3,12 +3,9 @@ USING: accessors alien alien.c-types alien.destructors alien.libraries alien.syntax combinators debugger destructors fry io kernel literals math prettyprint sequences splitting -system words.constant -graphviz -; +system memoize graphviz ; IN: graphviz.ffi -<< "libgraph" { { [ os macosx? ] [ "libgraph.dylib" ] } { [ os unix? ] [ "libgraph.so" ] } @@ -21,7 +18,6 @@ IN: graphviz.ffi { [ os unix? ] [ "libgvc.so" ] } { [ os winnt? ] [ "gvc.dll" ] } } cond cdecl add-library ->> LIBRARY: libgraph @@ -85,11 +81,7 @@ FUNCTION: int agsafeset ( void* obj, LIBRARY: libgvc ! Graphviz contexts -! This must be wrapped in << >> so that GVC_t*, gvContext, and -! &gvFreeContext can be used to compute the supported-engines -! and supported-formats constants below. -<< C-TYPE: GVC_t FUNCTION: GVC_t* gvContext ( ) ; @@ -112,7 +104,6 @@ M: ffi-errors error. int-gvFreeContext dup zero? [ drop ] [ ffi-errors ] if ; DESTRUCTOR: gvFreeContext ->> ! Layout @@ -130,8 +121,6 @@ FUNCTION: int gvRenderFilename ( GVC_t* gvc, ! Supported layout engines (dot, neato, etc.) and output ! formats (png, jpg, etc.) - -<< ->> -CONSTANT: supported-engines $[ API_layout plugin-list ] -CONSTANT: supported-formats $[ API_device plugin-list ] +MEMO: supported-engines ( -- seq ) API_layout plugin-list ; +MEMO: supported-formats ( -- seq ) API_device plugin-list ; diff --git a/extra/graphviz/render/render.factor b/extra/graphviz/render/render.factor index 0fd17a68b3..76857b1b85 100644 --- a/extra/graphviz/render/render.factor +++ b/extra/graphviz/render/render.factor @@ -1,11 +1,9 @@ ! Copyright (C) 2011 Alex Vondrak. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors combinators continuations destructors -images.viewer io.backend io.files.unique kernel locals -namespaces parser sequences summary unicode.case words -graphviz.ffi -graphviz.builder -; +USING: accessors combinators compiler.units continuations +destructors images.viewer io.backend io.files.unique kernel +locals namespaces parser sequences summary unicode.case words +graphviz.ffi graphviz.builder ; IN: graphviz.render SYMBOL: default-layout @@ -109,8 +107,6 @@ PRIVATE> : preview-window ( graph -- ) (preview) image-window ; inline -<< - PRIVATE> -supported-engines [ define-graphviz-by-engine ] each -supported-formats [ define-graphviz-by-format ] each - ->> +[ + supported-engines [ define-graphviz-by-engine ] each + supported-formats [ define-graphviz-by-format ] each +] with-compilation-unit diff --git a/extra/images/testing/bmp/42red_24bit.fig b/extra/images/testing/bmp/42red_24bit.fig index 9c2ce17edb..4616f0dce2 100644 Binary files a/extra/images/testing/bmp/42red_24bit.fig and b/extra/images/testing/bmp/42red_24bit.fig differ diff --git a/extra/images/testing/bmp/rgb_8bit.fig b/extra/images/testing/bmp/rgb_8bit.fig index 4b75a10dc0..776d302469 100644 Binary files a/extra/images/testing/bmp/rgb_8bit.fig and b/extra/images/testing/bmp/rgb_8bit.fig differ diff --git a/extra/images/testing/gif/alpha.fig b/extra/images/testing/gif/alpha.fig index b36a8f6666..46dc59425a 100644 Binary files a/extra/images/testing/gif/alpha.fig and b/extra/images/testing/gif/alpha.fig differ diff --git a/extra/images/testing/gif/astronaut_animation.fig b/extra/images/testing/gif/astronaut_animation.fig index 905da6d827..88e8e9bd18 100644 Binary files a/extra/images/testing/gif/astronaut_animation.fig and b/extra/images/testing/gif/astronaut_animation.fig differ diff --git a/extra/images/testing/gif/checkmark.fig b/extra/images/testing/gif/checkmark.fig index c177d89250..70556be3e7 100644 Binary files a/extra/images/testing/gif/checkmark.fig and b/extra/images/testing/gif/checkmark.fig differ diff --git a/extra/images/testing/gif/circle.fig b/extra/images/testing/gif/circle.fig index 330397f7d7..9f291efb33 100644 Binary files a/extra/images/testing/gif/circle.fig and b/extra/images/testing/gif/circle.fig differ diff --git a/extra/images/testing/gif/monochrome.fig b/extra/images/testing/gif/monochrome.fig index 69de84564e..3c03fe22c3 100644 Binary files a/extra/images/testing/gif/monochrome.fig and b/extra/images/testing/gif/monochrome.fig differ diff --git a/extra/images/testing/gif/noise.fig b/extra/images/testing/gif/noise.fig index a2650e971f..c4d6aa43c7 100644 Binary files a/extra/images/testing/gif/noise.fig and b/extra/images/testing/gif/noise.fig differ diff --git a/extra/images/testing/pbm/test.ascii.fig b/extra/images/testing/pbm/test.ascii.fig index aee805ec69..ae2174290a 100644 Binary files a/extra/images/testing/pbm/test.ascii.fig and b/extra/images/testing/pbm/test.ascii.fig differ diff --git a/extra/images/testing/pbm/test.binary.fig b/extra/images/testing/pbm/test.binary.fig index aee805ec69..ae2174290a 100644 Binary files a/extra/images/testing/pbm/test.binary.fig and b/extra/images/testing/pbm/test.binary.fig differ diff --git a/extra/images/testing/pgm/radial.ascii.fig b/extra/images/testing/pgm/radial.ascii.fig index 6e52311b94..4fce1e636c 100644 Binary files a/extra/images/testing/pgm/radial.ascii.fig and b/extra/images/testing/pgm/radial.ascii.fig differ diff --git a/extra/images/testing/pgm/radial.binary.fig b/extra/images/testing/pgm/radial.binary.fig index 6e52311b94..4fce1e636c 100644 Binary files a/extra/images/testing/pgm/radial.binary.fig and b/extra/images/testing/pgm/radial.binary.fig differ diff --git a/extra/images/testing/png/basn2c08.fig b/extra/images/testing/png/basn2c08.fig index 84f8c97b93..655695610d 100644 Binary files a/extra/images/testing/png/basn2c08.fig and b/extra/images/testing/png/basn2c08.fig differ diff --git a/extra/images/testing/png/basn6a08.fig b/extra/images/testing/png/basn6a08.fig index f188879876..723e1b4192 100644 Binary files a/extra/images/testing/png/basn6a08.fig and b/extra/images/testing/png/basn6a08.fig differ diff --git a/extra/images/testing/png/f00n2c08.fig b/extra/images/testing/png/f00n2c08.fig index 6a6aef9b0f..f2e7a981ba 100644 Binary files a/extra/images/testing/png/f00n2c08.fig and b/extra/images/testing/png/f00n2c08.fig differ diff --git a/extra/images/testing/png/f01n2c08.fig b/extra/images/testing/png/f01n2c08.fig index f08c0bbee3..097a24a849 100644 Binary files a/extra/images/testing/png/f01n2c08.fig and b/extra/images/testing/png/f01n2c08.fig differ diff --git a/extra/images/testing/png/f02n2c08.fig b/extra/images/testing/png/f02n2c08.fig index 722f02a5ff..3a6a60106a 100644 Binary files a/extra/images/testing/png/f02n2c08.fig and b/extra/images/testing/png/f02n2c08.fig differ diff --git a/extra/images/testing/png/f03n2c08.fig b/extra/images/testing/png/f03n2c08.fig index 2a37fe6c7b..ae91abddb7 100644 Binary files a/extra/images/testing/png/f03n2c08.fig and b/extra/images/testing/png/f03n2c08.fig differ diff --git a/extra/images/testing/png/f04n2c08.fig b/extra/images/testing/png/f04n2c08.fig index c0db771fa4..8116a45542 100644 Binary files a/extra/images/testing/png/f04n2c08.fig and b/extra/images/testing/png/f04n2c08.fig differ diff --git a/extra/images/testing/png/z00n2c08.fig b/extra/images/testing/png/z00n2c08.fig index 9d171e68b7..79e5991dbb 100644 Binary files a/extra/images/testing/png/z00n2c08.fig and b/extra/images/testing/png/z00n2c08.fig differ diff --git a/extra/images/testing/png/z03n2c08.fig b/extra/images/testing/png/z03n2c08.fig index 9d171e68b7..79e5991dbb 100644 Binary files a/extra/images/testing/png/z03n2c08.fig and b/extra/images/testing/png/z03n2c08.fig differ diff --git a/extra/images/testing/png/z06n2c08.fig b/extra/images/testing/png/z06n2c08.fig index 9d171e68b7..79e5991dbb 100644 Binary files a/extra/images/testing/png/z06n2c08.fig and b/extra/images/testing/png/z06n2c08.fig differ diff --git a/extra/images/testing/png/z09n2c08.fig b/extra/images/testing/png/z09n2c08.fig index 9d171e68b7..79e5991dbb 100644 Binary files a/extra/images/testing/png/z09n2c08.fig and b/extra/images/testing/png/z09n2c08.fig differ diff --git a/extra/images/testing/ppm/ascii.fig b/extra/images/testing/ppm/ascii.fig index 68a1fa1ac1..9f95883c38 100644 Binary files a/extra/images/testing/ppm/ascii.fig and b/extra/images/testing/ppm/ascii.fig differ diff --git a/extra/images/testing/ppm/binary.fig b/extra/images/testing/ppm/binary.fig index 68a1fa1ac1..9f95883c38 100644 Binary files a/extra/images/testing/ppm/binary.fig and b/extra/images/testing/ppm/binary.fig differ diff --git a/extra/images/testing/tiff/alpha.fig b/extra/images/testing/tiff/alpha.fig index b36a8f6666..46dc59425a 100644 Binary files a/extra/images/testing/tiff/alpha.fig and b/extra/images/testing/tiff/alpha.fig differ diff --git a/extra/images/testing/tiff/color_spectrum.fig b/extra/images/testing/tiff/color_spectrum.fig index 7050c13f6c..5213f8d30e 100644 Binary files a/extra/images/testing/tiff/color_spectrum.fig and b/extra/images/testing/tiff/color_spectrum.fig differ diff --git a/extra/images/testing/tiff/noise.fig b/extra/images/testing/tiff/noise.fig index dd582aaef3..e207120c9d 100644 Binary files a/extra/images/testing/tiff/noise.fig and b/extra/images/testing/tiff/noise.fig differ diff --git a/extra/images/testing/tiff/octagon.fig b/extra/images/testing/tiff/octagon.fig index 0b66c62662..9273f3edaa 100644 Binary files a/extra/images/testing/tiff/octagon.fig and b/extra/images/testing/tiff/octagon.fig differ diff --git a/extra/images/testing/tiff/rgb.fig b/extra/images/testing/tiff/rgb.fig index c09b1cd10e..8fb52821ff 100644 Binary files a/extra/images/testing/tiff/rgb.fig and b/extra/images/testing/tiff/rgb.fig differ diff --git a/extra/model-viewer/model-viewer.factor b/extra/model-viewer/model-viewer.factor index b78862d225..44a086a9e6 100644 --- a/extra/model-viewer/model-viewer.factor +++ b/extra/model-viewer/model-viewer.factor @@ -88,12 +88,18 @@ TUPLE: vbo index-buffer index-count vertex-format texture bump ka ; : white-image ( -- image ) - { 1 1 } BGR ubyte-components f - B{ 255 255 255 } image boa ; + + { 1 1 } >>dim + BGR >>component-order + ubyte-components >>component-type + B{ 255 255 255 } >>bitmap ; : up-image ( -- image ) - { 1 1 } BGR ubyte-components f - B{ 0 0 0 } image boa ; + + { 1 1 } >>dim + BGR >>component-order + ubyte-components >>component-type + B{ 0 0 0 } >>bitmap ; : make-texture ( pathname alt -- texture ) swap [ nip load-image ] [ ] if*