Krita Source Code Documentation
Loading...
Searching...
No Matches
KisToolBasicBrushBase.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 Deif Lou <ginoba@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KISTOOLBASICBRUSHBASE_H
8#define KISTOOLBASICBRUSHBASE_H
9
10#include <kis_tool_shape.h>
11#include <kis_cursor.h>
12
14{
15 Q_OBJECT
16
17public:
22
24 ToolType type,
25 const QCursor & cursor=KisCursor::load("tool_outline_selection_cursor.png", 5, 5));
26 ~KisToolBasicBrushBase() override;
27
28 void mouseMoveEvent(KoPointerEvent *event) override;
29 void beginPrimaryAction(KoPointerEvent *event) override;
30 void continuePrimaryAction(KoPointerEvent *event) override;
31 void endPrimaryAction(KoPointerEvent *event) override;
37 void paint(QPainter& gc, const KoViewConverter &converter) override;
38
39 qreal pressureToCurve(qreal pressure);
40
41public Q_SLOTS:
42 void activate(const QSet<KoShape*> &shapes) override;
43 void deactivate() override;
44 void setPreviewColor(const QColor &color);
45
46protected:
47 virtual void finishStroke(const QPainterPath& stroke) = 0;
48 KisOptimizedBrushOutline getOutlinePath(const QPointF &documentPos,
49 const KoPointerEvent *event,
50 KisPaintOpSettings::OutlineMode outlineMode) override;
51
52protected Q_SLOTS:
53 void updateSettings();
54 void resetCursorStyle() override;
55
56private:
57 static constexpr int levelOfPressureResolution = 1024;
58 static constexpr int feedbackLineWidth{2};
59
60 QPainterPath m_path;
62 qreal m_lastPressure {1.0};
64
69
74
76
77 QPainterPath generateSegment(const QPointF &point1, qreal radius1, const QPointF &point2, qreal radius2) const;
78 void update(const QRectF &strokeSegmentRect);
79};
80
81#endif
static QCursor load(const QString &cursorName, int hotspotX=-1, int hotspotY=-1)
void update(const QRectF &strokeSegmentRect)
void continueAlternateAction(KoPointerEvent *event, AlternateAction action) override
qreal pressureToCurve(qreal pressure)
KisToolBasicBrushBase(KoCanvasBase *canvas, ToolType type, const QCursor &cursor=KisCursor::load("tool_outline_selection_cursor.png", 5, 5))
KisOptimizedBrushOutline getOutlinePath(const QPointF &documentPos, const KoPointerEvent *event, KisPaintOpSettings::OutlineMode outlineMode) override
void beginAlternateAction(KoPointerEvent *event, AlternateAction action) override
void endPrimaryAction(KoPointerEvent *event) override
virtual void finishStroke(const QPainterPath &stroke)=0
QPainterPath generateSegment(const QPointF &point1, qreal radius1, const QPointF &point2, qreal radius2) const
void deactivateAlternateAction(AlternateAction action) override
static constexpr int levelOfPressureResolution
void activate(const QSet< KoShape * > &shapes) override
void mouseMoveEvent(KoPointerEvent *event) override
void setPreviewColor(const QColor &color)
void paint(QPainter &gc, const KoViewConverter &converter) override
void endAlternateAction(KoPointerEvent *event, AlternateAction action) override
QVector< qreal > m_pressureSamples
void beginPrimaryAction(KoPointerEvent *event) override
void continuePrimaryAction(KoPointerEvent *event) override
void activateAlternateAction(AlternateAction action) override
static constexpr int feedbackLineWidth
QAction * action(const QString &name) const
OutlineStyle
Definition kis_global.h:53
@ OUTLINE_FULL
Definition kis_global.h:56
QCursor cursor
Definition kis_tool.cc:64
AlternateAction
Definition kis_tool.h:134
KisCanvas2 * canvas