Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_paintop.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2002 Patrick Julien <freak@codepimps.org>
3 * SPDX-FileCopyrightText: 2004 Boudewijn Rempt <boud@valdyas.org>
4 * SPDX-FileCopyrightText: 2004 Clarence Dang <dang@kde.org>
5 * SPDX-FileCopyrightText: 2004 Adrian Page <adrian@pagenet.plus.com>
6 * SPDX-FileCopyrightText: 2004, 2010 Cyrille Berger <cberger@cberger.net>
7 *
8 * SPDX-License-Identifier: GPL-2.0-or-later
9 */
10
11#ifndef KIS_PAINTOP_H_
12#define KIS_PAINTOP_H_
13
15#include "kis_shared.h"
16#include "kis_types.h"
17
18#include <kritaimage_export.h>
19
20class QPointF;
21class KoColorSpace;
22
23class KisPainter;
26
31class KRITAIMAGE_EXPORT KisPaintOp : public KisShared
32{
33 struct Private;
34public:
35
36 KisPaintOp(KisPainter * painter);
37 virtual ~KisPaintOp();
38
45 void paintAt(const KisPaintInformation& info, KisDistanceInformation *currentDistance);
46
52 void updateSpacing(const KisPaintInformation &info, KisDistanceInformation &currentDistance)
53 const;
54
60 void updateTiming(const KisPaintInformation &info, KisDistanceInformation &currentDistance)
61 const;
62
72 virtual void paintLine(const KisPaintInformation &pi1,
73 const KisPaintInformation &pi2,
74 KisDistanceInformation *currentDistance);
75
83 virtual void paintBezierCurve(const KisPaintInformation &pi1,
84 const QPointF &control1,
85 const QPointF &control2,
86 const KisPaintInformation &pi2,
87 KisDistanceInformation *currentDistance
88 );
89
94 virtual bool canPaint() const {
95 return true;
96 }
97
101 static void splitCoordinate(qreal coordinate, qint32 *whole, qreal *fraction);
102
110 virtual std::pair<int, bool> doAsynchronousUpdate(QVector<KisRunnableStrokeJobData*> &jobs);
111
112protected:
119
124
129 virtual KisTimingInformation updateTimingImpl(const KisPaintInformation &info) const;
130
131 KisFixedPaintDeviceSP cachedDab();
132 KisFixedPaintDeviceSP cachedDab(const KoColorSpace *cs);
133
138
142 KisPaintDeviceSP source() const;
143
144private:
145 friend class KisRotationOption;
146 void setFanCornersInfo(bool fanCornersEnabled, qreal fanCornersStep);
147
148private:
149 Private* const d {nullptr};
150};
151
152
153#endif // KIS_PAINTOP_H_
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
static void paintBezierCurve(KisPaintOp *paintOp, const KisPaintInformation &pi1, const KisVector2D &control1, const KisVector2D &control2, const KisPaintInformation &pi2, KisDistanceInformation *currentDistance)
void paintLine(PaintOp &op, const KisPaintInformation &pi1, const KisPaintInformation &pi2, KisDistanceInformation *currentDistance, bool fanCornersEnabled, qreal fanCornersStep)
virtual KisSpacingInformation updateSpacingImpl(const KisPaintInformation &info) const =0
virtual bool canPaint() const
Definition kis_paintop.h:94
KisPainter * painter() const
virtual KisSpacingInformation paintAt(const KisPaintInformation &info)=0