QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RGraphicsViewWorker.h
Go to the documentation of this file.
1
20#ifndef RGRAPHICSVIEWWORKER_H
21#define RGRAPHICSVIEWWORKER_H
22
23#include "gui_global.h"
24
25#include <QPainter>
26#include <QStack>
27#include <QThread>
28
29#include "RObject.h"
30#include "RTransform.h"
31
32class QTextLayout;
34class RImageData;
35class RPainterPath;
36class RTextBasedData;
37
44class QCADGUI_EXPORT RGraphicsViewWorker : public QThread {
45 Q_OBJECT
46
47public:
48 RGraphicsViewWorker(RGraphicsViewImage& imageView, int threadId) : imageView(imageView), threadId(threadId), list(NULL), startIndex(-1), endIndex(-1) {}
49 virtual ~RGraphicsViewWorker();
50
51 enum ClearMode {
52 NoClear = 0,
53 ClearToTransparent = 1,
54 ClearToBackground = 2
55 };
56
57 void run();
58
59 virtual void init(QList<RObject::Id>& list, int start, int end);
60
62 clearMode = m;
63 }
64
66 return clearMode;
67 }
68
69 virtual QImage getImage() const = 0;
70 virtual void setImage(const QImage& img) = 0;
71
72 virtual QSize getImageSize() const = 0;
73
74 virtual void initImageBuffer(const QSize& size) = 0;
75
76
77 bool hasTransforms() const {
78 return !entityTransformStack.isEmpty();
79 }
80
81 QStack<RTransform> getEntityTransformStack() const {
82 return entityTransformStack;
83 }
84
85 void pushTransform(const RTransform& t) {
86 entityTransformStack.push(t);
87 }
88
89 void popTransform() {
90 entityTransformStack.pop();
91 }
92
93 virtual void paint();
94
95 virtual void begin() = 0;
96 virtual void end() = 0;
97
98 virtual void clear() = 0;
99
100 virtual void setAntialiasing(bool on) = 0;
101 virtual bool getAntialiasing() const = 0;
102 virtual void setBackground(const QColor& col) = 0;
103 virtual void setCompositionMode(QPainter::CompositionMode mode) = 0;
104 virtual void setFont(const QFont& font) = 0;
105
106 virtual void eraseRect(const QRectF& rect) = 0;
107
108 virtual void setClipRect(const QRectF& rect) = 0;
109 virtual void setClipping(bool on) = 0;
110 virtual void setOpacity(double opacity) = 0;
111 virtual void save() = 0;
112 virtual void restore() = 0;
113
114 virtual QTransform getTransform() = 0;
115 virtual void setTransform(const QTransform& t, bool combine = false) = 0;
116
117 virtual void translate(double x, double y) = 0;
118 virtual void scale(double x, double y) = 0;
119
120 virtual QTransform getWorldTransform() const = 0;
121 virtual void setWorldTransform(const QTransform& t, bool combine = false) = 0;
122
123 virtual void setBrush(const QBrush& brush) = 0;
124 virtual QPen getPen() const = 0;
125 virtual void setPen(const QPen& pen) = 0;
126
127 virtual void drawPoint(const QPointF& p) = 0;
128
129 virtual void paintImage(const RImageData& img, bool workingSet);
130 virtual void drawImage(int x, int y, const QImage& image) = 0;
131
132 virtual void paintText(const RTextBasedData& text, bool workingSet);
133 virtual void drawText(const QRectF& rectangle, int flags, const QString& text) = 0;
134 virtual void drawTextLayout(const QTextLayout& textLayout) = 0;
135
136 virtual void fillPath(const RPainterPath& path, const QBrush& brush) = 0;
137 virtual void drawPath(const RPainterPath& path) = 0;
138 virtual void drawLine(const QPointF& p1, const QPointF& p2) {
139 drawLine(QLineF(p1, p2));
140 }
141 virtual void drawLine(const QLineF& line) = 0;
142 virtual void strokePath(const QPainterPath& path, const QPen& pen) = 0;
143
144 virtual void drawEllipse(const QPointF& center, double rx, double ry) {
145 drawEllipse(QRectF(center.x()-rx, center.y()-ry, rx*2, ry*2));
146 }
147 virtual void drawEllipse(const QRectF& rectangle) = 0;
148
149 virtual void drawRect(const QRectF& rectangle) = 0;
150 virtual void fillRect(const QRectF& rectangle, const QBrush& brush) = 0;
151
152
153signals:
154 void finished();
155
156protected:
158 QList<RObject::Id>* list;
162
164 QStack<RTransform> entityTransformStack;
165};
166
170
171#endif
void init(void basePath)
Definition AddBlockInit.js:2
Q_DECLARE_METATYPE(RMath *)
QImage based 2d graphics view.
Definition RGraphicsViewImage.h:69
Thread worker that draws a part of a document.
Definition RGraphicsViewWorker.h:44
virtual void end()=0
virtual void begin()=0
virtual void drawText(const QRectF &rectangle, int flags, const QString &text)=0
virtual void drawLine(const QLineF &line)=0
virtual void translate(double x, double y)=0
virtual QPen getPen() const =0
virtual void drawEllipse(const QPointF &center, double rx, double ry)
Definition RGraphicsViewWorker.h:144
ClearMode
Definition RGraphicsViewWorker.h:51
virtual QImage getImage() const =0
void pushTransform(const RTransform &t)
Definition RGraphicsViewWorker.h:85
virtual QTransform getTransform()=0
virtual void initImageBuffer(const QSize &size)=0
virtual void setBackground(const QColor &col)=0
virtual QTransform getWorldTransform() const =0
virtual void drawRect(const QRectF &rectangle)=0
virtual void setBrush(const QBrush &brush)=0
virtual void save()=0
virtual void setAntialiasing(bool on)=0
virtual void clear()=0
virtual void setOpacity(double opacity)=0
bool hasTransforms() const
Definition RGraphicsViewWorker.h:77
virtual void setClipRect(const QRectF &rect)=0
virtual void drawPoint(const QPointF &p)=0
int endIndex
Definition RGraphicsViewWorker.h:160
virtual void drawImage(int x, int y, const QImage &image)=0
virtual void setTransform(const QTransform &t, bool combine=false)=0
ClearMode clearMode
Definition RGraphicsViewWorker.h:161
virtual void setClipping(bool on)=0
virtual void restore()=0
RGraphicsViewWorker(RGraphicsViewImage &imageView, int threadId)
Definition RGraphicsViewWorker.h:48
virtual void scale(double x, double y)=0
virtual void setPen(const QPen &pen)=0
virtual bool getAntialiasing() const =0
virtual void setCompositionMode(QPainter::CompositionMode mode)=0
virtual void setFont(const QFont &font)=0
virtual void setImage(const QImage &img)=0
virtual void fillRect(const QRectF &rectangle, const QBrush &brush)=0
int threadId
Definition RGraphicsViewWorker.h:157
RGraphicsViewImage & imageView
Definition RGraphicsViewWorker.h:163
void setClearMode(RGraphicsViewWorker::ClearMode m)
Definition RGraphicsViewWorker.h:61
int startIndex
Definition RGraphicsViewWorker.h:159
virtual QSize getImageSize() const =0
QStack< RTransform > getEntityTransformStack() const
Definition RGraphicsViewWorker.h:81
virtual void eraseRect(const QRectF &rect)=0
RGraphicsViewWorker::ClearMode getClearMode() const
Definition RGraphicsViewWorker.h:65
QList< RObject::Id > * list
Definition RGraphicsViewWorker.h:158
virtual void fillPath(const RPainterPath &path, const QBrush &brush)=0
QStack< RTransform > entityTransformStack
Definition RGraphicsViewWorker.h:164
virtual void drawEllipse(const QRectF &rectangle)=0
virtual void setWorldTransform(const QTransform &t, bool combine=false)=0
virtual void drawTextLayout(const QTextLayout &textLayout)=0
virtual void drawLine(const QPointF &p1, const QPointF &p2)
Definition RGraphicsViewWorker.h:138
virtual void drawPath(const RPainterPath &path)=0
virtual void strokePath(const QPainterPath &path, const QPen &pen)=0
void popTransform()
Definition RGraphicsViewWorker.h:89
Stores and manages all data that defines the geometry and appearance of a raster image entity.
Definition RImageData.h:41
Extended painter path with a z-level and a pen.
Definition RPainterPath.h:48
Stores and manages all data that defines the geometry and appearance of a text based entity (text,...
Definition RTextBasedData.h:68
Copyright (c) 2011-2020 by Andrew Mustun.
Definition RTransform.h:37
#define QCADGUI_EXPORT
Definition gui_global.h:10
#define NULL
Definition opennurbs_system.h:256