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

#include <KoInvertColorTransformation.h>

+ Inheritance diagram for KoInvertColorTransformationT:

Public Member Functions

 KoInvertColorTransformationT (const KoColorSpace *cs)
 
void transformGen (const quint8 *src, quint8 *dst, qint32 nPixels) const
 
template<typename T >
void transformI (const quint8 *src, quint8 *dst, qint32 nPixels) const
 
- 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 void transform (const quint8 *src, quint8 *dst, qint32 nPixels) const =0
 
virtual ~KoColorTransformation ()
 

Protected Attributes

QList< quint8 > m_channels
 

Private Attributes

quint32 m_chanCount
 
const KoColorSpacem_colorSpace
 
quint32 m_psize
 

Detailed Description

Definition at line 23 of file KoInvertColorTransformation.h.

Constructor & Destructor Documentation

◆ KoInvertColorTransformationT()

KoInvertColorTransformationT::KoInvertColorTransformationT ( const KoColorSpace * cs)
inline

Definition at line 27 of file KoInvertColorTransformation.h.

28 : m_colorSpace(cs)
29 , m_psize(cs->pixelSize())
31 {
32 // Only invert COLOR channels
33 const QList<KoChannelInfo *> channels = cs->channels();
34 for(quint8 i = 0; i < m_chanCount; i++){
35 if(channels.at(i)->channelType() == KoChannelInfo::COLOR)
36 m_channels.append(i);
37 }
38 }
@ COLOR
The channel represents a color.
virtual quint32 pixelSize() const =0
QList< KoChannelInfo * > channels
virtual quint32 channelCount() const =0

References KoColorSpace::channels, KoChannelInfo::COLOR, m_chanCount, and m_channels.

Member Function Documentation

◆ transformGen()

void KoInvertColorTransformationT::transformGen ( const quint8 * src,
quint8 * dst,
qint32 nPixels ) const
inline

Definition at line 55 of file KoInvertColorTransformation.h.

55 {
56 quint16 m_rgba[4];
57 while (nPixels--) {
58 m_colorSpace->toRgbA16(src, reinterpret_cast<quint8 *>(m_rgba), 1);
59 m_rgba[0] = KoColorSpaceMathsTraits<quint16>::max - m_rgba[0];
60 m_rgba[1] = KoColorSpaceMathsTraits<quint16>::max - m_rgba[1];
61 m_rgba[2] = KoColorSpaceMathsTraits<quint16>::max - m_rgba[2];
62 m_colorSpace->fromRgbA16(reinterpret_cast<quint8 *>(m_rgba), dst, 1);
63 src += m_psize;
64 dst += m_psize;
65 }
66 }
virtual void toRgbA16(const quint8 *src, quint8 *dst, quint32 nPixels) const
virtual void fromRgbA16(const quint8 *src, quint8 *dst, quint32 nPixels) const

References KoColorSpace::fromRgbA16(), m_colorSpace, m_psize, and KoColorSpace::toRgbA16().

◆ transformI()

template<typename T >
void KoInvertColorTransformationT::transformI ( const quint8 * src,
quint8 * dst,
qint32 nPixels ) const
inline

Definition at line 41 of file KoInvertColorTransformation.h.

41 {
42 T *m_rgba = (T*)(src);
43 T *m_dst = (T*)(dst);
44
45 while (nPixels--) {
46 for(quint8 i : m_channels){
47 m_dst[i] = KoColorSpaceMaths<T>::invert(m_rgba[i]);
48 }
49 m_rgba += m_chanCount;
50 m_dst += m_chanCount;
51 }
52
53 }
static _T invert(_T a)

References KoColorSpaceMaths< _T, _Tdst >::invert(), m_chanCount, and m_channels.

Member Data Documentation

◆ m_chanCount

quint32 KoInvertColorTransformationT::m_chanCount
private

Definition at line 92 of file KoInvertColorTransformation.h.

◆ m_channels

QList<quint8> KoInvertColorTransformationT::m_channels
protected

Definition at line 88 of file KoInvertColorTransformation.h.

◆ m_colorSpace

const KoColorSpace* KoInvertColorTransformationT::m_colorSpace
private

Definition at line 90 of file KoInvertColorTransformation.h.

◆ m_psize

quint32 KoInvertColorTransformationT::m_psize
private

Definition at line 91 of file KoInvertColorTransformation.h.


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