[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#333542: [Issue N89425] QImageIO::setGamma doesn't work on PNG



Ok, this is the actual correct patch.

-Charles
--- ../moo/qt-x11-free-3.3.5/src/kernel/qpngio.cpp	2005-09-02 13:43:05.000000000 +0100
+++ src/kernel/qpngio.cpp	2005-10-21 14:57:52.000000000 +0100
@@ -110,12 +110,20 @@
 static
 void setup_qt( QImage& image, png_structp png_ptr, png_infop info_ptr, float screen_gamma=0.0 )
 {
-    if ( screen_gamma != 0.0 && png_get_valid(png_ptr, info_ptr, PNG_INFO_gAMA) ) {
-	double file_gamma;
-	png_get_gAMA(png_ptr, info_ptr, &file_gamma);
-	png_set_gamma( png_ptr, screen_gamma, file_gamma );
-    }
-
+    if ( screen_gamma  < 0.0 )
+	// PNG docs say this is a good guess for a PC monitor
+        // in a dark room
+	screen_gamma = 2.2;
+    if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_gAMA) ) {
+	// the file has a gAMA attribute
+ 	double file_gamma;
+	if ( png_get_gAMA(png_ptr, info_ptr, &file_gamma))
+	    png_set_gamma( png_ptr, screen_gamma, file_gamma );
+    } else {
+	// no file gamma, use a reasonable default
+	png_set_gamma( png_ptr, screen_gamma, 0.0 ); 
+     }
+    
     png_uint_32 width;
     png_uint_32 height;
     int bit_depth;

Reply to: