Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_tool_measure.h
Go to the documentation of this file.
1/*
2 *
3 * SPDX-FileCopyrightText: 2007 Sven Langkamp <sven.langkamp@gmail.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8#ifndef KIS_TOOL_MEASURE_H_
9#define KIS_TOOL_MEASURE_H_
10
11#include <QLabel>
12
13#include <KoUnit.h>
14
15#include "kis_tool.h"
16#include "kis_global.h"
17#include "kis_types.h"
18#include "KoToolFactoryBase.h"
20#include <kis_icon.h>
21
22#include <QVector2D>
23
24class QPointF;
25class QWidget;
26class QVector2D;
27
28class KoCanvasBase;
29
30
31class KisToolMeasureOptionsWidget : public QWidget
32{
33 Q_OBJECT
34
35public:
36 KisToolMeasureOptionsWidget(QWidget* parent, KisImageWSP image);
37
38public Q_SLOTS:
39 void slotSetDistance(double distance);
40 void slotSetAngle(double angle);
41 void slotUnitChanged(int index);
42 void slotResolutionChanged(double xRes, double yRes);
43
44private:
45 void updateDistance();
46
47 QLabel* m_angleLabel {nullptr};
48 double m_distance {0.0};
49public:
50 QLabel* m_distanceLabel {nullptr};
53};
54
55class KisToolMeasure : public KisTool
56{
57
58 Q_OBJECT
59
60public:
62 ~KisToolMeasure() override;
63
64 void beginPrimaryAction(KoPointerEvent *event) override;
65 void continuePrimaryAction(KoPointerEvent *event) override;
66 void endPrimaryAction(KoPointerEvent *event) override;
68
69 QPointF lockedAngle(QPointF pos);
70
71 void paint(QPainter& gc, const KoViewConverter &converter) override;
72
73 QWidget * createOptionWidget() override;
74
75Q_SIGNALS:
77 void sigAngleChanged(double angle);
78
79private:
80 QRectF boundingRect();
81 double angle();
82 double distance();
83
84private:
86
87 QPointF m_startPos {QPointF(0, 0)};
88 QPointF m_endPos {QPointF(0, 0)};
89 QVector2D m_baseLineVec {QPointF(1, 0)};
90 bool m_chooseBaseLineVec {false};
91};
92
93
95{
96
97public:
98
100 : KoToolFactoryBase("KritaShape/KisToolMeasure") {
102 setToolTip(i18n("Measure Tool"));
103 setIconName(koIconNameCStr("krita_tool_measure"));
104 setPriority(1);
106 }
107
109
111 return new KisToolMeasure(canvas);
112 }
113
114};
115
116
117
118
119#endif //KIS_TOOL_MEASURE_H_
qreal distance(const QPointF &p1, const QPointF &p2)
KoToolBase * createTool(KoCanvasBase *canvas) override
void slotSetAngle(double angle)
void slotSetDistance(double distance)
KisToolMeasureOptionsWidget(QWidget *parent, KisImageWSP image)
void slotResolutionChanged(double xRes, double yRes)
void continuePrimaryAction(KoPointerEvent *event) override
KisToolMeasure(KoCanvasBase *canvas)
QVector2D m_baseLineVec
void sigAngleChanged(double angle)
void endPrimaryAction(KoPointerEvent *event) override
void showDistanceAngleOnCanvas()
QPointF lockedAngle(QPointF pos)
QWidget * createOptionWidget() override
~KisToolMeasure() override
void paint(QPainter &gc, const KoViewConverter &converter) override
void beginPrimaryAction(KoPointerEvent *event) override
void sigDistanceChanged(double distance)
KisToolMeasureOptionsWidget * m_optionsWidget
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 View
Assistance tools: guides, reference, etc.
KisCanvas2 * canvas