Krita Source Code Documentation
Loading...
Searching...
No Matches
PerspectiveEllipseAssistant.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 Srirupa Datta <srirupa.sps@gmail.com>
3 */
4
5#ifndef _PERSPECTIVE_ELLIPSE_ASSISTANT_H_
6#define _PERSPECTIVE_ELLIPSE_ASSISTANT_H_
7
10#include "Ellipse.h"
11#include <QObject>
12
14{
15 Q_OBJECT
16public:
17 PerspectiveEllipseAssistant(QObject * parent = 0);
19
20
21 KisPaintingAssistantSP clone(QMap<KisPaintingAssistantHandleSP, KisPaintingAssistantHandleSP> &handleMap) const override;
22 QPointF adjustPosition(const QPointF& point, const QPointF& strokeBegin, const bool snapToAny, qreal moveThresholdPt) override;
23 void adjustLine(QPointF &point, QPointF& strokeBegin) override;
24
25 QPointF getDefaultEditorPosition() const override;
26 int numHandles() const override { return 4; }
27 bool isAssistantComplete() const override;
28
29 // implements KisAbstractPerspectiveGrid
30 bool contains(const QPointF& point) const override;
31 qreal distance(const QPointF& point) const override;
32 bool isActive() const override;
33
34protected:
35 QRect boundingRect() const override;
36 void drawAssistant(QPainter& gc, const QRectF& updateRect, const KisCoordinatesConverter* converter, bool cached, KisCanvas2* canvas, bool assistantVisible=true, bool previewVisible=true) override;
37 void drawCache(QPainter& gc, const KisCoordinatesConverter *converter, bool assistantVisible=true) override;
38private:
39 QPointF project(const QPointF& pt, const QPointF& strokeBegin);
40
41 // finds the transform from perspective coordinates (a unit square) to the document
42 bool getTransform(QPolygonF& polyOut, QTransform& transformOut);
43
44
45 bool isEllipseValid();
46 void updateCache();
47
48
49
50 explicit PerspectiveEllipseAssistant(const PerspectiveEllipseAssistant &rhs, QMap<KisPaintingAssistantHandleSP, KisPaintingAssistantHandleSP> &handleMap);
51
52
53 class Private;
54 QScopedPointer<Private> d;
55
56};
57
59{
60public:
63 QString id() const override;
64 QString name() const override;
66};
67
68#endif
KisPaintingAssistant * createPaintingAssistant() const override
void adjustLine(QPointF &point, QPointF &strokeBegin) override
QPointF adjustPosition(const QPointF &point, const QPointF &strokeBegin, const bool snapToAny, qreal moveThresholdPt) override
bool contains(const QPointF &point) const override
void drawCache(QPainter &gc, const KisCoordinatesConverter *converter, bool assistantVisible=true) override
performance layer where the graphics can be drawn from a cache instead of generated every render upda...
QPointF getDefaultEditorPosition() const override
QPointF project(const QPointF &pt, const QPointF &strokeBegin)
KisPaintingAssistantSP clone(QMap< KisPaintingAssistantHandleSP, KisPaintingAssistantHandleSP > &handleMap) const override
void drawAssistant(QPainter &gc, const QRectF &updateRect, const KisCoordinatesConverter *converter, bool cached, KisCanvas2 *canvas, bool assistantVisible=true, bool previewVisible=true) override
qreal distance(const QPointF &point) const override
bool getTransform(QPolygonF &polyOut, QTransform &transformOut)