Krita Source Code Documentation
Loading...
Searching...
No Matches
KoLcmsColorProofingConversionTransformation Class Reference
+ Inheritance diagram for KoLcmsColorProofingConversionTransformation:

Public Member Functions

 KoLcmsColorProofingConversionTransformation (const KoColorSpace *srcCs, quint32 srcColorSpaceType, LcmsColorProfileContainer *srcProfile, const KoColorSpace *dstCs, quint32 dstColorSpaceType, LcmsColorProfileContainer *dstProfile, const KoColorSpace *proofingSpace, Intent renderingIntent, Intent proofingIntent, bool bpcFirstTransform, quint8 *gamutWarning, ConversionFlags displayConversionFlags)
 
void transform (const quint8 *src, quint8 *dst, qint32 numPixels) const override
 
 ~KoLcmsColorProofingConversionTransformation () override
 
- Public Member Functions inherited from KoColorProofingConversionTransformation
 KoColorProofingConversionTransformation (const KoColorSpace *srcCs, const KoColorSpace *dstCs, const KoColorSpace *proofingSpace, Intent renderingIntent, ConversionFlags conversionFlags)
 
const KoColorSpaceproofingSpace () const
 proofingSpace
 
 ~KoColorProofingConversionTransformation () override
 
- Public Member Functions inherited from KoColorConversionTransformation
ConversionFlags conversionFlags () const
 
const KoColorSpacedstColorSpace () const
 
bool isValid () const override
 
 KoColorConversionTransformation (const KoColorSpace *srcCs, const KoColorSpace *dstCs, Intent renderingIntent, ConversionFlags conversionFlags)
 
Intent renderingIntent () const
 
const KoColorSpacesrcColorSpace () const
 
void transformInPlace (const quint8 *src, quint8 *dst, qint32 nPixels) const
 
 ~KoColorConversionTransformation () override
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Public Member Functions inherited from KoColorTransformation
virtual int parameterId (const QString &name) const
 
virtual QList< QString > parameters () const
 
virtual void setParameter (int id, const QVariant &parameter)
 
void setParameters (const QHash< QString, QVariant > &parameters)
 
virtual ~KoColorTransformation ()
 

Private Attributes

cmsHTRANSFORM m_transform
 

Additional Inherited Members

- Public Types inherited from KoColorConversionTransformation
enum  ConversionFlag {
  Empty = 0x0 , NoOptimization = 0x0100 , GamutCheck = 0x1000 , SoftProofing = 0x4000 ,
  BlackpointCompensation = 0x2000 , NoWhiteOnWhiteFixup = 0x0004 , HighQuality = 0x0400 , LowQuality = 0x0800 ,
  CopyAlpha = 0x04000000 , NoAdaptationAbsoluteIntent = 01000000
}
 
enum  Intent { IntentPerceptual = 0 , IntentRelativeColorimetric = 1 , IntentSaturation = 2 , IntentAbsoluteColorimetric = 3 }
 
- Static Public Member Functions inherited from KoColorConversionTransformation
static ConversionFlags adjustmentConversionFlags ()
 
static Intent adjustmentRenderingIntent ()
 
static ConversionFlags internalConversionFlags ()
 
static Intent internalRenderingIntent ()
 
- Public Attributes inherited from KoColorConversionTransformation
ConversionFlags conversionFlags
 
const KoColorSpacedstColorSpace
 
Intent renderingIntent
 
const KoColorSpacesrcColorSpace
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 

Detailed Description

Definition at line 73 of file IccColorSpaceEngine.cpp.

Constructor & Destructor Documentation

◆ KoLcmsColorProofingConversionTransformation()

KoLcmsColorProofingConversionTransformation::KoLcmsColorProofingConversionTransformation ( const KoColorSpace * srcCs,
quint32 srcColorSpaceType,
LcmsColorProfileContainer * srcProfile,
const KoColorSpace * dstCs,
quint32 dstColorSpaceType,
LcmsColorProfileContainer * dstProfile,
const KoColorSpace * proofingSpace,
Intent renderingIntent,
Intent proofingIntent,
bool bpcFirstTransform,
quint8 * gamutWarning,
ConversionFlags displayConversionFlags )
inline

Definition at line 76 of file IccColorSpaceEngine.cpp.

85 : KoColorProofingConversionTransformation(srcCs, dstCs, proofingSpace, renderingIntent, displayConversionFlags)
86 , m_transform(0)
87 {
88 Q_ASSERT(srcCs);
89 Q_ASSERT(dstCs);
90 Q_ASSERT(renderingIntent < 4);
91
92 bool doBPC1 = bpcFirstTransform;
93 bool doBPC2 = displayConversionFlags.testFlag(KoColorConversionTransformation::BlackpointCompensation);
94
95 if ((srcProfile->isLinear() || dstProfile->isLinear()) &&
96 !displayConversionFlags.testFlag(KoColorConversionTransformation::NoOptimization)) {
98 }
99 displayConversionFlags |= KoColorConversionTransformation::CopyAlpha;
100
101 const double adaptationState = displayConversionFlags.testFlag(KoColorConversionTransformation::NoAdaptationAbsoluteIntent) ? 0.0 : 1.0;
102
103 // unset Krita-only flag
104 displayConversionFlags.setFlag(KoColorConversionTransformation::NoAdaptationAbsoluteIntent, false);
105
106 quint16 alarm[cmsMAXCHANNELS];//this seems to be bgr???
107 alarm[0] = (cmsUInt16Number)gamutWarning[2]*256;
108 alarm[1] = (cmsUInt16Number)gamutWarning[1]*256;
109 alarm[2] = (cmsUInt16Number)gamutWarning[0]*256;
110 cmsSetAlarmCodes(alarm);
111
112 KIS_ASSERT(dynamic_cast<const IccColorProfile *>(proofingSpace->profile()));
113
114 // This more or less does the same thing as cmsCreateProofingTransform in LCMS' cmsxform.c file,
115 // except we try to allow enabling blackpoint compentation on the second bpc too.
116 cmsHPROFILE proof = dynamic_cast<const IccColorProfile *>(proofingSpace->profile())->asLcms()->lcmsProfile();
117 cmsHPROFILE profiles[] = {srcProfile->lcmsProfile(),
118 proof,
119 proof,
120 dstProfile->lcmsProfile()};
121 cmsBool bpc[] = {doBPC1, doBPC1, doBPC2, doBPC2};
122 // Note that of the two transforms that create the proofing transform, the proofing intent is the second intent, not the first!
123 cmsUInt32Number intents[] = {renderingIntent, renderingIntent, INTENT_RELATIVE_COLORIMETRIC, proofingIntent};
124 cmsFloat64Number adaptation[] = {adaptationState, adaptationState, adaptationState, adaptationState};
125 m_transform = cmsCreateExtendedTransform(cmsGetProfileContextID(srcProfile->lcmsProfile()), 4, profiles, bpc, intents, adaptation, proof, 1, srcColorSpaceType, dstColorSpaceType, displayConversionFlags);
126
127 Q_ASSERT(m_transform);
128 }
KoColorProofingConversionTransformation(const KoColorSpace *srcCs, const KoColorSpace *dstCs, const KoColorSpace *proofingSpace, Intent renderingIntent, ConversionFlags conversionFlags)
virtual const KoColorProfile * profile() const =0
#define KIS_ASSERT(cond)
Definition kis_assert.h:33
#define INTENT_RELATIVE_COLORIMETRIC
Definition kis_global.h:104

References KoColorConversionTransformation::BlackpointCompensation, KoColorConversionTransformation::CopyAlpha, INTENT_RELATIVE_COLORIMETRIC, LcmsColorProfileContainer::isLinear(), KIS_ASSERT, LcmsColorProfileContainer::lcmsProfile(), m_transform, KoColorConversionTransformation::NoAdaptationAbsoluteIntent, KoColorConversionTransformation::NoOptimization, KoColorSpace::profile(), KoColorProofingConversionTransformation::proofingSpace(), and KoColorConversionTransformation::renderingIntent.

◆ ~KoLcmsColorProofingConversionTransformation()

KoLcmsColorProofingConversionTransformation::~KoLcmsColorProofingConversionTransformation ( )
inlineoverride

Definition at line 130 of file IccColorSpaceEngine.cpp.

131 {
132 cmsDeleteTransform(m_transform);
133 }

References m_transform.

Member Function Documentation

◆ transform()

void KoLcmsColorProofingConversionTransformation::transform ( const quint8 * src,
quint8 * dst,
qint32 nPixels ) const
inlineoverridevirtual

perform the color conversion between two buffers. Make sure that src is not the same as dst!

Parameters
nPixelsthe number of pixels in the buffers.

Implements KoColorConversionTransformation.

Definition at line 137 of file IccColorSpaceEngine.cpp.

138 {
139 Q_ASSERT(m_transform);
140
141 cmsDoTransform(m_transform, const_cast<quint8 *>(src), dst, numPixels);
142
143 }

References m_transform.

Member Data Documentation

◆ m_transform

cmsHTRANSFORM KoLcmsColorProofingConversionTransformation::m_transform
mutableprivate

Definition at line 145 of file IccColorSpaceEngine.cpp.


The documentation for this class was generated from the following file: