Krita Source Code Documentation
Loading...
Searching...
No Matches
KisASCCDLTransformation Class Reference

#include <kis_asccdl_filter.h>

+ Inheritance diagram for KisASCCDLTransformation:

Public Member Functions

 KisASCCDLTransformation (const KoColorSpace *cs, KoColor slope, KoColor offset, KoColor power)
 
void transform (const quint8 *src, quint8 *dst, qint32 nPixels) const 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 ()
 

Private Attributes

const KoColorSpacem_cs
 
QVector< float > m_offset
 
QVector< float > m_power
 
QVector< float > m_slope
 

Detailed Description

Definition at line 37 of file kis_asccdl_filter.h.

Constructor & Destructor Documentation

◆ KisASCCDLTransformation()

KisASCCDLTransformation::KisASCCDLTransformation ( const KoColorSpace * cs,
KoColor slope,
KoColor offset,
KoColor power )

Definition at line 84 of file kis_asccdl_filter.cpp.

85{
86 QVector<float> slopeN(cs->channelCount());
87 slope.convertTo(cs);
88 slope.colorSpace()->normalisedChannelsValue(slope.data(), slopeN);
89 m_slope = slopeN;
90 offset.convertTo(cs);
91 QVector<float> offsetN(cs->channelCount());
92 offset.colorSpace()->normalisedChannelsValue(offset.data(), offsetN);
93 m_offset = offsetN;
94 power.convertTo(cs);
95 QVector<float> powerN(cs->channelCount());
96 power.colorSpace()->normalisedChannelsValue(power.data(), powerN);
97 m_power = powerN;
98 m_cs = cs;
99}
const KoColorSpace * m_cs
virtual quint32 channelCount() const =0
virtual void normalisedChannelsValue(const quint8 *pixel, QVector< float > &channels) const =0
void convertTo(const KoColorSpace *cs, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags)
Definition KoColor.cpp:136
quint8 * data()
Definition KoColor.h:144
const KoColorSpace * colorSpace() const
return the current colorSpace
Definition KoColor.h:82

References KoColorSpace::channelCount(), KoColor::colorSpace(), KoColor::convertTo(), KoColor::data(), m_cs, m_offset, m_power, m_slope, and KoColorSpace::normalisedChannelsValue().

Member Function Documentation

◆ transform()

void KisASCCDLTransformation::transform ( const quint8 * src,
quint8 * dst,
qint32 nPixels ) const
overridevirtual

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 101 of file kis_asccdl_filter.cpp.

102{
103 QVector<float> normalised(m_cs->channelCount());
104 const int pixelSize = m_cs->pixelSize();
105 const int alphaPos = m_cs->alphaPos();
106 const int channelCount = m_cs->channelCount();
107
108 while (nPixels--) {
109 m_cs->normalisedChannelsValue(src, normalised);
110
111 for (uint c = 0; c < channelCount; c++){
112 if (c != alphaPos) {
113 normalised[c] = qPow( (normalised.at(c)*m_slope.at(c))+m_offset.at(c), m_power.at(c));
114 }
115 }
116 m_cs->fromNormalisedChannelsValue(dst, normalised);
117 src += pixelSize;
118 dst += pixelSize;
119 }
120}
unsigned int uint
virtual quint32 alphaPos() const =0
virtual quint32 pixelSize() const =0
virtual void fromNormalisedChannelsValue(quint8 *pixel, const QVector< float > &values) const =0

References KoColorSpace::alphaPos(), KoColorSpace::channelCount(), KoColorSpace::fromNormalisedChannelsValue(), m_cs, m_offset, m_power, m_slope, KoColorSpace::normalisedChannelsValue(), and KoColorSpace::pixelSize().

Member Data Documentation

◆ m_cs

const KoColorSpace* KisASCCDLTransformation::m_cs
private

Definition at line 46 of file kis_asccdl_filter.h.

◆ m_offset

QVector<float> KisASCCDLTransformation::m_offset
private

Definition at line 44 of file kis_asccdl_filter.h.

◆ m_power

QVector<float> KisASCCDLTransformation::m_power
private

Definition at line 45 of file kis_asccdl_filter.h.

◆ m_slope

QVector<float> KisASCCDLTransformation::m_slope
private

Definition at line 43 of file kis_asccdl_filter.h.


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