0030946: Visualization - Image_AlienPixMap ignores 1-bit pixelformat when using FreeImage
authormzernova <mzernova@opencascade.com>
Tue, 10 Sep 2019 14:10:25 +0000 (17:10 +0300)
committerabv <abv@opencascade.com>
Sat, 14 Sep 2019 08:45:35 +0000 (11:45 +0300)
Convert 1-bit image to 8-bit one during its loading because only greyscale images are supported by visualization

src/Image/Image_AlienPixMap.cxx
tests/bugs/vis/bug30946 [new file with mode: 0644]

index 0cbd653..b381901 100644 (file)
@@ -589,6 +589,13 @@ bool Image_AlienPixMap::Load (const Standard_Byte* theData,
     return false;
   }
 
+  if (FreeImage_GetBPP (anImage) == 1)
+  {
+    FIBITMAP* aTmpImage = FreeImage_ConvertTo8Bits (anImage);
+    FreeImage_Unload (anImage);
+    anImage = aTmpImage;
+  }
+
   Image_Format aFormat = convertFromFreeFormat (FreeImage_GetImageType(anImage),
                                                 FreeImage_GetColorType(anImage),
                                                 FreeImage_GetBPP      (anImage));
diff --git a/tests/bugs/vis/bug30946 b/tests/bugs/vis/bug30946
new file mode 100644 (file)
index 0000000..605662c
--- /dev/null
@@ -0,0 +1,14 @@
+puts "============="
+puts "0030946: Visualization - Image_AlienPixMap ignores 1-bit pixelformat when using FreeImage"
+puts "============="
+
+pload VISUALIZATION
+vinit View
+
+vbackground -image [locate_data_file bug30946_img_1bit_256px.png]
+if { [vreadpixel 120 315 rgb name] != "WHITE" } { puts "Error: background image was loaded incorrectly" }
+
+vpoint p0 0 0 0
+vaspects p0 -setMarkerType [locate_data_file bug30946_img_1bit_32px.png]
+
+vdump $imagedir/${casename}.png