From: Joe Groff Date: Wed, 7 Jul 2010 05:36:24 +0000 (-0700) Subject: windows.gdiplus: start-gdi+/stop-gdi+/check-gdi+-status helper words X-Git-Tag: 0.97~4241^2~1^2^2~17 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=099607bfdd70bf25d96619b5c6a467d1b4806c03 windows.gdiplus: start-gdi+/stop-gdi+/check-gdi+-status helper words --- diff --git a/basis/windows/gdiplus/gdiplus.factor b/basis/windows/gdiplus/gdiplus.factor index 2291628f17..66300f9a90 100644 --- a/basis/windows/gdiplus/gdiplus.factor +++ b/basis/windows/gdiplus/gdiplus.factor @@ -1,5 +1,5 @@ ! (c)2010 Joe Groff bsd license -USING: alien.c-types alien.destructors alien.syntax +USING: alien.c-types alien.data alien.destructors alien.syntax classes.struct kernel math windows.com windows.com.syntax windows.kernel32 windows.ole32 windows.types ; FROM: alien.c-types => float ; @@ -1624,3 +1624,26 @@ FUNCTION: GpStatus GdipCreateStreamOnFile ( WCHAR* x, UINT x, IStream** x ) ; FUNCTION: GpStatus GdipGetImageEncodersSize ( UINT* numEncoders, UINT* size ) ; FUNCTION: GpStatus GdipGetImageEncoders ( UINT numEncoders, UINT size, ImageCodecInfo* encoders ) ; FUNCTION: GpStatus GdipTestControl ( GpTestControlEnum x, void* x ) ; + +ERROR: gdi+-error status ; + +: check-gdi+-status ( GpStatus -- ) + dup Ok = [ drop ] [ gdi+-error ] if ; + +CONSTANT: standard-gdi+-startup-input + S{ GdiplusStartupInput + { GdiplusVersion 1 } + { DebugEventCallback f } + { SuppressBackgroundThread 0 } + { SuppressExternalCodecs 0 } + } + +: (start-gdi+) ( startup-input -- token startup-output ) + { ULONG_PTR GdiplusStartupOutput } + [ swapd GdiplusStartup check-gdi+-status ] [ ] with-out-parameters ; +: start-gdi+ ( -- token ) + standard-gdi+-startup-input (start-gdi+) drop ; inline +: stop-gdi+ ( token -- ) + GdiplusShutdown ; + +DESTRUCTOR: stop-gdi+