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

#include <posterize.h>

+ Inheritance diagram for KisPosterizeColorTransformation:

Public Member Functions

 KisPosterizeColorTransformation (int steps, const KoColorSpace *cs)
 
void transform (const quint8 *src, quint8 *dst, qint32 nPixels) const override
 
 ~KisPosterizeColorTransformation () 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_colorSpace
 
KoColorConversionTransformationm_fromConversion
 
quint16 m_halfStep
 
quint32 m_psize
 
quint16 m_step
 
KoColorConversionTransformationm_toConversion
 

Detailed Description

Definition at line 37 of file posterize.h.

Constructor & Destructor Documentation

◆ KisPosterizeColorTransformation()

KisPosterizeColorTransformation::KisPosterizeColorTransformation ( int steps,
const KoColorSpace * cs )

Definition at line 55 of file posterize.cpp.

55 : m_colorSpace(cs), m_psize(cs->pixelSize())
56{
58 m_halfStep = m_step / 2;
61 KoColorSpaceRegistry::instance()->rgb16("sRGB-elle-V2-srgbtrc.icc"),
65 KoColorSpaceRegistry::instance()->rgb16("sRGB-elle-V2-srgbtrc.icc"),
69}
KoColorConversionTransformation * m_toConversion
Definition posterize.h:49
KoColorConversionTransformation * m_fromConversion
Definition posterize.h:48
const KoColorSpace * m_colorSpace
Definition posterize.h:44
virtual quint32 pixelSize() const =0
KoColorConversionTransformation * createColorConverter(const KoColorSpace *srcColorSpace, const KoColorSpace *dstColorSpace, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags) const
static KoColorSpaceRegistry * instance()

References KoColorSpaceRegistry::createColorConverter(), KoColorSpaceRegistry::instance(), KoColorConversionTransformation::internalConversionFlags(), KoColorConversionTransformation::internalRenderingIntent(), m_colorSpace, m_fromConversion, m_halfStep, m_step, and m_toConversion.

◆ ~KisPosterizeColorTransformation()

KisPosterizeColorTransformation::~KisPosterizeColorTransformation ( )
override

Definition at line 71 of file posterize.cpp.

72{
73 delete m_fromConversion;
74 delete m_toConversion;
75}

References m_fromConversion, and m_toConversion.

Member Function Documentation

◆ transform()

void KisPosterizeColorTransformation::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 92 of file posterize.cpp.

93{
94 quint16 m_rgba[4];
95 quint16 m_mod[4];
96
97 while (nPixels--) {
98 m_fromConversion->transform(src, reinterpret_cast<quint8 *>(m_rgba), 1);
99
100 m_mod[0] = m_rgba[0] % m_step;
101 m_mod[1] = m_rgba[1] % m_step;
102 m_mod[2] = m_rgba[2] % m_step;
103 m_mod[3] = m_rgba[3] % m_step;
104
105 m_rgba[0] = m_rgba[0] + (m_mod[0] > m_halfStep ? m_step - m_mod[0] : -m_mod[0]);
106 m_rgba[1] = m_rgba[1] + (m_mod[1] > m_halfStep ? m_step - m_mod[1] : -m_mod[1]);
107 m_rgba[2] = m_rgba[2] + (m_mod[2] > m_halfStep ? m_step - m_mod[2] : -m_mod[2]);
108 m_rgba[3] = m_rgba[3] + (m_mod[3] > m_halfStep ? m_step - m_mod[3] : -m_mod[3]);
109
110 m_toConversion->transform(reinterpret_cast<quint8 *>(m_rgba), dst, 1);
111 src += m_psize;
112 dst += m_psize;
113 }
114}
void transform(const quint8 *src, quint8 *dst, qint32 nPixels) const override=0

References m_fromConversion, m_halfStep, m_psize, m_step, m_toConversion, and KoColorConversionTransformation::transform().

Member Data Documentation

◆ m_colorSpace

const KoColorSpace* KisPosterizeColorTransformation::m_colorSpace
private

Definition at line 44 of file posterize.h.

◆ m_fromConversion

KoColorConversionTransformation* KisPosterizeColorTransformation::m_fromConversion
private

Definition at line 48 of file posterize.h.

◆ m_halfStep

quint16 KisPosterizeColorTransformation::m_halfStep
private

Definition at line 47 of file posterize.h.

◆ m_psize

quint32 KisPosterizeColorTransformation::m_psize
private

Definition at line 45 of file posterize.h.

◆ m_step

quint16 KisPosterizeColorTransformation::m_step
private

Definition at line 46 of file posterize.h.

◆ m_toConversion

KoColorConversionTransformation* KisPosterizeColorTransformation::m_toConversion
private

Definition at line 49 of file posterize.h.


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