Krita Source Code Documentation
Loading...
Searching...
No Matches
KisColorSmudgeSampleUtils::WeightedSampleWrapper Struct Reference

#include <KisColorSmudgeSampleUtils.h>

Public Member Functions

void samplePixel (const QPoint &relativeSamplePoint)
 
bool shouldRestartWithBiggerRadius () const
 
 WeightedSampleWrapper (KoMixColorsOp::Mixer *mixer, KisFixedPaintDeviceSP maskDab, const QRect &maskRect, KisFixedPaintDeviceSP sampleDab, const QRect &sampleRect)
 

Static Public Member Functions

static void verifySampleRadiusValue (qreal *sampleRadiusValue)
 

Public Attributes

quint8 * m_maskPtr
 
const QRect m_maskRect
 
const int m_maskStride
 
KoMixColorsOp::Mixerm_mixer
 
int m_samplePixelSize
 
quint8 * m_samplePtr
 
const QRect m_sampleRect
 
const int m_sampleStride
 

Detailed Description

Definition at line 22 of file KisColorSmudgeSampleUtils.h.

Constructor & Destructor Documentation

◆ WeightedSampleWrapper()

KisColorSmudgeSampleUtils::WeightedSampleWrapper::WeightedSampleWrapper ( KoMixColorsOp::Mixer * mixer,
KisFixedPaintDeviceSP maskDab,
const QRect & maskRect,
KisFixedPaintDeviceSP sampleDab,
const QRect & sampleRect )
inline

Definition at line 24 of file KisColorSmudgeSampleUtils.h.

27 : m_mixer(mixer),
28 m_maskRect(maskRect),
29 m_maskPtr(maskDab->data()),
30 m_maskStride(maskDab->bounds().width()),
31 m_samplePixelSize(sampleDab->colorSpace()->pixelSize()),
32 m_sampleRect(sampleRect),
33 m_samplePtr(sampleDab->data()),
34 m_sampleStride(sampleDab->bounds().width() * m_samplePixelSize)
35 {
36
37 }
const KoColorSpace * colorSpace() const
virtual quint32 pixelSize() const =0

Member Function Documentation

◆ samplePixel()

void KisColorSmudgeSampleUtils::WeightedSampleWrapper::samplePixel ( const QPoint & relativeSamplePoint)
inline

Definition at line 39 of file KisColorSmudgeSampleUtils.h.

39 {
40 const QPoint maskPt(relativeSamplePoint - m_maskRect.topLeft() + m_sampleRect.topLeft());
41
42 const qint16 opacity = *(m_maskPtr + maskPt.x() + maskPt.y() * m_maskStride);
43 const quint8 *ptr = m_samplePtr + relativeSamplePoint.x() * m_samplePixelSize + relativeSamplePoint.y() * m_sampleStride;
44
45 m_mixer->accumulate(ptr, &opacity, opacity, 1);
46 }
virtual void accumulate(const quint8 *data, const qint16 *weights, int weightSum, int nPixels)=0

References KoMixColorsOp::Mixer::accumulate(), m_maskPtr, m_maskRect, m_maskStride, m_mixer, m_samplePixelSize, m_samplePtr, m_sampleRect, and m_sampleStride.

◆ shouldRestartWithBiggerRadius()

bool KisColorSmudgeSampleUtils::WeightedSampleWrapper::shouldRestartWithBiggerRadius ( ) const
inline

Definition at line 55 of file KisColorSmudgeSampleUtils.h.

55 {
56 // if all the pixels we sampled appeared to be masked out
57 // we should ask the sampling algorithm to restart with
58 // bigger sampling radius
59
60 return m_mixer->currentWeightsSum() < 128;
61 }
virtual qint64 currentWeightsSum() const =0

References KoMixColorsOp::Mixer::currentWeightsSum(), and m_mixer.

◆ verifySampleRadiusValue()

static void KisColorSmudgeSampleUtils::WeightedSampleWrapper::verifySampleRadiusValue ( qreal * sampleRadiusValue)
inlinestatic

Definition at line 48 of file KisColorSmudgeSampleUtils.h.

48 {
49 KIS_SAFE_ASSERT_RECOVER(*sampleRadiusValue <= 1.0) {
50 *sampleRadiusValue = 1.0;
51 }
52 }
#define KIS_SAFE_ASSERT_RECOVER(cond)
Definition kis_assert.h:126

References KIS_SAFE_ASSERT_RECOVER.

Member Data Documentation

◆ m_maskPtr

quint8* KisColorSmudgeSampleUtils::WeightedSampleWrapper::m_maskPtr

Definition at line 65 of file KisColorSmudgeSampleUtils.h.

◆ m_maskRect

const QRect KisColorSmudgeSampleUtils::WeightedSampleWrapper::m_maskRect

Definition at line 64 of file KisColorSmudgeSampleUtils.h.

◆ m_maskStride

const int KisColorSmudgeSampleUtils::WeightedSampleWrapper::m_maskStride

Definition at line 66 of file KisColorSmudgeSampleUtils.h.

◆ m_mixer

KoMixColorsOp::Mixer* KisColorSmudgeSampleUtils::WeightedSampleWrapper::m_mixer

Definition at line 63 of file KisColorSmudgeSampleUtils.h.

◆ m_samplePixelSize

int KisColorSmudgeSampleUtils::WeightedSampleWrapper::m_samplePixelSize

Definition at line 67 of file KisColorSmudgeSampleUtils.h.

◆ m_samplePtr

quint8* KisColorSmudgeSampleUtils::WeightedSampleWrapper::m_samplePtr

Definition at line 69 of file KisColorSmudgeSampleUtils.h.

◆ m_sampleRect

const QRect KisColorSmudgeSampleUtils::WeightedSampleWrapper::m_sampleRect

Definition at line 68 of file KisColorSmudgeSampleUtils.h.

◆ m_sampleStride

const int KisColorSmudgeSampleUtils::WeightedSampleWrapper::m_sampleStride

Definition at line 70 of file KisColorSmudgeSampleUtils.h.


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