Krita Source Code Documentation
Loading...
Searching...
No Matches
KisMaskedFreehandStrokePainter.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2017 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9#include "kis_assert.h"
10#include "kis_painter.h"
12#include "kis_paintop.h"
13#include "kis_paintop_preset.h"
14
15
17 : m_stroke(strokeData),
18 m_mask(maskData)
19{
20}
21
26
27template <class Func>
29{
31 func(m_stroke);
32
33 if (m_mask) {
34 func(m_mask);
35 }
36}
37
44
51
52void KisMaskedFreehandStrokePainter::paintBezierCurve(const KisPaintInformation &pi1, const QPointF &control1, const QPointF &control2, const KisPaintInformation &pi2)
53{
55 data->painter->paintBezierCurve(pi1, control1, control2, pi2, data->dragDistance);
56 });
57}
58
59void KisMaskedFreehandStrokePainter::paintPolyline(const QVector<QPointF> &points, int index, int numPoints)
60{
62 data->painter->paintPolyline(points, index, numPoints);
63 });
64}
65
72
79
86
88{
90 data->painter->paintPainterPath(path);
91 });
92}
93
94void KisMaskedFreehandStrokePainter::drawPainterPath(const QPainterPath &path, const QPen &pen)
95{
97 data->painter->drawPainterPath(path, pen);
98 });
99}
100
101void KisMaskedFreehandStrokePainter::drawAndFillPainterPath(const QPainterPath &path, const QPen &pen, const KoColor &customColor)
102{
104 data->painter->setBackgroundColor(customColor);
105 data->painter->fillPainterPath(path);
106 data->painter->drawPainterPath(path, pen);
107 });
108}
109
111{
113
114 std::pair<int, bool> result =
116
117 if (m_mask) {
119 std::pair<int, bool> maskMetrics =
121
122 result.first = std::max(result.first, maskMetrics.first);
123 result.second = result.second | maskMetrics.second;
124
125 jobs.append(maskJobs);
126 }
127
128 return result;
129}
130
132{
134
135 bool result = m_stroke->painter->hasDirtyRegion();
136
137 if (m_mask) {
138 result |= m_mask->painter->hasDirtyRegion();
139 }
140
141 return result;
142}
143
156
158{
159 return m_mask;
160}
161
KisDistanceInformation * dragDistance
std::pair< int, bool > doAsynchronousUpdate(QVector< KisRunnableStrokeJobData * > &jobs)
void paintPolygon(const QVector< QPointF > &points)
KisMaskedFreehandStrokePainter(KisFreehandStrokeInfo *strokeData, KisFreehandStrokeInfo *maskData)
void paintPainterPath(const QPainterPath &path)
void paintAt(const KisPaintInformation &pi)
void drawPainterPath(const QPainterPath &path, const QPen &pen)
void paintBezierCurve(const KisPaintInformation &pi1, const QPointF &control1, const QPointF &control2, const KisPaintInformation &pi2)
void paintLine(const KisPaintInformation &pi1, const KisPaintInformation &pi2)
void drawAndFillPainterPath(const QPainterPath &path, const QPen &pen, const KoColor &customColor)
void paintPolyline(const QVector< QPointF > &points, int index=0, int numPoints=-1)
void drawPainterPath(const QPainterPath &path, const QPen &pen, const QRect &requestedRect)
void paintPainterPath(const QPainterPath &path)
void paintPolygon(const vQPointF &points)
void paintPolyline(const QVector< QPointF > &points, int index=0, int numPoints=-1)
void paintEllipse(const QRectF &rect)
KisPaintOpPresetSP preset() const
Return the paintop preset.
void paintAt(const KisPaintInformation &pos, KisDistanceInformation *savedDist)
void setBackgroundColor(const KoColor &color)
KisPaintOp * paintOp
bool hasDirtyRegion() const
void paintBezierCurve(const KisPaintInformation &pi1, const QPointF &control1, const QPointF &control2, const KisPaintInformation &pi2, KisDistanceInformation *currentDistance)
void fillPainterPath(const QPainterPath &path)
void paintRect(const QRectF &rect)
QVector< QRect > takeDirtyRegion()
void paintLine(const KisPaintInformation &pi1, const KisPaintInformation &pi2, KisDistanceInformation *currentDistance)
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130
virtual std::pair< int, bool > doAsynchronousUpdate(QVector< KisRunnableStrokeJobData * > &jobs)