]> gitweb.factorcode.org Git - factor.git/commitdiff
images.loader.gdiplus: both BGRA and BGRX formats are supported
authorBjörn Lindqvist <bjourne@gmail.com>
Sun, 25 Oct 2015 20:53:30 +0000 (21:53 +0100)
committerBjörn Lindqvist <bjourne@gmail.com>
Sun, 25 Oct 2015 20:57:41 +0000 (21:57 +0100)
basis/images/loader/gdiplus/gdiplus-tests.factor [new file with mode: 0644]
basis/images/loader/gdiplus/gdiplus.factor

diff --git a/basis/images/loader/gdiplus/gdiplus-tests.factor b/basis/images/loader/gdiplus/gdiplus-tests.factor
new file mode 100644 (file)
index 0000000..fc6836f
--- /dev/null
@@ -0,0 +1,9 @@
+USING: images images.loader.gdiplus.private tools.test ;
+IN: images.loader.gdiplus.tests
+
+{ } [
+    BGRA check-pixel-format
+    BGRX check-pixel-format
+] unit-test
+
+[ RGB check-pixel-format ] [ unsupported-pixel-format? ] must-fail-with
index 81fd12b03ddf01002efdf2209b8489d4399ed2fd..efb55d1f78f4e1a81bc5e24de11ff235639804b4 100644 (file)
@@ -59,15 +59,14 @@ os windows? [
         ubyte-components >>component-type
         f >>upside-down? ;
 
-! Only one pixel format supported, but I can't find images in the
-! wild, loaded using gdi+, in which the format is different.
+! Loaded images usually have the format BGRA, text rendered BGRX.
 ERROR: unsupported-pixel-format component-order ;
 
-: check-pixel-format ( image -- )
-    component-order>> dup BGRA = [ drop ] [ unsupported-pixel-format ] if ;
+: check-pixel-format ( component-order -- )
+    dup { BGRX BGRA } member? [ drop ] [ unsupported-pixel-format ] if ;
 
 : image>gdi+-bitmap ( image -- bitmap )
-    dup check-pixel-format
+    dup component-order>> check-pixel-format
     [ dim>> first2 ] [ rowstride PixelFormat32bppARGB ] [ bitmap>> ] tri
     { void* } [
         GdipCreateBitmapFromScan0 check-gdi+-status