emacs-diffs
[Top][All Lists]
Advanced

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

master 288e8bb 2/2: Prefer giflib 5 macros to magic numbers


From: Stefan Kangas
Subject: master 288e8bb 2/2: Prefer giflib 5 macros to magic numbers
Date: Fri, 29 Oct 2021 11:44:40 -0400 (EDT)

branch: master
commit 288e8bba81d9921a9b34627e6641afa74e41b49d
Author: Stefan Kangas <stefan@marxist.se>
Commit: Stefan Kangas <stefan@marxist.se>

    Prefer giflib 5 macros to magic numbers
    
    * src/image.c (DISPOSAL_UNSPECIFIED, DISPOSE_DO_NOT)
    (DISPOSE_BACKGROUND, DISPOSE_PREVIOUS, NO_TRANSPARENT_COLOR)
    [GIFLIB_MAJOR < 5]: Macro defined (for old versions of giflib).
    (gif_load): Replace magic numbers with giflib 5 macros for disposal
    and transparency_color_index.
---
 src/image.c | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/image.c b/src/image.c
index cf0ea6a..376a53e 100644
--- a/src/image.c
+++ b/src/image.c
@@ -8249,6 +8249,11 @@ gif_image_p (Lisp_Object object)
 /* Giflib before 5.0 didn't define these macros.  */
 # ifndef GIFLIB_MAJOR
 #  define GIFLIB_MAJOR 4
+#  define DISPOSAL_UNSPECIFIED    0    /* No disposal specified.  */
+#  define DISPOSE_DO_NOT          1    /* Leave image in place.  */
+#  define DISPOSE_BACKGROUND      2    /* Set area too background color.  */
+#  define DISPOSE_PREVIOUS        3    /* Restore to previous content.  */
+#  define NO_TRANSPARENT_COLOR    -1
 # endif
 
 /* GifErrorString is declared to return char const * when GIFLIB_MAJOR
@@ -8574,8 +8579,8 @@ gif_load (struct frame *f, struct image *img)
 
       /* From gif89a spec: 1 = "keep in place", 2 = "restore
         to background".  Treat any other value like 2.  */
-      int disposal = 0;
-      int transparency_color_index = -1;
+      int disposal = DISPOSAL_UNSPECIFIED;
+      int transparency_color_index = NO_TRANSPARENT_COLOR;
 
 #if GIFLIB_MAJOR < 5
       /* Find the Graphic Control Extension block for this sub-image.
@@ -8602,14 +8607,15 @@ gif_load (struct frame *f, struct image *img)
 
       /* We can't "keep in place" the first subimage.  */
       if (j == 0)
-       disposal = 2;
+       disposal = DISPOSE_BACKGROUND;
 
-      /* For disposal == 0, the spec says "No disposal specified. The
-        decoder is not required to take any action."  In practice, it
-        seems we need to treat this like "keep in place", see e.g.
+      /* For disposal == 0 (DISPOSAL_UNSPECIFIED), the spec says
+        "No disposal specified.  The decoder is not required to take
+        any action."  In practice, it seems we need to treat this
+        like "keep in place" (DISPOSE_DO_NOT), see e.g.
         https://upload.wikimedia.org/wikipedia/commons/3/37/Clock.gif */
-      if (disposal == 0)
-       disposal = 1;
+      if (disposal == DISPOSAL_UNSPECIFIED)
+       disposal = DISPOSE_DO_NOT;
 
       gif_color_map = subimage->ImageDesc.ColorMap;
       if (!gif_color_map)
@@ -8648,7 +8654,7 @@ gif_load (struct frame *f, struct image *img)
              for (x = 0; x < subimg_width; x++)
                {
                  int c = raster[y * subimg_width + x];
-                 if (transparency_color_index != c || disposal != 1)
+                 if (transparency_color_index != c || disposal != 
DISPOSE_DO_NOT)
                     {
                       PUT_PIXEL (ximg, x + subimg_left, row + subimg_top,
                                  pixel_colors[c]);
@@ -8662,7 +8668,7 @@ gif_load (struct frame *f, struct image *img)
            for (x = 0; x < subimg_width; ++x)
              {
                int c = raster[y * subimg_width + x];
-               if (transparency_color_index != c || disposal != 1)
+               if (transparency_color_index != c || disposal != DISPOSE_DO_NOT)
                   {
                     PUT_PIXEL (ximg, x + subimg_left, y + subimg_top,
                                pixel_colors[c]);



reply via email to

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