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 74 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 77 of file IccColorSpaceEngine.cpp.

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

132 {
133 cmsDeleteTransform(m_transform);
134 }

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 138 of file IccColorSpaceEngine.cpp.

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

References m_transform.

Member Data Documentation

◆ m_transform

cmsHTRANSFORM KoLcmsColorProofingConversionTransformation::m_transform
mutableprivate

Definition at line 146 of file IccColorSpaceEngine.cpp.


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