File indexing completed on 2024-05-26 04:33:50
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "KisColorSmudgeStrategyStamp.h" 0008 0009 #include "kis_fixed_paint_device.h" 0010 #include "kis_image.h" 0011 #include "KisOverlayPaintDeviceWrapper.h" 0012 0013 0014 KisColorSmudgeStrategyStamp::KisColorSmudgeStrategyStamp(KisPainter *painter, KisImageSP image, bool smearAlpha, 0015 bool useDullingMode, bool useOverlayMode) 0016 : KisColorSmudgeStrategyWithOverlay(painter, image, smearAlpha, useDullingMode, useOverlayMode) 0017 , m_origDab(new KisFixedPaintDevice(m_layerOverlayDevice->overlayColorSpace())) // TODO: check compositionSourceColorSpace! 0018 { 0019 } 0020 0021 KisColorSmudgeStrategyBase::DabColoringStrategy &KisColorSmudgeStrategyStamp::coloringStrategy() 0022 { 0023 return m_coloringStrategy; 0024 } 0025 0026 void KisColorSmudgeStrategyStamp::updateMask(KisDabCache *dabCache, const KisPaintInformation &info, 0027 const KisDabShape &shape, const QPointF &cursorPoint, QRect *dstDabRect, qreal lightnessStrength) 0028 { 0029 0030 static KoColor color(Qt::black, m_origDab->colorSpace()); 0031 0032 m_origDab = dabCache->fetchDab(m_origDab->colorSpace(), 0033 color, 0034 cursorPoint, 0035 shape, 0036 info, 0037 1.0, 0038 dstDabRect, 0039 lightnessStrength); 0040 0041 m_coloringStrategy.setStampDab(m_origDab); 0042 0043 const int numPixels = m_origDab->bounds().width() * m_origDab->bounds().height(); 0044 0045 m_maskDab->setRect(m_origDab->bounds()); 0046 m_maskDab->lazyGrowBufferWithoutInitialization(); 0047 m_origDab->colorSpace()->copyOpacityU8(m_origDab->data(), m_maskDab->data(), numPixels); 0048 0049 m_shouldPreserveMaskDab = false; 0050 }