[gnome-color-manager] trivial: only run the profile through the RGB matrix if it is an RGB profile
- From: Richard Hughes <rhughes src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-color-manager] trivial: only run the profile through the RGB matrix if it is an RGB profile
- Date: Fri, 11 Dec 2009 12:30:50 +0000 (UTC)
commit db97d8ad65415af15cf3bf9bd91ce4ccf656fd03
Author: Richard Hughes <richard hughsie com>
Date: Fri Dec 11 12:19:20 2009 +0000
trivial: only run the profile through the RGB matrix if it is an RGB profile
src/gcm-profile.c | 136 ++++++++++++++++++++++++++--------------------------
1 files changed, 68 insertions(+), 68 deletions(-)
---
diff --git a/src/gcm-profile.c b/src/gcm-profile.c
index ddd314e..a6abf96 100644
--- a/src/gcm-profile.c
+++ b/src/gcm-profile.c
@@ -545,6 +545,8 @@ gcm_profile_parse_data (GcmProfile *profile, const guint8 *data, gsize length, G
cmsCIEXYZ cie_xyz;
cmsCIEXYZTRIPLE cie_illum;
struct tm created;
+ cmsHPROFILE xyz_profile;
+ cmsHTRANSFORM transform;
g_return_val_if_fail (GCM_IS_PROFILE (profile), FALSE);
g_return_val_if_fail (data != NULL, FALSE);
@@ -585,13 +587,76 @@ gcm_profile_parse_data (GcmProfile *profile, const guint8 *data, gsize length, G
egg_warning ("failed to get black point");
}
+ /* get the profile type */
+ profile_class = cmsGetDeviceClass (priv->lcms_profile);
+ switch (profile_class) {
+ case icSigInputClass:
+ priv->profile_type = GCM_PROFILE_TYPE_INPUT_DEVICE;
+ break;
+ case icSigDisplayClass:
+ priv->profile_type = GCM_PROFILE_TYPE_DISPLAY_DEVICE;
+ break;
+ case icSigOutputClass:
+ priv->profile_type = GCM_PROFILE_TYPE_OUTPUT_DEVICE;
+ break;
+ case icSigLinkClass:
+ priv->profile_type = GCM_PROFILE_TYPE_DEVICELINK;
+ break;
+ case icSigColorSpaceClass:
+ priv->profile_type = GCM_PROFILE_TYPE_COLORSPACE_CONVERSION;
+ break;
+ case icSigAbstractClass:
+ priv->profile_type = GCM_PROFILE_TYPE_ABSTRACT;
+ break;
+ case icSigNamedColorClass:
+ priv->profile_type = GCM_PROFILE_TYPE_NAMED_COLOR;
+ break;
+ default:
+ priv->profile_type = GCM_PROFILE_TYPE_UNKNOWN;
+ }
+
+ /* get colorspace */
+ color_space = cmsGetColorSpace (priv->lcms_profile);
+ switch (color_space) {
+ case icSigXYZData:
+ priv->colorspace = GCM_PROFILE_COLORSPACE_XYZ;
+ break;
+ case icSigLabData:
+ priv->colorspace = GCM_PROFILE_COLORSPACE_LAB;
+ break;
+ case icSigLuvData:
+ priv->colorspace = GCM_PROFILE_COLORSPACE_LUV;
+ break;
+ case icSigYCbCrData:
+ priv->colorspace = GCM_PROFILE_COLORSPACE_YCBCR;
+ break;
+ case icSigYxyData:
+ priv->colorspace = GCM_PROFILE_COLORSPACE_YXY;
+ break;
+ case icSigRgbData:
+ priv->colorspace = GCM_PROFILE_COLORSPACE_RGB;
+ break;
+ case icSigGrayData:
+ priv->colorspace = GCM_PROFILE_COLORSPACE_GRAY;
+ break;
+ case icSigHsvData:
+ priv->colorspace = GCM_PROFILE_COLORSPACE_HSV;
+ break;
+ case icSigCmykData:
+ priv->colorspace = GCM_PROFILE_COLORSPACE_CMYK;
+ break;
+ case icSigCmyData:
+ priv->colorspace = GCM_PROFILE_COLORSPACE_CMY;
+ break;
+ default:
+ priv->colorspace = GCM_PROFILE_COLORSPACE_UNKNOWN;
+ }
+
/* get primary illuminants */
ret = cmsTakeColorants (&cie_illum, priv->lcms_profile);
/* geting the illuminants failed, try running it through the profile */
- if (!ret) {
- cmsHPROFILE xyz_profile;
- cmsHTRANSFORM transform;
+ if (!ret && color_space == icSigRgbData) {
gdouble rgb_values[3];
/* create a transform from profile to XYZ */
@@ -655,71 +720,6 @@ gcm_profile_parse_data (GcmProfile *profile, const guint8 *data, gsize length, G
if (ret)
priv->datetime = gcm_utils_format_date_time (1900+created.tm_year, created.tm_mon+1, created.tm_mday, created.tm_hour, created.tm_min, created.tm_sec);
- /* get the profile type */
- profile_class = cmsGetDeviceClass (priv->lcms_profile);
- switch (profile_class) {
- case icSigInputClass:
- priv->profile_type = GCM_PROFILE_TYPE_INPUT_DEVICE;
- break;
- case icSigDisplayClass:
- priv->profile_type = GCM_PROFILE_TYPE_DISPLAY_DEVICE;
- break;
- case icSigOutputClass:
- priv->profile_type = GCM_PROFILE_TYPE_OUTPUT_DEVICE;
- break;
- case icSigLinkClass:
- priv->profile_type = GCM_PROFILE_TYPE_DEVICELINK;
- break;
- case icSigColorSpaceClass:
- priv->profile_type = GCM_PROFILE_TYPE_COLORSPACE_CONVERSION;
- break;
- case icSigAbstractClass:
- priv->profile_type = GCM_PROFILE_TYPE_ABSTRACT;
- break;
- case icSigNamedColorClass:
- priv->profile_type = GCM_PROFILE_TYPE_NAMED_COLOR;
- break;
- default:
- priv->profile_type = GCM_PROFILE_TYPE_UNKNOWN;
- }
-
- /* get colorspace */
- color_space = cmsGetColorSpace (priv->lcms_profile);
- switch (color_space) {
- case icSigXYZData:
- priv->colorspace = GCM_PROFILE_COLORSPACE_XYZ;
- break;
- case icSigLabData:
- priv->colorspace = GCM_PROFILE_COLORSPACE_LAB;
- break;
- case icSigLuvData:
- priv->colorspace = GCM_PROFILE_COLORSPACE_LUV;
- break;
- case icSigYCbCrData:
- priv->colorspace = GCM_PROFILE_COLORSPACE_YCBCR;
- break;
- case icSigYxyData:
- priv->colorspace = GCM_PROFILE_COLORSPACE_YXY;
- break;
- case icSigRgbData:
- priv->colorspace = GCM_PROFILE_COLORSPACE_RGB;
- break;
- case icSigGrayData:
- priv->colorspace = GCM_PROFILE_COLORSPACE_GRAY;
- break;
- case icSigHsvData:
- priv->colorspace = GCM_PROFILE_COLORSPACE_HSV;
- break;
- case icSigCmykData:
- priv->colorspace = GCM_PROFILE_COLORSPACE_CMYK;
- break;
- case icSigCmyData:
- priv->colorspace = GCM_PROFILE_COLORSPACE_CMY;
- break;
- default:
- priv->colorspace = GCM_PROFILE_COLORSPACE_UNKNOWN;
- }
-
/* get the number of tags in the file */
num_tags = gcm_parser_decode_32 (data + GCM_NUMTAGS);
egg_debug ("number of tags: %i", num_tags);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]