Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_tool_brush.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2003-2004 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KIS_TOOL_BRUSH_H_
8#define KIS_TOOL_BRUSH_H_
9
10#include "kis_tool_freehand.h"
11
12#include <KisSignalMapper.h>
13
15
16#include "KoAspectButton.h"
17
19#include <kis_icon.h>
20#include <QKeySequence>
21
22#include <kconfig.h>
23#include <kconfiggroup.h>
24#include <KoIcon.h>
25
26class QCheckBox;
27class QComboBox;
28class QLabel;
29
31
32class KoCanvasBase;
35
37{
38 Q_OBJECT
45
48
51
52
53public:
55 ~KisToolBrush() override;
56
57 QWidget * createOptionWidget() override;
58
59 int smoothnessQualityMin() const;
60 int smoothnessQualityMax() const;
61 qreal smoothnessFactor() const;
62 bool smoothPressure() const;
63 int smoothingType() const;
64 bool useScalableDistance() const;
65
66 bool useDelayDistance() const;
67 qreal delayDistance() const;
68
69 bool finishStabilizedCurve() const;
70 bool stabilizeSensors() const;
71
72protected:
73 KConfigGroup m_configGroup; // only used in the multihand tool for now
74
75protected Q_SLOTS:
76 void resetCursorStyle() override;
77
78public Q_SLOTS:
79 void activate(const QSet<KoShape*> &shapes) override;
80 void deactivate() override;
84 void slotSetMagnetism(int magnetism);
85 void slotSetSmoothingType(int index);
86 void slotSetTailAggressiveness(qreal argh_rhhrr);
87 void setSmoothPressure(bool value);
89
90 void setUseDelayDistance(bool value);
91 void setDelayDistance(qreal value);
92
93 void setStabilizeSensors(bool value);
94
96
97 void updateSettingsViews() override;
98
99Q_SIGNALS:
105
110
111private:
112 void addSmoothingAction(int enumId, const QString &id);
114private:
115 QComboBox *m_cmbSmoothingType {0};
116
117 QCheckBox *m_chkAssistant {0};
119 QCheckBox *m_chkOnlyOneAssistant {0};
120 QCheckBox *m_chkSnapEraser {0};
127 QCheckBox *m_chkSmoothPressure {0};
129
130 QCheckBox *m_chkStabilizeSensors {0};
131 QCheckBox *m_chkDelayDistance {0};
133
136};
137
138
140{
141
142public:
144 : KisToolPaintFactoryBase("KritaShape/KisToolBrush") {
145
146 setToolTip(i18n("Freehand Brush Tool"));
147
148 // Temporarily
150 setIconName(koIconNameCStr("krita_tool_freehand"));
151 setShortcut(QKeySequence(Qt::Key_B));
152 setPriority(0);
154 }
155
156 KisToolBrushFactory(const QString &id)
158 {
159 }
160
162
164 return new KisToolBrush(canvas);
165 }
166
169
170};
171
172
173#endif // KIS_TOOL_BRUSH_H_
float value(const T *src, size_t ch)
qreal distance(const QPointF &p1, const QPointF &p2)
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
A container for a set of QAction objects.
The KisSignalMapper class bundles signals from identifiable senders.
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
~KisToolBrushFactory() override
KoToolBase * createTool(KoCanvasBase *canvas) override
KisToolBrushFactory(const QString &id)
QList< QAction * > createActionsImpl() override
createActionsImpl should be reimplemented if the tool needs any actions. The actions should have a va...
KisSignalMapper m_signalMapper
void addSmoothingAction(int enumId, const QString &id)
void smoothnessQualityChanged()
void resetCursorStyle() override
KConfigGroup m_configGroup
void slotSetSmoothnessDistanceKeepAspectRatio(bool value)
QCheckBox * m_chkSnapEraser
bool finishStabilizedCurve
void setUseDelayDistance(bool value)
void stabilizeSensorsChanged()
KisDoubleSliderSpinBox * m_sliderTailAggressiveness
void finishStabilizedCurveChanged()
void setDelayDistance(qreal value)
QCheckBox * m_chkDelayDistance
QCheckBox * m_chkOnlyOneAssistant
QComboBox * m_cmbSmoothingType
void updateSmoothnessDistanceLabel()
void updateSettingsViews() override
void setStabilizeSensors(bool value)
void smoothnessFactorChanged()
void slotSetMagnetism(int magnetism)
void smoothPressureChanged()
KisDoubleSliderSpinBox * m_sliderSmoothnessDistanceMin
QLabel * m_lblSmoothnessDistanceMin
void useDelayDistanceChanged()
QCheckBox * m_chkSmoothPressure
qreal smoothnessFactor
void useScalableDistanceChanged()
void setSmoothPressure(bool value)
void setFinishStabilizedCurve(bool value)
void slotSetSmoothingType(int index)
bool useScalableDistance
void slotSetTailAggressiveness(qreal argh_rhhrr)
void delayDistanceChanged()
QCheckBox * m_chkAssistant
QCheckBox * m_chkUseScalableDistance
void activate(const QSet< KoShape * > &shapes) override
KoAspectButton * m_distanceAspectButton
QCheckBox * m_chkFinishStabilizedCurve
void deactivate() override
KisSliderSpinBox * m_sliderMagnetism
void slotSetSmoothnessDistanceMax(qreal distance)
QCheckBox * m_chkStabilizeSensors
void setUseScalableDistance(bool value)
KisDoubleSliderSpinBox * m_sliderSmoothnessDistanceMax
void slotSetSmoothnessDistanceMin(qreal distance)
QWidget * createOptionWidget() override
void smoothingTypeChanged()
QLabel * m_lblSmoothnessDistanceMax
KisDoubleSliderSpinBox * m_sliderDelayDistance
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
static const QString KRITA_TOOL_ACTIVATION_ID
Definition kis_tool.h:37
static const QString Shape
Freehand and shapes like ellipses and lines.
KisCanvas2 * canvas