summaryrefslogtreecommitdiff
path: root/src/cmsxform.c
diff options
context:
space:
mode:
authorMarti Maria <info@littlecms.com>2012-06-27 13:53:05 +0200
committerMarti Maria <info@littlecms.com>2012-06-27 13:53:05 +0200
commit2dc37017a73873e50a959a5a1066f43a7865b3db (patch)
tree1d594b820fa33b083d7d2d64b1c108d1af94741a /src/cmsxform.c
parent9e246ece55017da090a842e0cf3273483f32afa1 (diff)
downloadlcms2-2dc37017a73873e50a959a5a1066f43a7865b3db.tar.gz
Several changes for 2.4
Diffstat (limited to 'src/cmsxform.c')
-rw-r--r--src/cmsxform.c32
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;
}