emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/src/image.c,v


From: Chong Yidong
Subject: [Emacs-diffs] Changes to emacs/src/image.c,v
Date: Fri, 09 May 2008 02:37:32 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Chong Yidong <cyd>      08/05/09 02:37:31

Index: image.c
===================================================================
RCS file: /sources/emacs/emacs/src/image.c,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -b -r1.99 -r1.100
--- image.c     4 May 2008 19:46:16 -0000       1.99
+++ image.c     9 May 2008 02:37:31 -0000       1.100
@@ -6542,7 +6542,6 @@
   png_byte channels;
   png_uint_32 row_bytes;
   int transparent_p;
-  double screen_gamma;
   struct png_memory_storage tbr;  /* Data to be read */
 
   /* Find out what file to load.  */
@@ -6684,27 +6683,6 @@
       || color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
     fn_png_set_gray_to_rgb (png_ptr);
 
-  screen_gamma = (f->gamma ? 1 / f->gamma / 0.45455 : 2.2);
-
-#if 0 /* Avoid double gamma correction for PNG images. */
-  { /* Tell the PNG lib to handle gamma correction for us.  */
-    int intent;
-    double image_gamma;
-#if defined(PNG_READ_sRGB_SUPPORTED) || defined(PNG_WRITE_sRGB_SUPPORTED)
-    if (png_get_sRGB (png_ptr, info_ptr, &intent))
-      /* The libpng documentation says this is right in this case.  */
-      png_set_gamma (png_ptr, screen_gamma, 0.45455);
-    else
-#endif
-      if (png_get_gAMA (png_ptr, info_ptr, &image_gamma))
-       /* Image contains gamma information.  */
-       png_set_gamma (png_ptr, screen_gamma, image_gamma);
-      else
-       /* Use the standard default for the image gamma.  */
-       png_set_gamma (png_ptr, screen_gamma, 0.45455);
-  }
-#endif /* if 0 */
-
   /* Handle alpha channel by combining the image with a background
      color.  Do this only if a real alpha channel is supplied.  For
      simple transparency, we prefer a clipping mask.  */
@@ -6713,6 +6691,7 @@
       /* png_color_16 *image_bg; */
       Lisp_Object specified_bg
        = image_spec_value (img->spec, QCbackground, NULL);
+      int shift = (bit_depth == 16) ? 0 : 8;
 
       if (STRINGP (specified_bg))
        /* The user specified `:background', use that.  */
@@ -6724,27 +6703,18 @@
              png_color_16 user_bg;
 
              bzero (&user_bg, sizeof user_bg);
-             user_bg.red = color.red >> 8;
-             user_bg.green = color.green >> 8;
-             user_bg.blue = color.blue >> 8;
+             user_bg.red = color.red >> shift;
+             user_bg.green = color.green >> shift;
+             user_bg.blue = color.blue >> shift;
 
              fn_png_set_background (png_ptr, &user_bg,
                                     PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
            }
        }
-      /* The commented-out code checked if the png specifies a default
-        background color, and uses that.  Since we use the current
-        frame background, it is OK for us to ignore this.
-
-      else if (fn_png_get_bKGD (png_ptr, info_ptr, &image_bg))
-       fn_png_set_background (png_ptr, image_bg,
-                              PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
-       */
       else
        {
-         /* Image does not contain a background color with which
-            to combine the image data via an alpha channel.  Use
-            the frame's background instead.  */
+         /* We use the current frame background, ignoring any default
+            background color set by the image.  */
 #ifdef HAVE_X_WINDOWS
          XColor color;
          png_color_16 frame_background;
@@ -6753,9 +6723,9 @@
          x_query_color (f, &color);
 
          bzero (&frame_background, sizeof frame_background);
-         frame_background.red = color.red >> 8;
-         frame_background.green = color.green >> 8;
-         frame_background.blue = color.blue >> 8;
+         frame_background.red = color.red >> shift;
+         frame_background.green = color.green >> shift;
+         frame_background.blue = color.blue >> shift;
 #endif /* HAVE_X_WINDOWS */
 
 #ifdef HAVE_NTGUI




reply via email to

[Prev in Thread] Current Thread [Next in Thread]