Krita Source Code Documentation
Loading...
Searching...
No Matches
KisFillActionFactory Struct Reference

#include <kis_selection_action_factories.h>

+ Inheritance diagram for KisFillActionFactory:

Public Member Functions

 KisFillActionFactory ()
 
void run (const QString &fillSource, KisViewManager *view)
 
void runFromXML (KisViewManager *view, const KisOperationConfiguration &config) override
 
- Public Member Functions inherited from KisOperation
QString id () const
 
 KisOperation (const QString &id)
 
virtual ~KisOperation ()
 

Additional Inherited Members

- Protected Member Functions inherited from KisOperation
KisProcessingApplicatorbeginAction (KisViewManager *view, const KUndo2MagicString &actionName)
 
void endAction (KisProcessingApplicator *applicator, const QString &xmlData)
 

Detailed Description

Definition at line 32 of file kis_selection_action_factories.h.

Constructor & Destructor Documentation

◆ KisFillActionFactory()

KisFillActionFactory::KisFillActionFactory ( )
inline

Definition at line 34 of file kis_selection_action_factories.h.

34: KisOperation("fill-ui-action") {}
KisOperation(const QString &id)

Member Function Documentation

◆ run()

void KisFillActionFactory::run ( const QString & fillSource,
KisViewManager * view )

fillColor may be one of three variants:

  • "fg" — foreground color
  • "bg" — background color
  • "pattern" — current pattern

Definition at line 218 of file kis_selection_action_factories.cpp.

219{
220 KisNodeSP node = view->activeNode();
221 if (!node || !node->hasEditablePaintDevice()) return;
222
223 KisImageWSP image = view->image();
224
225 KisSelectionSP selection = view->selection();
226
227 bool usePattern = false;
228 bool useBgColor = false;
229 if (fillSource.contains("pattern")) {
230 usePattern = true;
231 } else if (fillSource.contains("bg")) {
232 useBgColor = true;
233 }
234
235 KisResourcesSnapshotSP resources =
237 if (!fillSource.contains("opacity")) {
238 resources->setOpacity(1.0);
239 }
240
243 kundo2_i18n("Flood Fill Layer"), false, image.data()
244 );
245 strategy->setSupportsWrapAroundMode(true);
246 KisStrokeId fillStrokeId = image->startStroke(strategy);
247 KIS_SAFE_ASSERT_RECOVER_RETURN(fillStrokeId);
248
249 QSharedPointer<QRect> dirtyRect = QSharedPointer<QRect>(new QRect);
250
251 FillProcessingVisitor *visitor = new FillProcessingVisitor(nullptr, selection, resources);
252 visitor->setSeedPoint(QPoint(0, 0));
253 visitor->setSelectionOnly(true);
254 visitor->setOutDirtyRect(dirtyRect);
255 visitor->setUsePattern(usePattern);
256 visitor->setUseBgColor(useBgColor);
257
258 image->addJob(
259 fillStrokeId,
261 KUndo2CommandSP(new KisProcessingCommand(visitor, node)),
262 false,
265 )
266 );
267
268 image->addJob(
269 fillStrokeId,
271 KUndo2CommandSP(new KisUpdateCommand(node, dirtyRect, image.data())),
272 false,
275 )
276 );
277
278 image->endStroke(fillStrokeId);
279
281}
void setOutDirtyRect(QSharedPointer< QRect > outDirtyRect)
void setSeedPoint(const QPoint &seedPoint)
void setSelectionOnly(bool selectionOnly)
void setUseBgColor(bool useBgColor)
void setUsePattern(bool usePattern)
KoCanvasResourceProvider * resourceManager()
void addJob(KisStrokeId id, KisStrokeJobData *data) override
KisStrokeId startStroke(KisStrokeStrategy *strokeStrategy) override
void endStroke(KisStrokeId id) override
The KisResourcesSnapshot class takes a snapshot of the various resources like colors and settings use...
KisNodeSP activeNode()
KisSelectionSP selection()
KisImageWSP image() const
Return the image this view is displaying.
KisCanvasResourceProvider * canvasResourceProvider()
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
QSharedPointer< KUndo2Command > KUndo2CommandSP
Definition kis_types.h:262
KUndo2MagicString kundo2_i18n(const char *text)
bool hasEditablePaintDevice() const

References KisViewManager::activeNode(), KisImage::addJob(), KisViewManager::canvasResourceProvider(), KisWeakSharedPtr< T >::data(), KisImage::endStroke(), KisStrokeJobData::EXCLUSIVE, KisBaseNode::hasEditablePaintDevice(), KisViewManager::image(), KIS_SAFE_ASSERT_RECOVER_RETURN, kundo2_i18n(), KisCanvasResourceProvider::resourceManager(), KisViewManager::selection(), KisStrokeJobData::SEQUENTIAL, KisResourcesSnapshot::setOpacity(), FillProcessingVisitor::setOutDirtyRect(), FillProcessingVisitor::setSeedPoint(), FillProcessingVisitor::setSelectionOnly(), KisStrokeStrategyUndoCommandBased::setSupportsWrapAroundMode(), FillProcessingVisitor::setUseBgColor(), FillProcessingVisitor::setUsePattern(), KisCanvasResourceProvider::slotPainting(), and KisImage::startStroke().

◆ runFromXML()

void KisFillActionFactory::runFromXML ( KisViewManager * view,
const KisOperationConfiguration & config )
inlineoverridevirtual

Reimplemented from KisOperation.

Definition at line 35 of file kis_selection_action_factories.h.

35 {
36 run(config.getString("fill-source", "fg"), view);
37 }
void run(const QString &fillSource, KisViewManager *view)
QString getString(const QString &name, const QString &def=QString()) const

References KisPropertiesConfiguration::getString(), and KisNoParameterActionFactory::run().


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