Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_tool_freehand_helper.h
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com>
3
*
4
* SPDX-License-Identifier: GPL-2.0-or-later
5
*/
6
7
#ifndef __KIS_TOOL_FREEHAND_HELPER_H
8
#define __KIS_TOOL_FREEHAND_HELPER_H
9
10
#include <QObject>
11
#include <QVector>
12
13
#include "
kis_types.h
"
14
#include "kritaui_export.h"
15
#include <
brushengine/kis_paint_information.h
>
16
#include "
kis_default_bounds.h
"
17
#include <
brushengine/kis_paintop_settings.h
>
18
#include "
kis_smoothing_options.h
"
19
#include "
kundo2magicstring.h
"
20
21
22
class
KoPointerEvent
;
23
class
KoCanvasResourceProvider
;
24
class
KisPaintingInformationBuilder
;
25
class
KisStrokesFacade
;
26
class
KisPostExecutionUndoAdapter
;
27
class
KisPaintOp
;
28
class
KisFreehandStrokeInfo
;
29
30
31
class
KRITAUI_EXPORT
KisToolFreehandHelper
:
public
QObject
32
{
33
Q_OBJECT
34
35
public
:
36
37
KisToolFreehandHelper
(
KisPaintingInformationBuilder
*infoBuilder,
38
KoCanvasResourceProvider
*resourceManager,
39
const
KUndo2MagicString
&transactionText =
KUndo2MagicString
(),
40
KisSmoothingOptions
*smoothingOptions = 0);
41
~KisToolFreehandHelper
()
override
;
42
43
void
setSmoothness(
KisSmoothingOptionsSP
smoothingOptions);
44
KisSmoothingOptionsSP
smoothingOptions()
const
;
45
46
bool
isRunning()
const
;
47
48
void
cursorMoved(
const
QPointF &cursorPos);
49
60
void
initPaint(
KoPointerEvent
*event,
61
const
QPointF &pixelCoords,
62
KisImageWSP
image,
63
KisNodeSP
currentNode,
64
KisStrokesFacade
*strokesFacade,
65
KisNodeSP
overrideNode = 0,
66
KisDefaultBoundsBaseSP
bounds
= 0);
67
void
paintEvent(
KoPointerEvent
*event );
68
void
endPaint();
69
70
KisOptimizedBrushOutline
paintOpOutline(
const
QPointF &savedCursorPos,
71
const
KoPointerEvent
*event,
72
const
KisPaintOpSettingsSP
globalSettings,
73
KisPaintOpSettings::OutlineMode
mode)
const
;
74
75
Q_SIGNALS:
82
void
requestExplicitUpdateOutline
();
83
84
protected
:
85
void
cancelPaint();
86
int
elapsedStrokeTime()
const
;
87
88
void
initPaintImpl(qreal startAngle,
89
const
KisPaintInformation
&pi,
90
KoCanvasResourceProvider
*resourceManager,
91
KisImageWSP
image,
92
KisNodeSP
node,
93
KisStrokesFacade
*strokesFacade,
94
KisNodeSP
overrideNode = 0,
95
KisDefaultBoundsBaseSP
bounds
= 0);
96
97
KoCanvasResourceProvider
*resourceManager()
const
;
98
99
protected
:
100
101
virtual
void
createPainters(
QVector<KisFreehandStrokeInfo*>
&strokeInfos,
102
const
KisDistanceInformation
&startDist);
103
104
// lo-level methods for painting primitives
105
106
void
paintAt(
int
strokeInfoId,
const
KisPaintInformation
&pi);
107
108
void
paintLine(
int
strokeInfoId,
109
const
KisPaintInformation
&pi1,
110
const
KisPaintInformation
&pi2);
111
112
void
paintBezierCurve
(
int
strokeInfoId,
113
const
KisPaintInformation
&pi1,
114
const
QPointF &control1,
115
const
QPointF &control2,
116
const
KisPaintInformation
&pi2);
117
118
// hi-level methods for painting primitives
119
120
virtual
void
paintAt(
const
KisPaintInformation
&pi);
121
122
virtual
void
paintLine(
const
KisPaintInformation
&pi1,
123
const
KisPaintInformation
&pi2);
124
125
virtual
void
paintBezierCurve
(
const
KisPaintInformation
&pi1,
126
const
QPointF &control1,
127
const
QPointF &control2,
128
const
KisPaintInformation
&pi2);
129
130
private
:
131
void
paint(
KisPaintInformation
&info );
132
void
paintBezierSegment(
KisPaintInformation
pi1,
KisPaintInformation
pi2,
133
QPointF tangent1, QPointF tangent2
134
);
135
136
void
stabilizerStart(
KisPaintInformation
firstPaintInfo);
137
void
stabilizerEnd();
138
KisPaintInformation
getStabilizedPaintInfo(
const
QQueue<KisPaintInformation> &queue,
139
const
KisPaintInformation
&lastPaintInfo);
140
int
computeAirbrushTimerInterval()
const
;
141
142
qreal currentZoom()
const
;
143
qreal currentPhysicalZoom()
const
;
144
145
private
Q_SLOTS:
146
void
finishStroke();
147
void
doAirbrushing();
148
void
stabilizerPollAndPaint();
149
void
slotSmoothingTypeChanged();
150
151
private
:
152
struct
Private
;
153
Private
*
const
m_d
;
154
};
155
156
#endif
/* __KIS_TOOL_FREEHAND_HELPER_H */
KUndo2MagicString
Definition
kundo2magicstring.h:40
KisFreehandStrokeInfo
Definition
KisFreehandStrokeInfo.h:21
KisOptimizedBrushOutline
Definition
KisOptimizedBrushOutline.h:27
KisPaintInformation
Definition
kis_paint_information.h:51
KisPaintingInformationBuilder
Definition
kis_painting_information_builder.h:24
KisPinnedSharedPtr< KisPaintOpSettings >
KisPostExecutionUndoAdapter
Definition
kis_post_execution_undo_adapter.h:28
KisSharedPtr< KisNode >
KisSmoothingOptions
Definition
kis_smoothing_options.h:17
KisStrokesFacade
Definition
kis_image_interfaces.h:21
KisToolFreehandHelper
Definition
kis_tool_freehand_helper.h:32
KisToolFreehandHelper::m_d
Private *const m_d
Definition
kis_tool_freehand_helper.h:153
KisToolFreehandHelper::requestExplicitUpdateOutline
void requestExplicitUpdateOutline()
KisWeakSharedPtr< KisImage >
KoCanvasResourceProvider
Definition
KoCanvasResourceProvider.cpp:38
KoPointerEvent
Definition
KoPointerEvent.cpp:92
QList
Definition
KisQStringListFwd.h:16
QSharedPointer< KisSmoothingOptions >
bounds
#define bounds(x, a, b)
Definition
kis_curve_widget.cpp:46
kis_default_bounds.h
kis_paint_information.h
paintBezierCurve
static void paintBezierCurve(KisPaintOp *paintOp, const KisPaintInformation &pi1, const KisVector2D &control1, const KisVector2D &control2, const KisPaintInformation &pi2, KisDistanceInformation *currentDistance)
Definition
kis_paintop.cc:98
kis_paintop_settings.h
kis_smoothing_options.h
kis_types.h
kundo2magicstring.h
Private
Definition
SvgTransformParser.cpp:20
KisDistanceInformation
Definition
kis_distance_information.cpp:29
KisPaintOpSettings::OutlineMode
Definition
kis_paintop_settings.h:177
KisPaintOp
Definition
kis_paintop.cc:39
libs
ui
tool
kis_tool_freehand_helper.h
Generated at
2025-11-04 02:30:02+01:00
from
Krita
branch
master
, commit
c9dde2e79561a8aea4a7e8d9ac99c98a7bac9e52