24 : m_dstDevice(dstDevice)
38 int alphaChannelOffset = -1;
46 alphaChannelOffset = channels[alphaPos]->pos();
47 alphaChannelType = channels[alphaPos]->channelValueType();
50 alphaChannelOffset = 0;
55 compositeOpId, alphaChannelType, pixelSize, alphaChannelOffset));
74 if (rc.isEmpty())
return;
82 qint32 rowsRemaining = rc.height();
84 while (rowsRemaining > 0) {
90 const qint32 rows = std::min({rowsRemaining, numContiguousDstRows, numContiguousMaskRows});
92 qint32 columnsRemaining = rc.width();
94 while (columnsRemaining > 0) {
98 const qint32 columns = std::min({columnsRemaining, numContiguousDstColumns, numContiguousMaskColumns});
100 const qint32 dstRowStride = dstIt->
rowStride(dstX, dstY);
101 const qint32 maskRowStride = maskIt->
rowStride(dstX, dstY);
103 dstIt->
moveTo(dstX, dstY);
104 maskIt->
moveTo(dstX, dstY);
107 dstIt->
rawData(), dstRowStride,
111 columnsRemaining -= columns;
115 rowsRemaining -= rows;
const KoID GrayAColorModelID("GRAYA", ki18n("Grayscale/Alpha"))
const KoID Integer8BitsColorDepthID("U8", ki18n("8-bit integer/channel"))
virtual quint8 * rawData()=0
virtual const quint8 * rawDataConst() const =0
static KisMaskingBrushCompositeOpBase * create(const QString &id, KoChannelInfo::enumChannelValueType channelType, int pixelSize, int alphaOffset)
KisPaintDeviceSP m_maskDevice
QScopedPointer< KisMaskingBrushCompositeOpBase > m_compositeOp
~KisMaskingBrushRenderer()
KisPaintDeviceSP maskDevice() const
KisPaintDeviceSP strokeDevice() const
KisMaskingBrushRenderer(KisPaintDeviceSP dstDevice, const QString &compositeOpId)
void updateProjection(const QRect &rc)
KisPaintDeviceSP m_dstDevice
KisPaintDeviceSP m_strokeDevice
void setDefaultBounds(KisDefaultBoundsBaseSP bounds)
KisRandomConstAccessorSP createRandomConstAccessorNG() const
const KoColorSpace * colorSpace() const
KisDefaultBoundsBaseSP defaultBounds() const
KisRandomAccessorSP createRandomAccessorNG()
static void copyAreaOptimized(const QPoint &dstPt, KisPaintDeviceSP src, KisPaintDeviceSP dst, const QRect &originalSrcRect)
virtual qint32 rowStride(qint32 x, qint32 y) const =0
virtual qint32 numContiguousRows(qint32 y) const =0
virtual void moveTo(qint32 x, qint32 y)=0
virtual qint32 numContiguousColumns(qint32 x) const =0
enumChannelValueType
enum to define the value of the channel
@ UINT8
use this for an unsigned integer 8bits channel
virtual quint32 alphaPos() const =0
virtual quint32 pixelSize() const =0
QList< KoChannelInfo * > channels
#define KIS_SAFE_ASSERT_RECOVER(cond)
static KoColorSpaceRegistry * instance()