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

#include <KisToolEncloseAndFill.h>

+ Inheritance diagram for KisToolEncloseAndFill:

Public Types

enum  EnclosingMethod {
  Rectangle , Ellipse , Path , Lasso ,
  Brush
}
 
enum  FillType { FillWithForegroundColor , FillWithBackgroundColor , FillWithPattern }
 
enum  Reference { CurrentLayer , AllLayers , ColorLabeledLayers }
 
using RegionSelectionMethod = KisEncloseAndFillPainter::RegionSelectionMethod
 
- Public Types inherited from KisDynamicDelegatedTool< KisToolShape >
using DelegateType
 
- Public Types inherited from KisTool
enum  { FLAG_USES_CUSTOM_PRESET =0x01 , FLAG_USES_CUSTOM_COMPOSITEOP =0x02 , FLAG_USES_CUSTOM_SIZE =0x04 }
 
enum  AlternateAction {
  ChangeSize = AlternateChangeSize , ChangeSizeSnap = AlternateChangeSizeSnap , SampleFgNode = AlternateSampleFgNode , SampleBgNode = AlternateSampleBgNode ,
  SampleFgImage = AlternateSampleFgImage , SampleBgImage = AlternateSampleBgImage , Secondary = AlternateSecondary , Third = AlternateThird ,
  Fourth = AlternateFourth , Fifth = AlternateFifth , NONE = 10000
}
 
enum  NodePaintAbility {
  VECTOR , CLONE , PAINT , UNPAINTABLE ,
  MYPAINTBRUSH_UNPAINTABLE
}
 
enum  ToolAction {
  Primary , AlternateChangeSize , AlternateChangeSizeSnap , AlternateSampleFgNode ,
  AlternateSampleBgNode , AlternateSampleFgImage , AlternateSampleBgImage , AlternateSecondary ,
  AlternateThird , AlternateFourth , AlternateFifth , Alternate_NONE = 10000
}
 

Public Slots

void activate (const QSet< KoShape * > &shapes) override
 
void deactivate () override
 
- Public Slots inherited from KisDynamicDelegatedTool< KisToolShape >
void activate (const QSet< KoShape * > &shapes) override
 
void canvasResourceChanged (int key, const QVariant &res) override
 
void deactivate () override
 
void documentResourceChanged (int key, const QVariant &res) override
 
void repaintDecorations () override
 
void requestRedoDuringStroke () override
 
void requestStrokeCancellation () override
 
void requestStrokeEnd () override
 
void requestUndoDuringStroke () override
 
void updateSettingsViews () override
 
- Public Slots inherited from KisToolShape
void activate (const QSet< KoShape * > &shapes) override
 
virtual void fillSettingChanged (int value)
 
virtual void outlineSettingChanged (int value)
 
virtual void patternRotationSettingChanged (qreal value)
 
virtual void patternScaleSettingChanged (qreal value)
 
- Public Slots inherited from KisToolPaint
void activate (const QSet< KoShape * > &shapes) override
 
void deactivate () override
 
- Public Slots inherited from KisTool
void activate (const QSet< KoShape * > &shapes) override
 
void canvasResourceChanged (int key, const QVariant &res) override
 
void deactivate () override
 
virtual void updateSettingsViews ()
 
- Public Slots inherited from KoToolBase
virtual void activate (const QSet< KoShape * > &shapes)
 
virtual void deactivate ()
 
virtual void documentResourceChanged (int key, const QVariant &res)
 
virtual void repaintDecorations ()
 
virtual void requestRedoDuringStroke ()
 
virtual void requestStrokeCancellation ()
 
virtual void requestStrokeEnd ()
 
virtual void requestUndoDuringStroke ()
 
void setStatusText (const QString &statusText)
 
void updateOptionsWidgetIcons ()
 

Public Member Functions

void activateAlternateAction (AlternateAction action) override
 
void beginAlternateAction (KoPointerEvent *event, AlternateAction action) override
 
void beginAlternateDoubleClickAction (KoPointerEvent *event, AlternateAction action) override
 
void beginPrimaryAction (KoPointerEvent *event) override
 
void continueAlternateAction (KoPointerEvent *event, AlternateAction action) override
 
QWidget * createOptionWidget () override
 
void deactivateAlternateAction (AlternateAction action) override
 
void endAlternateAction (KoPointerEvent *event, AlternateAction action) override
 
int flags () const override
 
 KisToolEncloseAndFill (KoCanvasBase *canvas)
 
 ~KisToolEncloseAndFill () override
 
- Public Member Functions inherited from KisDynamicDelegatedTool< KisToolShape >
void activateAlternateAction (typename BaseClass::AlternateAction action) override
 
void activatePrimaryAction () override
 
bool alternateActionSupportsHiResEvents (typename BaseClass::AlternateAction action) const override
 
void beginAlternateAction (KoPointerEvent *event, typename BaseClass::AlternateAction action) override
 
void beginAlternateDoubleClickAction (KoPointerEvent *event, typename BaseClass::AlternateAction action) override
 
void beginPrimaryDoubleClickAction (KoPointerEvent *event) override
 
void continueAlternateAction (KoPointerEvent *event, typename BaseClass::AlternateAction action) override
 
void continuePrimaryAction (KoPointerEvent *event) override
 
void deactivateAlternateAction (typename BaseClass::AlternateAction action) override
 
void deactivatePrimaryAction () override
 
QRectF decorationsRect () const override
 
DelegateTypedelegateTool () const
 
void endAlternateAction (KoPointerEvent *event, typename BaseClass::AlternateAction action) override
 
void endPrimaryAction (KoPointerEvent *event) override
 
void explicitUserStrokeEndRequest () override
 
void keyPressEvent (QKeyEvent *event) override
 
void keyReleaseEvent (QKeyEvent *event) override
 
 KisDynamicDelegatedTool ()=delete
 
 KisDynamicDelegatedTool (const KisDynamicDelegatedTool &)=delete
 
 KisDynamicDelegatedTool (KoCanvasBase *canvas, const QCursor &cursor)
 
void mouseDoubleClickEvent (KoPointerEvent *event) override
 
void mouseMoveEvent (KoPointerEvent *event) override
 
void mousePressEvent (KoPointerEvent *event) override
 
void mouseReleaseEvent (KoPointerEvent *event) override
 
void mouseTripleClickEvent (KoPointerEvent *event) override
 
void newActivationWithExternalSource (KisPaintDeviceSP externalSource) override
 
KisDynamicDelegatedTooloperator= (const KisDynamicDelegatedTool &)=delete
 
void paint (QPainter &painter, const KoViewConverter &converter) override
 
QMenu * popupActionsMenu () override
 
KisPopupWidgetInterfacepopupWidget () override
 
bool primaryActionSupportsHiResEvents () const override
 
void requestUpdateOutline (const QPointF &outlineDocPoint, const KoPointerEvent *event) override
 
void setDelegateTool (DelegateType *newDelegateTool)
 
 ~KisDynamicDelegatedTool () override
 
- Public Member Functions inherited from KisToolShape
int flags () const override
 
 KisToolShape (KoCanvasBase *canvas, const QCursor &cursor)
 
 ~KisToolShape () override
 
- Public Member Functions inherited from KisToolPaint
 KisToolPaint (KoCanvasBase *canvas, const QCursor &cursor)
 
void mouseMoveEvent (KoPointerEvent *event) override
 
void mousePressEvent (KoPointerEvent *event) override
 
void mouseReleaseEvent (KoPointerEvent *event) override
 
KisPopupWidgetInterfacepopupWidget () override
 
 ~KisToolPaint () override
 
- Public Member Functions inherited from KisTool
virtual bool alternateActionSupportsHiResEvents (AlternateAction action) const
 
void deleteSelection () override
 
bool isActive () const
 
 KisTool (KoCanvasBase *canvas, const QCursor &cursor)
 
void mouseDoubleClickEvent (KoPointerEvent *event) override
 
void mouseTripleClickEvent (KoPointerEvent *event) override
 
KisTool::NodePaintAbility nodePaintAbility ()
 
virtual bool supportsPaintingAssistants () const
 
 ~KisTool () override
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Public Member Functions inherited from KoToolBase
QAction * action (const QString &name) const
 
KoCanvasBasecanvas () const
 Returns the canvas the tool is working on.
 
virtual void copy () const
 
QCursor cursor () const
 return the last emitted cursor
 
virtual void customMoveEvent (KoPointerEvent *event)
 
virtual void customPressEvent (KoPointerEvent *event)
 
virtual void customReleaseEvent (KoPointerEvent *event)
 
virtual void cut ()
 
int decorationThickness () const
 decorationThickness The minimum thickness for tool decoration lines, this is derived from the screen magnification, thus the HiDPI settings. Note: to use this effectively, also set the pen to isCosmetic(true);
 
virtual void deselect ()
 deselect the tool should clear the selection if it has one.
 
virtual void dragLeaveEvent (QDragLeaveEvent *event)
 
virtual void dragMoveEvent (QDragMoveEvent *event, const QPointF &point)
 
virtual void dropEvent (QDropEvent *event, const QPointF &point)
 
KoToolFactoryBasefactory () const
 
virtual void focusInEvent (QFocusEvent *event)
 
virtual void focusOutEvent (QFocusEvent *event)
 
virtual bool hasSelection ()
 
virtual void inputMethodEvent (QInputMethodEvent *event)
 
virtual QVariant inputMethodQuery (Qt::InputMethodQuery query) const
 
bool isInTextMode () const
 
bool isOpacityPresetMode () const
 
 KoToolBase (KoCanvasBase *canvas)
 
bool maskSyntheticEvents () const
 
QList< QPointer< QWidget > > optionWidgets ()
 
virtual bool paste ()
 
virtual bool selectAll ()
 selectAll select all data the tool can select.
 
virtual KoToolSelectionselection ()
 
Q_INVOKABLE QString toolId () const
 
 ~KoToolBase () override
 

Private Slots

void resetCursorStyle () override
 
void slot_angleSelectorPatternRotation_angleChanged (double value)
 
void slot_buttonRegionSelectionColor_changed (const KoColor &color)
 
void slot_buttonReset_clicked ()
 
void slot_buttonStopGrowingAtDarkestPixel_toggled (bool enabled)
 
void slot_checkBoxAntiAlias_toggled (bool checked)
 
void slot_checkBoxRegionSelectionIncludeContourRegions_toggled (bool checked)
 
void slot_checkBoxRegionSelectionInvert_toggled (bool checked)
 
void slot_checkBoxSelectionAsBoundary_toggled (bool checked)
 
void slot_checkBoxUseActiveLayer_toggled (bool checked)
 
void slot_checkBoxUseCustomBlendingOptions_toggled (bool checked)
 
void slot_colorSpaceChanged (const KoColorSpace *colorSpace)
 
void slot_comboBoxCustomCompositeOp_currentIndexChanged (int index)
 
void slot_comboBoxRegionSelectionMethod_currentIndexChanged (int)
 
void slot_currentNodeChanged (const KisNodeSP node)
 
void slot_delegateTool_enclosingMaskProduced (KisPixelSelectionSP enclosingMask)
 
void slot_optionButtonStripEnclosingMethod_buttonToggled (KoGroupButton *button, bool checked)
 
void slot_optionButtonStripFillWith_buttonToggled (KoGroupButton *button, bool checked)
 
void slot_optionButtonStripReference_buttonToggled (KoGroupButton *button, bool checked)
 
void slot_sliderCloseGap_valueChanged (int value)
 
void slot_sliderCustomOpacity_valueChanged (int value)
 
void slot_sliderExpand_valueChanged (int value)
 
void slot_sliderFeather_valueChanged (int value)
 
void slot_sliderFillOpacitySpread_valueChanged (int value)
 
void slot_sliderFillThreshold_valueChanged (int value)
 
void slot_sliderPatternScale_valueChanged (double value)
 
void slot_widgetLabels_selectionChanged ()
 

Private Member Functions

EnclosingMethod configStringToEnclosingMethod (const QString &configString) const
 
Reference configStringToReference (const QString &configString) const
 
RegionSelectionMethod configStringToRegionSelectionMethod (const QString &configString) const
 
QString enclosingMethodToConfigString (EnclosingMethod enclosingMethod) const
 
void loadConfiguration ()
 
EnclosingMethod loadEnclosingMethodFromConfig () const
 
Reference loadReferenceFromConfig () const
 
KoColor loadRegionSelectionColorFromConfig ()
 
RegionSelectionMethod loadRegionSelectionMethodFromConfig () const
 
QString referenceToConfigString (Reference reference) const
 
QString referenceToUserString (Reference reference) const
 
QString regionSelectionMethodToConfigString (RegionSelectionMethod regionSelectionMethod) const
 
QString regionSelectionMethodToUserString (RegionSelectionMethod regionSelectionMethod) const
 
void saveEnclosingMethodToConfig (EnclosingMethod enclosingMethod)
 
void saveReferenceToConfig (Reference reference)
 
void saveRegionSelectionMethodToConfig (RegionSelectionMethod regionSelectionMethod)
 
void setupEnclosingSubtool ()
 
bool subtoolHasUserInteractionRunning () const
 
bool wantsAutoScroll () const override
 

Static Private Member Functions

static constexpr EnclosingMethod defaultEnclosingMethod ()
 
static constexpr Reference defaultReference ()
 
static constexpr RegionSelectionMethod defaultRegionSelectionMethod ()
 

Private Attributes

bool m_alternateActionStarted {false}
 
KisAngleSelectorm_angleSelectorPatternRotation {nullptr}
 
bool m_antiAlias {false}
 
KoGroupButtonm_buttonEnclosingMethodBrush {nullptr}
 
KoGroupButtonm_buttonEnclosingMethodEllipse {nullptr}
 
KoGroupButtonm_buttonEnclosingMethodLasso {nullptr}
 
KoGroupButtonm_buttonEnclosingMethodPath {nullptr}
 
KoGroupButtonm_buttonEnclosingMethodRectangle {nullptr}
 
KoGroupButtonm_buttonFillWithBG {nullptr}
 
KoGroupButtonm_buttonFillWithFG {nullptr}
 
KoGroupButtonm_buttonFillWithPattern {nullptr}
 
KoGroupButtonm_buttonReferenceAll {nullptr}
 
KoGroupButtonm_buttonReferenceCurrent {nullptr}
 
KoGroupButtonm_buttonReferenceLabeled {nullptr}
 
KisColorButtonm_buttonRegionSelectionColor {nullptr}
 
QToolButton * m_buttonStopGrowingAtDarkestPixel {nullptr}
 
QCheckBox * m_checkBoxAntiAlias {nullptr}
 
QCheckBox * m_checkBoxCustomBlendingOptions {nullptr}
 
QCheckBox * m_checkBoxRegionSelectionIncludeContourRegions {nullptr}
 
QCheckBox * m_checkBoxRegionSelectionInvert {nullptr}
 
QCheckBox * m_checkBoxSelectionAsBoundary {nullptr}
 
QCheckBox * m_checkBoxUseActiveLayer {nullptr}
 
int m_closeGap {0}
 
KisCompositeOpComboBoxm_comboBoxCustomCompositeOp {nullptr}
 
QComboBox * m_comboBoxRegionSelectionMethod {nullptr}
 
KConfigGroup m_configGroup
 
QString m_customCompositeOp {COMPOSITE_OVER}
 
int m_customOpacity {100}
 
QSharedPointer< QRect > m_dirtyRect {nullptr}
 
EnclosingMethod m_enclosingMethod {Lasso}
 
int m_expand {0}
 
int m_feather {0}
 
int m_fillOpacitySpread {100}
 
KisStrokeId m_fillStrokeId {nullptr}
 
int m_fillThreshold {8}
 
FillType m_fillType {FillWithForegroundColor}
 
KisOptionCollectionWidgetm_optionWidget {nullptr}
 
qreal m_patternRotation {0.0}
 
qreal m_patternScale {100.0}
 
KisNodeSP m_previousNode {nullptr}
 
int m_previousTime {0}
 
Reference m_reference {CurrentLayer}
 
KisMergeLabeledLayersCommand::ReferenceNodeInfoListSP m_referenceNodeList {nullptr}
 
KisPaintDeviceSP m_referencePaintDevice {nullptr}
 
KoColor m_regionSelectionColor
 
bool m_regionSelectionIncludeContourRegions {false}
 
bool m_regionSelectionInvert {false}
 
RegionSelectionMethod m_regionSelectionMethod {defaultRegionSelectionMethod()}
 
QList< int > m_selectedColorLabels
 
KisSliderSpinBoxm_sliderCloseGap {nullptr}
 
KisSliderSpinBoxm_sliderCustomOpacity {nullptr}
 
KisSliderSpinBoxm_sliderExpand {nullptr}
 
KisSliderSpinBoxm_sliderFeather {nullptr}
 
KisSliderSpinBoxm_sliderFillOpacitySpread {nullptr}
 
KisSliderSpinBoxm_sliderFillThreshold {nullptr}
 
KisDoubleSliderSpinBoxm_sliderPatternScale {nullptr}
 
int m_stopGrowingAtDarkestPixel {false}
 
bool m_useActiveLayer {false}
 
bool m_useCustomBlendingOptions {false}
 
bool m_useSelectionAsBoundary {true}
 
KisColorLabelSelectorWidgetm_widgetLabels {nullptr}
 

Additional Inherited Members

- Signals inherited from KisToolPaint
void sigPaintingFinished ()
 
- Signals inherited from KisTool
void isActiveChanged (bool isActivated)
 
- Signals inherited from KoToolBase
void activateTool (const QString &id)
 
void cursorChanged (const QCursor &cursor)
 
void selectionChanged (bool hasSelection)
 
void statusTextChanged (const QString &statusText)
 
void textModeChanged (bool inTextMode)
 
- Static Public Member Functions inherited from KisTool
static AlternateAction actionToAlternateAction (ToolAction action)
 
- Public Attributes inherited from KisToolShape
WdgGeometryOptionsm_shapeOptionsWidget
 
- Public Attributes inherited from KisTool
KoColor currentBgColor
 
float currentExposure {1.0}
 
KoColor currentFgColor
 
KisFilterConfigurationSP currentGenerator
 
KoAbstractGradientSP currentGradient
 
KoPatternSP currentPattern
 
QCursor cursor
 
bool m_isActive {false}
 
ToolMode m_mode {HOVER_MODE}
 
QWidget * optionWidget {0}
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 
- Protected Types inherited from KisTool
enum  ToolMode : int {
  HOVER_MODE , PAINT_MODE , SECONDARY_PAINT_MODE , MIRROR_AXIS_SETUP_MODE ,
  GESTURE_MODE , PAN_MODE , OTHER , OTHER_1
}
 
- Protected Slots inherited from KisDynamicDelegatedTool< KisToolShape >
void resetCursorStyle () override
 
- Protected Slots inherited from KisTool
virtual void resetCursorStyle ()
 
- Protected Member Functions inherited from KisDynamicDelegatedTool< KisToolShape >
QCursor cursor () const
 
bool listeningToModifiers () override
 
void listenToModifiers (bool listen) override
 
BaseClass::ToolMode mode () const override
 
void setCursor (const QCursor &cursor)
 
void setMode (typename BaseClass::ToolMode mode) override
 
- Protected Member Functions inherited from KisToolShape
void addPathShape (KoPathShape *pathShape, const KUndo2MagicString &name)
 
void addShape (KoShape *shape)
 
virtual void beginShape ()
 
QWidget * createOptionWidget () override
 
qreal currentStrokeWidth () const
 
virtual void endShape ()
 
KisToolShapeUtils::FillStyle fillStyle ()
 
QTransform fillTransform ()
 
ShapeAddInfo shouldAddShape (KisNodeSP currentNode) const
 
KisToolShapeUtils::StrokeStyle strokeStyle ()
 
- Protected Member Functions inherited from KisToolPaint
void activateAlternateAction (AlternateAction action) override
 
void activatePrimaryAction () override
 
void addOptionWidgetLayout (QLayout *layout)
 Add the tool-specific layout to the default option widget layout.
 
virtual void addOptionWidgetOption (QWidget *control, QWidget *label=nullptr)
 Add a widget and a label to the current option widget layout.
 
void beginAlternateAction (KoPointerEvent *event, AlternateAction action) override
 
void canvasResourceChanged (int key, const QVariant &v) override
 
void continueAlternateAction (KoPointerEvent *event, AlternateAction action) override
 
void deactivateAlternateAction (AlternateAction action) override
 
void deactivatePrimaryAction () override
 
void enableControl (QWidget *control, bool value)
 
void endAlternateAction (KoPointerEvent *event, AlternateAction action) override
 
virtual KisOptimizedBrushOutline getOutlinePath (const QPointF &documentPos, const KoPointerEvent *event, KisPaintOpSettings::OutlineMode outlineMode)
 
bool isEraser () const
 
bool isOutlineEnabled () const
 
bool isOutlineVisible () const
 
void paint (QPainter &gc, const KoViewConverter &converter) override
 
virtual QString quickHelp () const
 
void setMode (ToolMode mode) override
 
void setOutlineEnabled (bool enabled)
 
void setOutlineVisible (bool visible)
 
void setSupportOutline (bool supportOutline)
 
void showControl (QWidget *control, bool value)
 
- Protected Member Functions inherited from KisTool
bool blockUntilOperationsFinished ()
 
void blockUntilOperationsFinishedForced ()
 
QPointF convertDocumentToWidget (const QPointF &pt)
 
QPoint convertToImagePixelCoordFloored (KoPointerEvent *e)
 
QPointF convertToPixelCoord (const QPointF &pt)
 
QPointF convertToPixelCoord (KoPointerEvent *e)
 
QPointF convertToPixelCoordAndAlignOnWidget (const QPointF &pt)
 
QPointF convertToPixelCoordAndSnap (const QPointF &pt, const QPointF &offset=QPointF())
 
QPointF convertToPixelCoordAndSnap (KoPointerEvent *e, const QPointF &offset=QPointF(), bool useModifiers=true)
 
QRectF convertToPt (const QRectF &rect)
 
qreal convertToPt (qreal value)
 
KoColor currentBgColor ()
 
KoColor currentFgColor ()
 
KisFilterConfigurationSP currentGenerator ()
 
KoAbstractGradientSP currentGradient ()
 
KisImageWSP currentImage ()
 
KisNodeSP currentNode () const
 
KisPaintOpPresetSP currentPaintOpPreset ()
 
KoPatternSP currentPattern ()
 
QCursor cursor () const
 
KisImageWSP image () const
 
bool nodeEditable ()
 Checks checks if the current node is editable.
 
bool overrideCursorIfNotEditable ()
 Override the cursor appropriately if current node is not editable.
 
void paintToolOutline (QPainter *painter, const KisOptimizedBrushOutline &path)
 
KisOptimizedBrushOutline pixelToView (const KisOptimizedBrushOutline &path) const
 
QPainterPath pixelToView (const QPainterPath &pixelPath) const
 Convert a pixel path into a view path.
 
QPointF pixelToView (const QPoint &pixelCoord) const
 
QPointF pixelToView (const QPointF &pixelCoord) const
 Convert a floating point pixel coordinate into a view coordinate.
 
QPolygonF pixelToView (const QPolygonF &pixelPolygon) const
 Convert a pixel polygon into a view path.
 
QRectF pixelToView (const QRectF &pixelRect) const
 Convert a pixel rectangle into a view rectangle.
 
KisNodeList selectedNodes () const
 
bool selectionEditable ()
 Checks checks if the selection is editable, only applies to local selection as global selection is always editable.
 
void setCursor (const QCursor &cursor)
 
void updateCanvasPixelRect (const QRectF &pixelRect)
 Update the canvas for the given rectangle in image pixel coordinates.
 
void updateCanvasViewRect (const QRectF &viewRect)
 Update the canvas for the given rectangle in view coordinates.
 
QPointF viewToPixel (const QPointF &viewCoord) const
 
QPointF widgetCenterInWidgetPixels ()
 
- Protected Member Functions inherited from KoToolBase
virtual QList< QPointer< QWidget > > createOptionWidgets ()
 
int grabSensitivity () const
 Convenience function to get the current grab sensitivity.
 
qreal handleDocRadius () const
 
QRectF handleGrabRect (const QPointF &position) const
 
QRectF handlePaintRect (const QPointF &position) const
 
int handleRadius () const
 Convenience function to get the current handle radius.
 
bool isActivated () const
 
 KoToolBase (KoToolBasePrivate &dd)
 
KoPointerEventlastDeliveredPointerEvent () const
 
void setAbstractResource (KoAbstractCanvasResourceInterfaceSP abstractResource)
 
void setConverter (KoDerivedResourceConverterSP converter)
 
void setIsOpacityPresetMode (bool value)
 
void setMaskSyntheticEvents (bool value)
 
void setTextMode (bool value)
 
QHash< int, KoAbstractCanvasResourceInterfaceSPtoolAbstractResources ()
 
QHash< int, KoDerivedResourceConverterSPtoolConverters ()
 
void useCursor (const QCursor &cursor)
 
- Protected Attributes inherited from KisToolShape
KConfigGroup m_configGroup
 
- Protected Attributes inherited from KisToolPaint
KisOptimizedBrushOutline m_currentOutline
 
QRectF m_oldColorPreviewUpdateRect
 
QRectF m_oldOutlineRect
 
QPointF m_outlineDocPoint
 
bool m_paintOutline {false}
 
- Protected Attributes inherited from KoToolBase
KoToolBasePrivated_ptr
 
- Properties inherited from KisTool
bool isActive
 

Detailed Description

Definition at line 40 of file KisToolEncloseAndFill.h.

Member Typedef Documentation

◆ RegionSelectionMethod

Member Enumeration Documentation

◆ EnclosingMethod

◆ FillType

Enumerator
FillWithForegroundColor 
FillWithBackgroundColor 
FillWithPattern 

Definition at line 54 of file KisToolEncloseAndFill.h.

◆ Reference

Enumerator
CurrentLayer 
AllLayers 
ColorLabeledLayers 

Definition at line 61 of file KisToolEncloseAndFill.h.

Constructor & Destructor Documentation

◆ KisToolEncloseAndFill()

KisToolEncloseAndFill::KisToolEncloseAndFill ( KoCanvasBase * canvas)

Definition at line 70 of file KisToolEncloseAndFill.cpp.

72{
73 setObjectName("tool_enclose_and_fill");
74}
KisCanvas2 * canvas

◆ ~KisToolEncloseAndFill()

KisToolEncloseAndFill::~KisToolEncloseAndFill ( )
override

Definition at line 76 of file KisToolEncloseAndFill.cpp.

77{}

Member Function Documentation

◆ activate

void KisToolEncloseAndFill::activate ( const QSet< KoShape * > & shapes)
overrideslot

Definition at line 85 of file KisToolEncloseAndFill.cpp.

86{
88 m_configGroup = KSharedConfig::openConfig()->group(toolId());
89 KisCanvas2 *kisCanvas = static_cast<KisCanvas2*>(canvas());
90 KisCanvasResourceProvider *resourceProvider = kisCanvas->viewManager()->canvasResourceProvider();
91 if (resourceProvider) {
92 connect(resourceProvider,
93 SIGNAL(sigNodeChanged(const KisNodeSP)),
94 this,
97 }
98}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisViewManager * viewManager() const
void activate(const QSet< KoShape * > &shapes) override
void slot_currentNodeChanged(const KisNodeSP node)
KisCanvasResourceProvider * canvasResourceProvider()
Q_INVOKABLE QString toolId() const
KisNodeSP currentNode() const
Definition kis_tool.cc:370

References KisDynamicDelegatedTool< BaseClass >::activate(), Private::canvas, KisViewManager::canvasResourceProvider(), connect(), KisTool::currentNode(), m_configGroup, slot_currentNodeChanged(), KoToolBase::toolId(), and KisCanvas2::viewManager().

◆ activateAlternateAction()

void KisToolEncloseAndFill::activateAlternateAction ( AlternateAction action)
overridevirtual

Reimplemented from KisTool.

Definition at line 193 of file KisToolEncloseAndFill.cpp.

194{
196 if (delegateTool()) {
197 delegateTool()->activatePrimaryAction();
198 }
199 return;
200 }
202}
void activateAlternateAction(typename BaseClass::AlternateAction action) override
bool subtoolHasUserInteractionRunning() const
QAction * action(const QString &name) const

References KoToolBase::action(), KisDynamicDelegatedTool< BaseClass >::activateAlternateAction(), KisDynamicDelegatedTool< KisToolShape >::delegateTool(), and subtoolHasUserInteractionRunning().

◆ beginAlternateAction()

void KisToolEncloseAndFill::beginAlternateAction ( KoPointerEvent * event,
AlternateAction action )
overridevirtual

Reimplemented from KisTool.

Definition at line 212 of file KisToolEncloseAndFill.cpp.

213{
215 if (delegateTool()) {
216 delegateTool()->beginPrimaryAction(event);
217 }
218 return;
219 }
222}
void beginAlternateAction(KoPointerEvent *event, typename BaseClass::AlternateAction action) override

References KoToolBase::action(), KisDynamicDelegatedTool< BaseClass >::beginAlternateAction(), KisDynamicDelegatedTool< KisToolShape >::delegateTool(), m_alternateActionStarted, and subtoolHasUserInteractionRunning().

◆ beginAlternateDoubleClickAction()

void KisToolEncloseAndFill::beginAlternateDoubleClickAction ( KoPointerEvent * event,
AlternateAction action )
overridevirtual

Reimplemented from KisTool.

Definition at line 253 of file KisToolEncloseAndFill.cpp.

254{
256 if (delegateTool()) {
257 delegateTool()->beginPrimaryDoubleClickAction(event);
258 }
259 return;
260 }
262}
void beginAlternateDoubleClickAction(KoPointerEvent *event, typename BaseClass::AlternateAction action) override

References KoToolBase::action(), KisDynamicDelegatedTool< BaseClass >::beginAlternateDoubleClickAction(), KisDynamicDelegatedTool< KisToolShape >::delegateTool(), and subtoolHasUserInteractionRunning().

◆ beginPrimaryAction()

void KisToolEncloseAndFill::beginPrimaryAction ( KoPointerEvent * event)
overridevirtual

Called by KisToolProxy when a primary action for the tool is started. The event stores the original event that started the stroke. The event is accepted by default. If the tool decides to ignore this particular action (e.g. when the node is not editable), it should call event->ignore(). Then no further continuePrimaryAction() or endPrimaryAction() will be called until the next user action.

Reimplemented from KisDynamicDelegatedTool< KisToolShape >.

Definition at line 171 of file KisToolEncloseAndFill.cpp.

172{
173 // cannot use enclose and fill tool on non-painting layers.
174 // this logic triggers with multiple layer types like vector layer, clone layer, file layer, group layer
175 if (currentNode().isNull() || currentNode()->inherits("KisShapeLayer") || nodePaintAbility() != NodePaintAbility::PAINT) {
176 KisCanvas2 * kiscanvas = static_cast<KisCanvas2*>(canvas());
177 kiscanvas->viewManager()->
178 showFloatingMessage(
179 i18n("You cannot use this tool with the selected layer type"),
180 QIcon(), 2000, KisFloatingMessage::Medium, Qt::AlignCenter);
181 event->ignore();
182 return;
183 }
184
185 if (!nodeEditable()) {
186 event->ignore();
187 return;
188 }
189
191}
void beginPrimaryAction(KoPointerEvent *event) override
KisTool::NodePaintAbility nodePaintAbility()
Definition kis_tool.cc:539
bool nodeEditable()
Checks checks if the current node is editable.
Definition kis_tool.cc:651

References KisDynamicDelegatedTool< BaseClass >::beginPrimaryAction(), Private::canvas, KisTool::currentNode(), KisFloatingMessage::Medium, KisTool::nodeEditable(), KisTool::nodePaintAbility(), KisTool::PAINT, and KisCanvas2::viewManager().

◆ configStringToEnclosingMethod()

KisToolEncloseAndFill::EnclosingMethod KisToolEncloseAndFill::configStringToEnclosingMethod ( const QString & configString) const
private

Definition at line 888 of file KisToolEncloseAndFill.cpp.

889{
890 if (configString == "rectangle") {
891 return Rectangle;
892 } else if (configString == "ellipse") {
893 return Ellipse;
894 } else if (configString == "path") {
895 return Path;
896 } else if (configString == "brush") {
897 return Brush;
898 }
899 return Lasso;
900}

References Brush, Ellipse, Lasso, Path, and Rectangle.

◆ configStringToReference()

KisToolEncloseAndFill::Reference KisToolEncloseAndFill::configStringToReference ( const QString & configString) const
private

Definition at line 1041 of file KisToolEncloseAndFill.cpp.

1042{
1043 if (configString == "allLayers") {
1044 return AllLayers;
1045 } else if (configString == "colorLabeledLayers") {
1046 return ColorLabeledLayers;
1047 }
1048 return CurrentLayer;
1049}

References AllLayers, ColorLabeledLayers, and CurrentLayer.

◆ configStringToRegionSelectionMethod()

KisToolEncloseAndFill::RegionSelectionMethod KisToolEncloseAndFill::configStringToRegionSelectionMethod ( const QString & configString) const
private

Definition at line 974 of file KisToolEncloseAndFill.cpp.

975{
976 if (configString == "regionsFilledWithSpecificColor") {
977 return RegionSelectionMethod::SelectRegionsFilledWithSpecificColor;
978 } else if (configString == "regionsFilledWithTransparent") {
979 return RegionSelectionMethod::SelectRegionsFilledWithTransparent;
980 } else if (configString == "regionsFilledWithSpecificColorOrTransparent") {
981 return RegionSelectionMethod::SelectRegionsFilledWithSpecificColorOrTransparent;
982 } else if (configString == "allRegionsExceptFilledWithSpecificColor") {
983 return RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColor;
984 } else if (configString == "allRegionsExceptFilledWithTransparent") {
985 return RegionSelectionMethod::SelectAllRegionsExceptFilledWithTransparent;
986 } else if (configString == "allRegionsExceptFilledWithSpecificColorOrTransparent") {
987 return RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColorOrTransparent;
988 } else if (configString == "regionsSurroundedBySpecificColor") {
989 return RegionSelectionMethod::SelectRegionsSurroundedBySpecificColor;
990 } else if (configString == "regionsSurroundedByTransparent") {
991 return RegionSelectionMethod::SelectRegionsSurroundedByTransparent;
992 } else if (configString == "regionsSurroundedBySpecificColorOrTransparent") {
993 return RegionSelectionMethod::SelectRegionsSurroundedBySpecificColorOrTransparent;
994 }
995 return RegionSelectionMethod::SelectAllRegions;
996}

◆ continueAlternateAction()

void KisToolEncloseAndFill::continueAlternateAction ( KoPointerEvent * event,
AlternateAction action )
overridevirtual

Reimplemented from KisTool.

Definition at line 224 of file KisToolEncloseAndFill.cpp.

225{
227 if (delegateTool()) {
228 delegateTool()->continuePrimaryAction(event);
229 }
230 return;
231 }
233 return;
234 }
236}
void continueAlternateAction(KoPointerEvent *event, typename BaseClass::AlternateAction action) override

References KoToolBase::action(), KisDynamicDelegatedTool< BaseClass >::continueAlternateAction(), KisDynamicDelegatedTool< KisToolShape >::delegateTool(), m_alternateActionStarted, and subtoolHasUserInteractionRunning().

◆ createOptionWidget()

QWidget * KisToolEncloseAndFill::createOptionWidget ( )
overridevirtual

Reimplement this if your tool actually has an option widget. Sets the option widget to 0 by default.

Reimplemented from KisDynamicDelegatedTool< KisToolShape >.

Definition at line 382 of file KisToolEncloseAndFill.cpp.

383{
385
386 // Create widgets
387 KisOptionButtonStrip *optionButtonStripEnclosingMethod =
390 optionButtonStripEnclosingMethod->addButton(
391 KisIconUtils::loadIcon("tool_rect_selection"));
393 optionButtonStripEnclosingMethod->addButton(
394 KisIconUtils::loadIcon("tool_elliptical_selection"));
395 m_buttonEnclosingMethodPath = optionButtonStripEnclosingMethod->addButton(
396 KisIconUtils::loadIcon("tool_path_selection"));
397 m_buttonEnclosingMethodLasso = optionButtonStripEnclosingMethod->addButton(
398 KisIconUtils::loadIcon("tool_outline_selection"));
399 m_buttonEnclosingMethodBrush = optionButtonStripEnclosingMethod->addButton(
400 KisIconUtils::loadIcon("krita_tool_freehand"));
401 m_buttonEnclosingMethodLasso->setChecked(true);
402
403 m_comboBoxRegionSelectionMethod = new QComboBox;
405 regionSelectionMethodToUserString(RegionSelectionMethod::SelectAllRegions),
406 static_cast<int>(RegionSelectionMethod::SelectAllRegions)
407 );
409 regionSelectionMethodToUserString(RegionSelectionMethod::SelectRegionsFilledWithSpecificColor),
410 static_cast<int>(RegionSelectionMethod::SelectRegionsFilledWithSpecificColor)
411 );
413 regionSelectionMethodToUserString(RegionSelectionMethod::SelectRegionsFilledWithTransparent),
414 static_cast<int>(RegionSelectionMethod::SelectRegionsFilledWithTransparent)
415 );
417 regionSelectionMethodToUserString(RegionSelectionMethod::SelectRegionsFilledWithSpecificColorOrTransparent),
418 static_cast<int>(RegionSelectionMethod::SelectRegionsFilledWithSpecificColorOrTransparent)
419 );
421 regionSelectionMethodToUserString(RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColor),
422 static_cast<int>(RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColor)
423 );
425 regionSelectionMethodToUserString(RegionSelectionMethod::SelectAllRegionsExceptFilledWithTransparent),
426 static_cast<int>(RegionSelectionMethod::SelectAllRegionsExceptFilledWithTransparent)
427 );
430 RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColorOrTransparent
431 ),
432 static_cast<int>(RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColorOrTransparent)
433 );
435 regionSelectionMethodToUserString(RegionSelectionMethod::SelectRegionsSurroundedBySpecificColor),
436 static_cast<int>(RegionSelectionMethod::SelectRegionsSurroundedBySpecificColor)
437 );
439 regionSelectionMethodToUserString(RegionSelectionMethod::SelectRegionsSurroundedByTransparent),
440 static_cast<int>(RegionSelectionMethod::SelectRegionsSurroundedByTransparent)
441 );
443 regionSelectionMethodToUserString(RegionSelectionMethod::SelectRegionsSurroundedBySpecificColorOrTransparent),
444 static_cast<int>(RegionSelectionMethod::SelectRegionsSurroundedBySpecificColorOrTransparent)
445 );
446 m_comboBoxRegionSelectionMethod->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLengthWithIcon);
447 m_comboBoxRegionSelectionMethod->setMinimumContentsLength(15);
448 m_comboBoxRegionSelectionMethod->view()->setMinimumWidth(
449 m_comboBoxRegionSelectionMethod->view()->sizeHintForColumn(0)
450 );
453 new QCheckBox(
454 i18nc("The 'invert' checkbox in enclose and fill tool",
455 "Invert")
456 );
458 new QCheckBox(
459 i18nc("The 'include contour regions' checkbox in enclose and fill tool",
460 "Include contour regions")
461 );
462 m_checkBoxRegionSelectionIncludeContourRegions->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred);
463
464 KisOptionButtonStrip *optionButtonStripFillWith = new KisOptionButtonStrip;
465 m_buttonFillWithFG = optionButtonStripFillWith->addButton(
466 KisIconUtils::loadIcon("object-order-lower-calligra"));
467 m_buttonFillWithBG = optionButtonStripFillWith->addButton(
468 KisIconUtils::loadIcon("object-order-raise-calligra"));
470 optionButtonStripFillWith->addButton(KisIconUtils::loadIcon("pattern"));
471 m_buttonFillWithFG->setChecked(true);
473 m_sliderPatternScale->setRange(0, 10000, 2);
476 i18nc("The pattern 'scale' spinbox in enclose and fill tool options; {n} is the "
477 "number value, % is the percent sign",
478 "Scale: {n}%"));
482 m_checkBoxCustomBlendingOptions = new QCheckBox(i18n("Use custom blending options"));
483 m_checkBoxCustomBlendingOptions->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred);
487 i18nc("{n} is the number value, % is the percent sign", "Opacity: {n}%"));
489
491 m_sliderFillThreshold->setPrefix(i18nc("The 'threshold' spinbox prefix in enclose and fill tool options", "Threshold: "));
496 i18nc("The 'spread' spinbox in enclose and fill tool options; {n} is the number value, % is the percent sign",
497 "Spread: {n}%"));
500 m_sliderCloseGap->setPrefix(i18nc("The 'close gap' spinbox prefix in enclose and fill tool options", "Close Gap: "));
502 m_sliderCloseGap->setSuffix(i18n(" px"));
504 new QCheckBox(
505 i18nc("The 'use selection as boundary' checkbox in enclose and fill tool to use selection borders as boundary when filling",
506 "Use selection as boundary")
507 );
508 m_checkBoxSelectionAsBoundary->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred);
509
510 m_checkBoxAntiAlias = new QCheckBox(i18nc("The anti-alias checkbox in enclose and fill tool options", "Anti-aliasing"));
513 m_sliderExpand->setPrefix(i18nc("The 'grow/shrink' spinbox prefix in enclose and fill tool options", "Grow: "));
514 m_sliderExpand->setRange(-400, 400);
516 m_sliderExpand->setSuffix(i18n(" px"));
517 m_buttonStopGrowingAtDarkestPixel = new QToolButton;
518 m_buttonStopGrowingAtDarkestPixel->setAutoRaise(true);
519 m_buttonStopGrowingAtDarkestPixel->setCheckable(true);
520 m_buttonStopGrowingAtDarkestPixel->setIcon(KisIconUtils::loadIcon("stop-at-boundary"));
521 containerGrow->appendWidget("sliderExpand", m_sliderExpand);
522 containerGrow->appendWidget("buttonStopGrowingAtDarkestPixel", m_buttonStopGrowingAtDarkestPixel);
523 containerGrow->setOrientation(Qt::Horizontal);
525 m_sliderFeather->setPrefix(i18nc("The 'feather' spinbox prefix in enclose and fill tool options", "Feather: "));
526 m_sliderFeather->setRange(0, 400);
528 m_sliderFeather->setSuffix(i18n(" px"));
529
530 KisOptionButtonStrip *optionButtonStripReference = new KisOptionButtonStrip;
531 m_buttonReferenceCurrent = optionButtonStripReference->addButton(
532 KisIconUtils::loadIcon("current-layer"));
533 m_buttonReferenceAll = optionButtonStripReference->addButton(
534 KisIconUtils::loadIcon("all-layers"));
536 optionButtonStripReference->addButton(KisIconUtils::loadIcon("tag"));
537 m_buttonReferenceCurrent->setChecked(true);
543 m_checkBoxUseActiveLayer = new QCheckBox(i18n("Use active layer"));
544
545 QPushButton *buttonReset = new QPushButton(i18nc("The 'reset' button in enclose and fill tool options", "Reset"));
546
547 // Set the tooltips
548 m_buttonEnclosingMethodRectangle->setToolTip(i18n("Rectangle"));
549 m_buttonEnclosingMethodEllipse->setToolTip(i18n("Ellipse"));
550 m_buttonEnclosingMethodPath->setToolTip(i18n("Bezier Curve"));
551 m_buttonEnclosingMethodLasso->setToolTip(i18n("Lasso"));
552 m_buttonEnclosingMethodBrush->setToolTip(i18n("Brush"));
554 m_checkBoxRegionSelectionInvert->setToolTip(i18n("Enable to fill opposite regions instead"));
555 m_checkBoxRegionSelectionIncludeContourRegions->setToolTip(i18n("Enable to also fill shapes that touch the contour of the enclosing region"));
556 m_buttonFillWithFG->setToolTip(i18n("Foreground color"));
557 m_buttonFillWithBG->setToolTip(i18n("Background color"));
558 m_buttonFillWithPattern->setToolTip(i18n("Pattern"));
559 m_sliderPatternScale->setToolTip(i18n("Set the scale of the pattern"));
560 m_angleSelectorPatternRotation->setToolTip(i18n("Set the rotation of the pattern"));
561 m_checkBoxCustomBlendingOptions->setToolTip(i18n("Set custom blending options instead of using the brush ones"));
562 m_sliderCustomOpacity->setToolTip(i18n("Set a custom opacity for the fill"));
563 m_comboBoxCustomCompositeOp->setToolTip(i18n("Set a custom blend mode for the fill"));
564
565 m_sliderFillThreshold->setToolTip(i18n("Set the color similarity tolerance of the fill. Increasing threshold increases the range of similar colors to be filled."));
566 m_sliderFillOpacitySpread->setToolTip(i18n("Set the extent of the opaque portion of the fill. Decreasing spread decreases opacity of fill areas depending on color similarity."));
567 m_sliderCloseGap->setToolTip(i18n("Close gaps in lines up to the set amount"));
568 m_checkBoxSelectionAsBoundary->setToolTip(i18n("Set if the contour of the active selection should be treated as a boundary when filling the region"));
569
570 m_checkBoxAntiAlias->setToolTip(i18n("Smooths the edges of the fill"));
571 m_sliderExpand->setToolTip(i18n("Grow or shrink the fill by the set amount"));
572 m_buttonStopGrowingAtDarkestPixel->setToolTip(i18n("Stop growing at the darkest and/or most opaque pixels"));
573 m_sliderFeather->setToolTip(i18n("Blur the fill by the set amount"));
574
575 m_buttonReferenceCurrent->setToolTip(i18n("Fill regions found from the active layer"));
576 m_buttonReferenceAll->setToolTip(i18n("Fill regions found from the merging of all layers"));
577 m_buttonReferenceLabeled->setToolTip(i18n("Fill regions found from the merging of layers with specific color labels"));
578 m_checkBoxUseActiveLayer->setToolTip(i18n("Includes the active layer in regions found from merging of layers with specific color labels"));
579
580 buttonReset->setToolTip(i18n("Reset the options to their default values"));
581
582 // Construct the option widget
584 m_optionWidget->setContentsMargins(0, 10, 0, 10);
586
587 KisOptionCollectionWidgetWithHeader *sectionEnclosingMethod =
589 i18nc("The 'enclosing method' section label in enclose and fill tool options", "Enclosing method")
590 );
591 sectionEnclosingMethod->setPrimaryWidget(optionButtonStripEnclosingMethod);
592 m_optionWidget->appendWidget("sectionEnclosingMethod", sectionEnclosingMethod);
593
595 widgetLabelsGroup->appendWidget("labelWidget", m_widgetLabels);
596 widgetLabelsGroup->appendWidget("checkBoxUseActiveLayer", m_checkBoxUseActiveLayer);
597 widgetLabelsGroup->setWidgetsMargin(0);
598
599 KisOptionCollectionWidgetWithHeader *sectionReference =
601 i18nc("The 'reference' section label in enclose and fill tool options", "Reference")
602 );
603 sectionReference->setPrimaryWidget(optionButtonStripReference);
604 sectionReference->appendWidget("widgetLabels", widgetLabelsGroup);
605 sectionReference->setWidgetVisible("widgetLabels", false);
606 m_optionWidget->appendWidget("sectionReference", sectionReference);
607
608
609 KisOptionCollectionWidgetWithHeader *sectionWhatToFill =
611 i18nc("The 'target regions' section label in enclose and fill tool options", "Target regions")
612 );
614 sectionWhatToFill->appendWidget("buttonRegionSelectionColor", m_buttonRegionSelectionColor);
615 sectionWhatToFill->appendWidget("checkBoxRegionSelectionInvert", m_checkBoxRegionSelectionInvert);
616 sectionWhatToFill->appendWidget("checkBoxRegionSelectionIncludeContourRegions", m_checkBoxRegionSelectionIncludeContourRegions);
617 m_optionWidget->appendWidget("sectionWhatToFill", sectionWhatToFill);
618
619 KisOptionCollectionWidgetWithHeader *sectionFillWith =
621 i18nc("The 'fill source' section label in enclose and fill tool options", "Fill source")
622 );
623 sectionFillWith->setPrimaryWidget(optionButtonStripFillWith);
624 sectionFillWith->appendWidget("sliderPatternScale", m_sliderPatternScale);
625 sectionFillWith->appendWidget("angleSelectorPatternRotation", m_angleSelectorPatternRotation);
626 sectionFillWith->appendWidget("checkBoxCustomBlendingOptions", m_checkBoxCustomBlendingOptions);
627 sectionFillWith->appendWidget("sliderCustomOpacity", m_sliderCustomOpacity);
628 sectionFillWith->appendWidget("comboBoxCustomCompositeOp", m_comboBoxCustomCompositeOp);
629 sectionFillWith->setWidgetVisible("sliderPatternScale", false);
630 sectionFillWith->setWidgetVisible("angleSelectorPatternRotation", false);
631 m_optionWidget->appendWidget("sectionFillWith", sectionFillWith);
632
633 KisOptionCollectionWidgetWithHeader *sectionRegionExtent =
635 i18nc("The 'fill extent' section label in enclose and fill tool options", "Fill extent")
636 );
637 sectionRegionExtent->appendWidget("sliderThreshold", m_sliderFillThreshold);
638 sectionRegionExtent->appendWidget("sliderSpread", m_sliderFillOpacitySpread);
639 sectionRegionExtent->appendWidget("sliderCloseGap", m_sliderCloseGap);
640 sectionRegionExtent->appendWidget("checkBoxSelectionAsBoundary", m_checkBoxSelectionAsBoundary);
641 m_optionWidget->appendWidget("sectionRegionExtent", sectionRegionExtent);
642
643 KisOptionCollectionWidgetWithHeader *sectionAdjustments =
645 i18nc("The 'adjustments' section label in enclose and fill tool options", "Adjustments")
646 );
647 sectionAdjustments->appendWidget("checkBoxAntiAlias", m_checkBoxAntiAlias);
648 sectionAdjustments->appendWidget("containerGrow", containerGrow);
649 sectionAdjustments->appendWidget("sliderFeather", m_sliderFeather);
650 m_optionWidget->appendWidget("sectionAdjustments", sectionAdjustments);
651
652 m_optionWidget->appendWidget("buttonReset", buttonReset);
653
654 // Initialize widgets
656 m_buttonEnclosingMethodRectangle->setChecked(true);
657 } else if (m_enclosingMethod == Ellipse) {
658 m_buttonEnclosingMethodEllipse->setChecked(true);
659 } else if (m_enclosingMethod == Path) {
660 m_buttonEnclosingMethodPath->setChecked(true);
661 } else if (m_enclosingMethod == Lasso) {
662 m_buttonEnclosingMethodLasso->setChecked(true);
663 } else {
664 m_buttonEnclosingMethodBrush->setChecked(true);
665 }
668 sectionWhatToFill->setWidgetVisible(
669 "buttonRegionSelectionColor",
670 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithSpecificColor ||
671 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithSpecificColorOrTransparent ||
672 m_regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColor ||
673 m_regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColorOrTransparent ||
674 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsSurroundedBySpecificColor ||
675 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsSurroundedBySpecificColorOrTransparent
676 );
679 sectionWhatToFill->setWidgetVisible(
680 "checkBoxRegionSelectionIncludeContourRegions",
681 m_regionSelectionMethod == RegionSelectionMethod::SelectAllRegions ||
682 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithSpecificColor ||
683 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithTransparent ||
684 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithSpecificColorOrTransparent ||
685 m_regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColor ||
686 m_regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithTransparent ||
687 m_regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColorOrTransparent
688 );
690 m_buttonFillWithBG->setChecked(true);
691 } else if (m_fillType == FillWithPattern) {
692 m_buttonFillWithPattern->setChecked(true);
693 sectionFillWith->setWidgetVisible("sliderPatternScale", true);
694 sectionFillWith->setWidgetVisible("angleSelectorPatternRotation", true);
695 }
701 ? currentNode()->paintDevice()->colorSpace()
702 : nullptr);
705 sectionFillWith->setWidgetVisible("sliderCustomOpacity", false);
706 sectionFillWith->setWidgetVisible("comboBoxCustomCompositeOp", false);
707 }
712 m_checkBoxAntiAlias->setChecked(m_antiAlias);
716 if (m_reference == AllLayers) {
717 m_buttonReferenceAll->setChecked(true);
718 } else if (m_reference == ColorLabeledLayers) {
719 m_buttonReferenceLabeled->setChecked(true);
720 sectionReference->setWidgetVisible("widgetLabels", true);
721 }
724
725 // Make connections
726 connect(optionButtonStripEnclosingMethod,
727 SIGNAL(buttonToggled(KoGroupButton *, bool)),
730 bool)));
732 SIGNAL(currentIndexChanged(int)),
735 SIGNAL(changed(const KoColor&)),
738 SIGNAL(toggled(bool)),
741 SIGNAL(toggled(bool)),
743 connect(optionButtonStripFillWith,
744 SIGNAL(buttonToggled(KoGroupButton *, bool)),
747 SIGNAL(valueChanged(double)),
750 SIGNAL(angleChanged(double)),
753 SIGNAL(toggled(bool)),
756 SIGNAL(valueChanged(int)),
759 SIGNAL(currentIndexChanged(int)),
762 SIGNAL(valueChanged(int)),
765 SIGNAL(valueChanged(int)),
768 SIGNAL(valueChanged(int)),
771 SIGNAL(toggled(bool)),
774 SIGNAL(toggled(bool)),
777 SIGNAL(valueChanged(int)),
780 SIGNAL(toggled(bool)),
783 SIGNAL(valueChanged(int)),
785 connect(optionButtonStripReference,
786 SIGNAL(buttonToggled(KoGroupButton *, bool)),
789 SIGNAL(selectionChanged()),
792 SIGNAL(toggled(bool)),
794 connect(buttonReset,
795 SIGNAL(clicked()),
797
798 return m_optionWidget;
799}
@ IncreasingDirection_Clockwise
A widget with several options to select an angle.
@ FlipOptionsMode_ContextMenu
The flip options are shown only as a context menu when right-clicking the gauge widget.
void setFlipOptionsMode(FlipOptionsMode newMode)
Sets the mode in which the flip options should be shown.
void setIncreasingDirection(KisAngleGauge::IncreasingDirection newIncreasingDirection)
Sets the increasing direction in the angle gauge.
void setAngle(qreal newAngle)
Sets the current angle.
A pushbutton to display or allow user selection of a color.
void setColor(const KoColor &c)
void setButtonSize(int size)
Set the size of the buttons.
void setSelection(const QList< int > &indices)
Set the list of checked button indices.
void setExclusive(bool exclusive)
Set if the button selection is mutually exclusive. This allows switching between single or multiple s...
void setButtonWrapEnabled(bool enabled)
Set if the buttons should wrap in multiple lines if there is no enough space horizontally.
void setMouseDragEnabled(bool enabled)
Set if the user can drag to check/uncheck multiple buttons.
void selectCompositeOp(const KoID &op)
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
void setValue(qreal newValue)
void setRange(qreal newMinimum, qreal newMaximum, int newNumberOfDecimals=0, bool computeNewFastSliderStep=true)
Set the minimum and the maximum values of the range.
void setSoftMaximum(qreal newSoftMaximum)
Provides a list of consecutive tool buttons.
KoGroupButton * addButton(const QIcon &icon, const QString &text=QString())
Wrapper class around a KisOptionCollectionWidget that also provide a header with a title label and an...
void setPrimaryWidget(QWidget *widget)
Set the primary widget. The list widget takes ownership of it.
void appendWidget(const QString &id, QWidget *widget)
Insert the given widget with the given id at the end of the list. The list widget takes ownership of ...
void setWidgetVisible(int index, bool visible)
Set the visibility of the widget that is at the given position.
Class providing a list of widgets with some addons such as separators, orientation or individual widg...
void setWidgetsMargin(int margin)
Set the margins of the widgets. This allows to indent the widgets with respect to the separators....
void setOrientation(Qt::Orientation orientation, bool recursive=false)
Set the orientation of the list of widgets.
void appendWidget(const QString &id, QWidget *widget)
Insert the given widget with the given id at the end of the list. The list widget takes ownership of ...
void setSeparatorsVisible(bool visible)
Set the visibility of the separators.
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
void setSoftRange(int newSoftMinimum, int newSoftMaximum)
Set the minimum and the maximum values of the soft range.
void setValue(int newValue)
void setRange(int newMinimum, int newMaximum, bool computeNewFastSliderStep=true)
Set the minimum and the maximum values of the range, computing a new "fast slider step" based on the ...
KisAngleSelector * m_angleSelectorPatternRotation
void slot_sliderFillOpacitySpread_valueChanged(int value)
void slot_sliderExpand_valueChanged(int value)
KisCompositeOpComboBox * m_comboBoxCustomCompositeOp
void slot_sliderFeather_valueChanged(int value)
QComboBox * m_comboBoxRegionSelectionMethod
void slot_optionButtonStripEnclosingMethod_buttonToggled(KoGroupButton *button, bool checked)
KisSliderSpinBox * m_sliderFillThreshold
KisColorLabelSelectorWidget * m_widgetLabels
void slot_checkBoxRegionSelectionInvert_toggled(bool checked)
void slot_optionButtonStripFillWith_buttonToggled(KoGroupButton *button, bool checked)
void slot_comboBoxCustomCompositeOp_currentIndexChanged(int index)
void slot_sliderFillThreshold_valueChanged(int value)
void slot_checkBoxSelectionAsBoundary_toggled(bool checked)
KisDoubleSliderSpinBox * m_sliderPatternScale
KisSliderSpinBox * m_sliderFillOpacitySpread
KoGroupButton * m_buttonEnclosingMethodLasso
KisSliderSpinBox * m_sliderFeather
QString regionSelectionMethodToUserString(RegionSelectionMethod regionSelectionMethod) const
void slot_buttonStopGrowingAtDarkestPixel_toggled(bool enabled)
void slot_checkBoxAntiAlias_toggled(bool checked)
EnclosingMethod m_enclosingMethod
KisSliderSpinBox * m_sliderCloseGap
KoGroupButton * m_buttonEnclosingMethodEllipse
KisOptionCollectionWidget * m_optionWidget
RegionSelectionMethod m_regionSelectionMethod
QCheckBox * m_checkBoxRegionSelectionIncludeContourRegions
KoGroupButton * m_buttonEnclosingMethodBrush
void slot_angleSelectorPatternRotation_angleChanged(double value)
KoGroupButton * m_buttonReferenceLabeled
void slot_buttonRegionSelectionColor_changed(const KoColor &color)
KoGroupButton * m_buttonReferenceCurrent
KisColorButton * m_buttonRegionSelectionColor
void slot_comboBoxRegionSelectionMethod_currentIndexChanged(int)
QToolButton * m_buttonStopGrowingAtDarkestPixel
QCheckBox * m_checkBoxCustomBlendingOptions
void slot_sliderCustomOpacity_valueChanged(int value)
void slot_sliderCloseGap_valueChanged(int value)
KisSliderSpinBox * m_sliderCustomOpacity
KisSliderSpinBox * m_sliderExpand
void slot_checkBoxRegionSelectionIncludeContourRegions_toggled(bool checked)
void slot_checkBoxUseCustomBlendingOptions_toggled(bool checked)
KoGroupButton * m_buttonFillWithPattern
KoGroupButton * m_buttonEnclosingMethodPath
KoGroupButton * m_buttonEnclosingMethodRectangle
QCheckBox * m_checkBoxRegionSelectionInvert
void slot_sliderPatternScale_valueChanged(double value)
void slot_checkBoxUseActiveLayer_toggled(bool checked)
void slot_optionButtonStripReference_buttonToggled(KoGroupButton *button, bool checked)
void slot_colorSpaceChanged(const KoColorSpace *colorSpace)
KoGroupButton * m_buttonReferenceAll
Definition KoID.h:30
void selectionChanged(bool hasSelection)
QIcon loadIcon(const QString &name)
void setText(QSpinBox *spinBox, const QStringView textTemplate)

References KisOptionButtonStrip::addButton(), AllLayers, KisOptionCollectionWidget::appendWidget(), KisOptionCollectionWidgetWithHeader::appendWidget(), ColorLabeledLayers, connect(), KisTool::currentNode(), FillWithBackgroundColor, FillWithPattern, KisAngleSelector::FlipOptionsMode_ContextMenu, KisAngleGauge::IncreasingDirection_Clockwise, Lasso, loadConfiguration(), KisIconUtils::loadIcon(), m_angleSelectorPatternRotation, m_antiAlias, m_buttonEnclosingMethodBrush, m_buttonEnclosingMethodEllipse, m_buttonEnclosingMethodLasso, m_buttonEnclosingMethodPath, m_buttonEnclosingMethodRectangle, m_buttonFillWithBG, m_buttonFillWithFG, m_buttonFillWithPattern, m_buttonReferenceAll, m_buttonReferenceCurrent, m_buttonReferenceLabeled, m_buttonRegionSelectionColor, m_buttonStopGrowingAtDarkestPixel, m_checkBoxAntiAlias, m_checkBoxCustomBlendingOptions, m_checkBoxRegionSelectionIncludeContourRegions, m_checkBoxRegionSelectionInvert, m_checkBoxSelectionAsBoundary, m_checkBoxUseActiveLayer, m_closeGap, m_comboBoxCustomCompositeOp, m_comboBoxRegionSelectionMethod, m_customCompositeOp, m_customOpacity, m_enclosingMethod, m_expand, m_feather, m_fillOpacitySpread, m_fillThreshold, m_fillType, m_optionWidget, m_patternRotation, m_patternScale, m_reference, m_regionSelectionColor, m_regionSelectionIncludeContourRegions, m_regionSelectionInvert, m_regionSelectionMethod, m_selectedColorLabels, m_sliderCloseGap, m_sliderCustomOpacity, m_sliderExpand, m_sliderFeather, m_sliderFillOpacitySpread, m_sliderFillThreshold, m_sliderPatternScale, m_stopGrowingAtDarkestPixel, m_useActiveLayer, m_useCustomBlendingOptions, m_useSelectionAsBoundary, m_widgetLabels, Rectangle, regionSelectionMethodToUserString(), KisCompositeOpComboBox::selectCompositeOp(), KoToolBase::selectionChanged(), KisAngleSelector::setAngle(), KisColorLabelSelectorWidget::setButtonSize(), KisColorLabelSelectorWidget::setButtonWrapEnabled(), KisColorButton::setColor(), KisColorLabelSelectorWidget::setExclusive(), KisAngleSelector::setFlipOptionsMode(), KisAngleSelector::setIncreasingDirection(), KisColorLabelSelectorWidget::setMouseDragEnabled(), KisOptionCollectionWidget::setOrientation(), KisOptionCollectionWidgetWithHeader::setPrimaryWidget(), KisSliderSpinBox::setRange(), KisDoubleSliderSpinBox::setRange(), KisColorLabelSelectorWidget::setSelection(), KisOptionCollectionWidget::setSeparatorsVisible(), KisDoubleSliderSpinBox::setSoftMaximum(), KisSliderSpinBox::setSoftRange(), KisSpinBoxI18nHelper::setText(), KisSliderSpinBox::setValue(), KisDoubleSliderSpinBox::setValue(), KisOptionCollectionWidget::setWidgetsMargin(), KisOptionCollectionWidgetWithHeader::setWidgetVisible(), slot_angleSelectorPatternRotation_angleChanged(), slot_buttonRegionSelectionColor_changed(), slot_buttonReset_clicked(), slot_buttonStopGrowingAtDarkestPixel_toggled(), slot_checkBoxAntiAlias_toggled(), slot_checkBoxRegionSelectionIncludeContourRegions_toggled(), slot_checkBoxRegionSelectionInvert_toggled(), slot_checkBoxSelectionAsBoundary_toggled(), slot_checkBoxUseActiveLayer_toggled(), slot_checkBoxUseCustomBlendingOptions_toggled(), slot_colorSpaceChanged(), slot_comboBoxCustomCompositeOp_currentIndexChanged(), slot_comboBoxRegionSelectionMethod_currentIndexChanged(), slot_optionButtonStripEnclosingMethod_buttonToggled(), slot_optionButtonStripFillWith_buttonToggled(), slot_optionButtonStripReference_buttonToggled(), slot_sliderCloseGap_valueChanged(), slot_sliderCustomOpacity_valueChanged(), slot_sliderExpand_valueChanged(), slot_sliderFeather_valueChanged(), slot_sliderFillOpacitySpread_valueChanged(), slot_sliderFillThreshold_valueChanged(), slot_sliderPatternScale_valueChanged(), and slot_widgetLabels_selectionChanged().

◆ deactivate

void KisToolEncloseAndFill::deactivate ( )
overrideslot

Definition at line 100 of file KisToolEncloseAndFill.cpp.

101{
102 m_referencePaintDevice = nullptr;
103 m_referenceNodeList = nullptr;
104 KisCanvas2 *kisCanvas = static_cast<KisCanvas2*>(canvas());
105 KisCanvasResourceProvider *resourceProvider = kisCanvas->viewManager()->canvasResourceProvider();
106 if (resourceProvider) {
107 disconnect(resourceProvider,
108 SIGNAL(sigNodeChanged(const KisNodeSP)),
109 this,
111 }
114}
KisMergeLabeledLayersCommand::ReferenceNodeInfoListSP m_referenceNodeList
KisPaintDeviceSP m_referencePaintDevice

References Private::canvas, KisViewManager::canvasResourceProvider(), KisDynamicDelegatedTool< BaseClass >::deactivate(), m_referenceNodeList, m_referencePaintDevice, slot_currentNodeChanged(), and KisCanvas2::viewManager().

◆ deactivateAlternateAction()

void KisToolEncloseAndFill::deactivateAlternateAction ( AlternateAction action)
overridevirtual

Reimplemented from KisTool.

Definition at line 204 of file KisToolEncloseAndFill.cpp.

205{
207 return;
208 }
210}
void deactivateAlternateAction(typename BaseClass::AlternateAction action) override

References KoToolBase::action(), KisDynamicDelegatedTool< BaseClass >::deactivateAlternateAction(), and subtoolHasUserInteractionRunning().

◆ defaultEnclosingMethod()

static constexpr EnclosingMethod KisToolEncloseAndFill::defaultEnclosingMethod ( )
inlinestaticconstexprprivate

Definition at line 172 of file KisToolEncloseAndFill.h.

172{ return Lasso; }

References Lasso.

◆ defaultReference()

static constexpr Reference KisToolEncloseAndFill::defaultReference ( )
inlinestaticconstexprprivate

Definition at line 188 of file KisToolEncloseAndFill.h.

188{ return CurrentLayer; }

References CurrentLayer.

◆ defaultRegionSelectionMethod()

static constexpr RegionSelectionMethod KisToolEncloseAndFill::defaultRegionSelectionMethod ( )
inlinestaticconstexprprivate

Definition at line 179 of file KisToolEncloseAndFill.h.

179{ return RegionSelectionMethod::SelectAllRegions; }

◆ enclosingMethodToConfigString()

QString KisToolEncloseAndFill::enclosingMethodToConfigString ( EnclosingMethod enclosingMethod) const
private

Definition at line 877 of file KisToolEncloseAndFill.cpp.

878{
879 switch (enclosingMethod) {
880 case Rectangle: return "rectangle";
881 case Ellipse: return "ellipse";
882 case Path: return "path";
883 case Brush: return "brush";
884 default: return "lasso";
885 }
886}

References Brush, Ellipse, Path, and Rectangle.

◆ endAlternateAction()

void KisToolEncloseAndFill::endAlternateAction ( KoPointerEvent * event,
AlternateAction action )
overridevirtual

Reimplemented from KisTool.

Definition at line 238 of file KisToolEncloseAndFill.cpp.

239{
241 if (delegateTool()) {
242 delegateTool()->endPrimaryAction(event);
243 }
244 return;
245 }
247 return;
248 }
251}
void endAlternateAction(KoPointerEvent *event, typename BaseClass::AlternateAction action) override

References KoToolBase::action(), KisDynamicDelegatedTool< KisToolShape >::delegateTool(), KisDynamicDelegatedTool< BaseClass >::endAlternateAction(), m_alternateActionStarted, and subtoolHasUserInteractionRunning().

◆ flags()

int KisToolEncloseAndFill::flags ( ) const
overridevirtual

Reimplemented from KisTool.

Definition at line 377 of file KisToolEncloseAndFill.cpp.

378{
379 return KisDynamicDelegatedTool::flags() | KisTool::FLAG_USES_CUSTOM_SIZE | KisTool::FLAG_USES_CUSTOM_PRESET;
380}
@ FLAG_USES_CUSTOM_SIZE
Definition kis_tool.h:47
@ FLAG_USES_CUSTOM_PRESET
Definition kis_tool.h:47

References KisTool::FLAG_USES_CUSTOM_PRESET, and KisTool::FLAG_USES_CUSTOM_SIZE.

◆ loadConfiguration()

void KisToolEncloseAndFill::loadConfiguration ( )
private

Definition at line 801 of file KisToolEncloseAndFill.cpp.

802{
806 m_regionSelectionInvert = m_configGroup.readEntry<bool>("regionSelectionInvert", false);
807 m_regionSelectionIncludeContourRegions = m_configGroup.readEntry<bool>("regionSelectionIncludeContourRegions", false);
808 {
809 const QString fillTypeStr = m_configGroup.readEntry<QString>("fillWith", "");
810 if (fillTypeStr == "foregroundColor") {
812 } else if (fillTypeStr == "backgroundColor") {
814 } else if (fillTypeStr == "pattern") {
816 } else {
817 if (m_configGroup.readEntry<bool>("usePattern", false)) {
819 } else {
821 }
822 }
823 }
824 m_patternScale = m_configGroup.readEntry<qreal>("patternScale", 100.0);
825 m_patternRotation = m_configGroup.readEntry<qreal>("patternRotate", 0.0);
826 m_useCustomBlendingOptions = m_configGroup.readEntry<bool>("useCustomBlendingOptions", false);
827 m_customOpacity = qBound(0, m_configGroup.readEntry<int>("customOpacity", 100), 100);
828 m_customCompositeOp = m_configGroup.readEntry<QString>("customCompositeOp", COMPOSITE_OVER);
831 }
832 m_fillThreshold = m_configGroup.readEntry<int>("fillThreshold", 8);
833 m_fillOpacitySpread = m_configGroup.readEntry<int>("fillOpacitySpread", 100);
834 m_closeGap = m_configGroup.readEntry<int>("closeGapAmount", 0);
835 m_useSelectionAsBoundary = m_configGroup.readEntry<bool>("useSelectionAsBoundary", true);
836 m_antiAlias = m_configGroup.readEntry<bool>("antiAlias", false);
837 m_expand = m_configGroup.readEntry<int>("expand", 0);
838 m_stopGrowingAtDarkestPixel = m_configGroup.readEntry<bool>("stopGrowingAtDarkestPixel", false);
839 m_feather = m_configGroup.readEntry<int>("feather", 0);
840 {
841 const QString sampleLayersModeStr = m_configGroup.readEntry<QString>("reference", "currentLayer");
842 if (sampleLayersModeStr == "allLayers") {
844 } else if (sampleLayersModeStr == "colorLabeledLayers") {
846 } else {
848 }
849 }
850 {
851 const QStringList colorLabelsStr = m_configGroup.readEntry<QString>("colorLabels", "").split(',', Qt::SkipEmptyParts);
852
853 m_selectedColorLabels.clear();
854 for (const QString &colorLabelStr : colorLabelsStr) {
855 bool ok;
856 const int colorLabel = colorLabelStr.toInt(&ok);
857 if (ok) {
858 m_selectedColorLabels << colorLabel;
859 }
860 }
861 }
862 m_useActiveLayer = m_configGroup.readEntry<bool>("useActiveLayer", false);
863
865}
const QString COMPOSITE_OVER
EnclosingMethod loadEnclosingMethodFromConfig() const
RegionSelectionMethod loadRegionSelectionMethodFromConfig() const
static const KoCompositeOpRegistry & instance()
KoID getKoID(const QString &compositeOpID) const
QString id() const
Definition KoID.cpp:63
QList< KoSubpath * > split(const KoPathShape &path)

References AllLayers, ColorLabeledLayers, COMPOSITE_OVER, CurrentLayer, FillWithBackgroundColor, FillWithForegroundColor, FillWithPattern, KoCompositeOpRegistry::getKoID(), KoID::id(), KoCompositeOpRegistry::instance(), loadEnclosingMethodFromConfig(), loadRegionSelectionColorFromConfig(), loadRegionSelectionMethodFromConfig(), m_antiAlias, m_closeGap, m_configGroup, m_customCompositeOp, m_customOpacity, m_enclosingMethod, m_expand, m_feather, m_fillOpacitySpread, m_fillThreshold, m_fillType, m_patternRotation, m_patternScale, m_reference, m_regionSelectionColor, m_regionSelectionIncludeContourRegions, m_regionSelectionInvert, m_regionSelectionMethod, m_selectedColorLabels, m_stopGrowingAtDarkestPixel, m_useActiveLayer, m_useCustomBlendingOptions, m_useSelectionAsBoundary, and setupEnclosingSubtool().

◆ loadEnclosingMethodFromConfig()

KisToolEncloseAndFill::EnclosingMethod KisToolEncloseAndFill::loadEnclosingMethodFromConfig ( ) const
private

Definition at line 867 of file KisToolEncloseAndFill.cpp.

868{
870}
static constexpr EnclosingMethod defaultEnclosingMethod()
QString enclosingMethodToConfigString(EnclosingMethod enclosingMethod) const
EnclosingMethod configStringToEnclosingMethod(const QString &configString) const

References configStringToEnclosingMethod(), defaultEnclosingMethod(), enclosingMethodToConfigString(), and m_configGroup.

◆ loadReferenceFromConfig()

KisToolEncloseAndFill::Reference KisToolEncloseAndFill::loadReferenceFromConfig ( ) const
private

Definition at line 1015 of file KisToolEncloseAndFill.cpp.

1016{
1017 if (m_configGroup.hasKey("reference")) {
1019 } else {
1020 bool sampleMerged = m_configGroup.readEntry("sampleMerged", false);
1021 return sampleMerged ? AllLayers : CurrentLayer;
1022 }
1023 return CurrentLayer;
1024}
QString referenceToConfigString(Reference reference) const
static constexpr Reference defaultReference()
Reference configStringToReference(const QString &configString) const

References AllLayers, configStringToReference(), CurrentLayer, defaultReference(), m_configGroup, and referenceToConfigString().

◆ loadRegionSelectionColorFromConfig()

KoColor KisToolEncloseAndFill::loadRegionSelectionColorFromConfig ( )
private

Definition at line 998 of file KisToolEncloseAndFill.cpp.

999{
1000 const QString xmlColor = m_configGroup.readEntry("regionSelectionColor", QString());
1001 QDomDocument doc;
1002 if (doc.setContent(xmlColor)) {
1003 QDomElement e = doc.documentElement().firstChild().toElement();
1004 QString channelDepthID = doc.documentElement().attribute("channeldepth", Integer16BitsColorDepthID.id());
1005 bool ok;
1006 if (e.hasAttribute("space") || e.tagName().toLower() == "srgb") {
1007 return KoColor::fromXML(e, channelDepthID, &ok);
1008 } else if (doc.documentElement().hasAttribute("space") || doc.documentElement().tagName().toLower() == "srgb"){
1009 return KoColor::fromXML(doc.documentElement(), channelDepthID, &ok);
1010 }
1011 }
1012 return KoColor();
1013}
const KoID Integer16BitsColorDepthID("U16", ki18n("16-bit integer/channel"))
static KoColor fromXML(const QDomElement &elt, const QString &channelDepthId)
Definition KoColor.cpp:350

References KoColor::fromXML(), KoID::id(), Integer16BitsColorDepthID, and m_configGroup.

◆ loadRegionSelectionMethodFromConfig()

KisToolEncloseAndFill::RegionSelectionMethod KisToolEncloseAndFill::loadRegionSelectionMethodFromConfig ( ) const
private

Definition at line 938 of file KisToolEncloseAndFill.cpp.

939{
941}
RegionSelectionMethod configStringToRegionSelectionMethod(const QString &configString) const
static constexpr RegionSelectionMethod defaultRegionSelectionMethod()
QString regionSelectionMethodToConfigString(RegionSelectionMethod regionSelectionMethod) const

References configStringToRegionSelectionMethod(), defaultRegionSelectionMethod(), m_configGroup, and regionSelectionMethodToConfigString().

◆ referenceToConfigString()

QString KisToolEncloseAndFill::referenceToConfigString ( Reference reference) const
private

Definition at line 1031 of file KisToolEncloseAndFill.cpp.

1032{
1033 if (reference == AllLayers) {
1034 return "allLayers";
1035 } else if (reference == ColorLabeledLayers) {
1036 return "colorLabeledLayers";
1037 }
1038 return "currentLayer";
1039}

References AllLayers, and ColorLabeledLayers.

◆ referenceToUserString()

QString KisToolEncloseAndFill::referenceToUserString ( Reference reference) const
private

◆ regionSelectionMethodToConfigString()

QString KisToolEncloseAndFill::regionSelectionMethodToConfigString ( RegionSelectionMethod regionSelectionMethod) const
private

Definition at line 948 of file KisToolEncloseAndFill.cpp.

949{
950 if (regionSelectionMethod == RegionSelectionMethod::SelectAllRegions) {
951 return "allRegions";
952 } else if (regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithSpecificColor) {
953 return "regionsFilledWithSpecificColor";
954 } else if (regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithTransparent) {
955 return "regionsFilledWithTransparent";
956 } else if (regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithSpecificColorOrTransparent) {
957 return "regionsFilledWithSpecificColorOrTransparent";
958 } else if (regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColor) {
959 return "allRegionsExceptFilledWithSpecificColor";
960 } else if (regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithTransparent) {
961 return "allRegionsExceptFilledWithTransparent";
962 } else if (regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColorOrTransparent) {
963 return "allRegionsExceptFilledWithSpecificColorOrTransparent";
964 } else if (regionSelectionMethod == RegionSelectionMethod::SelectRegionsSurroundedBySpecificColor) {
965 return "regionsSurroundedBySpecificColor";
966 } else if (regionSelectionMethod == RegionSelectionMethod::SelectRegionsSurroundedByTransparent) {
967 return "regionsSurroundedByTransparent";
968 } else if (regionSelectionMethod == RegionSelectionMethod::SelectRegionsSurroundedBySpecificColorOrTransparent) {
969 return "regionsSurroundedBySpecificColorOrTransparent";
970 }
971 return QString();
972}

◆ regionSelectionMethodToUserString()

QString KisToolEncloseAndFill::regionSelectionMethodToUserString ( RegionSelectionMethod regionSelectionMethod) const
private

Definition at line 902 of file KisToolEncloseAndFill.cpp.

903{
904 if (regionSelectionMethod == RegionSelectionMethod::SelectAllRegions) {
905 return i18nc("Region selection method in enclose and fill tool",
906 "All");
907 } else if (regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithSpecificColor) {
908 return i18nc("Region selection method in enclose and fill tool",
909 "Specific color");
910 } else if (regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithTransparent) {
911 return i18nc("Region selection method in enclose and fill tool",
912 "Transparency");
913 } else if (regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithSpecificColorOrTransparent) {
914 return i18nc("Region selection method in enclose and fill tool",
915 "Specific color or transparency");
916 } else if (regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColor) {
917 return i18nc("Region selection method in enclose and fill tool",
918 "All, excluding a specific color");
919 } else if (regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithTransparent) {
920 return i18nc("Region selection method in enclose and fill tool",
921 "All, excluding transparency");
922 } else if (regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColorOrTransparent) {
923 return i18nc("Region selection method in enclose and fill tool",
924 "All, excluding a specific color or transparency");
925 } else if (regionSelectionMethod == RegionSelectionMethod::SelectRegionsSurroundedBySpecificColor) {
926 return i18nc("Region selection method in enclose and fill tool",
927 "Any surrounded by a specific color");
928 } else if (regionSelectionMethod == RegionSelectionMethod::SelectRegionsSurroundedByTransparent) {
929 return i18nc("Region selection method in enclose and fill tool",
930 "Any surrounded by transparency");
931 } else if (regionSelectionMethod == RegionSelectionMethod::SelectRegionsSurroundedBySpecificColorOrTransparent) {
932 return i18nc("Region selection method in enclose and fill tool",
933 "Any surrounded by a specific color or transparency");
934 }
935 return QString();
936}

◆ resetCursorStyle

void KisToolEncloseAndFill::resetCursorStyle ( )
overrideprivateslot

Definition at line 79 of file KisToolEncloseAndFill.cpp.

80{
83}
bool overrideCursorIfNotEditable()
Override the cursor appropriately if current node is not editable.
Definition kis_tool.cc:618

References KisTool::overrideCursorIfNotEditable(), and KisDynamicDelegatedTool< BaseClass >::resetCursorStyle().

◆ saveEnclosingMethodToConfig()

void KisToolEncloseAndFill::saveEnclosingMethodToConfig ( EnclosingMethod enclosingMethod)
private

Definition at line 872 of file KisToolEncloseAndFill.cpp.

873{
874 m_configGroup.writeEntry("enclosingMethod", enclosingMethodToConfigString(enclosingMethod));
875}

References enclosingMethodToConfigString(), and m_configGroup.

◆ saveReferenceToConfig()

void KisToolEncloseAndFill::saveReferenceToConfig ( Reference reference)
private

Definition at line 1026 of file KisToolEncloseAndFill.cpp.

1027{
1028 m_configGroup.writeEntry("reference", referenceToConfigString(reference));
1029}

References m_configGroup, and referenceToConfigString().

◆ saveRegionSelectionMethodToConfig()

void KisToolEncloseAndFill::saveRegionSelectionMethodToConfig ( RegionSelectionMethod regionSelectionMethod)
private

Definition at line 943 of file KisToolEncloseAndFill.cpp.

944{
945 m_configGroup.writeEntry("regionSelectionMethod", regionSelectionMethodToConfigString(regionSelectionMethod));
946}

References m_configGroup, and regionSelectionMethodToConfigString().

◆ setupEnclosingSubtool()

void KisToolEncloseAndFill::setupEnclosingSubtool ( )
private

Definition at line 116 of file KisToolEncloseAndFill.cpp.

117{
118 if (delegateTool()) {
119 delegateTool()->deactivate();
120 }
121
122 if (m_enclosingMethod == Ellipse) {
124 setDelegateTool(reinterpret_cast<KisDynamicDelegateTool<KisToolShape>*>(newDelegateTool));
125 setCursor(newDelegateTool->cursor());
126 } else if (m_enclosingMethod == Path) {
128 setDelegateTool(reinterpret_cast<KisDynamicDelegateTool<KisToolShape>*>(newDelegateTool));
129 setCursor(newDelegateTool->cursor());
130 } else if (m_enclosingMethod == Lasso) {
132 setDelegateTool(reinterpret_cast<KisDynamicDelegateTool<KisToolShape>*>(newDelegateTool));
133 setCursor(newDelegateTool->cursor());
134 } else if (m_enclosingMethod == Brush) {
136 setDelegateTool(reinterpret_cast<KisDynamicDelegateTool<KisToolShape>*>(newDelegateTool));
137 setCursor(newDelegateTool->cursor());
138 } else {
140 setDelegateTool(reinterpret_cast<KisDynamicDelegateTool<KisToolShape>*>(newDelegateTool));
141 setCursor(newDelegateTool->cursor());
142 }
143
145
146 if (isActivated()) {
147 delegateTool()->activate(QSet<KoShape*>());
148 }
149}
void setDelegateTool(DelegateType *newDelegateTool)
void slot_delegateTool_enclosingMaskProduced(KisPixelSelectionSP enclosingMask)
bool isActivated() const
QCursor cursor
Definition kis_tool.cc:64

References Brush, Private::canvas, connect(), KisTool::cursor, KisDynamicDelegatedTool< KisToolShape >::delegateTool(), KoToolBase::isActivated(), Lasso, m_enclosingMethod, KisDynamicDelegatedTool< KisToolShape >::setCursor(), KisDynamicDelegatedTool< KisToolShape >::setDelegateTool(), and slot_delegateTool_enclosingMaskProduced().

◆ slot_angleSelectorPatternRotation_angleChanged

void KisToolEncloseAndFill::slot_angleSelectorPatternRotation_angleChanged ( double value)
privateslot

Definition at line 1163 of file KisToolEncloseAndFill.cpp.

1164{
1165 if (value == m_patternRotation) {
1166 return;
1167 }
1169 m_configGroup.writeEntry("patternRotate", value);
1170}
float value(const T *src, size_t ch)

References m_configGroup, m_patternRotation, and value().

◆ slot_buttonRegionSelectionColor_changed

void KisToolEncloseAndFill::slot_buttonRegionSelectionColor_changed ( const KoColor & color)
privateslot

Definition at line 1105 of file KisToolEncloseAndFill.cpp.

1106{
1107 if (color == m_regionSelectionColor) {
1108 return;
1109 }
1110 m_regionSelectionColor = color;
1111 m_configGroup.writeEntry("regionSelectionColor", color.toXML());
1112}
void toXML(QDomDocument &doc, QDomElement &colorElt) const
Definition KoColor.cpp:304

References m_configGroup, m_regionSelectionColor, and KoColor::toXML().

◆ slot_buttonReset_clicked

void KisToolEncloseAndFill::slot_buttonReset_clicked ( )
privateslot

Definition at line 1311 of file KisToolEncloseAndFill.cpp.

1312{
1313 m_buttonEnclosingMethodLasso->setChecked(true);
1314 m_comboBoxRegionSelectionMethod->setCurrentIndex(
1315 m_comboBoxRegionSelectionMethod->findData(static_cast<int>(RegionSelectionMethod::SelectAllRegions))
1316 );
1318 m_checkBoxRegionSelectionInvert->setChecked(false);
1320 m_buttonFillWithFG->setChecked(true);
1323 m_checkBoxCustomBlendingOptions->setChecked(false);
1329 m_checkBoxSelectionAsBoundary->setChecked(true);
1330 m_checkBoxAntiAlias->setChecked(false);
1332 m_buttonStopGrowingAtDarkestPixel->setChecked(false);
1334 m_buttonReferenceCurrent->setChecked(true);
1336}

References COMPOSITE_OVER, m_angleSelectorPatternRotation, m_buttonEnclosingMethodLasso, m_buttonFillWithFG, m_buttonReferenceCurrent, m_buttonRegionSelectionColor, m_buttonStopGrowingAtDarkestPixel, m_checkBoxAntiAlias, m_checkBoxCustomBlendingOptions, m_checkBoxRegionSelectionIncludeContourRegions, m_checkBoxRegionSelectionInvert, m_checkBoxSelectionAsBoundary, m_comboBoxCustomCompositeOp, m_comboBoxRegionSelectionMethod, m_sliderCloseGap, m_sliderCustomOpacity, m_sliderExpand, m_sliderFeather, m_sliderFillOpacitySpread, m_sliderFillThreshold, m_sliderPatternScale, m_widgetLabels, KisCompositeOpComboBox::selectCompositeOp(), KisAngleSelector::setAngle(), KisColorButton::setColor(), KisColorLabelSelectorWidget::setSelection(), KisSliderSpinBox::setValue(), and KisDoubleSliderSpinBox::setValue().

◆ slot_buttonStopGrowingAtDarkestPixel_toggled

void KisToolEncloseAndFill::slot_buttonStopGrowingAtDarkestPixel_toggled ( bool enabled)
privateslot

Definition at line 1256 of file KisToolEncloseAndFill.cpp.

1257{
1258 if (enabled == m_stopGrowingAtDarkestPixel) {
1259 return;
1260 }
1262 m_configGroup.writeEntry("stopGrowingAtDarkestPixel", enabled);
1263}

References m_configGroup, and m_stopGrowingAtDarkestPixel.

◆ slot_checkBoxAntiAlias_toggled

void KisToolEncloseAndFill::slot_checkBoxAntiAlias_toggled ( bool checked)
privateslot

Definition at line 1238 of file KisToolEncloseAndFill.cpp.

1239{
1240 if (checked == m_antiAlias) {
1241 return;
1242 }
1243 m_antiAlias = checked;
1244 m_configGroup.writeEntry("antiAlias", checked);
1245}

References m_antiAlias, and m_configGroup.

◆ slot_checkBoxRegionSelectionIncludeContourRegions_toggled

void KisToolEncloseAndFill::slot_checkBoxRegionSelectionIncludeContourRegions_toggled ( bool checked)
privateslot

Definition at line 1123 of file KisToolEncloseAndFill.cpp.

1124{
1126 return;
1127 }
1129 m_configGroup.writeEntry("regionSelectionIncludeContourRegions", checked);
1130}

References m_configGroup, and m_regionSelectionIncludeContourRegions.

◆ slot_checkBoxRegionSelectionInvert_toggled

void KisToolEncloseAndFill::slot_checkBoxRegionSelectionInvert_toggled ( bool checked)
privateslot

Definition at line 1114 of file KisToolEncloseAndFill.cpp.

1115{
1116 if (checked == m_regionSelectionInvert) {
1117 return;
1118 }
1119 m_regionSelectionInvert = checked;
1120 m_configGroup.writeEntry("regionSelectionInvert", checked);
1121}

References m_configGroup, and m_regionSelectionInvert.

◆ slot_checkBoxSelectionAsBoundary_toggled

void KisToolEncloseAndFill::slot_checkBoxSelectionAsBoundary_toggled ( bool checked)
privateslot

Definition at line 1229 of file KisToolEncloseAndFill.cpp.

1230{
1231 if (checked == m_useSelectionAsBoundary) {
1232 return;
1233 }
1234 m_useSelectionAsBoundary = checked;
1235 m_configGroup.writeEntry("useSelectionAsBoundary", checked);
1236}

References m_configGroup, and m_useSelectionAsBoundary.

◆ slot_checkBoxUseActiveLayer_toggled

void KisToolEncloseAndFill::slot_checkBoxUseActiveLayer_toggled ( bool checked)
privateslot

Definition at line 1371 of file KisToolEncloseAndFill.cpp.

1372{
1373 if (checked == m_useActiveLayer) {
1374 return;
1375 }
1376 m_useActiveLayer = checked;
1377 m_configGroup.writeEntry("useActiveLayer", checked);
1378}

References m_configGroup, and m_useActiveLayer.

◆ slot_checkBoxUseCustomBlendingOptions_toggled

void KisToolEncloseAndFill::slot_checkBoxUseCustomBlendingOptions_toggled ( bool checked)
privateslot

Definition at line 1172 of file KisToolEncloseAndFill.cpp.

1173{
1174 KisOptionCollectionWidgetWithHeader *sectionFillWith =
1176 sectionFillWith->setWidgetVisible("sliderCustomOpacity", checked);
1177 sectionFillWith->setWidgetVisible("comboBoxCustomCompositeOp", checked);
1179 m_configGroup.writeEntry("useCustomBlendingOptions", checked);
1180}
T widgetAs(int index) const
Get the widget that is at the given position casted to some other class.

References m_configGroup, m_optionWidget, m_useCustomBlendingOptions, KisOptionCollectionWidgetWithHeader::setWidgetVisible(), and KisOptionCollectionWidget::widgetAs().

◆ slot_colorSpaceChanged

void KisToolEncloseAndFill::slot_colorSpaceChanged ( const KoColorSpace * colorSpace)
privateslot

Definition at line 1356 of file KisToolEncloseAndFill.cpp.

1357{
1359 return;
1360 }
1361 const KoColorSpace *compositionSpace = colorSpace;
1362 if (currentNode() && currentNode()->paintDevice()) {
1363 // Currently, composition source is enough to determine the available blending mode,
1364 // because either destination is the same (paint layers), or composition happens
1365 // in source space (masks).
1366 compositionSpace = currentNode()->paintDevice()->compositionSourceColorSpace();
1367 }
1368 m_comboBoxCustomCompositeOp->validate(compositionSpace);
1369}
void validate(const KoColorSpace *cs)
virtual const KoColorSpace * compositionSourceColorSpace() const
virtual KisPaintDeviceSP paintDevice() const =0

References KisPaintDevice::compositionSourceColorSpace(), KisTool::currentNode(), m_comboBoxCustomCompositeOp, KisBaseNode::paintDevice(), and KisCompositeOpComboBox::validate().

◆ slot_comboBoxCustomCompositeOp_currentIndexChanged

void KisToolEncloseAndFill::slot_comboBoxCustomCompositeOp_currentIndexChanged ( int index)
privateslot

Definition at line 1191 of file KisToolEncloseAndFill.cpp.

1192{
1193 Q_UNUSED(index);
1194 const QString compositeOpId = m_comboBoxCustomCompositeOp->selectedCompositeOp().id();
1195 if (compositeOpId == m_customCompositeOp) {
1196 return;
1197 }
1198 m_customCompositeOp = compositeOpId;
1199 m_configGroup.writeEntry("customCompositeOp", compositeOpId);
1200}

References KoID::id(), m_comboBoxCustomCompositeOp, m_configGroup, m_customCompositeOp, and KisCompositeOpComboBox::selectedCompositeOp().

◆ slot_comboBoxRegionSelectionMethod_currentIndexChanged

void KisToolEncloseAndFill::slot_comboBoxRegionSelectionMethod_currentIndexChanged ( int )
privateslot

Definition at line 1075 of file KisToolEncloseAndFill.cpp.

1076{
1078
1079 KisOptionCollectionWidgetWithHeader *sectionWhatToFill =
1081 sectionWhatToFill->setWidgetVisible("buttonRegionSelectionColor",
1082 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithSpecificColor ||
1083 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithSpecificColorOrTransparent ||
1084 m_regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColor ||
1085 m_regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColorOrTransparent ||
1086 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsSurroundedBySpecificColor ||
1087 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsSurroundedBySpecificColorOrTransparent
1088 );
1089 sectionWhatToFill->setWidgetVisible(
1090 "checkBoxRegionSelectionIncludeContourRegions",
1091 m_regionSelectionMethod == RegionSelectionMethod::SelectAllRegions ||
1092 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithSpecificColor ||
1093 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithTransparent ||
1094 m_regionSelectionMethod == RegionSelectionMethod::SelectRegionsFilledWithSpecificColorOrTransparent ||
1095 m_regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColor ||
1096 m_regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithTransparent ||
1097 m_regionSelectionMethod == RegionSelectionMethod::SelectAllRegionsExceptFilledWithSpecificColorOrTransparent
1098 );
1099
1101
1103}
KisEncloseAndFillPainter::RegionSelectionMethod RegionSelectionMethod
void saveRegionSelectionMethodToConfig(RegionSelectionMethod regionSelectionMethod)

References m_comboBoxRegionSelectionMethod, m_optionWidget, m_regionSelectionMethod, saveRegionSelectionMethodToConfig(), KisOptionCollectionWidgetWithHeader::setWidgetVisible(), and KisOptionCollectionWidget::widgetAs().

◆ slot_currentNodeChanged

void KisToolEncloseAndFill::slot_currentNodeChanged ( const KisNodeSP node)
privateslot

Definition at line 1338 of file KisToolEncloseAndFill.cpp.

1339{
1341 disconnect(m_previousNode->paintDevice().data(),
1342 SIGNAL(colorSpaceChanged(const KoColorSpace*)),
1343 this,
1344 SLOT(slot_colorSpaceChanged(const KoColorSpace*)));
1345 }
1346 if (node && node->paintDevice()) {
1347 connect(node->paintDevice().data(),
1348 SIGNAL(colorSpaceChanged(const KoColorSpace*)),
1349 this,
1350 SLOT(slot_colorSpaceChanged(const KoColorSpace*)));
1352 }
1353 m_previousNode = node;
1354}
const KoColorSpace * colorSpace() const

References KisPaintDevice::colorSpace(), connect(), KisSharedPtr< T >::data(), m_previousNode, KisBaseNode::paintDevice(), and slot_colorSpaceChanged().

◆ slot_delegateTool_enclosingMaskProduced

void KisToolEncloseAndFill::slot_delegateTool_enclosingMaskProduced ( KisPixelSelectionSP enclosingMask)
privateslot

Definition at line 264 of file KisToolEncloseAndFill.cpp.

265{
267 new KisStrokeStrategyUndoCommandBased(kundo2_i18n("Enclose and Fill"), false, image().data());
268 strategy->setSupportsWrapAroundMode(true);
269 m_fillStrokeId = image()->startStroke(strategy);
271
272 m_dirtyRect.reset(new QRect);
273
274 KisResourcesSnapshotSP resources =
275 new KisResourcesSnapshot(image(), currentNode(), this->canvas()->resourceManager());
276
277 if (m_reference == CurrentLayer) {
279 } else if (m_reference == AllLayers) {
281 } else if (m_reference == ColorLabeledLayers) {
282 if (!m_referenceNodeList) {
283 m_referencePaintDevice = KisMergeLabeledLayersCommand::createRefPaintDevice(image(), "Enclose and Fill Tool Reference Result Paint Device");
285 }
286 KisPaintDeviceSP newReferencePaintDevice = KisMergeLabeledLayersCommand::createRefPaintDevice(image(), "Enclose and Fill Tool Reference Result Paint Device");
288 const int currentTime = image()->animationInterface()->currentTime();
289 image()->addJob(
293 image(),
295 newReferenceNodeList,
297 newReferencePaintDevice,
300 m_previousTime != currentTime,
301 m_useActiveLayer ? currentNode() : nullptr
302 )),
303 false,
304 KisStrokeJobData::SEQUENTIAL,
305 KisStrokeJobData::EXCLUSIVE
306 )
307 );
308 m_referencePaintDevice = newReferencePaintDevice;
309 m_referenceNodeList = newReferenceNodeList;
310 m_previousTime = currentTime;
311 }
312
314 // Reset this so that the device from color labeled layers gets
315 // regenerated when that mode is selected again
316 m_referenceNodeList.reset();
317 }
318
319 QTransform transform;
320 transform.rotate(m_patternRotation);
321 const qreal normalizedScale = m_patternScale * 0.01;
322 transform.scale(normalizedScale, normalizedScale);
323 resources->setFillTransform(transform);
324
325 KisProcessingVisitorSP visitor =
327 enclosingMask,
328 resources->activeSelection(),
329 resources,
334 false,
339 m_expand,
341 m_feather,
344 false,
347 m_customOpacity / 100.0,
350
351 image()->addJob(
355 false,
358 )
359 );
360
361 image()->addJob(
365 false,
368 )
369 );
370
372
373 m_fillStrokeId = nullptr;
374 m_dirtyRect = nullptr;
375}
KisImageAnimationInterface * animationInterface() const
KisPaintDeviceSP projection() const
void addJob(KisStrokeId id, KisStrokeJobData *data) override
KisStrokeId startStroke(KisStrokeStrategy *strokeStrategy) override
void endStroke(KisStrokeId id) override
static KisPaintDeviceSP createRefPaintDevice(KisImageSP originalImage, QString name="Merge Labeled Layers Reference Paint Device")
@ GroupSelectionPolicy_SelectIfColorLabeled
Groups will be taken into account only if they have set an explicit color label. This ignores groups ...
The KisResourcesSnapshot class takes a snapshot of the various resources like colors and settings use...
KisSelectionSP activeSelection() const
void setFillTransform(QTransform transform)
QSharedPointer< QRect > m_dirtyRect
#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)
KisImageWSP currentImage()
Definition kis_tool.cc:393
KisImageWSP image() const
Definition kis_tool.cc:332

References KisResourcesSnapshot::activeSelection(), KisImage::addJob(), AllLayers, KisImage::animationInterface(), Private::canvas, ColorLabeledLayers, KisMergeLabeledLayersCommand::createRefPaintDevice(), KisTool::currentImage(), CurrentLayer, KisTool::currentNode(), KisImageAnimationInterface::currentTime(), KisImage::endStroke(), KisStrokeJobData::EXCLUSIVE, FillWithBackgroundColor, FillWithPattern, KisMergeLabeledLayersCommand::GroupSelectionPolicy_SelectIfColorLabeled, KisTool::image(), KIS_SAFE_ASSERT_RECOVER_RETURN, kundo2_i18n(), m_antiAlias, m_closeGap, m_customCompositeOp, m_customOpacity, m_dirtyRect, m_expand, m_feather, m_fillOpacitySpread, m_fillStrokeId, m_fillThreshold, m_fillType, m_patternRotation, m_patternScale, m_previousTime, m_reference, m_referenceNodeList, m_referencePaintDevice, m_regionSelectionColor, m_regionSelectionIncludeContourRegions, m_regionSelectionInvert, m_regionSelectionMethod, m_selectedColorLabels, m_stopGrowingAtDarkestPixel, m_useActiveLayer, m_useCustomBlendingOptions, m_useSelectionAsBoundary, KisBaseNode::paintDevice(), KisImage::projection(), KisStrokeJobData::SEQUENTIAL, KisResourcesSnapshot::setFillTransform(), KisStrokeStrategyUndoCommandBased::setSupportsWrapAroundMode(), and KisImage::startStroke().

◆ slot_optionButtonStripEnclosingMethod_buttonToggled

void KisToolEncloseAndFill::slot_optionButtonStripEnclosingMethod_buttonToggled ( KoGroupButton * button,
bool checked )
privateslot

◆ slot_optionButtonStripFillWith_buttonToggled

void KisToolEncloseAndFill::slot_optionButtonStripFillWith_buttonToggled ( KoGroupButton * button,
bool checked )
privateslot

Definition at line 1132 of file KisToolEncloseAndFill.cpp.

1135{
1136 if (!checked) {
1137 return;
1138 }
1139 const bool visible = button == m_buttonFillWithPattern;
1140 KisOptionCollectionWidgetWithHeader *sectionFillWith =
1142 sectionFillWith->setWidgetVisible("sliderPatternScale", visible);
1143 sectionFillWith->setWidgetVisible("angleSelectorPatternRotation", visible);
1144
1147
1148 m_configGroup.writeEntry(
1149 "fillWith",
1150 button == m_buttonFillWithFG ? "foregroundColor" : (button == m_buttonFillWithBG ? "backgroundColor" : "pattern")
1151 );
1152}

References button(), FillWithBackgroundColor, FillWithForegroundColor, FillWithPattern, m_buttonFillWithBG, m_buttonFillWithFG, m_buttonFillWithPattern, m_configGroup, m_fillType, m_optionWidget, KisOptionCollectionWidgetWithHeader::setWidgetVisible(), and KisOptionCollectionWidget::widgetAs().

◆ slot_optionButtonStripReference_buttonToggled

void KisToolEncloseAndFill::slot_optionButtonStripReference_buttonToggled ( KoGroupButton * button,
bool checked )
privateslot

Definition at line 1274 of file KisToolEncloseAndFill.cpp.

1277{
1278 if (!checked) {
1279 return;
1280 }
1281 KisOptionCollectionWidgetWithHeader *sectionReference =
1283 sectionReference->setWidgetVisible("widgetLabels", button == m_buttonReferenceLabeled);
1284
1287
1288 m_configGroup.writeEntry(
1289 "reference",
1290 button == m_buttonReferenceCurrent ? "currentLayer" : (button == m_buttonReferenceAll ? "allLayers" : "colorLabeledLayers")
1291 );
1292}

References AllLayers, button(), ColorLabeledLayers, CurrentLayer, m_buttonReferenceAll, m_buttonReferenceCurrent, m_buttonReferenceLabeled, m_configGroup, m_optionWidget, m_reference, KisOptionCollectionWidgetWithHeader::setWidgetVisible(), and KisOptionCollectionWidget::widgetAs().

◆ slot_sliderCloseGap_valueChanged

void KisToolEncloseAndFill::slot_sliderCloseGap_valueChanged ( int value)
privateslot

Definition at line 1220 of file KisToolEncloseAndFill.cpp.

1221{
1222 if (value == m_closeGap) {
1223 return;
1224 }
1225 m_closeGap = value;
1226 m_configGroup.writeEntry("closeGapAmount", value);
1227}

References m_closeGap, m_configGroup, and value().

◆ slot_sliderCustomOpacity_valueChanged

void KisToolEncloseAndFill::slot_sliderCustomOpacity_valueChanged ( int value)
privateslot

Definition at line 1182 of file KisToolEncloseAndFill.cpp.

1183{
1184 if (value == m_customOpacity) {
1185 return;
1186 }
1188 m_configGroup.writeEntry("customOpacity", value);
1189}

References m_configGroup, m_customOpacity, and value().

◆ slot_sliderExpand_valueChanged

void KisToolEncloseAndFill::slot_sliderExpand_valueChanged ( int value)
privateslot

Definition at line 1247 of file KisToolEncloseAndFill.cpp.

1248{
1249 if (value == m_expand) {
1250 return;
1251 }
1252 m_expand = value;
1253 m_configGroup.writeEntry("expand", value);
1254}

References m_configGroup, m_expand, and value().

◆ slot_sliderFeather_valueChanged

void KisToolEncloseAndFill::slot_sliderFeather_valueChanged ( int value)
privateslot

Definition at line 1265 of file KisToolEncloseAndFill.cpp.

1266{
1267 if (value == m_feather) {
1268 return;
1269 }
1270 m_feather = value;
1271 m_configGroup.writeEntry("feather", value);
1272}

References m_configGroup, m_feather, and value().

◆ slot_sliderFillOpacitySpread_valueChanged

void KisToolEncloseAndFill::slot_sliderFillOpacitySpread_valueChanged ( int value)
privateslot

Definition at line 1211 of file KisToolEncloseAndFill.cpp.

1212{
1213 if (value == m_fillOpacitySpread) {
1214 return;
1215 }
1217 m_configGroup.writeEntry("fillOpacitySpread", value);
1218}

References m_configGroup, m_fillOpacitySpread, and value().

◆ slot_sliderFillThreshold_valueChanged

void KisToolEncloseAndFill::slot_sliderFillThreshold_valueChanged ( int value)
privateslot

Definition at line 1202 of file KisToolEncloseAndFill.cpp.

1203{
1204 if (value == m_fillThreshold) {
1205 return;
1206 }
1208 m_configGroup.writeEntry("fillThreshold", value);
1209}

References m_configGroup, m_fillThreshold, and value().

◆ slot_sliderPatternScale_valueChanged

void KisToolEncloseAndFill::slot_sliderPatternScale_valueChanged ( double value)
privateslot

Definition at line 1154 of file KisToolEncloseAndFill.cpp.

1155{
1156 if (value == m_patternScale) {
1157 return;
1158 }
1160 m_configGroup.writeEntry("patternScale", value);
1161}

References m_configGroup, m_patternScale, and value().

◆ slot_widgetLabels_selectionChanged

void KisToolEncloseAndFill::slot_widgetLabels_selectionChanged ( )
privateslot

Definition at line 1294 of file KisToolEncloseAndFill.cpp.

1295{
1297 if (labels == m_selectedColorLabels) {
1298 return;
1299 }
1300 m_selectedColorLabels = labels;
1301 if (labels.isEmpty()) {
1302 return;
1303 }
1304 QString colorLabels = QString::number(labels.first());
1305 for (int i = 1; i < labels.size(); ++i) {
1306 colorLabels += "," + QString::number(labels[i]);
1307 }
1308 m_configGroup.writeEntry("colorLabels", colorLabels);
1309}
QList< int > selection() const
Get the list of checked button indices.

References m_configGroup, m_selectedColorLabels, m_widgetLabels, and KisColorLabelSelectorWidget::selection().

◆ subtoolHasUserInteractionRunning()

bool KisToolEncloseAndFill::subtoolHasUserInteractionRunning ( ) const
private

Definition at line 151 of file KisToolEncloseAndFill.cpp.

152{
153 if (!delegateTool()) {
154 return false;
155 }
156
158 return reinterpret_cast<KisRectangleEnclosingProducer*>(delegateTool())->hasUserInteractionRunning();
159 } else if (m_enclosingMethod == Ellipse) {
160 return reinterpret_cast<KisEllipseEnclosingProducer*>(delegateTool())->hasUserInteractionRunning();
161 } else if (m_enclosingMethod == Path) {
162 return reinterpret_cast<KisPathEnclosingProducer*>(delegateTool())->hasUserInteractionRunning();
163 } else if (m_enclosingMethod == Lasso) {
164 return reinterpret_cast<KisLassoEnclosingProducer*>(delegateTool())->hasUserInteractionRunning();
165 } else if (m_enclosingMethod == Brush) {
166 return reinterpret_cast<KisBrushEnclosingProducer*>(delegateTool())->hasUserInteractionRunning();
167 }
168 return false;
169}

References Brush, KisDynamicDelegatedTool< KisToolShape >::delegateTool(), Lasso, m_enclosingMethod, and Rectangle.

◆ wantsAutoScroll()

bool KisToolEncloseAndFill::wantsAutoScroll ( ) const
inlineoverrideprivatevirtual

Return if dragging (moving with the mouse down) to the edge of a canvas should scroll the canvas (default is true).

Returns
if this tool wants mouse events to cause scrolling of canvas.

Reimplemented from KisDynamicDelegatedTool< KisToolShape >.

Definition at line 166 of file KisToolEncloseAndFill.h.

166{ return false; }

Member Data Documentation

◆ m_alternateActionStarted

bool KisToolEncloseAndFill::m_alternateActionStarted {false}
private

Definition at line 164 of file KisToolEncloseAndFill.h.

164{false};

◆ m_angleSelectorPatternRotation

KisAngleSelector* KisToolEncloseAndFill::m_angleSelectorPatternRotation {nullptr}
private

Definition at line 141 of file KisToolEncloseAndFill.h.

141{nullptr};

◆ m_antiAlias

bool KisToolEncloseAndFill::m_antiAlias {false}
private

Definition at line 108 of file KisToolEncloseAndFill.h.

108{false};

◆ m_buttonEnclosingMethodBrush

KoGroupButton* KisToolEncloseAndFill::m_buttonEnclosingMethodBrush {nullptr}
private

Definition at line 130 of file KisToolEncloseAndFill.h.

130{nullptr};

◆ m_buttonEnclosingMethodEllipse

KoGroupButton* KisToolEncloseAndFill::m_buttonEnclosingMethodEllipse {nullptr}
private

Definition at line 127 of file KisToolEncloseAndFill.h.

127{nullptr};

◆ m_buttonEnclosingMethodLasso

KoGroupButton* KisToolEncloseAndFill::m_buttonEnclosingMethodLasso {nullptr}
private

Definition at line 129 of file KisToolEncloseAndFill.h.

129{nullptr};

◆ m_buttonEnclosingMethodPath

KoGroupButton* KisToolEncloseAndFill::m_buttonEnclosingMethodPath {nullptr}
private

Definition at line 128 of file KisToolEncloseAndFill.h.

128{nullptr};

◆ m_buttonEnclosingMethodRectangle

KoGroupButton* KisToolEncloseAndFill::m_buttonEnclosingMethodRectangle {nullptr}
private

Definition at line 126 of file KisToolEncloseAndFill.h.

126{nullptr};

◆ m_buttonFillWithBG

KoGroupButton* KisToolEncloseAndFill::m_buttonFillWithBG {nullptr}
private

Definition at line 138 of file KisToolEncloseAndFill.h.

138{nullptr};

◆ m_buttonFillWithFG

KoGroupButton* KisToolEncloseAndFill::m_buttonFillWithFG {nullptr}
private

Definition at line 137 of file KisToolEncloseAndFill.h.

137{nullptr};

◆ m_buttonFillWithPattern

KoGroupButton* KisToolEncloseAndFill::m_buttonFillWithPattern {nullptr}
private

Definition at line 139 of file KisToolEncloseAndFill.h.

139{nullptr};

◆ m_buttonReferenceAll

KoGroupButton* KisToolEncloseAndFill::m_buttonReferenceAll {nullptr}
private

Definition at line 157 of file KisToolEncloseAndFill.h.

157{nullptr};

◆ m_buttonReferenceCurrent

KoGroupButton* KisToolEncloseAndFill::m_buttonReferenceCurrent {nullptr}
private

Definition at line 156 of file KisToolEncloseAndFill.h.

156{nullptr};

◆ m_buttonReferenceLabeled

KoGroupButton* KisToolEncloseAndFill::m_buttonReferenceLabeled {nullptr}
private

Definition at line 158 of file KisToolEncloseAndFill.h.

158{nullptr};

◆ m_buttonRegionSelectionColor

KisColorButton* KisToolEncloseAndFill::m_buttonRegionSelectionColor {nullptr}
private

Definition at line 133 of file KisToolEncloseAndFill.h.

133{nullptr};

◆ m_buttonStopGrowingAtDarkestPixel

QToolButton* KisToolEncloseAndFill::m_buttonStopGrowingAtDarkestPixel {nullptr}
private

Definition at line 153 of file KisToolEncloseAndFill.h.

153{nullptr};

◆ m_checkBoxAntiAlias

QCheckBox* KisToolEncloseAndFill::m_checkBoxAntiAlias {nullptr}
private

Definition at line 151 of file KisToolEncloseAndFill.h.

151{nullptr};

◆ m_checkBoxCustomBlendingOptions

QCheckBox* KisToolEncloseAndFill::m_checkBoxCustomBlendingOptions {nullptr}
private

Definition at line 142 of file KisToolEncloseAndFill.h.

142{nullptr};

◆ m_checkBoxRegionSelectionIncludeContourRegions

QCheckBox* KisToolEncloseAndFill::m_checkBoxRegionSelectionIncludeContourRegions {nullptr}
private

Definition at line 135 of file KisToolEncloseAndFill.h.

135{nullptr};

◆ m_checkBoxRegionSelectionInvert

QCheckBox* KisToolEncloseAndFill::m_checkBoxRegionSelectionInvert {nullptr}
private

Definition at line 134 of file KisToolEncloseAndFill.h.

134{nullptr};

◆ m_checkBoxSelectionAsBoundary

QCheckBox* KisToolEncloseAndFill::m_checkBoxSelectionAsBoundary {nullptr}
private

Definition at line 149 of file KisToolEncloseAndFill.h.

149{nullptr};

◆ m_checkBoxUseActiveLayer

QCheckBox* KisToolEncloseAndFill::m_checkBoxUseActiveLayer {nullptr}
private

Definition at line 160 of file KisToolEncloseAndFill.h.

160{nullptr};

◆ m_closeGap

int KisToolEncloseAndFill::m_closeGap {0}
private

Definition at line 105 of file KisToolEncloseAndFill.h.

105{0};

◆ m_comboBoxCustomCompositeOp

KisCompositeOpComboBox* KisToolEncloseAndFill::m_comboBoxCustomCompositeOp {nullptr}
private

Definition at line 144 of file KisToolEncloseAndFill.h.

144{nullptr};

◆ m_comboBoxRegionSelectionMethod

QComboBox* KisToolEncloseAndFill::m_comboBoxRegionSelectionMethod {nullptr}
private

Definition at line 132 of file KisToolEncloseAndFill.h.

132{nullptr};

◆ m_configGroup

KConfigGroup KisToolEncloseAndFill::m_configGroup
private

Definition at line 162 of file KisToolEncloseAndFill.h.

◆ m_customCompositeOp

QString KisToolEncloseAndFill::m_customCompositeOp {COMPOSITE_OVER}
private

Definition at line 101 of file KisToolEncloseAndFill.h.

◆ m_customOpacity

int KisToolEncloseAndFill::m_customOpacity {100}
private

Definition at line 100 of file KisToolEncloseAndFill.h.

100{100};

◆ m_dirtyRect

QSharedPointer<QRect> KisToolEncloseAndFill::m_dirtyRect {nullptr}
private

Definition at line 121 of file KisToolEncloseAndFill.h.

121{nullptr};

◆ m_enclosingMethod

EnclosingMethod KisToolEncloseAndFill::m_enclosingMethod {Lasso}
private

Definition at line 89 of file KisToolEncloseAndFill.h.

89{Lasso};

◆ m_expand

int KisToolEncloseAndFill::m_expand {0}
private

Definition at line 109 of file KisToolEncloseAndFill.h.

109{0};

◆ m_feather

int KisToolEncloseAndFill::m_feather {0}
private

Definition at line 111 of file KisToolEncloseAndFill.h.

111{0};

◆ m_fillOpacitySpread

int KisToolEncloseAndFill::m_fillOpacitySpread {100}
private

Definition at line 104 of file KisToolEncloseAndFill.h.

104{100};

◆ m_fillStrokeId

KisStrokeId KisToolEncloseAndFill::m_fillStrokeId {nullptr}
private

Definition at line 122 of file KisToolEncloseAndFill.h.

122{nullptr};

◆ m_fillThreshold

int KisToolEncloseAndFill::m_fillThreshold {8}
private

Definition at line 103 of file KisToolEncloseAndFill.h.

103{8};

◆ m_fillType

FillType KisToolEncloseAndFill::m_fillType {FillWithForegroundColor}
private

Definition at line 96 of file KisToolEncloseAndFill.h.

◆ m_optionWidget

KisOptionCollectionWidget* KisToolEncloseAndFill::m_optionWidget {nullptr}
private

Definition at line 124 of file KisToolEncloseAndFill.h.

124{nullptr};

◆ m_patternRotation

qreal KisToolEncloseAndFill::m_patternRotation {0.0}
private

Definition at line 98 of file KisToolEncloseAndFill.h.

98{0.0};

◆ m_patternScale

qreal KisToolEncloseAndFill::m_patternScale {100.0}
private

Definition at line 97 of file KisToolEncloseAndFill.h.

97{100.0};

◆ m_previousNode

KisNodeSP KisToolEncloseAndFill::m_previousNode {nullptr}
private

Definition at line 120 of file KisToolEncloseAndFill.h.

120{nullptr};

◆ m_previousTime

int KisToolEncloseAndFill::m_previousTime {0}
private

Definition at line 119 of file KisToolEncloseAndFill.h.

119{0};

◆ m_reference

Reference KisToolEncloseAndFill::m_reference {CurrentLayer}
private

Definition at line 114 of file KisToolEncloseAndFill.h.

◆ m_referenceNodeList

KisMergeLabeledLayersCommand::ReferenceNodeInfoListSP KisToolEncloseAndFill::m_referenceNodeList {nullptr}
private

Definition at line 118 of file KisToolEncloseAndFill.h.

118{nullptr};

◆ m_referencePaintDevice

KisPaintDeviceSP KisToolEncloseAndFill::m_referencePaintDevice {nullptr}
private

Definition at line 117 of file KisToolEncloseAndFill.h.

117{nullptr};

◆ m_regionSelectionColor

KoColor KisToolEncloseAndFill::m_regionSelectionColor
private

Definition at line 92 of file KisToolEncloseAndFill.h.

◆ m_regionSelectionIncludeContourRegions

bool KisToolEncloseAndFill::m_regionSelectionIncludeContourRegions {false}
private

Definition at line 94 of file KisToolEncloseAndFill.h.

94{false};

◆ m_regionSelectionInvert

bool KisToolEncloseAndFill::m_regionSelectionInvert {false}
private

Definition at line 93 of file KisToolEncloseAndFill.h.

93{false};

◆ m_regionSelectionMethod

RegionSelectionMethod KisToolEncloseAndFill::m_regionSelectionMethod {defaultRegionSelectionMethod()}
private

Definition at line 91 of file KisToolEncloseAndFill.h.

◆ m_selectedColorLabels

QList<int> KisToolEncloseAndFill::m_selectedColorLabels
private

Definition at line 115 of file KisToolEncloseAndFill.h.

◆ m_sliderCloseGap

KisSliderSpinBox* KisToolEncloseAndFill::m_sliderCloseGap {nullptr}
private

Definition at line 148 of file KisToolEncloseAndFill.h.

148{nullptr};

◆ m_sliderCustomOpacity

KisSliderSpinBox* KisToolEncloseAndFill::m_sliderCustomOpacity {nullptr}
private

Definition at line 143 of file KisToolEncloseAndFill.h.

143{nullptr};

◆ m_sliderExpand

KisSliderSpinBox* KisToolEncloseAndFill::m_sliderExpand {nullptr}
private

Definition at line 152 of file KisToolEncloseAndFill.h.

152{nullptr};

◆ m_sliderFeather

KisSliderSpinBox* KisToolEncloseAndFill::m_sliderFeather {nullptr}
private

Definition at line 154 of file KisToolEncloseAndFill.h.

154{nullptr};

◆ m_sliderFillOpacitySpread

KisSliderSpinBox* KisToolEncloseAndFill::m_sliderFillOpacitySpread {nullptr}
private

Definition at line 147 of file KisToolEncloseAndFill.h.

147{nullptr};

◆ m_sliderFillThreshold

KisSliderSpinBox* KisToolEncloseAndFill::m_sliderFillThreshold {nullptr}
private

Definition at line 146 of file KisToolEncloseAndFill.h.

146{nullptr};

◆ m_sliderPatternScale

KisDoubleSliderSpinBox* KisToolEncloseAndFill::m_sliderPatternScale {nullptr}
private

Definition at line 140 of file KisToolEncloseAndFill.h.

140{nullptr};

◆ m_stopGrowingAtDarkestPixel

int KisToolEncloseAndFill::m_stopGrowingAtDarkestPixel {false}
private

Definition at line 110 of file KisToolEncloseAndFill.h.

110{false};

◆ m_useActiveLayer

bool KisToolEncloseAndFill::m_useActiveLayer {false}
private

Definition at line 112 of file KisToolEncloseAndFill.h.

112{false};

◆ m_useCustomBlendingOptions

bool KisToolEncloseAndFill::m_useCustomBlendingOptions {false}
private

Definition at line 99 of file KisToolEncloseAndFill.h.

99{false};

◆ m_useSelectionAsBoundary

bool KisToolEncloseAndFill::m_useSelectionAsBoundary {true}
private

Definition at line 106 of file KisToolEncloseAndFill.h.

106{true};

◆ m_widgetLabels

KisColorLabelSelectorWidget* KisToolEncloseAndFill::m_widgetLabels {nullptr}
private

Definition at line 159 of file KisToolEncloseAndFill.h.

159{nullptr};

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