mirror of https://github.com/GNOME/gimp.git
libgimpcolor: add gimp_lcms_profile_is_equal()
and remove all of our own MD5 digest code and API. is_equal() uses lcms' own MD5 API which I missed before. Thanks Elle for pointing that out :)
This commit is contained in:
parent
b4a2fa916c
commit
32e47cf70d
|
@ -84,7 +84,7 @@ gimp_image_validate_icc_profile (GimpImage *image,
|
||||||
|
|
||||||
profile = gimp_lcms_profile_open_from_data (gimp_parasite_data (icc_profile),
|
profile = gimp_lcms_profile_open_from_data (gimp_parasite_data (icc_profile),
|
||||||
gimp_parasite_data_size (icc_profile),
|
gimp_parasite_data_size (icc_profile),
|
||||||
NULL, error);
|
error);
|
||||||
|
|
||||||
if (! profile)
|
if (! profile)
|
||||||
{
|
{
|
||||||
|
@ -135,7 +135,6 @@ gimp_image_set_icc_profile (GimpImage *image,
|
||||||
|
|
||||||
GimpColorProfile
|
GimpColorProfile
|
||||||
gimp_image_get_profile (GimpImage *image,
|
gimp_image_get_profile (GimpImage *image,
|
||||||
guint8 *md5_digest,
|
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
GimpColorConfig *config;
|
GimpColorConfig *config;
|
||||||
|
@ -153,12 +152,11 @@ gimp_image_get_profile (GimpImage *image,
|
||||||
{
|
{
|
||||||
return gimp_lcms_profile_open_from_data (gimp_parasite_data (parasite),
|
return gimp_lcms_profile_open_from_data (gimp_parasite_data (parasite),
|
||||||
gimp_parasite_data_size (parasite),
|
gimp_parasite_data_size (parasite),
|
||||||
md5_digest, error);
|
error);
|
||||||
}
|
}
|
||||||
else if (config->rgb_profile)
|
else if (config->rgb_profile)
|
||||||
{
|
{
|
||||||
profile = gimp_lcms_profile_open_from_file (config->rgb_profile,
|
profile = gimp_lcms_profile_open_from_file (config->rgb_profile, error);
|
||||||
md5_digest, error);
|
|
||||||
|
|
||||||
if (profile && ! gimp_lcms_profile_is_rgb (profile))
|
if (profile && ! gimp_lcms_profile_is_rgb (profile))
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,7 +30,6 @@ void gimp_image_set_icc_profile (GimpImage *image
|
||||||
const GimpParasite *icc_profile);
|
const GimpParasite *icc_profile);
|
||||||
|
|
||||||
GimpColorProfile gimp_image_get_profile (GimpImage *image,
|
GimpColorProfile gimp_image_get_profile (GimpImage *image,
|
||||||
guint8 *md5_digest,
|
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,7 @@ gimp_image_profile_view_update (GimpImageParasiteView *view)
|
||||||
|
|
||||||
image = gimp_image_parasite_view_get_image (view);
|
image = gimp_image_parasite_view_get_image (view);
|
||||||
|
|
||||||
profile = gimp_image_get_profile (image, NULL, &error);
|
profile = gimp_image_get_profile (image, &error);
|
||||||
|
|
||||||
if (! profile && error)
|
if (! profile && error)
|
||||||
{
|
{
|
||||||
|
@ -120,7 +120,7 @@ gimp_image_profile_view_update (GimpImageParasiteView *view)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! profile)
|
if (! profile)
|
||||||
profile = gimp_lcms_create_srgb_profile (NULL);
|
profile = gimp_lcms_create_srgb_profile ();
|
||||||
|
|
||||||
gimp_color_profile_view_set_profile (profile_view->profile_view, profile);
|
gimp_color_profile_view_set_profile (profile_view->profile_view, profile);
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ EXPORTS
|
||||||
gimp_lcms_profile_get_model
|
gimp_lcms_profile_get_model
|
||||||
gimp_lcms_profile_get_summary
|
gimp_lcms_profile_get_summary
|
||||||
gimp_lcms_profile_is_cmyk
|
gimp_lcms_profile_is_cmyk
|
||||||
|
gimp_lcms_profile_is_equal
|
||||||
gimp_lcms_profile_is_rgb
|
gimp_lcms_profile_is_rgb
|
||||||
gimp_lcms_profile_open_from_data
|
gimp_lcms_profile_open_from_data
|
||||||
gimp_lcms_profile_open_from_file
|
gimp_lcms_profile_open_from_file
|
||||||
|
|
|
@ -22,6 +22,8 @@
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include <glib.h> /* lcms.h uses the "inline" keyword */
|
#include <glib.h> /* lcms.h uses the "inline" keyword */
|
||||||
|
|
||||||
#include <lcms2.h>
|
#include <lcms2.h>
|
||||||
|
@ -57,25 +59,8 @@ gimp_lcms_error_quark (void)
|
||||||
return quark;
|
return quark;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
gimp_lcms_calculate_checksum (const guint8 *data,
|
|
||||||
gsize length,
|
|
||||||
guint8 *md5_digest)
|
|
||||||
{
|
|
||||||
GChecksum *md5 = g_checksum_new (G_CHECKSUM_MD5);
|
|
||||||
|
|
||||||
g_checksum_update (md5,
|
|
||||||
(const guchar *) data + sizeof (cmsICCHeader),
|
|
||||||
length - sizeof (cmsICCHeader));
|
|
||||||
|
|
||||||
length = GIMP_LCMS_MD5_DIGEST_LENGTH;
|
|
||||||
g_checksum_get_digest (md5, md5_digest, &length);
|
|
||||||
g_checksum_free (md5);
|
|
||||||
}
|
|
||||||
|
|
||||||
GimpColorProfile
|
GimpColorProfile
|
||||||
gimp_lcms_profile_open_from_file (const gchar *filename,
|
gimp_lcms_profile_open_from_file (const gchar *filename,
|
||||||
guint8 *md5_digest,
|
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
GimpColorProfile profile;
|
GimpColorProfile profile;
|
||||||
|
@ -97,15 +82,9 @@ gimp_lcms_profile_open_from_file (const gchar *filename,
|
||||||
profile = cmsOpenProfileFromMem (data, length);
|
profile = cmsOpenProfileFromMem (data, length);
|
||||||
|
|
||||||
if (! profile)
|
if (! profile)
|
||||||
{
|
|
||||||
g_set_error (error, gimp_lcms_error_quark (), 0,
|
g_set_error (error, gimp_lcms_error_quark (), 0,
|
||||||
_("'%s' does not appear to be an ICC color profile"),
|
_("'%s' does not appear to be an ICC color profile"),
|
||||||
gimp_filename_to_utf8 (filename));
|
gimp_filename_to_utf8 (filename));
|
||||||
}
|
|
||||||
else if (md5_digest)
|
|
||||||
{
|
|
||||||
gimp_lcms_calculate_checksum (data, length, md5_digest);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_mapped_file_unref (file);
|
g_mapped_file_unref (file);
|
||||||
|
|
||||||
|
@ -115,7 +94,6 @@ gimp_lcms_profile_open_from_file (const gchar *filename,
|
||||||
GimpColorProfile
|
GimpColorProfile
|
||||||
gimp_lcms_profile_open_from_data (const guint8 *data,
|
gimp_lcms_profile_open_from_data (const guint8 *data,
|
||||||
gsize length,
|
gsize length,
|
||||||
guint8 *md5_digest,
|
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
GimpColorProfile profile;
|
GimpColorProfile profile;
|
||||||
|
@ -127,14 +105,8 @@ gimp_lcms_profile_open_from_data (const guint8 *data,
|
||||||
profile = cmsOpenProfileFromMem (data, length);
|
profile = cmsOpenProfileFromMem (data, length);
|
||||||
|
|
||||||
if (! profile)
|
if (! profile)
|
||||||
{
|
|
||||||
g_set_error_literal (error, gimp_lcms_error_quark (), 0,
|
g_set_error_literal (error, gimp_lcms_error_quark (), 0,
|
||||||
_("Data does not appear to be an ICC color profile"));
|
_("Data does not appear to be an ICC color profile"));
|
||||||
}
|
|
||||||
else if (md5_digest)
|
|
||||||
{
|
|
||||||
gimp_lcms_calculate_checksum (data, length, md5_digest);
|
|
||||||
}
|
|
||||||
|
|
||||||
return profile;
|
return profile;
|
||||||
}
|
}
|
||||||
|
@ -236,6 +208,28 @@ gimp_lcms_profile_get_summary (GimpColorProfile profile)
|
||||||
return g_string_free (string, FALSE);
|
return g_string_free (string, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gimp_lcms_profile_is_equal (GimpColorProfile profile1,
|
||||||
|
GimpColorProfile profile2)
|
||||||
|
{
|
||||||
|
cmsUInt8Number digest1[GIMP_LCMS_MD5_DIGEST_LENGTH];
|
||||||
|
cmsUInt8Number digest2[GIMP_LCMS_MD5_DIGEST_LENGTH];
|
||||||
|
|
||||||
|
g_return_val_if_fail (profile1 != NULL, FALSE);
|
||||||
|
g_return_val_if_fail (profile2 != NULL, FALSE);
|
||||||
|
|
||||||
|
if (! cmsMD5computeID (profile1) ||
|
||||||
|
! cmsMD5computeID (profile2))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmsGetHeaderProfileID (profile1, digest1);
|
||||||
|
cmsGetHeaderProfileID (profile2, digest2);
|
||||||
|
|
||||||
|
return (memcmp (digest1, digest2, GIMP_LCMS_MD5_DIGEST_LENGTH) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
gimp_lcms_profile_is_rgb (GimpColorProfile profile)
|
gimp_lcms_profile_is_rgb (GimpColorProfile profile)
|
||||||
{
|
{
|
||||||
|
@ -297,7 +291,7 @@ gimp_lcms_profile_set_tag (cmsHPROFILE profile,
|
||||||
* Since: GIMP 2.10
|
* Since: GIMP 2.10
|
||||||
**/
|
**/
|
||||||
GimpColorProfile
|
GimpColorProfile
|
||||||
gimp_lcms_create_srgb_profile (guint8 *md5_digest)
|
gimp_lcms_create_srgb_profile (void)
|
||||||
{
|
{
|
||||||
cmsHPROFILE srgb_profile;
|
cmsHPROFILE srgb_profile;
|
||||||
cmsCIExyY d65_srgb_specs = { 0.3127, 0.3290, 1.0 };
|
cmsCIExyY d65_srgb_specs = { 0.3127, 0.3290, 1.0 };
|
||||||
|
@ -345,25 +339,5 @@ gimp_lcms_create_srgb_profile (guint8 *md5_digest)
|
||||||
* cmsSetProfileVersion (srgb_profile, 2.1);
|
* cmsSetProfileVersion (srgb_profile, 2.1);
|
||||||
**/
|
**/
|
||||||
|
|
||||||
if (md5_digest)
|
|
||||||
{
|
|
||||||
md5_digest[0] = 0xcb;
|
|
||||||
md5_digest[1] = 0x63;
|
|
||||||
md5_digest[2] = 0x14;
|
|
||||||
md5_digest[3] = 0x56;
|
|
||||||
md5_digest[4] = 0xd4;
|
|
||||||
md5_digest[5] = 0x0a;
|
|
||||||
md5_digest[6] = 0x01;
|
|
||||||
md5_digest[7] = 0x62;
|
|
||||||
md5_digest[8] = 0xa0;
|
|
||||||
md5_digest[9] = 0xdb;
|
|
||||||
md5_digest[10] = 0xe6;
|
|
||||||
md5_digest[11] = 0x32;
|
|
||||||
md5_digest[12] = 0x8b;
|
|
||||||
md5_digest[13] = 0xea;
|
|
||||||
md5_digest[14] = 0x1a;
|
|
||||||
md5_digest[15] = 0x89;
|
|
||||||
}
|
|
||||||
|
|
||||||
return srgb_profile;
|
return srgb_profile;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,11 +36,9 @@ G_BEGIN_DECLS
|
||||||
|
|
||||||
|
|
||||||
GimpColorProfile gimp_lcms_profile_open_from_file (const gchar *filename,
|
GimpColorProfile gimp_lcms_profile_open_from_file (const gchar *filename,
|
||||||
guint8 *md5_digest,
|
|
||||||
GError **error);
|
GError **error);
|
||||||
GimpColorProfile gimp_lcms_profile_open_from_data (const guint8 *data,
|
GimpColorProfile gimp_lcms_profile_open_from_data (const guint8 *data,
|
||||||
gsize length,
|
gsize length,
|
||||||
guint8 *md5_digest,
|
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
gchar * gimp_lcms_profile_get_description (GimpColorProfile profile);
|
gchar * gimp_lcms_profile_get_description (GimpColorProfile profile);
|
||||||
|
@ -50,10 +48,13 @@ gchar * gimp_lcms_profile_get_copyright (GimpColorProfile profil
|
||||||
|
|
||||||
gchar * gimp_lcms_profile_get_summary (GimpColorProfile profile);
|
gchar * gimp_lcms_profile_get_summary (GimpColorProfile profile);
|
||||||
|
|
||||||
|
gboolean gimp_lcms_profile_is_equal (GimpColorProfile profile1,
|
||||||
|
GimpColorProfile profile2);
|
||||||
|
|
||||||
gboolean gimp_lcms_profile_is_rgb (GimpColorProfile profile);
|
gboolean gimp_lcms_profile_is_rgb (GimpColorProfile profile);
|
||||||
gboolean gimp_lcms_profile_is_cmyk (GimpColorProfile profile);
|
gboolean gimp_lcms_profile_is_cmyk (GimpColorProfile profile);
|
||||||
|
|
||||||
GimpColorProfile gimp_lcms_create_srgb_profile (guint8 *md5_digest);
|
GimpColorProfile gimp_lcms_create_srgb_profile (void);
|
||||||
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
|
@ -199,7 +199,7 @@ gimp_color_profile_chooser_dialog_update_preview (GimpColorProfileChooserDialog
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = gimp_lcms_profile_open_from_file (filename, NULL, &error);
|
profile = gimp_lcms_profile_open_from_file (filename, &error);
|
||||||
|
|
||||||
if (! profile)
|
if (! profile)
|
||||||
{
|
{
|
||||||
|
|
|
@ -357,7 +357,7 @@ color_config_get_rgb_profile (GimpColorConfig *config)
|
||||||
if (config->rgb_profile)
|
if (config->rgb_profile)
|
||||||
profile = cmsOpenProfileFromFile (config->rgb_profile, "r");
|
profile = cmsOpenProfileFromFile (config->rgb_profile, "r");
|
||||||
|
|
||||||
return profile ? profile : gimp_lcms_create_srgb_profile (NULL);
|
return profile ? profile : gimp_lcms_create_srgb_profile ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static cmsHPROFILE
|
static cmsHPROFILE
|
||||||
|
|
|
@ -318,10 +318,10 @@ cdisplay_lcms_changed (GimpColorDisplay *display)
|
||||||
cmsUInt32Number softproof_flags = 0;
|
cmsUInt32Number softproof_flags = 0;
|
||||||
|
|
||||||
if (! src_profile)
|
if (! src_profile)
|
||||||
src_profile = gimp_lcms_create_srgb_profile (NULL);
|
src_profile = gimp_lcms_create_srgb_profile ();
|
||||||
|
|
||||||
if (! dest_profile)
|
if (! dest_profile)
|
||||||
dest_profile = gimp_lcms_create_srgb_profile (NULL);
|
dest_profile = gimp_lcms_create_srgb_profile ();
|
||||||
|
|
||||||
softproof_flags |= cmsFLAGS_SOFTPROOFING;
|
softproof_flags |= cmsFLAGS_SOFTPROOFING;
|
||||||
|
|
||||||
|
@ -358,10 +358,10 @@ cdisplay_lcms_changed (GimpColorDisplay *display)
|
||||||
cmsUInt32Number display_flags = 0;
|
cmsUInt32Number display_flags = 0;
|
||||||
|
|
||||||
if (! src_profile)
|
if (! src_profile)
|
||||||
src_profile = gimp_lcms_create_srgb_profile (NULL);
|
src_profile = gimp_lcms_create_srgb_profile ();
|
||||||
|
|
||||||
if (! dest_profile)
|
if (! dest_profile)
|
||||||
dest_profile = gimp_lcms_create_srgb_profile (NULL);
|
dest_profile = gimp_lcms_create_srgb_profile ();
|
||||||
|
|
||||||
if (config->display_use_black_point_compensation)
|
if (config->display_use_black_point_compensation)
|
||||||
{
|
{
|
||||||
|
|
|
@ -384,7 +384,7 @@ cdisplay_proof_changed (GimpColorDisplay *display)
|
||||||
if (! proof->profile)
|
if (! proof->profile)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
rgb_profile = gimp_lcms_create_srgb_profile (NULL);
|
rgb_profile = gimp_lcms_create_srgb_profile ();
|
||||||
|
|
||||||
proof_profile = cmsOpenProfileFromFile (proof->profile, "r");
|
proof_profile = cmsOpenProfileFromFile (proof->profile, "r");
|
||||||
|
|
||||||
|
|
|
@ -108,7 +108,6 @@ static GimpPDBStatusType lcms_icc_file_info (const gchar *filename,
|
||||||
|
|
||||||
static cmsHPROFILE lcms_image_get_profile (GimpColorConfig *config,
|
static cmsHPROFILE lcms_image_get_profile (GimpColorConfig *config,
|
||||||
gint32 image,
|
gint32 image,
|
||||||
guchar *checksum,
|
|
||||||
GError **error);
|
GError **error);
|
||||||
static gboolean lcms_image_set_profile (gint32 image,
|
static gboolean lcms_image_set_profile (gint32 image,
|
||||||
cmsHPROFILE profile,
|
cmsHPROFILE profile,
|
||||||
|
@ -529,8 +528,6 @@ lcms_icc_apply (GimpColorConfig *config,
|
||||||
GimpPDBStatusType status = GIMP_PDB_SUCCESS;
|
GimpPDBStatusType status = GIMP_PDB_SUCCESS;
|
||||||
cmsHPROFILE src_profile = NULL;
|
cmsHPROFILE src_profile = NULL;
|
||||||
cmsHPROFILE dest_profile = NULL;
|
cmsHPROFILE dest_profile = NULL;
|
||||||
guchar src_md5[GIMP_LCMS_MD5_DIGEST_LENGTH];
|
|
||||||
guchar dest_md5[GIMP_LCMS_MD5_DIGEST_LENGTH];
|
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), GIMP_PDB_CALLING_ERROR);
|
g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), GIMP_PDB_CALLING_ERROR);
|
||||||
|
@ -543,8 +540,7 @@ lcms_icc_apply (GimpColorConfig *config,
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
dest_profile = gimp_lcms_profile_open_from_file (filename, dest_md5,
|
dest_profile = gimp_lcms_profile_open_from_file (filename, &error);
|
||||||
&error);
|
|
||||||
|
|
||||||
if (! dest_profile)
|
if (! dest_profile)
|
||||||
{
|
{
|
||||||
|
@ -564,7 +560,7 @@ lcms_icc_apply (GimpColorConfig *config,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
src_profile = lcms_image_get_profile (config, image, src_md5, &error);
|
src_profile = lcms_image_get_profile (config, image, &error);
|
||||||
|
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
|
@ -576,12 +572,12 @@ lcms_icc_apply (GimpColorConfig *config,
|
||||||
return GIMP_PDB_SUCCESS;
|
return GIMP_PDB_SUCCESS;
|
||||||
|
|
||||||
if (! src_profile)
|
if (! src_profile)
|
||||||
src_profile = gimp_lcms_create_srgb_profile (src_md5);
|
src_profile = gimp_lcms_create_srgb_profile ();
|
||||||
|
|
||||||
if (! dest_profile)
|
if (! dest_profile)
|
||||||
dest_profile = gimp_lcms_create_srgb_profile (dest_md5);
|
dest_profile = gimp_lcms_create_srgb_profile ();
|
||||||
|
|
||||||
if (memcmp (src_md5, dest_md5, GIMP_LCMS_MD5_DIGEST_LENGTH) == 0)
|
if (gimp_lcms_profile_is_equal (src_profile, dest_profile))
|
||||||
{
|
{
|
||||||
gchar *src_desc = gimp_lcms_profile_get_description (src_profile);
|
gchar *src_desc = gimp_lcms_profile_get_description (src_profile);
|
||||||
gchar *dest_desc = gimp_lcms_profile_get_description (dest_profile);
|
gchar *dest_desc = gimp_lcms_profile_get_description (dest_profile);
|
||||||
|
@ -632,7 +628,7 @@ lcms_icc_info (GimpColorConfig *config,
|
||||||
g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), GIMP_PDB_CALLING_ERROR);
|
g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), GIMP_PDB_CALLING_ERROR);
|
||||||
g_return_val_if_fail (image != -1, GIMP_PDB_CALLING_ERROR);
|
g_return_val_if_fail (image != -1, GIMP_PDB_CALLING_ERROR);
|
||||||
|
|
||||||
profile = lcms_image_get_profile (config, image, NULL, &error);
|
profile = lcms_image_get_profile (config, image, &error);
|
||||||
|
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
|
@ -641,7 +637,7 @@ lcms_icc_info (GimpColorConfig *config,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! profile)
|
if (! profile)
|
||||||
profile = gimp_lcms_create_srgb_profile (NULL);
|
profile = gimp_lcms_create_srgb_profile ();
|
||||||
|
|
||||||
if (name) *name = gimp_lcms_profile_get_model (profile);
|
if (name) *name = gimp_lcms_profile_get_model (profile);
|
||||||
if (desc) *desc = gimp_lcms_profile_get_description (profile);
|
if (desc) *desc = gimp_lcms_profile_get_description (profile);
|
||||||
|
@ -661,7 +657,7 @@ lcms_icc_file_info (const gchar *filename,
|
||||||
{
|
{
|
||||||
cmsHPROFILE profile;
|
cmsHPROFILE profile;
|
||||||
|
|
||||||
profile = gimp_lcms_profile_open_from_file (filename, NULL, error);
|
profile = gimp_lcms_profile_open_from_file (filename, error);
|
||||||
|
|
||||||
if (! profile)
|
if (! profile)
|
||||||
return GIMP_PDB_EXECUTION_ERROR;
|
return GIMP_PDB_EXECUTION_ERROR;
|
||||||
|
@ -678,7 +674,6 @@ lcms_icc_file_info (const gchar *filename,
|
||||||
static cmsHPROFILE
|
static cmsHPROFILE
|
||||||
lcms_image_get_profile (GimpColorConfig *config,
|
lcms_image_get_profile (GimpColorConfig *config,
|
||||||
gint32 image,
|
gint32 image,
|
||||||
guchar *checksum,
|
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
GimpParasite *parasite;
|
GimpParasite *parasite;
|
||||||
|
@ -692,7 +687,7 @@ lcms_image_get_profile (GimpColorConfig *config,
|
||||||
{
|
{
|
||||||
profile = gimp_lcms_profile_open_from_data (gimp_parasite_data (parasite),
|
profile = gimp_lcms_profile_open_from_data (gimp_parasite_data (parasite),
|
||||||
gimp_parasite_data_size (parasite),
|
gimp_parasite_data_size (parasite),
|
||||||
checksum, error);
|
error);
|
||||||
if (! profile)
|
if (! profile)
|
||||||
g_prefix_error (error, _("Error parsing 'icc-profile': "));
|
g_prefix_error (error, _("Error parsing 'icc-profile': "));
|
||||||
|
|
||||||
|
@ -700,8 +695,7 @@ lcms_image_get_profile (GimpColorConfig *config,
|
||||||
}
|
}
|
||||||
else if (config->rgb_profile)
|
else if (config->rgb_profile)
|
||||||
{
|
{
|
||||||
profile = gimp_lcms_profile_open_from_file (config->rgb_profile,
|
profile = gimp_lcms_profile_open_from_file (config->rgb_profile, error);
|
||||||
checksum, error);
|
|
||||||
|
|
||||||
if (profile && ! gimp_lcms_profile_is_rgb (profile))
|
if (profile && ! gimp_lcms_profile_is_rgb (profile))
|
||||||
{
|
{
|
||||||
|
@ -796,6 +790,8 @@ lcms_image_apply_profile (gint32 image,
|
||||||
GimpColorRenderingIntent intent,
|
GimpColorRenderingIntent intent,
|
||||||
gboolean bpc)
|
gboolean bpc)
|
||||||
{
|
{
|
||||||
|
gchar *src_desc;
|
||||||
|
gchar *dest_desc;
|
||||||
gint32 saved_selection = -1;
|
gint32 saved_selection = -1;
|
||||||
|
|
||||||
gimp_image_undo_group_start (image);
|
gimp_image_undo_group_start (image);
|
||||||
|
@ -807,18 +803,21 @@ lcms_image_apply_profile (gint32 image,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
src_desc = gimp_lcms_profile_get_description (src_profile);
|
||||||
gchar *src = gimp_lcms_profile_get_description (src_profile);
|
if (! src_desc)
|
||||||
gchar *dest = gimp_lcms_profile_get_description (dest_profile);
|
src_desc = gimp_lcms_profile_get_model (src_profile);
|
||||||
|
|
||||||
/* ICC color profile conversion */
|
dest_desc = gimp_lcms_profile_get_description (dest_profile);
|
||||||
gimp_progress_init_printf (_("Converting from '%s' to '%s'"), src, dest);
|
if (! dest_desc)
|
||||||
|
dest_desc = gimp_lcms_profile_get_model (dest_profile);
|
||||||
|
|
||||||
g_printerr ("lcms: converting from '%s' to '%s'\n", src, dest);
|
gimp_progress_init_printf (_("Converting from '%s' to '%s'"),
|
||||||
|
src_desc, dest_desc);
|
||||||
|
|
||||||
g_free (dest);
|
g_printerr ("lcms: converting from '%s' to '%s'\n", src_desc, dest_desc);
|
||||||
g_free (src);
|
|
||||||
}
|
g_free (dest_desc);
|
||||||
|
g_free (src_desc);
|
||||||
|
|
||||||
if (! gimp_selection_is_empty (image))
|
if (! gimp_selection_is_empty (image))
|
||||||
{
|
{
|
||||||
|
@ -1233,7 +1232,7 @@ lcms_icc_combo_box_set_active (GimpColorProfileComboBox *combo,
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
profile = gimp_lcms_profile_open_from_file (filename, NULL, &error);
|
profile = gimp_lcms_profile_open_from_file (filename, &error);
|
||||||
|
|
||||||
if (! profile)
|
if (! profile)
|
||||||
{
|
{
|
||||||
|
@ -1301,8 +1300,7 @@ lcms_icc_combo_box_new (GimpColorConfig *config,
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
profile = gimp_lcms_profile_open_from_file (config->rgb_profile, NULL,
|
profile = gimp_lcms_profile_open_from_file (config->rgb_profile, &error);
|
||||||
&error);
|
|
||||||
|
|
||||||
if (! profile)
|
if (! profile)
|
||||||
{
|
{
|
||||||
|
@ -1312,7 +1310,7 @@ lcms_icc_combo_box_new (GimpColorConfig *config,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! profile)
|
if (! profile)
|
||||||
profile = gimp_lcms_create_srgb_profile (NULL);
|
profile = gimp_lcms_create_srgb_profile ();
|
||||||
|
|
||||||
name = gimp_lcms_profile_get_description (profile);
|
name = gimp_lcms_profile_get_description (profile);
|
||||||
if (! name)
|
if (! name)
|
||||||
|
@ -1354,7 +1352,7 @@ lcms_dialog (GimpColorConfig *config,
|
||||||
gboolean run;
|
gboolean run;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
src_profile = lcms_image_get_profile (config, image, NULL, &error);
|
src_profile = lcms_image_get_profile (config, image, &error);
|
||||||
|
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
|
@ -1363,7 +1361,7 @@ lcms_dialog (GimpColorConfig *config,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! src_profile)
|
if (! src_profile)
|
||||||
src_profile = gimp_lcms_create_srgb_profile (NULL);
|
src_profile = gimp_lcms_create_srgb_profile ();
|
||||||
|
|
||||||
gimp_ui_init (PLUG_IN_BINARY, FALSE);
|
gimp_ui_init (PLUG_IN_BINARY, FALSE);
|
||||||
|
|
||||||
|
@ -1471,8 +1469,7 @@ lcms_dialog (GimpColorConfig *config,
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
dest_profile = gimp_lcms_profile_open_from_file (filename, NULL,
|
dest_profile = gimp_lcms_profile_open_from_file (filename, &error);
|
||||||
&error);
|
|
||||||
|
|
||||||
if (! dest_profile)
|
if (! dest_profile)
|
||||||
{
|
{
|
||||||
|
@ -1482,7 +1479,7 @@ lcms_dialog (GimpColorConfig *config,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dest_profile = gimp_lcms_create_srgb_profile (NULL);
|
dest_profile = gimp_lcms_create_srgb_profile ();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dest_profile)
|
if (dest_profile)
|
||||||
|
|
|
@ -648,7 +648,7 @@ jpeg_load_cmyk_transform (guint8 *profile_data,
|
||||||
/* make the real sRGB profile as a fallback */
|
/* make the real sRGB profile as a fallback */
|
||||||
if (! rgb_profile)
|
if (! rgb_profile)
|
||||||
{
|
{
|
||||||
rgb_profile = gimp_lcms_create_srgb_profile (NULL);
|
rgb_profile = gimp_lcms_create_srgb_profile ();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config->display_intent ==
|
if (config->display_intent ==
|
||||||
|
|
Loading…
Reference in New Issue