Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_tool_fill.h
Go to the documentation of this file.
1/*
2 * kis_tool_fill.h - part of Krayon^Krita
3 *
4 * SPDX-FileCopyrightText: 2004 Bart Coppens <kde@bartcoppens.be>
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9#ifndef KIS_TOOL_FILL_H_
10#define KIS_TOOL_FILL_H_
11
12#include <QPoint>
13#include <QList>
14#include <QVector>
15
16#include "kis_tool_paint.h"
18#include <KoIcon.h>
19#include <kis_icon.h>
20#include <kconfig.h>
21#include <kconfiggroup.h>
27
29class KoGroupButton;
33class QCheckBox;
35class QPushButton;
36class KisColorButton;
37class QToolButton;
39
41{
42 Q_OBJECT
43
44public:
51
58
64
71
78
80 ~KisToolFill() override;
81
82 void beginPrimaryAction(KoPointerEvent *event) override;
83 void continuePrimaryAction(KoPointerEvent *event) override;
84 void endPrimaryAction(KoPointerEvent *event) override;
88
89 QWidget* createOptionWidget() override;
90
91public Q_SLOTS:
92 void activate(const QSet<KoShape*> &shapes) override;
93 void deactivate() override;
94
95protected:
96 bool wantsAutoScroll() const override { return false; }
97
98protected Q_SLOTS:
99 void resetCursorStyle() override;
100 void slotUpdateFill();
101
102private:
103 static constexpr int minimumDragDistance{4};
105
107
109 qreal m_patternScale {100.0};
110 qreal m_patternRotation {0.0};
114
117 int m_threshold {8};
119 int m_closeGap {0};
121
122 bool m_antiAlias {true};
123 int m_sizemod {0};
125 int m_feather {0};
126
129 bool m_useActiveLayer {false};
130
132
139 QTransform m_transform;
140
142 bool m_isFilling {false};
143 bool m_isDragging {false};
150
151 KConfigGroup m_configGroup;
152
154
158
167
174 QCheckBox *m_checkBoxSelectionAsBoundary {nullptr};
175
176 QCheckBox *m_checkBoxAntiAlias {nullptr};
178 QToolButton *m_buttonStopGrowingAtDarkestPixel {nullptr};
180
185 QCheckBox *m_checkBoxUseActiveLayer {nullptr};
186
190
191 void beginFilling(const QPoint &seedPoint);
192 void addFillingOperation(const QPoint &seedPoint);
193 void addFillingOperation(const QVector<QPoint> &seedPoints);
194 void addUpdateOperation();
195 void endFilling();
196
197 void loadConfiguration();
199
200private Q_SLOTS:
202 bool checked);
204 bool checked);
211 bool checked);
217 void slot_checkBoxAntiAlias_toggled(bool checked);
222 bool checked);
224 void slot_checkBoxUseActiveLayer_toggled(bool checked);
226 bool checked);
228
229 void slot_currentNodeChanged(const KisNodeSP node);
230 void slot_colorSpaceChanged(const KoColorSpace *colorSpace);
231};
232
233
235
237{
238
239public:
241 : KisToolPaintFactoryBase("KritaFill/KisToolFill") {
242 setToolTip(i18n("Fill Tool"));
244 setPriority(0);
246 setIconName(koIconNameCStr("krita_tool_color_fill"));
247 setShortcut( QKeySequence( Qt::Key_F ) );
248 setPriority(14);
249 }
250
252
254 return new KisToolFill(canvas);
255 }
256
257};
258
259#endif //__filltool_h__
260
float value(const T *src, size_t ch)
const QString COMPOSITE_OVER
A widget with several options to select an angle.
A pushbutton to display or allow user selection of a color.
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
Class providing a list of widgets with some addons such as separators, orientation or individual widg...
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
~KisToolFillFactory() override
KoToolBase * createTool(KoCanvasBase *canvas) override
KisSignalCompressor m_compressorFillUpdate
qreal m_patternRotation
void resetCursorStyle() override
void slot_sliderGrow_valueChanged(int value)
KoGroupButton * m_buttonFillWithBG
@ Reference_ColorLabeledLayers
void slot_colorSpaceChanged(const KoColorSpace *colorSpace)
void slot_optionButtonStripReference_buttonToggled(KoGroupButton *button, bool checked)
KisCompositeOpComboBox * m_comboBoxCustomCompositeOp
KConfigGroup m_configGroup
void slot_optionButtonStripDragFill_buttonToggled(KoGroupButton *button, bool checked)
KoGroupButton * m_buttonWhatToFillContiguous
void slot_checkBoxUseCustomBlendingOptions_toggled(bool checked)
KisSliderSpinBox * m_sliderCloseGap
~KisToolFill() override
void addFillingOperation(const QPoint &seedPoint)
void slot_optionButtonStripFillWith_buttonToggled(KoGroupButton *button, bool checked)
void slot_optionButtonStripContiguousFillMode_buttonToggled(KoGroupButton *button, bool checked)
@ FillMode_FillContiguousRegion
@ FillMode_FillSimilarRegions
@ ContiguousFillMode_BoundaryFill
@ ContiguousFillMode_FloodFill
void slot_comboBoxCustomCompositeOp_currentIndexChanged(int index)
KisToolFill(KoCanvasBase *canvas)
KoGroupButton * m_buttonReferenceAll
void addUpdateOperation()
KisSliderSpinBox * m_sliderCustomOpacity
int m_stopGrowingAtDarkestPixel
@ FillType_FillWithForegroundColor
@ FillType_FillWithBackgroundColor
@ FillType_FillWithPattern
void slot_angleSelectorPatternRotation_angleChanged(double value)
QString m_customCompositeOp
KisColorButton * m_buttonContiguousFillBoundaryColor
KisSliderSpinBox * m_sliderGrow
KisAngleSelector * m_angleSelectorPatternRotation
void slot_optionButtonStripWhatToFill_buttonToggled(KoGroupButton *button, bool checked)
void slot_sliderThreshold_valueChanged(int value)
void slot_checkBoxSelectionAsBoundary_toggled(bool checked)
void slot_sliderPatternScale_valueChanged(double value)
QSharedPointer< KoColor > m_referenceColor
void slot_sliderCustomOpacity_valueChanged(int value)
QPoint m_fillStartWidgetPosition
FillType m_fillType
KoColor loadContiguousFillBoundaryColorFromConfig()
KisSliderSpinBox * m_sliderFeather
KoGroupButton * m_buttonFillWithFG
void slot_sliderCloseGap_valueChanged(int value)
void deactivate() override
void slot_checkBoxUseActiveLayer_toggled(bool checked)
KisStrokeId m_fillStrokeId
KisNodeSP m_previousNode
KoColor m_contiguousFillBoundaryColor
KoGroupButton * m_buttonDragFillAny
void endAlternateAction(KoPointerEvent *event, AlternateAction action) override
bool wantsAutoScroll() const override
void loadConfiguration()
void endPrimaryAction(KoPointerEvent *event) override
KoGroupButton * m_buttonFillWithPattern
static constexpr int minimumDragDistance
void slot_widgetLabels_selectionChanged()
KoGroupButton * m_buttonDragFillDoNotUse
Reference m_reference
KisResourcesSnapshotSP m_resourcesSnapshot
KisSelectionSP m_fillMask
FillMode m_effectiveFillMode
KisSliderSpinBox * m_sliderThreshold
KoGroupButton * m_buttonContiguousFillModeBoundaryFill
KoGroupButton * m_buttonReferenceCurrent
bool m_useActiveLayer
void continueAlternateAction(KoPointerEvent *event, AlternateAction action) override
void slot_buttonStopGrowingAtDarkestPixel_toggled(bool enabled)
void slot_sliderSpread_valueChanged(int value)
QVector< QPoint > m_seedPoints
QToolButton * m_buttonStopGrowingAtDarkestPixel
KoGroupButton * m_buttonDragFillSimilar
QCheckBox * m_checkBoxSelectionAsBoundary
void beginAlternateAction(KoPointerEvent *event, AlternateAction action) override
void slot_checkBoxAntiAlias_toggled(bool checked)
KisSliderSpinBox * m_sliderSpread
KisDoubleSliderSpinBox * m_sliderPatternScale
void activate(const QSet< KoShape * > &shapes) override
KoGroupButton * m_buttonWhatToFillSimilar
void beginFilling(const QPoint &seedPoint)
void slotUpdateFill()
QList< int > m_selectedColorLabels
QTransform m_transform
ContiguousFillMode m_contiguousFillMode
QCheckBox * m_checkBoxAntiAlias
bool m_useSelectionAsBoundary
KisPaintDeviceSP m_referencePaintDevice
QSharedPointer< QRect > m_dirtyRect
QCheckBox * m_checkBoxCustomBlendingOptions
KisOptionCollectionWidget * m_optionWidget
QWidget * createOptionWidget() override
void slot_buttonContiguousFillBoundaryColor_changed(const KoColor &color)
KoGroupButton * m_buttonWhatToFillSelection
bool m_useCustomBlendingOptions
static constexpr int minimumDragDistanceSquared
void continuePrimaryAction(KoPointerEvent *event) override
KoGroupButton * m_buttonReferenceLabeled
void slot_currentNodeChanged(const KisNodeSP node)
@ ContinuousFillMode_FillSimilarRegions
@ ContinuousFillMode_FillAnyRegion
@ ContinuousFillMode_DoNotUse
void slot_buttonReset_clicked()
FillMode m_fillMode
KisMergeLabeledLayersCommand::ReferenceNodeInfoListSP m_referenceNodeList
QCheckBox * m_checkBoxUseActiveLayer
void beginPrimaryAction(KoPointerEvent *event) override
ContinuousFillMode m_continuousFillMode
KoGroupButton * m_buttonContiguousFillModeFloodFill
KisColorLabelSelectorWidget * m_widgetLabels
void slot_sliderFeather_valueChanged(int value)
qreal m_patternScale
QAction * action(const QString &name) const
void setShortcut(const QKeySequence &shortcut)
void setSection(const QString &section)
void setActivationShapeId(const QString &activationShapeId)
void setIconName(const char *iconName)
void setToolTip(const QString &tooltip)
void setPriority(int newPriority)
#define koIconNameCStr(name)
Definition kis_icon.h:28
QString button(const QWheelEvent &ev)
static const QString KRITA_TOOL_ACTIVATION_ID
Definition kis_tool.h:37
static const QString Fill
Tools that fill parts of the canvas.
AlternateAction
Definition kis_tool.h:134
KisCanvas2 * canvas