Evas: fix gif cannot decode alpha value correctly.
authorJiyoun Park <jy0703.park@samsung.com>
Wed, 5 Jun 2013 06:26:09 +0000 (15:26 +0900)
committerJiyoun Park <jy0703.park@samsung.com>
Wed, 5 Jun 2013 06:26:09 +0000 (15:26 +0900)
ChangeLog
NEWS
src/modules/evas/loaders/gif/evas_image_load_gif.c

index 0921699..948b2b8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-06-05  Jiyou Park
+
+        * Evas: Fix gif cannot decode alpha value correctly.
+
 2013-06-04  Jean-Philippe Andre
 
        * Evas: improve stability of Evas_Cserve2.
diff --git a/NEWS b/NEWS
index d6af31d..2229803 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -327,3 +327,5 @@ Fixes:
     * Fix eeze sensors to not segv on shutdown
     * Evas: correctly detect if a loader support asynchronous preloading.
     * Evas: improve stability of Evas_Cserve2.
+    * Evas: Fix gif cannot decode alpha value correctly.
+
index 40c2aa8..e3de8a5 100644 (file)
@@ -451,10 +451,17 @@ _evas_image_load_frame_image_data(Eina_File *f,
                                    }
                                  else
                                    {
-                                      r = cmap->Colors[rows[i1][j1 * scale_ratio]].Red;
-                                      g = cmap->Colors[rows[i1][j1 * scale_ratio]].Green;
-                                      b = cmap->Colors[rows[i1][j1 * scale_ratio]].Blue;
-                                      *ptr++ = ARGB_JOIN(0xff, r, g, b);
+                                      if (rows[i][j * scale_ratio] == alpha)
+                                        {
+                                           ptr++ ;
+                                        }
+                                      else
+                                        {
+                                           r = cmap->Colors[rows[i1][j1 * scale_ratio]].Red;
+                                           g = cmap->Colors[rows[i1][j1 * scale_ratio]].Green;
+                                           b = cmap->Colors[rows[i1][j1 * scale_ratio]].Blue;
+                                           *ptr++ = ARGB_JOIN(0xff, r, g, b);
+                                        }
                                    }
                               }
                          }
@@ -488,10 +495,17 @@ _evas_image_load_frame_image_data(Eina_File *f,
                                     }
                                   else
                                     {
-                                       r = cmap->Colors[rows[i1][j1 * scale_ratio]].Red;
-                                       g = cmap->Colors[rows[i1][j1 * scale_ratio]].Green;
-                                       b = cmap->Colors[rows[i1][j1 * scale_ratio]].Blue;
-                                       *ptr++ = ARGB_JOIN(0xff, r, g, b);
+                                      if (rows[i][j * scale_ratio] == alpha)
+                                        {
+                                           ptr++ ;
+                                        }
+                                      else
+                                        {
+                                           r = cmap->Colors[rows[i1][j1 * scale_ratio]].Red;
+                                           g = cmap->Colors[rows[i1][j1 * scale_ratio]].Green;
+                                           b = cmap->Colors[rows[i1][j1 * scale_ratio]].Blue;
+                                           *ptr++ = ARGB_JOIN(0xff, r, g, b);
+                                        }
                                     }
                                }
                           }
@@ -538,7 +552,7 @@ _evas_image_load_frame_image_data(Eina_File *f,
                          }
                        else
                          {
-                            if (rows[i1][j1] == alpha)
+                            if (rows[i1][j1 * scale_ratio] == alpha)
                               {
                                  ptr++;
                               }