mirror of https://github.com/GNOME/gimp.git
load and save embedded ICC profiles, based on a patch from Ture Pålsson
2005-10-24 Sven Neumann <sven@gimp.org> * plug-ins/common/png.c: load and save embedded ICC profiles, based on a patch from Ture Pålsson (bug #319580). * devel-docs/parasites.txt: document the "icc-profile-name" parasite.
This commit is contained in:
parent
4ecf49d71c
commit
02e8f588ff
11
ChangeLog
11
ChangeLog
|
@ -1,14 +1,21 @@
|
||||||
|
2005-10-24 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
|
* plug-ins/common/png.c: load and save embedded ICC profiles, based
|
||||||
|
on a patch from Ture Pålsson (bug #319580).
|
||||||
|
|
||||||
|
* devel-docs/parasites.txt: document the "icc-profile-name" parasite.
|
||||||
|
|
||||||
2005-10-24 Jakub Steiner <jimmac@ximian.com>
|
2005-10-24 Jakub Steiner <jimmac@ximian.com>
|
||||||
|
|
||||||
* themes/Default/images/tools/stock-tool-path-16.png
|
* themes/Default/images/tools/stock-tool-path-16.png
|
||||||
* themes/Default/images/tools/stock-tool-path-22.png: works on
|
* themes/Default/images/tools/stock-tool-path-22.png: works on
|
||||||
dark themes (bug #168981)
|
dark themes (bug #168981)
|
||||||
|
|
||||||
2005-10-24 Jakub Steiner <jimmac@ximian.com>
|
2005-10-24 Jakub Steiner <jimmac@ximian.com>
|
||||||
|
|
||||||
* themes/Default/images/tools/stock-tool-airbrush-16.png
|
* themes/Default/images/tools/stock-tool-airbrush-16.png
|
||||||
* themes/Default/images/tools/stock-tool-airbrush-22.png: make it
|
* themes/Default/images/tools/stock-tool-airbrush-22.png: make it
|
||||||
work on dark background
|
work on dark background
|
||||||
|
|
||||||
2005-10-24 Michael Natterer <mitch@gimp.org>
|
2005-10-24 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
|
|
|
@ -164,6 +164,13 @@ Global data follows no strict rules.
|
||||||
manager exists to use this parasite, and it will be used
|
manager exists to use this parasite, and it will be used
|
||||||
for interchange between TIFF and PNG (identical profiles)
|
for interchange between TIFF and PNG (identical profiles)
|
||||||
|
|
||||||
|
"icc-profile-name" (IMAGE, PERSISTENT)
|
||||||
|
The profile name is a convenient name for referring to the
|
||||||
|
profile. It is for example used in the PNG file format. The
|
||||||
|
name must be stored in UTF-8 encoding. If a file format uses
|
||||||
|
a different character encoding, it must be converted to UTF-8
|
||||||
|
for use as a parasite.
|
||||||
|
|
||||||
"decompose-data" (IMAGE, NONPERSISTENT)
|
"decompose-data" (IMAGE, NONPERSISTENT)
|
||||||
Starting with GIMP 2.3, this is added to images produced by
|
Starting with GIMP 2.3, this is added to images produced by
|
||||||
the decompose plug-in, and contains information necessary to
|
the decompose plug-in, and contains information necessary to
|
||||||
|
|
|
@ -1052,6 +1052,45 @@ load_image (const gchar *filename,
|
||||||
g_free (comment);
|
g_free (comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(PNG_iCCP_SUPPORTED)
|
||||||
|
/*
|
||||||
|
* Get the iCCP (colour profile) chunk, if any, and attach it as
|
||||||
|
* a parasite
|
||||||
|
*/
|
||||||
|
|
||||||
|
{
|
||||||
|
png_uint_32 proflen;
|
||||||
|
png_charp profname, profile;
|
||||||
|
int profcomp;
|
||||||
|
|
||||||
|
if (png_get_iCCP (pp, info, &profname, &profcomp, &profile, &proflen))
|
||||||
|
{
|
||||||
|
GimpParasite *parasite;
|
||||||
|
|
||||||
|
parasite = gimp_parasite_new ("icc-profile", 0, proflen, profile);
|
||||||
|
|
||||||
|
gimp_image_parasite_attach (image, parasite);
|
||||||
|
gimp_parasite_free (parasite);
|
||||||
|
|
||||||
|
if (profname)
|
||||||
|
{
|
||||||
|
gchar *tmp = g_convert (profname, strlen (profname),
|
||||||
|
"ISO-8859-1", "UTF-8", NULL, NULL, NULL);
|
||||||
|
|
||||||
|
if (tmp)
|
||||||
|
{
|
||||||
|
parasite = gimp_parasite_new ("icc-profile-name", 0,
|
||||||
|
strlen (tmp), tmp);
|
||||||
|
gimp_image_parasite_attach (image, parasite);
|
||||||
|
gimp_parasite_free (parasite);
|
||||||
|
|
||||||
|
g_free (tmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Done with the file...
|
* Done with the file...
|
||||||
*/
|
*/
|
||||||
|
@ -1385,6 +1424,32 @@ save_image (const gchar *filename,
|
||||||
|
|
||||||
#endif /* PNG_LIBPNG_VER > 99 */
|
#endif /* PNG_LIBPNG_VER > 99 */
|
||||||
|
|
||||||
|
#if defined(PNG_iCCP_SUPPORTED)
|
||||||
|
{
|
||||||
|
GimpParasite *profile_parasite;
|
||||||
|
gchar *profile_name = NULL;
|
||||||
|
|
||||||
|
profile_parasite = gimp_image_parasite_find (orig_image_ID, "icc-profile");
|
||||||
|
|
||||||
|
if (profile_parasite)
|
||||||
|
{
|
||||||
|
GimpParasite *parasite = gimp_image_parasite_find (orig_image_ID,
|
||||||
|
"icc-profile-name");
|
||||||
|
if (parasite)
|
||||||
|
profile_name = g_convert (gimp_parasite_data (parasite),
|
||||||
|
gimp_parasite_data_size (parasite),
|
||||||
|
"UTF-8", "ISO-8859-1", NULL, NULL, NULL);
|
||||||
|
|
||||||
|
png_set_iCCP (pp, info,
|
||||||
|
profile_name ? profile_name : "ICC profile", 0,
|
||||||
|
(gchar *) gimp_parasite_data (profile_parasite),
|
||||||
|
gimp_parasite_data_size (profile_parasite));
|
||||||
|
|
||||||
|
g_free (profile_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
png_write_info (pp, info);
|
png_write_info (pp, info);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue