Krita Source Code Documentation
Loading...
Searching...
No Matches
KisEncloseAndFillProcessingVisitor Class Reference

#include <KisEncloseAndFillProcessingVisitor.h>

+ Inheritance diagram for KisEncloseAndFillProcessingVisitor:

Public Member Functions

 KisEncloseAndFillProcessingVisitor (KisPaintDeviceSP referencePaintDevice, KisPixelSelectionSP enclosingMask, KisSelectionSP selection, KisResourcesSnapshotSP resources, KisEncloseAndFillPainter::RegionSelectionMethod regionSelectionMethod, const KoColor &regionSelectionColor, bool regionSelectionInvert, bool regionSelectionIncludeContourRegions, bool regionSelectionIncludeSurroundingRegions, int fillThreshold, int fillOpacitySpread, int closeGap, bool antiAlias, int expand, bool stopGrowingAtDarkestPixel, int feather, bool useSelectionAsBoundary, bool usePattern, bool unmerged, bool useBgColor, bool useCustomBlendingOptions, qreal customOpacity, const QString &customCompositeOp, QSharedPointer< QRect > outDirtyRect)
 
- Public Member Functions inherited from KisSimpleProcessingVisitor
void visit (KisAdjustmentLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visit (KisCloneLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visit (KisColorizeMask *mask, KisUndoAdapter *undoAdapter) override
 
void visit (KisExternalLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visit (KisFilterMask *mask, KisUndoAdapter *undoAdapter) override
 
void visit (KisGeneratorLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visit (KisGroupLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visit (KisNode *node, KisUndoAdapter *undoAdapter) override
 
void visit (KisPaintLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visit (KisSelectionMask *mask, KisUndoAdapter *undoAdapter) override
 
void visit (KisTransformMask *mask, KisUndoAdapter *undoAdapter) override
 
void visit (KisTransparencyMask *mask, KisUndoAdapter *undoAdapter) override
 
 ~KisSimpleProcessingVisitor () override
 
- Public Member Functions inherited from KisProcessingVisitor
virtual KUndo2CommandcreateInitCommand ()
 
virtual ~KisProcessingVisitor ()
 
- Public Member Functions inherited from KisShared
bool deref ()
 
bool ref ()
 
int refCount ()
 
QAtomicInt * sharedWeakReference ()
 

Private Member Functions

void fillPaintDevice (KisPaintDeviceSP device, KisUndoAdapter *undoAdapter, ProgressHelper &helper)
 
void visitColorizeMask (KisColorizeMask *mask, KisUndoAdapter *undoAdapter) override
 
void visitExternalLayer (KisExternalLayer *layer, KisUndoAdapter *undoAdapter) override
 
void visitNodeWithPaintDevice (KisNode *node, KisUndoAdapter *undoAdapter) override
 

Private Attributes

bool m_antiAlias {false}
 
int m_closeGap {0}
 
QString m_customCompositeOp
 
qreal m_customOpacity
 
KisPixelSelectionSP m_enclosingMask {nullptr}
 
int m_expand {0}
 
int m_feather {0}
 
int m_fillOpacitySpread {100}
 
int m_fillThreshold {8}
 
QSharedPointer< QRect > m_outDirtyRect
 
KisPaintDeviceSP m_referencePaintDevice {nullptr}
 
KoColor m_regionSelectionColor
 
bool m_regionSelectionIncludeContourRegions {true}
 
bool m_regionSelectionIncludeSurroundingRegions {true}
 
bool m_regionSelectionInvert {false}
 
KisEncloseAndFillPainter::RegionSelectionMethod m_regionSelectionMethod {KisEncloseAndFillPainter::SelectAllRegions}
 
KisResourcesSnapshotSP m_resources {nullptr}
 
KisSelectionSP m_selection {nullptr}
 
bool m_stopGrowingAtDarkestPixel {false}
 
bool m_unmerged {false}
 
bool m_useBgColor {false}
 
bool m_useCustomBlendingOptions
 
bool m_usePattern {false}
 
bool m_useSelectionAsBoundary {true}
 

Additional Inherited Members

- Protected Member Functions inherited from KisShared
 KisShared ()
 
 ~KisShared ()
 

Detailed Description

Definition at line 20 of file KisEncloseAndFillProcessingVisitor.h.

Constructor & Destructor Documentation

◆ KisEncloseAndFillProcessingVisitor()

KisEncloseAndFillProcessingVisitor::KisEncloseAndFillProcessingVisitor ( KisPaintDeviceSP referencePaintDevice,
KisPixelSelectionSP enclosingMask,
KisSelectionSP selection,
KisResourcesSnapshotSP resources,
KisEncloseAndFillPainter::RegionSelectionMethod regionSelectionMethod,
const KoColor & regionSelectionColor,
bool regionSelectionInvert,
bool regionSelectionIncludeContourRegions,
bool regionSelectionIncludeSurroundingRegions,
int fillThreshold,
int fillOpacitySpread,
int closeGap,
bool antiAlias,
int expand,
bool stopGrowingAtDarkestPixel,
int feather,
bool useSelectionAsBoundary,
bool usePattern,
bool unmerged,
bool useBgColor,
bool useCustomBlendingOptions,
qreal customOpacity,
const QString & customCompositeOp,
QSharedPointer< QRect > outDirtyRect )

Definition at line 17 of file KisEncloseAndFillProcessingVisitor.cpp.

42 : m_referencePaintDevice(referencePaintDevice)
43 , m_enclosingMask(enclosingMask)
44 , m_selection(selection)
45 , m_resources(resources)
46 , m_regionSelectionMethod(regionSelectionMethod)
47 , m_regionSelectionColor(regionSelectionColor)
48 , m_regionSelectionInvert(regionSelectionInvert)
49 , m_regionSelectionIncludeContourRegions(regionSelectionIncludeContourRegions)
50 , m_regionSelectionIncludeSurroundingRegions(regionSelectionIncludeSurroundingRegions)
51 , m_fillThreshold(fillThreshold)
52 , m_fillOpacitySpread(fillOpacitySpread)
53 , m_closeGap(closeGap)
54 , m_useSelectionAsBoundary(useSelectionAsBoundary)
55 , m_antiAlias(antiAlias)
57 , m_stopGrowingAtDarkestPixel(stopGrowingAtDarkestPixel)
58 , m_feather(feather)
59 , m_usePattern(usePattern)
60 , m_unmerged(unmerged)
61 , m_useBgColor(useBgColor)
62 , m_useCustomBlendingOptions(useCustomBlendingOptions)
63 , m_customOpacity(customOpacity)
64 , m_customCompositeOp(customCompositeOp)
65 , m_outDirtyRect(outDirtyRect)
66{}
void expand(ExpansionStrategy &expansionStrategy, KoUpdater *progressUpdater)
KisEncloseAndFillPainter::RegionSelectionMethod m_regionSelectionMethod

Member Function Documentation

◆ fillPaintDevice()

void KisEncloseAndFillProcessingVisitor::fillPaintDevice ( KisPaintDeviceSP device,
KisUndoAdapter * undoAdapter,
ProgressHelper & helper )
private

Definition at line 82 of file KisEncloseAndFillProcessingVisitor.cpp.

83{
84 Q_ASSERT(m_enclosingMask);
85
86 const QRect fillRect = m_resources->image()->bounds();
87
88 KisEncloseAndFillPainter painter(device, m_selection, fillRect.size());
89 painter.beginTransaction();
90
91 m_resources->setupPainter(&painter);
92
93 if (m_useBgColor) {
94 painter.setPaintColor(painter.backgroundColor());
95 }
96
97 painter.setProgress(helper.updater());
98 painter.setRegionSelectionMethod(m_regionSelectionMethod);
99 painter.setRegionSelectionColor(m_regionSelectionColor);
100 painter.setRegionSelectionInvert(m_regionSelectionInvert);
101 painter.setRegionSelectionIncludeContourRegions(m_regionSelectionIncludeContourRegions);
102 painter.setRegionSelectionIncludeSurroundingRegions(m_regionSelectionIncludeSurroundingRegions);
103 painter.setFillThreshold(m_fillThreshold);
104 painter.setOpacitySpread(m_fillOpacitySpread);
105 painter.setCloseGap(m_closeGap);
106 painter.setUseSelectionAsBoundary((m_selection.isNull() || !m_selection->hasNonEmptyPixelSelection()) ? false : m_useSelectionAsBoundary);
107 painter.setAntiAlias(m_antiAlias);
108 painter.setSizemod(m_expand);
109 painter.setStopGrowingAtDarkestPixel(m_stopGrowingAtDarkestPixel);
110 painter.setFeather(m_feather);
112 painter.setOpacityF(m_customOpacity);
113 painter.setCompositeOpId(m_customCompositeOp);
114 }
115
116 KisPaintDeviceSP sourceDevice = m_unmerged ? device : m_referencePaintDevice;
117
118 if (m_usePattern) {
119 painter.encloseAndFillPattern(m_enclosingMask, sourceDevice, m_resources->fillTransform());
120 } else {
121 painter.encloseAndFillColor(m_enclosingMask, sourceDevice);
122 }
123
124 painter.endTransaction(undoAdapter);
125
126 if (m_outDirtyRect) {
128 QVector<QRect> dirtyRects = painter.takeDirtyRegion();
129 Q_FOREACH(const QRect &r, dirtyRects) {
130 *m_outDirtyRect = m_outDirtyRect->united(r);
131 }
132 }
133}
QRect bounds() const override
void setupPainter(KisPainter *painter)
bool isNull() const
bool hasNonEmptyPixelSelection() const

References KisPainter::backgroundColor, KisPainter::beginTransaction(), KisImage::bounds(), KisEncloseAndFillPainter::encloseAndFillColor(), KisEncloseAndFillPainter::encloseAndFillPattern(), KisPainter::endTransaction(), KisResourcesSnapshot::fillTransform(), KisSelection::hasNonEmptyPixelSelection(), KisResourcesSnapshot::image(), KisSharedPtr< T >::isNull(), m_antiAlias, m_closeGap, m_customCompositeOp, m_customOpacity, m_enclosingMask, m_expand, m_feather, m_fillOpacitySpread, m_fillThreshold, m_outDirtyRect, m_referencePaintDevice, m_regionSelectionColor, m_regionSelectionIncludeContourRegions, m_regionSelectionIncludeSurroundingRegions, m_regionSelectionInvert, m_regionSelectionMethod, m_resources, m_selection, m_stopGrowingAtDarkestPixel, m_unmerged, m_useBgColor, m_useCustomBlendingOptions, m_usePattern, m_useSelectionAsBoundary, KisPixelSelection::selectedRect(), KisFillPainter::setAntiAlias(), KisFillPainter::setCloseGap(), KisPainter::setCompositeOpId(), KisFillPainter::setFeather(), KisFillPainter::setFillThreshold(), KisPainter::setOpacityF(), KisFillPainter::setOpacitySpread(), KisPainter::setPaintColor(), KisPainter::setProgress(), KisEncloseAndFillPainter::setRegionSelectionColor(), KisEncloseAndFillPainter::setRegionSelectionIncludeContourRegions(), KisEncloseAndFillPainter::setRegionSelectionIncludeSurroundingRegions(), KisEncloseAndFillPainter::setRegionSelectionInvert(), KisEncloseAndFillPainter::setRegionSelectionMethod(), KisFillPainter::setSizemod(), KisFillPainter::setStopGrowingAtDarkestPixel(), KisResourcesSnapshot::setupPainter(), KisFillPainter::setUseSelectionAsBoundary(), KisPainter::takeDirtyRegion(), and KisProcessingVisitor::ProgressHelper::updater().

◆ visitColorizeMask()

void KisEncloseAndFillProcessingVisitor::visitColorizeMask ( KisColorizeMask * mask,
KisUndoAdapter * undoAdapter )
overrideprivatevirtual

Implements KisSimpleProcessingVisitor.

Definition at line 135 of file KisEncloseAndFillProcessingVisitor.cpp.

136{
137 Q_UNUSED(mask);
138 Q_UNUSED(undoAdapter);
139}

◆ visitExternalLayer()

void KisEncloseAndFillProcessingVisitor::visitExternalLayer ( KisExternalLayer * layer,
KisUndoAdapter * undoAdapter )
overrideprivatevirtual

Implements KisSimpleProcessingVisitor.

Definition at line 68 of file KisEncloseAndFillProcessingVisitor.cpp.

69{
70 Q_UNUSED(layer);
71 Q_UNUSED(undoAdapter);
72}

◆ visitNodeWithPaintDevice()

void KisEncloseAndFillProcessingVisitor::visitNodeWithPaintDevice ( KisNode * node,
KisUndoAdapter * undoAdapter )
overrideprivatevirtual

Implements KisSimpleProcessingVisitor.

Definition at line 74 of file KisEncloseAndFillProcessingVisitor.cpp.

75{
76 KisPaintDeviceSP device = node->paintDevice();
77 Q_ASSERT(device);
78 ProgressHelper helper(node);
79 fillPaintDevice(device, undoAdapter, helper);
80}
void fillPaintDevice(KisPaintDeviceSP device, KisUndoAdapter *undoAdapter, ProgressHelper &helper)
virtual KisPaintDeviceSP paintDevice() const =0

References fillPaintDevice(), and KisBaseNode::paintDevice().

Member Data Documentation

◆ m_antiAlias

bool KisEncloseAndFillProcessingVisitor::m_antiAlias {false}
private

Definition at line 71 of file KisEncloseAndFillProcessingVisitor.h.

71{false};

◆ m_closeGap

int KisEncloseAndFillProcessingVisitor::m_closeGap {0}
private

Definition at line 69 of file KisEncloseAndFillProcessingVisitor.h.

69{0};

◆ m_customCompositeOp

QString KisEncloseAndFillProcessingVisitor::m_customCompositeOp
private

Definition at line 80 of file KisEncloseAndFillProcessingVisitor.h.

◆ m_customOpacity

qreal KisEncloseAndFillProcessingVisitor::m_customOpacity
private

Definition at line 79 of file KisEncloseAndFillProcessingVisitor.h.

◆ m_enclosingMask

KisPixelSelectionSP KisEncloseAndFillProcessingVisitor::m_enclosingMask {nullptr}
private

Definition at line 59 of file KisEncloseAndFillProcessingVisitor.h.

59{nullptr};

◆ m_expand

int KisEncloseAndFillProcessingVisitor::m_expand {0}
private

Definition at line 72 of file KisEncloseAndFillProcessingVisitor.h.

72{0};

◆ m_feather

int KisEncloseAndFillProcessingVisitor::m_feather {0}
private

Definition at line 74 of file KisEncloseAndFillProcessingVisitor.h.

74{0};

◆ m_fillOpacitySpread

int KisEncloseAndFillProcessingVisitor::m_fillOpacitySpread {100}
private

Definition at line 68 of file KisEncloseAndFillProcessingVisitor.h.

68{100};

◆ m_fillThreshold

int KisEncloseAndFillProcessingVisitor::m_fillThreshold {8}
private

Definition at line 67 of file KisEncloseAndFillProcessingVisitor.h.

67{8};

◆ m_outDirtyRect

QSharedPointer<QRect> KisEncloseAndFillProcessingVisitor::m_outDirtyRect
private

Definition at line 81 of file KisEncloseAndFillProcessingVisitor.h.

◆ m_referencePaintDevice

KisPaintDeviceSP KisEncloseAndFillProcessingVisitor::m_referencePaintDevice {nullptr}
private

Definition at line 58 of file KisEncloseAndFillProcessingVisitor.h.

58{nullptr};

◆ m_regionSelectionColor

KoColor KisEncloseAndFillProcessingVisitor::m_regionSelectionColor
private

Definition at line 63 of file KisEncloseAndFillProcessingVisitor.h.

◆ m_regionSelectionIncludeContourRegions

bool KisEncloseAndFillProcessingVisitor::m_regionSelectionIncludeContourRegions {true}
private

Definition at line 65 of file KisEncloseAndFillProcessingVisitor.h.

65{true};

◆ m_regionSelectionIncludeSurroundingRegions

bool KisEncloseAndFillProcessingVisitor::m_regionSelectionIncludeSurroundingRegions {true}
private

Definition at line 66 of file KisEncloseAndFillProcessingVisitor.h.

66{true};

◆ m_regionSelectionInvert

bool KisEncloseAndFillProcessingVisitor::m_regionSelectionInvert {false}
private

Definition at line 64 of file KisEncloseAndFillProcessingVisitor.h.

64{false};

◆ m_regionSelectionMethod

◆ m_resources

KisResourcesSnapshotSP KisEncloseAndFillProcessingVisitor::m_resources {nullptr}
private

Definition at line 61 of file KisEncloseAndFillProcessingVisitor.h.

61{nullptr};

◆ m_selection

KisSelectionSP KisEncloseAndFillProcessingVisitor::m_selection {nullptr}
private

Definition at line 60 of file KisEncloseAndFillProcessingVisitor.h.

60{nullptr};

◆ m_stopGrowingAtDarkestPixel

bool KisEncloseAndFillProcessingVisitor::m_stopGrowingAtDarkestPixel {false}
private

Definition at line 73 of file KisEncloseAndFillProcessingVisitor.h.

73{false};

◆ m_unmerged

bool KisEncloseAndFillProcessingVisitor::m_unmerged {false}
private

Definition at line 76 of file KisEncloseAndFillProcessingVisitor.h.

76{false};

◆ m_useBgColor

bool KisEncloseAndFillProcessingVisitor::m_useBgColor {false}
private

Definition at line 77 of file KisEncloseAndFillProcessingVisitor.h.

77{false};

◆ m_useCustomBlendingOptions

bool KisEncloseAndFillProcessingVisitor::m_useCustomBlendingOptions
private

Definition at line 78 of file KisEncloseAndFillProcessingVisitor.h.

◆ m_usePattern

bool KisEncloseAndFillProcessingVisitor::m_usePattern {false}
private

Definition at line 75 of file KisEncloseAndFillProcessingVisitor.h.

75{false};

◆ m_useSelectionAsBoundary

bool KisEncloseAndFillProcessingVisitor::m_useSelectionAsBoundary {true}
private

Definition at line 70 of file KisEncloseAndFillProcessingVisitor.h.

70{true};

The documentation for this class was generated from the following files: