[easytag] Support writing GIF image data to files



commit 51b9e859a969fff66f3893e15dbedc1afca87616
Author: David King <amigadave amigadave com>
Date:   Fri Mar 7 20:41:11 2014 +0000

    Support writing GIF image data to files

 src/id3_tag.c |   16 ++++++++++++++++
 src/picture.c |   23 +++++++++++++++++++++--
 src/picture.h |    1 +
 3 files changed, 38 insertions(+), 2 deletions(-)
---
diff --git a/src/id3_tag.c b/src/id3_tag.c
index b2cb847..dabec6d 100644
--- a/src/id3_tag.c
+++ b/src/id3_tag.c
@@ -458,6 +458,22 @@ Id3tag_Write_File_v23Tag (ET_File *ETFile)
                 if ((id3_field = ID3Frame_GetField(id3_frame,ID3FN_IMAGEFORMAT)))
                     ID3Field_SetASCII(id3_field, "PNG");
                 break;
+            case PICTURE_FORMAT_GIF:
+                if ((id3_field = ID3Frame_GetField (id3_frame,
+                                                    ID3FN_MIMETYPE)))
+                {
+                    ID3Field_SetASCII (id3_field,
+                                       Picture_Mime_Type_String (format));
+                }
+
+                if ((id3_field = ID3Frame_GetField (id3_frame,
+                                                    ID3FN_IMAGEFORMAT)))
+                {
+                    /* I could find no reference for what ID3FN_IMAGEFORMAT
+                     * should contain, so this is a guess. */
+                    ID3Field_SetASCII (id3_field, "GIF");
+                }
+                break;
             default:
                 break;
         }
diff --git a/src/picture.c b/src/picture.c
index 8e74b93..1aa5605 100644
--- a/src/picture.c
+++ b/src/picture.c
@@ -902,6 +902,9 @@ void Picture_Save_Button_Clicked (GObject *object)
                 case PICTURE_FORMAT_PNG :
                     image_name = g_strdup("image_name.png");
                     break;
+                case PICTURE_FORMAT_GIF:
+                    image_name = g_strdup ("image_name.gif");
+                    break;
                 case PICTURE_FORMAT_UNKNOWN :
                     image_name = g_strdup("image_name.ext");
                     break;
@@ -966,7 +969,7 @@ Picture_Format Picture_Format_From_Data (Picture *pic)
     &&  pic->data[7] == 0x0a)
         return PICTURE_FORMAT_PNG;
     
-    /*// GIF : "GIF87a"
+    /* GIF: "GIF87a" */
     if (pic->data && pic->size > 6
     &&  pic->data[0] == 0x47
     &&  pic->data[1] == 0x49
@@ -974,7 +977,19 @@ Picture_Format Picture_Format_From_Data (Picture *pic)
     &&  pic->data[3] == 0x38
     &&  pic->data[4] == 0x37
     &&  pic->data[5] == 0x61)
-        return PICTURE_FORMAT_GIF;*/
+        return PICTURE_FORMAT_GIF;
+
+    /* GIF: "GIF89a" */
+    if (pic->data && pic->size > 6
+        &&  pic->data[0] == 0x47
+        &&  pic->data[1] == 0x49
+        &&  pic->data[2] == 0x46
+        &&  pic->data[3] == 0x38
+        &&  pic->data[4] == 0x39
+        &&  pic->data[5] == 0x61)
+    {
+        return PICTURE_FORMAT_GIF;
+    }
     
     return PICTURE_FORMAT_UNKNOWN;
 }
@@ -987,6 +1002,8 @@ const gchar *Picture_Mime_Type_String (Picture_Format format)
             return "image/jpeg";
         case PICTURE_FORMAT_PNG:
             return "image/png";
+        case PICTURE_FORMAT_GIF:
+            return "image/gif";
         default:
             g_debug ("%s", "Unrecognised image MIME type");
             return "application/octet-stream";
@@ -1003,6 +1020,8 @@ Picture_Format_String (Picture_Format format)
             return _("JPEG image");
         case PICTURE_FORMAT_PNG:
             return _("PNG image");
+        case PICTURE_FORMAT_GIF:
+            return _("GIF image");
         default:
             return _("Unknown image");
     }
diff --git a/src/picture.h b/src/picture.h
index 3498510..14224fd 100644
--- a/src/picture.h
+++ b/src/picture.h
@@ -74,6 +74,7 @@ typedef enum
 {
     PICTURE_FORMAT_JPEG,
     PICTURE_FORMAT_PNG,
+    PICTURE_FORMAT_GIF,
     PICTURE_FORMAT_UNKNOWN
 } Picture_Format;
 


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