54 m_d->results.resize(tileRects.size());
56 Q_FOREACH (
const QRect &tileRectangle, tileRects) {
75 QRect imageBounds =
m_d->image->bounds();
81 int imageSize = imageBounds.width() * imageBounds.height();
82 int nSkip = 1 + (imageSize >> 20);
84 if (calculate.isEmpty())
89 quint32 toSkip = nSkip;
98 for (
int k = 0; k < numConseqPixels; ++k) {
100 for (
int chan = 0; chan < (int)channelCount; ++chan) {
115 if (
m_d->results.size() == 1) {
116 hisData.
bins =
m_d->results[0];
120 quint32 channelCount =
m_d->image->projection()->channelCount();
124 for (
int chan = 0; chan < (int)channelCount; chan++) {
125 int bsize = hisData.
bins[chan].size();
127 for (
int bi = 0; bi < bsize; bi++) {
128 hisData.
bins[chan][bi] = 0;
129 for (
int i = 0; i < (int)
m_d->results.size(); i++) {
130 hisData.
bins[chan][bi] +=
m_d->results[i][chan][bi];
144 for (
auto &bin : vec) {
145 bin.resize(std::numeric_limits<quint8>::max() + 1);
std::vector< std::vector< quint32 > > HistVector
ProcessData(QRect rect, int _jobId)
void initStrokeCallback() override
void finishStrokeCallback() override
void initiateVector(HistVector &vec, const KoColorSpace *colorSpace)
const QScopedPointer< Private > m_d
~HistogramComputationStrokeStrategy() override
void computationResultReady(HistogramData data)
HistogramComputationStrokeStrategy(KisImageSP image)
void doStrokeCallback(KisStrokeJobData *data) override
void finishStrokeCallback() override
void initStrokeCallback() override
quint32 pixelSize() const
quint32 channelCount() const
const KoColorSpace * colorSpace() const
bool nextPixels(int numPixels)
int nConseqPixels() const
ALWAYS_INLINE const quint8 * rawDataConst() const
virtual void doStrokeCallback(KisStrokeJobData *data)
void addMutatedJobs(const QVector< KisStrokeJobData * > list)
virtual quint8 scaleToU8(const quint8 *srcPixel, qint32 channelPos) const =0
virtual quint32 channelCount() const =0
KUndo2MagicString kundo2_i18n(const char *text)
QVector< QRect > splitRectIntoPatches(const QRect &rc, const QSize &patchSize)
std::vector< HistVector > results
const KoColorSpace * colorSpace