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

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

129 {
130 cmsDeleteTransform(m_transform);
131 }

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

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

References m_transform.

Member Data Documentation

◆ m_transform

cmsHTRANSFORM KoLcmsColorProofingConversionTransformation::m_transform
mutableprivate

Definition at line 143 of file IccColorSpaceEngine.cpp.


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