ImagingTools Core SDK
CCanvasItem.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QObject>
7#include <QtCore/QByteArray>
8#include <QtQuick/QQuickPaintedItem>
9#include <QtGui/QImage>
10#include <QtGui/QPixmap>
11#include <QtGui/QPainter>
12#include <QtGui/QPainterPath>
13#include <QtGui/QFont>
14#include <QtGui/QFontMetrics>
15
16#include <istd/TDelPtr.h>
17
18
19namespace imtqml
20{
21
22
23class CCanvasItem : public QQuickPaintedItem
24{
25 Q_OBJECT
26
27 Q_PROPERTY(double lineWidth READ lineWidth WRITE setLineWidth NOTIFY lineWidthChanged)
28 Q_PROPERTY(QString fillStyle READ fillStyle WRITE setFillStyle NOTIFY fillStyleChanged)
29 Q_PROPERTY(QString strokeStyle READ strokeStyle WRITE setStrokeStyle NOTIFY strokeStyleChanged)
30 Q_PROPERTY(QString font READ font WRITE setFont NOTIFY fontChanged)
31 Q_PROPERTY(QString lineCap READ lineCap WRITE setLineCap NOTIFY lineCapChanged)
32 Q_PROPERTY(QString lineJoin READ lineJoin WRITE setLineJoin NOTIFY lineJoinChanged)
33 Q_PROPERTY(double globalAlpha READ globalAlpha WRITE setGlobalAlpha NOTIFY globalAlphaChanged)
34
35public:
36 CCanvasItem(QQuickItem *parent = nullptr);
37 Q_INVOKABLE void paint(QPainter *painter);
38 Q_INVOKABLE void draw(/*QPainter *painter*/);
39 Q_INVOKABLE void fillRect(double x, double y, double width, double height);
40 Q_INVOKABLE void moveTo(double x, double y);
41 Q_INVOKABLE void lineTo(double x, double y);
42 Q_INVOKABLE void fillText(QString text,double x, double y);
43 Q_INVOKABLE void text(QString text,double x, double y);
44 Q_INVOKABLE void arc(double x, double y, double radius, double startAngle, double endAngle, bool anticlockwise);
45 Q_INVOKABLE void setPixmapSize(double width, double height);
46 Q_INVOKABLE QSize measureText(QString string);
47 Q_INVOKABLE void stroke();
48 Q_INVOKABLE void fill();
49 Q_INVOKABLE void beginPath();
50 Q_INVOKABLE void closePath();
51 Q_INVOKABLE void save();
52 Q_INVOKABLE void restore();
53 Q_INVOKABLE void clip();
54 Q_INVOKABLE void requestPaint();
55;
56
57 double lineWidth() const;
58 void setLineWidth(double newLineWidth);
59
60 QString fillStyle() const;
61 void setFillStyle(const QString &newFillStyle);
62
63 QString strokeStyle() const;
64 void setStrokeStyle(const QString &newStrokeStyle);
65
66 QString font() const;
67 void setFont(const QString &newFont);
68
69 QString lineCap() const;
70 void setLineCap(const QString &newLineCap);
71
72 QString lineJoin() const;
73 void setLineJoin(const QString &newLineJoin);
74
75 double globalAlpha() const;
76 void setGlobalAlpha(double newGlobalAlpha);
77
78Q_SIGNALS:
79 void paintRequired();
80
81 void lineWidthChanged();
82
83 void fillStyleChanged();
84
85 void strokeStyleChanged();
86
87 void fontChanged();
88
89 void lineCapChanged();
90
91 void lineJoinChanged();
92
93 void globalAlphaChanged();
94
95public slots:
96 void onWidthChanged();
97 void onHeightChanged();
98
99private:
100 QImage m_image;
101 QPixmap m_pixmap;
102 double m_lineWidth;
103 QPointF m_startPoint;
104 QString m_fillStyle;
105 QPainterPath m_painterPath;
106 QString m_strokeStyle;
107 QString m_font;
108 QFont m_qfont;
109 QString m_lineCap;
110 QString m_lineJoin;
111 double m_globalAlpha;
112};
113
114
115} // namespace imtqml
116
117
118Q_DECLARE_METATYPE(imtqml::CCanvasItem*)
119
120