[gimp] file-psd: Make file-psd-save embed color profile
- From: Mukund Sivaraman <muks src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] file-psd: Make file-psd-save embed color profile
- Date: Fri, 6 May 2011 14:39:38 +0000 (UTC)
commit 759fad8189c9790dcef5efe727092f99d3461792
Author: Yoshinori Yamakawa <yamma-ma users sourceforge jp>
Date: Sun Apr 10 18:39:22 2011 +0900
file-psd: Make file-psd-save embed color profile
plug-ins/file-psd/psd-save.c | 33 +++++++++++++++++++++++++--------
1 files changed, 25 insertions(+), 8 deletions(-)
---
diff --git a/plug-ins/file-psd/psd-save.c b/plug-ins/file-psd/psd-save.c
index 0195ae3..ab485b1 100644
--- a/plug-ins/file-psd/psd-save.c
+++ b/plug-ins/file-psd/psd-save.c
@@ -779,15 +779,16 @@ static void
save_resources (FILE *fd,
gint32 image_id)
{
- gint i;
- gchar *fileName; /* Image file name */
- gint32 idActLayer; /* Id of the active layer */
- guint nActiveLayer = 0; /* Number of the active layer */
- gboolean ActiveLayerPresent; /* TRUE if there's an active layer */
+ gint i;
+ gchar *fileName; /* Image file name */
+ gint32 idActLayer; /* Id of the active layer */
+ guint nActiveLayer = 0; /* Number of the active layer */
+ gboolean ActiveLayerPresent; /* TRUE if there's an active layer */
+ GimpParasite *parasite;
- glong eof_pos; /* Position for End of file */
- glong rsc_pos; /* Position for Lengths of Resources section */
- glong name_sec; /* Position for Lengths of Channel Names */
+ glong eof_pos; /* Position for End of file */
+ glong rsc_pos; /* Position for Lengths of Resources section */
+ glong name_sec; /* Position for Lengths of Channel Names */
/* Only relevant resources in GIMP are: 0x03EE, 0x03F0 & 0x0400 */
@@ -955,6 +956,7 @@ save_resources (FILE *fd,
write_gint16 (fd, psd_unit, "vRes unit");
write_gint16 (fd, psd_unit, "height unit");
}
+
/* --------------- Write Active Layer Number --------------- */
if (ActiveLayerPresent)
@@ -972,6 +974,21 @@ save_resources (FILE *fd,
IFDBG printf ("\tTotal length of 0x0400 resource: %d\n", (int) sizeof (gint16));
}
+ /* --------------- Write ICC profile data ------------------- */
+ parasite = gimp_image_get_parasite (image_id, "icc-profile");
+ if (parasite)
+ {
+ gint32 profile_length = gimp_parasite_data_size (parasite);
+
+ xfwrite (fd, "8BIM", 4, "imageresources signature");
+ write_gint16 (fd, 0x040f, "0x040f Id");
+ write_gint16 (fd, 0, "Id name"); /* Set to null string (two zeros) */
+ write_gint32 (fd, profile_length, "0x040f resource size");
+ xfwrite (fd, gimp_parasite_data (parasite), profile_length, "ICC profile");
+
+ gimp_parasite_free (parasite);
+ }
+
/* --------------- Write Total Section Length --------------- */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]