OpendTect  6.3
odgraphicsitem.h
Go to the documentation of this file.
1 #ifndef odgraphicsitem_h
2 #define odgraphicsitem_h
3 
4 /*+
5 ________________________________________________________________________
6 
7  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
8  Author: Nanne Hemstra
9  Date: April 2008
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include <QGraphicsItem>
15 #include <QPolygonF>
16 #include <QString>
17 #include <QTextOption>
18 #include <QMutex>
19 #include <QWaitCondition>
20 #include <QFont>
21 
22 #include "draw.h"
23 #include "notify.h"
24 
25 class uiPixmap;
26 
27 static int ODGraphicsType = 100000;
28 
30 {
31 public:
32  virtual void highlight() {}
33  virtual void unHighlight() {}
34 
35  virtual void setQPen(const QPen&) {}
36 };
37 
38 
39 class ODGraphicsPointItem : public QAbstractGraphicsShapeItem
40 {
41 public:
43 
44  QRectF boundingRect() const;
45  void paint(QPainter*,const QStyleOptionGraphicsItem*,
46  QWidget*);
47 
48  void drawPoint(QPainter*);
49  void setHighLight( bool hl )
50  { highlight_ = hl ; }
51 
52  virtual int type() const { return ODGraphicsType+1; }
53 
54 protected:
55  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
56  bool highlight_;
57 };
58 
59 
60 
61 class ODGraphicsMarkerItem : public QAbstractGraphicsShapeItem
62 {
63 public:
65  virtual ~ODGraphicsMarkerItem();
66 
67  QRectF boundingRect() const;
68  void paint(QPainter*,const QStyleOptionGraphicsItem*,
69  QWidget*);
70  static void drawMarker(QPainter&,OD::MarkerStyle2D::Type,
71  float,float);
72 
73  void setMarkerStyle(const OD::MarkerStyle2D&);
74  void setFill( bool fill ) { fill_ = fill; }
75  void setFillColor( const Color& col )
76  { fillcolor_ = col; }
77  void setSideLength( int side ) { side_ = side; }
78 
79  virtual int type() const { return ODGraphicsType+2; }
80 
81 protected:
82  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
83  QRectF boundingrect_;
86  bool fill_;
87  int side_;
88 };
89 
90 
91 class ODGraphicsPixmapItem : public QGraphicsPixmapItem
92 {
93 public:
96 
97  void paint(QPainter*,const QStyleOptionGraphicsItem*,
98  QWidget*);
99 
100  virtual int type() const { return ODGraphicsType+3; }
101  void setPaintInCenter(bool);
102 
103 protected:
104  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
105  virtual void hoverEnterEvent(QGraphicsSceneHoverEvent*);
106  virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent*);
107 
109 
110 };
111 
112 
113 class ODGraphicsArrowItem : public QAbstractGraphicsShapeItem
114 {
115 public:
117 
118  QRectF boundingRect() const;
119  void paint(QPainter*,const QStyleOptionGraphicsItem*,
120  QWidget*);
121 
122  void drawArrow(QPainter&);
123  double getAddedAngle(double,float);
124  QPoint getEndPoint(const QPoint&,double,double);
125  void drawArrowHead(QPainter&,const QPoint&,
126  const QPoint&);
127  void setArrowStyle( const OD::ArrowStyle& arrowstyle)
128  { arrowstyle_ = arrowstyle ; }
129  void setArrowSize( const int arrowsz )
130  { arrowsz_ = arrowsz ; }
131  void setLineStyle(QPainter&,const OD::LineStyle&);
132 
133  virtual int type() const { return ODGraphicsType+4; }
134 
135 protected:
136  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
137 
139  int arrowsz_;
140 };
141 
142 
143 class ODGraphicsTextItem : public QAbstractGraphicsShapeItem
144 {
145 public:
147 
148  QRectF boundingRect() const;
149  void paint(QPainter*,const QStyleOptionGraphicsItem*,
150  QWidget*);
151 
152  void setText(const QString&);
153  void setFont(const QFont&);
154  QFont getFont() const;
155 
156  void setVAlignment(const Qt::Alignment&);
157  void setHAlignment(const Qt::Alignment&);
158 
159  virtual int type() const { return ODGraphicsType+5; }
160 
161 protected:
162  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
163  QPointF getAlignment() const;
164 
165  QFont font_;
166  QString text_;
167  Qt::Alignment hal_;
168  Qt::Alignment val_;
169 };
170 
171 
172 class ODGraphicsAdvancedTextItem : public QGraphicsTextItem
173 {
174 public:
176 
177 protected:
178  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
179 };
180 
181 
182 class ODGraphicsPathItem : public QGraphicsPathItem
183  , public ODGraphicsHighlightItem
184 {
185 public:
188 
189  void set(const QPainterPath&);
190  QPainterPath shape() const;
191 
192  void setQPen(const QPen& pen);
193  void highlight();
194  void unHighlight();
195 
196 protected:
197  QPainterPath path_;
198  QPen& mypen_;
199 };
200 
201 
202 class ODGraphicsPolyLineItem : public QAbstractGraphicsShapeItem
203  , public ODGraphicsHighlightItem
204 {
205 public:
208 
209  QRectF boundingRect() const;
210  void paint(QPainter*,const QStyleOptionGraphicsItem*,
211  QWidget*);
212  QPainterPath shape() const;
213 
214  void setPolyLine(const QPolygonF&,bool closed);
215  void setFillRule(Qt::FillRule);
216  bool isEmpty() const;
217  void setEmpty();
218 
219  void setQPen(const QPen& pen);
220  void highlight();
221  void unHighlight();
222 
223  virtual int type() const { return ODGraphicsType+6; }
224 
225 protected:
226  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
227 
228  bool closed_;
229  QPolygonF qpolygon_;
230  Qt::FillRule fillrule_;
231  QPainterPath path_;
232  QPen& mypen_;
233 };
234 
235 
236 class ODGraphicsMultiColorPolyLineItem : public QGraphicsItem
237  , public ODGraphicsHighlightItem
238 {
239 public:
242 
243  QRectF boundingRect() const;
244  void paint(QPainter*,const QStyleOptionGraphicsItem*,
245  QWidget*);
246 
247  void setPolyLine(const QPolygonF&);
248  void setQPens(const QVector<QPen>&);
249 
250  void highlight() { highlight_ = true; }
251  void unHighlight() { highlight_ = false; }
252 
253  virtual int type() const { return ODGraphicsType+7; }
254 
255 protected:
256 
257  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
258 
260  QPolygonF qpolygon_;
261  QVector<QPen> qpens_;
262 };
263 
264 
265 class ODGraphicsLineItem : public QGraphicsItem , public ODGraphicsHighlightItem
266 {
267 public:
270 
271  QRectF boundingRect() const;
272  void paint(QPainter*,const QStyleOptionGraphicsItem*,
273  QWidget*);
274 
275  void setLine(qreal,qreal,qreal,qreal);
276  void setLine(const QLineF&);
277 
278  void setQPen(const QPen&);
279  const QPen& getQpen() const { return qpen_; }
280 
281  void highlight() { highlight_ = true; }
282  void unHighlight() { highlight_ = false; }
283 
284  virtual int type() const { return ODGraphicsType+8; }
285 
286 protected:
287 
288  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
289 
290  QLineF qline_;
292  QPen& qpen_;
293 };
294 
295 
296 class ODGraphicsItemGroup : public QGraphicsItemGroup
297 {
298 public:
300 
301  QRectF boundingRect() const;
302  void paint(QPainter*,const QStyleOptionGraphicsItem*,
303  QWidget*);
304 protected:
305  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
306 
307 };
308 
309 
310 class ODGraphicsDynamicImageItem : public QGraphicsItem, public CallBacker
311 {
312 public:
314 
315  QRectF boundingRect() const { return bbox_; }
316  void paint(QPainter*,const QStyleOptionGraphicsItem*,
317  QWidget*);
318 
319  void setImage(bool isdynamic,const QImage&,
320  const QRectF&);
321  bool updateResolution(const QPainter*);
322  const QRectF& wantedWorldRect() const;
323  const QSize& wantedScreenSize() const;
324 
325  virtual int type() const { return ODGraphicsType+9; }
326 
328  bool isSnapshot() const;
334 protected:
335  virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
336 
337  QRectF wantedwr_;
339 
340  QMutex imagelock_;
341  QWaitCondition imagecond_;
345  bool dynamicrev_[2];
347  QImage baseimage_;
348  QRectF bbox_;
349  bool baserev_[2];
351 
352  PtrMan<QPixmap> basepixmap_; //Only access in paint
353  PtrMan<QPixmap> dynamicpixmap_; //Only access in paint
354  QRectF dynamicpixmapbbox_; //Only access in paint
355 
356 };
357 
358 #endif
PtrMan< QPixmap > dynamicpixmap_
Definition: odgraphicsitem.h:353
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
virtual int type() const
Definition: odgraphicsitem.h:325
int side_
Definition: odgraphicsitem.h:87
Definition: odgraphicsitem.h:39
Definition: odgraphicsitem.h:113
QFont font_
Definition: odgraphicsitem.h:165
Definition: odgraphicsitem.h:236
QVector< QPen > qpens_
Definition: odgraphicsitem.h:261
void setFillColor(const Color &col)
Definition: odgraphicsitem.h:75
void setFill(bool fill)
Definition: odgraphicsitem.h:74
PtrMan< QPixmap > basepixmap_
Definition: odgraphicsitem.h:352
Definition: odgraphicsitem.h:91
Definition: draw.h:119
QPolygonF qpolygon_
Definition: odgraphicsitem.h:260
void highlight()
Definition: odgraphicsitem.h:281
bool paintincenter_
Definition: odgraphicsitem.h:108
QPen & mypen_
Definition: odgraphicsitem.h:232
Qt::Alignment val_
Definition: odgraphicsitem.h:168
Color fillcolor_
Definition: odgraphicsitem.h:85
void unHighlight()
Definition: odgraphicsitem.h:282
QImage dynamicimage_
Definition: odgraphicsitem.h:343
void highlight()
Definition: odgraphicsitem.h:250
QRectF wantedwr_
Definition: odgraphicsitem.h:337
Notifier< ODGraphicsDynamicImageItem > wantsData
Definition: odgraphicsitem.h:327
Definition: odgraphicsitem.h:265
void setSideLength(int side)
Definition: odgraphicsitem.h:77
OD::MarkerStyle2D * mstyle_
Definition: odgraphicsitem.h:84
QWaitCondition imagecond_
Definition: odgraphicsitem.h:341
Definition: draw.h:183
Definition: odgraphicsitem.h:61
Definition: odgraphicsitem.h:172
QRectF boundingRect() const
Definition: odgraphicsitem.h:315
virtual void unHighlight()
Definition: odgraphicsitem.h:33
void setLine(uiLineItem &, const LineParameters< float > &, const uiAxisHandler &xah, const uiAxisHandler &yah, const Interval< float > *xvalrg=0)
draws line not outside box defined by X and Y value ranges
bool highlight_
Definition: odgraphicsitem.h:291
void unHighlight()
Definition: odgraphicsitem.h:251
void setArrowStyle(const OD::ArrowStyle &arrowstyle)
Definition: odgraphicsitem.h:127
QPen & qpen_
Definition: odgraphicsitem.h:292
QPolygonF qpolygon_
Definition: odgraphicsitem.h:229
QRectF boundingrect_
Definition: odgraphicsitem.h:83
Definition: odgraphicsitem.h:296
QLineF qline_
Definition: odgraphicsitem.h:290
void setArrowSize(const int arrowsz)
Definition: odgraphicsitem.h:129
virtual int type() const
Definition: odgraphicsitem.h:100
QPen & mypen_
Definition: odgraphicsitem.h:198
Qt::Alignment hal_
Definition: odgraphicsitem.h:167
Definition: draw.h:63
virtual int type() const
Definition: odgraphicsitem.h:284
virtual int type() const
Definition: odgraphicsitem.h:52
virtual int type() const
Definition: odgraphicsitem.h:79
Definition: odgraphicsitem.h:143
OD::ArrowStyle arrowstyle_
Definition: odgraphicsitem.h:138
bool updatebasepixmap_
Definition: odgraphicsitem.h:346
QSize wantedscreensz_
Definition: odgraphicsitem.h:338
QPainterPath path_
Definition: odgraphicsitem.h:197
Off-screen pixel-based paint device.
Definition: uipixmap.h:33
QImage baseimage_
Definition: odgraphicsitem.h:347
QRectF dynamicimagebbox_
Definition: odgraphicsitem.h:344
Definition: odgraphicsitem.h:202
int arrowsz_
Definition: odgraphicsitem.h:139
const QPen & getQpen() const
Definition: odgraphicsitem.h:279
bool fill_
Definition: odgraphicsitem.h:86
Type
Definition: draw.h:67
QString text_
Definition: odgraphicsitem.h:166
bool isEmpty(const char *)
QRectF dynamicpixmapbbox_
Definition: odgraphicsitem.h:354
void setHighLight(bool hl)
Definition: odgraphicsitem.h:49
virtual void setFont(const QFont &)
override Qt
Definition: i_uiobjqtbody.h:31
Definition: odgraphicsitem.h:310
virtual int type() const
Definition: odgraphicsitem.h:159
Definition: odgraphicsitem.h:182
Definition: odgraphicsitem.h:29
virtual void highlight()
Definition: odgraphicsitem.h:32
static int ODGraphicsType
Definition: odgraphicsitem.h:27
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
bool closed_
Definition: odgraphicsitem.h:228
bool updatedynpixmap_
Definition: odgraphicsitem.h:342
bool issnapshot_
Definition: odgraphicsitem.h:350
virtual int type() const
Definition: odgraphicsitem.h:253
bool highlight_
Definition: odgraphicsitem.h:259
bool highlight_
Definition: odgraphicsitem.h:56
QRectF bbox_
Definition: odgraphicsitem.h:348
virtual void setQPen(const QPen &)
Definition: odgraphicsitem.h:35
QMutex imagelock_
Definition: odgraphicsitem.h:340
QPainterPath path_
Definition: odgraphicsitem.h:231
Qt::FillRule fillrule_
Definition: odgraphicsitem.h:230
virtual int type() const
Definition: odgraphicsitem.h:223
virtual int type() const
Definition: odgraphicsitem.h:133

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017