summaryrefslogtreecommitdiffstats
path: root/scribus/util_cms.cpp
blob: 97961d079983a688f6e2be345d0140c69bd34fef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.
*/
#include "util_cms.h"
#include <QString>

cmsHTRANSFORM scCmsCreateTransform(cmsHPROFILE Input, DWORD InputFormat,
                                cmsHPROFILE Output,DWORD OutputFormat,
                                int Intent, DWORD dwFlags)
{
	cmsHTRANSFORM hTransform = NULL;
	if ( Input == NULL || Output == NULL)
		return NULL;
	dwFlags &= (~cmsFLAGS_GAMUTCHECK);
	dwFlags &= (~cmsFLAGS_SOFTPROOFING);
	QString desc1 = cmsTakeProductDesc(Input);
	QString desc2 = cmsTakeProductDesc(Output);
	if ( desc1 == desc2 )
		dwFlags |= cmsFLAGS_NULLTRANSFORM;
	hTransform = cmsCreateTransform(Input, InputFormat, Output, OutputFormat, Intent, dwFlags);
	return hTransform;
}

cmsHTRANSFORM scCmsCreateProofingTransform(cmsHPROFILE Input, DWORD InputFormat,
								cmsHPROFILE Output,DWORD OutputFormat,
								cmsHPROFILE Proofing, int Intent, 
								int ProofingIntent, DWORD dwFlags)
{
	cmsHTRANSFORM hTransform = NULL;
	if ( Input == NULL || Output == NULL || Proofing == NULL)
		return NULL;
	QString desc1 = cmsTakeProductDesc(Input);
	QString desc2 = cmsTakeProductDesc(Output);
	QString desc3 = cmsTakeProductDesc(Proofing);
	dwFlags &= ~cmsFLAGS_BLACKPOINTCOMPENSATION;
	if ( desc1 != desc3 )
	{
		if( desc2 == desc3 )
			ProofingIntent = INTENT_RELATIVE_COLORIMETRIC;
		hTransform = cmsCreateProofingTransform(Input, InputFormat, Output, OutputFormat, Proofing, Intent, 
												ProofingIntent, dwFlags);
	}
	else
	{
		dwFlags &= (~cmsFLAGS_GAMUTCHECK);
		dwFlags &= (~cmsFLAGS_SOFTPROOFING);
		if ( desc1 == desc2 )
			dwFlags |= cmsFLAGS_NULLTRANSFORM;
		hTransform = cmsCreateTransform(Input, InputFormat, Output, OutputFormat, ProofingIntent, dwFlags);
	}
	return hTransform;
}