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

#include <KoBasicHistogramProducers.h>

+ Inheritance diagram for KoBasicU16HistogramProducer:

Public Member Functions

void addRegionToBin (const quint8 *pixels, const quint8 *selectionMask, quint32 nPixels, const KoColorSpace *colorSpace) override
 
 KoBasicU16HistogramProducer (const KoID &id, const KoColorSpace *colorSpace)
 
qreal maximalZoom () const override
 
QString positionToString (qreal pos) const override
 
 ~KoBasicU16HistogramProducer () override
 
- Public Member Functions inherited from KoBasicHistogramProducer
QList< KoChannelInfo * > channels () override
 
void clear () override
 
qint32 count () override
 
qint32 getBinAt (int channel, int position) override
 
const KoIDid () const override
 
 KoBasicHistogramProducer (const KoID &id, int channelCount, int nrOfBins)
 
 KoBasicHistogramProducer (const KoID &id, int nrOfBins, const KoColorSpace *colorSpace)
 
qint32 numberOfBins () override
 
qint32 outOfViewLeft (int channel) override
 
qint32 outOfViewRight (int channel) override
 
void setView (qreal from, qreal size) override
 
qreal viewFrom () const override
 
qreal viewWidth () const override
 
 ~KoBasicHistogramProducer () override
 
- Public Member Functions inherited from KoHistogramProducer
virtual qint32 getBinAt (qint32 channel, qint32 position)=0
 
 KoHistogramProducer ()
 
virtual qint32 outOfViewLeft (qint32 channel)=0
 
virtual qint32 outOfViewRight (qint32 channel)=0
 
virtual void setSkipTransparent (bool set)
 
virtual void setSkipUnselected (bool set)
 
virtual ~KoHistogramProducer ()
 

Additional Inherited Members

- Protected Types inherited from KoBasicHistogramProducer
typedef QVector< quint32 > vBins
 
- Protected Member Functions inherited from KoBasicHistogramProducer
virtual int externalToInternal (int ext)
 
void makeExternalToInternal ()
 
- Protected Attributes inherited from KoBasicHistogramProducer
QVector< vBinsm_bins
 
int m_channels
 
const KoColorSpacem_colorSpace
 
qint32 m_count
 
QVector< qint32 > m_external
 
qreal m_from
 
KoID m_id
 
int m_nrOfBins
 
vBins m_outLeft
 
vBins m_outRight
 
qreal m_width
 
- Protected Attributes inherited from KoHistogramProducer
bool m_skipTransparent
 
bool m_skipUnselected
 

Detailed Description

Definition at line 104 of file KoBasicHistogramProducers.h.

Constructor & Destructor Documentation

◆ KoBasicU16HistogramProducer()

KoBasicU16HistogramProducer::KoBasicU16HistogramProducer ( const KoID & id,
const KoColorSpace * colorSpace )

Definition at line 141 of file KoBasicHistogramProducers.cpp.

142 : KoBasicHistogramProducer(id, 256, cs)
143{
144}
KoBasicHistogramProducer(const KoID &id, int channelCount, int nrOfBins)

◆ ~KoBasicU16HistogramProducer()

KoBasicU16HistogramProducer::~KoBasicU16HistogramProducer ( )
inlineoverride

Definition at line 108 of file KoBasicHistogramProducers.h.

108{}

Member Function Documentation

◆ addRegionToBin()

void KoBasicU16HistogramProducer::addRegionToBin ( const quint8 * pixels,
const quint8 * selectionMask,
quint32 nPixels,
const KoColorSpace * colorSpace )
overridevirtual

Adds the values from the specified array of pixels to the bins – does not reset anything.

Parameters
pixelsA pointer an array of pixeldata in the given colorspace
selectionMaska pointer to an array of bytes, where 0 is unselected and 1-255 is degree of selectedness. The array must be just as long as the array of pixels.
nPixelsThe number of pixels
colorSpacethe colorspace that can decode the pixel data.

Implements KoHistogramProducer.

Definition at line 156 of file KoBasicHistogramProducers.cpp.

157{
158 // The view
159 quint16 from = static_cast<quint16>(m_from * UINT16_MAX);
160 quint16 width = static_cast<quint16>(m_width * UINT16_MAX + 0.5); // We include the end
161 quint16 to = from + width;
162 qreal factor = 255.0 / width;
163
164 quint32 dstPixelSize = m_colorSpace->pixelSize();
165 quint8 *dstPixels = new quint8[nPixels * dstPixelSize];
167 quint8 *dst = dstPixels;
169
170 if (selectionMask) {
171 while (nPixels > 0) {
172 if (!((m_skipUnselected && *selectionMask == 0) || (m_skipTransparent && cs->opacityU8(pixels) == OPACITY_TRANSPARENT_U8))) {
174 for (int i = 0; i < (int)m_colorSpace->channelCount(); i++) {
175 quint16 value = channels[i]*UINT16_MAX;
176 if (value > to)
177 m_outRight[i]++;
178 else if (value < from)
179 m_outLeft[i]++;
180 else
181 m_bins[i][static_cast<quint8>((value - from) * factor)]++;
182 }
183 m_count++;
184 }
185 dst += dstPixelSize;
186 selectionMask++;
187 nPixels--;
188 }
189 } else {
190 while (nPixels > 0) {
191 if (!(m_skipTransparent && cs->opacityU8(pixels) == OPACITY_TRANSPARENT_U8)) {
193 for (int i = 0; i < (int)m_colorSpace->channelCount(); i++) {
194 quint16 value = channels[i]*UINT16_MAX;
195
196 if (value > to)
197 m_outRight[i]++;
198 else if (value < from)
199 m_outLeft[i]++;
200 else
201 m_bins[i][static_cast<quint8>((value - from) * factor)]++;
202 }
203 m_count++;
204 }
205 dst += dstPixelSize;
206 nPixels--;
207 }
208 }
209}
float value(const T *src, size_t ch)
const quint8 OPACITY_TRANSPARENT_U8
#define UINT16_MAX
QList< KoChannelInfo * > channels() override
virtual quint32 pixelSize() const =0
virtual quint32 channelCount() const =0
virtual void normalisedChannelsValue(const quint8 *pixel, QVector< float > &channels) const =0

References KoColorSpace::channelCount(), KoBasicHistogramProducer::channels(), KoColorSpace::convertPixelsTo(), KoColorConversionTransformation::Empty, KoColorConversionTransformation::IntentAbsoluteColorimetric, KoBasicHistogramProducer::m_bins, KoBasicHistogramProducer::m_colorSpace, KoBasicHistogramProducer::m_count, KoBasicHistogramProducer::m_from, KoBasicHistogramProducer::m_outLeft, KoBasicHistogramProducer::m_outRight, KoHistogramProducer::m_skipTransparent, KoHistogramProducer::m_skipUnselected, KoBasicHistogramProducer::m_width, KoColorSpace::normalisedChannelsValue(), OPACITY_TRANSPARENT_U8, KoColorSpace::opacityU8(), KoColorSpace::pixelSize(), UINT16_MAX, and value().

◆ maximalZoom()

qreal KoBasicU16HistogramProducer::maximalZoom ( ) const
overridevirtual

Implements KoHistogramProducer.

Definition at line 151 of file KoBasicHistogramProducers.cpp.

152{
153 return 1.0 / 255.0;
154}

◆ positionToString()

QString KoBasicU16HistogramProducer::positionToString ( qreal pos) const
overridevirtual

Implements KoHistogramProducer.

Definition at line 146 of file KoBasicHistogramProducers.cpp.

147{
148 return QString("%1").arg(static_cast<quint8>(pos * UINT8_MAX));
149}
#define UINT8_MAX

References UINT8_MAX.


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