[easytag] Support writing GIF image data to files
- From: David King <davidk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [easytag] Support writing GIF image data to files
- Date: Fri, 7 Mar 2014 22:43:43 +0000 (UTC)
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]