Krita Source Code Documentation
Loading...
Searching...
No Matches
LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation Struct Reference
+ Inheritance diagram for LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation:

Public Member Functions

 KoLcmsColorTransformation (const KoColorSpace *colorSpace)
 
void transform (const quint8 *src, quint8 *dst, qint32 nPixels) const override
 
 ~KoLcmsColorTransformation () override
 
- Public Member Functions inherited from KoColorTransformation
virtual bool isValid () const
 
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 ()
 

Public Attributes

cmsHTRANSFORM cmsAlphaTransform
 
cmsHTRANSFORM cmstransform
 
cmsHPROFILE csProfile
 
const KoColorSpacem_colorSpace
 
cmsHPROFILE profiles [3]
 

Detailed Description

template<class _CSTraits>
struct LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation

Definition at line 73 of file LcmsColorSpace.h.

Constructor & Destructor Documentation

◆ KoLcmsColorTransformation()

◆ ~KoLcmsColorTransformation()

template<class _CSTraits >
LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::~KoLcmsColorTransformation ( )
inlineoverride

Definition at line 87 of file LcmsColorSpace.h.

88 {
89
90 if (cmstransform) {
91 cmsDeleteTransform(cmstransform);
92 }
93 if (profiles[0] && profiles[0] != csProfile) {
94 cmsCloseProfile(profiles[0]);
95 }
96 if (profiles[1] && profiles[1] != csProfile) {
97 cmsCloseProfile(profiles[1]);
98 }
99 if (profiles[2] && profiles[2] != csProfile) {
100 cmsCloseProfile(profiles[2]);
101 }
102 }

References LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::cmstransform, LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::csProfile, and LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::profiles.

Member Function Documentation

◆ transform()

template<class _CSTraits >
void LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::transform ( const quint8 * src,
quint8 * dst,
qint32 nPixels ) const
inlineoverridevirtual

This function apply the transformation on a given number of pixels.

Parameters
srca pointer to the source pixels
dsta pointer to the destination pixels
nPixelsthe number of pixels

This function may or may not be thread safe. You need to create one KoColorTransformation per thread.

Implements KoColorTransformation.

Definition at line 104 of file LcmsColorSpace.h.

105 {
106 cmsDoTransform(cmstransform, const_cast<quint8 *>(src), dst, nPixels);
107
108 qint32 numPixels = nPixels;
109 qint32 pixelSize = m_colorSpace->pixelSize();
110 int index = 0;
111
112 if (cmsAlphaTransform) {
113 float *alpha = new float[nPixels];
114 float *dstalpha = new float[nPixels];
115
116 while (index < nPixels) {
117 alpha[index] = m_colorSpace->opacityF(src);
118 src += pixelSize;
119 index++;
120 }
121
122 cmsDoTransform(cmsAlphaTransform, const_cast<float *>(alpha), static_cast<float *>(dstalpha), nPixels);
123 for (int i = 0; i < numPixels; i++) {
124 m_colorSpace->setOpacity(dst, dstalpha[i], 1);
125 dst += pixelSize;
126 }
127
128 delete [] alpha;
129 delete [] dstalpha;
130 } else {
131 while (numPixels > 0) {
132 qreal alpha = m_colorSpace->opacityF(src);
133 m_colorSpace->setOpacity(dst, alpha, 1);
134 src += pixelSize;
135 dst += pixelSize;
136 numPixels--;
137 }
138 }
139 }
virtual quint32 pixelSize() const =0
virtual qreal opacityF(const quint8 *pixel) const =0
virtual void setOpacity(quint8 *pixels, quint8 alpha, qint32 nPixels) const =0

References LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::cmsAlphaTransform, LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::cmstransform, LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::m_colorSpace, KoColorSpace::opacityF(), KoColorSpace::pixelSize(), KoColorSpaceAbstract< _CSTraits >::pixelSize(), and KoColorSpace::setOpacity().

Member Data Documentation

◆ cmsAlphaTransform

template<class _CSTraits >
cmsHTRANSFORM LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::cmsAlphaTransform

Definition at line 145 of file LcmsColorSpace.h.

◆ cmstransform

template<class _CSTraits >
cmsHTRANSFORM LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::cmstransform

Definition at line 144 of file LcmsColorSpace.h.

◆ csProfile

template<class _CSTraits >
cmsHPROFILE LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::csProfile

Definition at line 142 of file LcmsColorSpace.h.

◆ m_colorSpace

template<class _CSTraits >
const KoColorSpace* LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::m_colorSpace

Definition at line 141 of file LcmsColorSpace.h.

◆ profiles

template<class _CSTraits >
cmsHPROFILE LcmsColorSpace< _CSTraits >::KoLcmsColorTransformation::profiles[3]

Definition at line 143 of file LcmsColorSpace.h.


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