diff options
author | Marti Maria <info@littlecms.com> | 2012-06-27 13:53:05 +0200 |
---|---|---|
committer | Marti Maria <info@littlecms.com> | 2012-06-27 13:53:05 +0200 |
commit | 2dc37017a73873e50a959a5a1066f43a7865b3db (patch) | |
tree | 1d594b820fa33b083d7d2d64b1c108d1af94741a /src/cmsxform.c | |
parent | 9e246ece55017da090a842e0cf3273483f32afa1 (diff) | |
download | lcms2-2dc37017a73873e50a959a5a1066f43a7865b3db.tar.gz |
Several changes for 2.4
Diffstat (limited to 'src/cmsxform.c')
-rw-r--r-- | src/cmsxform.c | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/cmsxform.c b/src/cmsxform.c index 73db5e2..e5a3c52 100644 --- a/src/cmsxform.c +++ b/src/cmsxform.c @@ -523,41 +523,43 @@ cmsBool GetXFormColorSpaces(int nProfiles, cmsHPROFILE hProfiles[], cmsColorSpac cmsColorSpaceSignature PostColorSpace; int i; + if (nProfiles <= 0) return FALSE; if (hProfiles[0] == NULL) return FALSE; *Input = PostColorSpace = cmsGetColorSpace(hProfiles[0]); - // Special handling for named color profiles as devicelinks - if (nProfiles == 1 && cmsGetDeviceClass(hProfiles[0]) == cmsSigNamedColorClass) { - *Input = cmsSig1colorData; - *Output = PostColorSpace; - return TRUE; - } - for (i=0; i < nProfiles; i++) { + cmsProfileClassSignature cls; cmsHPROFILE hProfile = hProfiles[i]; int lIsInput = (PostColorSpace != cmsSigXYZData) && (PostColorSpace != cmsSigLabData); - - int lIsDeviceLink; - + if (hProfile == NULL) return FALSE; - lIsDeviceLink = (cmsGetDeviceClass(hProfile) == cmsSigLinkClass); + cls = cmsGetDeviceClass(hProfile); + + if (cls == cmsSigNamedColorClass) { - if (lIsInput || lIsDeviceLink) { + ColorSpaceIn = cmsSig1colorData; + ColorSpaceOut = (nProfiles > 1) ? cmsGetPCS(hProfile) : cmsGetColorSpace(hProfile); + } + else + if (lIsInput || (cls == cmsSigLinkClass)) { ColorSpaceIn = cmsGetColorSpace(hProfile); ColorSpaceOut = cmsGetPCS(hProfile); - } - else { - + } + else + { ColorSpaceIn = cmsGetPCS(hProfile); ColorSpaceOut = cmsGetColorSpace(hProfile); } + if (i==0) + *Input = ColorSpaceIn; + PostColorSpace = ColorSpaceOut; } |