10#include <klocalizedstring.h>
25 : m_channels(channelCount)
26 , m_nrOfBins(nrOfBins)
41 : m_nrOfBins(nrOfBins),
82 if (c[j]->pos() == currentPos) {
100 return QString(
"%1").arg(
static_cast<quint8
>(pos *
UINT8_MAX));
106 quint8 *dstPixels =
new quint8[nPixels * dstPixelSize];
110 quint8 *dst = dstPixels;
111 while (nPixels > 0) {
124 quint8 *dst = dstPixels;
125 while (nPixels > 0) {
148 return QString(
"%1").arg(
static_cast<quint8
>(pos *
UINT8_MAX));
161 quint16 to = from + width;
162 qreal factor = 255.0 / width;
165 quint8 *dstPixels =
new quint8[nPixels * dstPixelSize];
167 quint8 *dst = dstPixels;
171 while (nPixels > 0) {
178 else if (
value < from)
181 m_bins[i][
static_cast<quint8
>((
value - from) * factor)]++;
190 while (nPixels > 0) {
198 else if (
value < from)
201 m_bins[i][
static_cast<quint8
>((
value - from) * factor)]++;
219 return QString(
"%1").arg(
static_cast<float>(pos));
231 float from =
static_cast<float>(
m_from);
232 float width =
static_cast<float>(
m_width);
233 float to = from + width;
234 float factor = 255.0 / width;
237 quint8 *dstPixels =
new quint8[nPixels * dstPixelSize];
239 quint8 *dst = dstPixels;
243 while (nPixels > 0) {
250 else if (
value < from)
253 m_bins[i][
static_cast<quint8
>((
value - from) * factor)]++;
263 while (nPixels > 0) {
270 else if (
value < from)
273 m_bins[i][
static_cast<quint8
>((
value - from) * factor)]++;
286KoBasicF16HalfHistogramProducer::KoBasicF16HalfHistogramProducer(
const KoID&
id,
292QString KoBasicF16HalfHistogramProducer::positionToString(qreal pos)
const
294 return QString(
"%1").arg(
static_cast<float>(pos));
297qreal KoBasicF16HalfHistogramProducer::maximalZoom()
const
303void KoBasicF16HalfHistogramProducer::addRegionToBin(
const quint8 * pixels,
const quint8 * selectionMask, quint32 nPixels,
const KoColorSpace *cs)
306 float from =
static_cast<float>(m_from);
307 float width =
static_cast<float>(m_width);
308 float to = from + width;
309 float factor = 255.0 / width;
311 quint32 dstPixelSize = m_colorSpace->pixelSize();
312 quint8 *dstPixels =
new quint8[nPixels * dstPixelSize];
314 quint8 *dst = dstPixels;
318 while (nPixels > 0) {
320 m_colorSpace->normalisedChannelsValue(dst,channels);
321 for (
int i = 0; i < (int)m_colorSpace->channelCount(); i++) {
322 float value = channels[i];
325 else if (
value < from)
328 m_bins[i][
static_cast<quint8
>((
value - from) * factor)]++;
337 while (nPixels > 0) {
339 m_colorSpace->normalisedChannelsValue(dst,channels);
340 for (
int i = 0; i < (int)m_colorSpace->channelCount(); i++) {
341 float value = channels[i];
344 else if (
value < from)
347 m_bins[i][
static_cast<quint8
>((
value - from) * factor)]++;
376 return QString(
"%1").arg(
static_cast<quint8
>(pos *
UINT8_MAX));
395 while (nPixels > 0) {
410 while (nPixels > 0) {
460 return QString(
"%1").arg(
static_cast<quint16
>(pos *
UINT16_MAX));
478 quint8 *dstPixels =
new quint8[nPixels * dstPixelSize];
484 while (nPixels > 0) {
493 quint8 *dst = dstPixels;
494 while (nPixels > 0) {
float value(const T *src, size_t ch)
static const KoColorSpace * m_labCs
const quint8 OPACITY_TRANSPARENT_U8
void addRegionToBin(const quint8 *pixels, const quint8 *selectionMask, quint32 nPixels, const KoColorSpace *colorSpace) override
KoBasicF32HistogramProducer(const KoID &id, const KoColorSpace *colorSpace)
QString positionToString(qreal pos) const override
qreal maximalZoom() const override
void makeExternalToInternal()
QList< KoChannelInfo * > channels() override
const KoColorSpace * m_colorSpace
QVector< qint32 > m_external
KoBasicHistogramProducer(const KoID &id, int channelCount, int nrOfBins)
void addRegionToBin(const quint8 *pixels, const quint8 *selectionMask, quint32 nPixels, const KoColorSpace *colorSpace) override
qreal maximalZoom() const override
KoBasicU16HistogramProducer(const KoID &id, const KoColorSpace *colorSpace)
QString positionToString(qreal pos) const override
KoBasicU8HistogramProducer(const KoID &id, const KoColorSpace *colorSpace)
void addRegionToBin(const quint8 *pixels, const quint8 *selectionMask, quint32 nPixels, const KoColorSpace *colorSpace) override
QString positionToString(qreal pos) const override
@ COLOR
The channel represents a color.
@ UINT8
use this for an unsigned integer 8bits channel
virtual quint32 pixelSize() const =0
virtual void toQColor(const quint8 *src, QColor *c) const =0
virtual quint8 scaleToU8(const quint8 *srcPixel, qint32 channelPos) const =0
virtual quint32 channelCount() const =0
virtual void normalisedChannelsValue(const quint8 *pixel, QVector< float > &channels) const =0
virtual quint8 opacityU8(const quint8 *pixel) const =0
virtual bool convertPixelsTo(const quint8 *src, quint8 *dst, const KoColorSpace *dstColorSpace, quint32 numPixels, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags) const
KoGenericLabHistogramProducerFactory()
QList< KoChannelInfo * > channels() override
void addRegionToBin(const quint8 *pixels, const quint8 *selectionMask, quint32 nPixels, const KoColorSpace *colorSpace) override
QString positionToString(qreal pos) const override
KoGenericLabHistogramProducer()
qreal maximalZoom() const override
QList< KoChannelInfo * > m_channelsList
~KoGenericLabHistogramProducer() override
KoGenericRGBHistogramProducerFactory()
qreal maximalZoom() const override
QList< KoChannelInfo * > m_channelsList
QString positionToString(qreal pos) const override
void addRegionToBin(const quint8 *pixels, const quint8 *selectionMask, quint32 nPixels, const KoColorSpace *colorSpace) override
QList< KoChannelInfo * > channels() override
KoGenericRGBHistogramProducer()
const KoColorSpace * lab16(const QString &profileName=QString())
static KoColorSpaceRegistry * instance()