Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_tool_line.h
Go to the documentation of this file.
1/*
2 * kis_tool_line.h - part of Krayon
3 *
4 * SPDX-FileCopyrightText: 2000 John Califf <jcaliff@comuzone.net>
5 * SPDX-FileCopyrightText: 2002 Patrick Julien <freak@codepimps.org>
6 * SPDX-FileCopyrightText: 2004 Boudewijn Rempt <boud@valdyas.org>
7 *
8 * SPDX-License-Identifier: GPL-2.0-or-later
9 */
10
11#ifndef KIS_TOOL_LINE_H_
12#define KIS_TOOL_LINE_H_
13
14#include "kis_tool_shape.h"
15
16#include <kconfig.h>
17#include <kconfiggroup.h>
18#include <QScopedPointer>
19#include <kis_global.h>
20#include <kis_types.h>
24#include <kis_icon.h>
25#include <KoIcon.h>
26
27class QPoint;
28class KoCanvasBase;
29class QCheckBox;
32
33
35{
36 Q_OBJECT
37
38public:
40 ~KisToolLine() override;
41
42 void requestStrokeCancellation() override;
43 void requestStrokeEnd() override;
44
45 void beginPrimaryAction(KoPointerEvent *event) override;
46 void continuePrimaryAction(KoPointerEvent *event) override;
47 void endPrimaryAction(KoPointerEvent *event) override;
48 void activate(const QSet<KoShape*> &shapes) override;
49 void deactivate() override;
50 bool primaryActionSupportsHiResEvents() const override;
51
52 void paint(QPainter& gc, const KoViewConverter &converter) override;
53
54 QString quickHelp() const override;
55
56 bool supportsPaintingAssistants() const override;
57
58protected Q_SLOTS:
59 void resetCursorStyle() override;
60
61private Q_SLOTS:
62 void updateStroke();
63 void setUseSensors(bool value);
64 void setShowPreview(bool value);
65 void setShowGuideline(bool value);
66 void setSnapToAssistants(bool value);
67 void setSnapEraser(bool value);
68
69
70private:
71 void paintLine(QPainter& gc, const QRect& rc);
72 QPointF straightLine(QPointF point);
73 QPointF snapToAssistants(QPointF point);
74 void updateGuideline();
75 void showSize();
76 void updatePreviewTimer(bool showGuide);
77 QWidget* createOptionWidget() override;
78
79 void endStroke();
80 void cancelStroke();
81
82private:
83 bool m_showGuideline {true};
84
85 QPointF m_startPoint; // start point to use when painting (after the line was snapped to assistant already)
86 QPointF m_endPoint;
87 QPointF m_originalStartPoint; // original starting point (to use when searching for suitable assistant)
89
90 bool m_strokeIsRunning {false};
91
92
93 QCheckBox *m_chkUseSensors {nullptr};
94 QCheckBox *m_chkShowPreview {nullptr};
95 QCheckBox *m_chkShowGuideline {nullptr};
96 QCheckBox *m_chkSnapToAssistants {nullptr};
97 QCheckBox *m_chkSnapEraser {nullptr};
98
99 QScopedPointer<KisPaintingInformationBuilder> m_infoBuilder;
100 QScopedPointer<KisToolLineHelper> m_helper;
103
104 KConfigGroup configGroup;
105};
106
107
109{
110
111public:
112
114 : KisToolPaintFactoryBase("KritaShape/KisToolLine") {
115 setToolTip(i18n("Line Tool"));
116 // Temporarily
119 setPriority(1);
120 setIconName(koIconNameCStr("krita_tool_line"));
121 }
122
124
126 return new KisToolLine(canvas);
127 }
128
129};
130
131
132
133
134#endif //KIS_TOOL_LINE_H_
float value(const T *src, size_t ch)
~KisToolLineFactory() override
KoToolBase * createTool(KoCanvasBase *canvas) override
KisSignalCompressor m_strokeUpdateCompressor
QCheckBox * m_chkUseSensors
QPointF snapToAssistants(QPointF point)
QPointF m_startPoint
void paintLine(QPainter &gc, const QRect &rc)
void endPrimaryAction(KoPointerEvent *event) override
void setShowPreview(bool value)
bool m_showGuideline
void setSnapToAssistants(bool value)
QCheckBox * m_chkShowGuideline
void setUseSensors(bool value)
void cancelStroke()
QString quickHelp() const override
void setSnapEraser(bool value)
bool m_strokeIsRunning
QCheckBox * m_chkSnapToAssistants
bool supportsPaintingAssistants() const override
void paint(QPainter &gc, const KoViewConverter &converter) override
KisToolLine(KoCanvasBase *canvas)
QPointF m_endPoint
QScopedPointer< KisToolLineHelper > m_helper
QScopedPointer< KisPaintingInformationBuilder > m_infoBuilder
QPointF m_originalStartPoint
void resetCursorStyle() override
QCheckBox * m_chkShowPreview
bool primaryActionSupportsHiResEvents() const override
KisSignalCompressor m_longStrokeUpdateCompressor
QPointF straightLine(QPointF point)
void setShowGuideline(bool value)
void beginPrimaryAction(KoPointerEvent *event) override
KConfigGroup configGroup
void deactivate() override
void activate(const QSet< KoShape * > &shapes) override
QPointF m_lastUpdatedPoint
void updateGuideline()
void requestStrokeCancellation() override
void continuePrimaryAction(KoPointerEvent *event) override
QWidget * createOptionWidget() override
void updateStroke()
void requestStrokeEnd() override
~KisToolLine() override
QCheckBox * m_chkSnapEraser
void updatePreviewTimer(bool showGuide)
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