OpendTect  6.3
uigraphicsitemimpl.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Nanne Hemstra
8  Date: April 2008
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "uibasemod.h"
14 #include "uigraphicsitem.h"
15 #include "uigeom.h"
16 #include "draw.h"
17 
18 class uiPixmap;
19 class uiFont;
20 class uiGroup;
21 class uiObject;
22 class uiSize;
23 class uiRGBArray;
24 class FontData;
25 
26 class QGraphicsItem;
27 class QGraphicsEllipseItem;
28 class QGraphicsPathItem;
29 class QGraphicsPixmapItem;
30 class QGraphicsProxyWidget;
31 class QGraphicsRectItem;
32 class QPainterPath;
33 class QPen;
34 class QPolygonF;
35 class QSize;
36 
39 class ODGraphicsLineItem;
41 class ODGraphicsPathItem;
47 class ODGraphicsTextItem;
48 template <class T> class ODPolygon;
49 
50 
51 mExpClass(uiBase) uiObjectItem : public uiGraphicsItem
52 {
53 public:
54  uiObjectItem(uiObject* obj);
55  uiObjectItem(uiGroup* obj);
56  ~uiObjectItem();
57 
58  uiObject* getObject();
59  void setObject(uiObject*);
60 
61  uiGroup* getGroup();
62  void setGroup(uiGroup*);
63 
64  virtual void setObjectSize(int,int);
65  const uiSize objectSize() const;
66 
67  QGraphicsProxyWidget* qWidgetItem() { return qwidgetitem_; }
68 
69 protected:
70 
71  QGraphicsItem* mkQtObj();
72  QGraphicsProxyWidget* qwidgetitem_;
75 };
76 
77 
78 mExpClass(uiBase) uiEllipseItem : public uiGraphicsItem
79 {
80 public:
81  uiEllipseItem();
82  uiEllipseItem(const uiSize&);
83  uiEllipseItem(const uiPoint& center,
84  const uiSize&);
85  ~uiEllipseItem();
86 
87  QGraphicsEllipseItem* qEllipseItem() { return qellipseitem_; }
88  void setSize(const uiSize&);
89 
90 protected:
91 
92  QGraphicsItem* mkQtObj();
93  QGraphicsEllipseItem* qellipseitem_;
94 };
95 
96 
98 {
99 public:
100  uiCircleItem();
101  uiCircleItem(int r);
102  uiCircleItem(const uiPoint& center,int r);
103 
104  void setRadius(int);
105 };
106 
107 
108 
109 mExpClass(uiBase) uiLineItem : public uiGraphicsItem
110 {
111 public:
112  uiLineItem();
113  uiLineItem(int x1,int y1,int x2,int y2);
114  uiLineItem(float x1,float y1,float x2,float y2);
115  uiLineItem(const uiPoint& start,const uiPoint& stop);
116  uiLineItem(const uiPoint&,float angle,float len);
117  ~uiLineItem();
118 
119  ODGraphicsLineItem* qLineItem() { return qlineitem_; }
120  void setPenStyle(const OD::LineStyle&,bool withalpha=false);
121  void setPenColor(const Color&,bool withalpha=false);
122  void setLine(const uiPoint& start,const uiPoint& end);
123  void setLine(const uiWorldPoint&,const uiWorldPoint&);
124  void setLine(int x1,int y1,int x2,int y2);
125  void setLine(float x1,float y1,float x2,float y2);
126  void setLine(const Geom::Point2D<float>&,
127  const Geom::Point2D<float>&);
128  void setLine(const Geom::Point2D<float>& centerpos,
129  float dx1,float dy1,float dx2,float dy2);
130  void setLine(const Geom::Point2D<int>& centerpos,
131  int dx1,int dy1,int dx2,int dy2);
132  uiRect lineRect() const;
133  void highlight();
134  void unHighlight();
135 
136 protected:
137 
138  QGraphicsItem* mkQtObj();
140  QPen& qpen_;
141 };
142 
143 
149 mExpClass(uiBase) uiDynamicImageItem : public uiGraphicsItem
150 {
151 public:
154 
155  void setImage(bool dynamic,const uiRGBArray&,
156  const uiWorldRect&);
159  NotifierAccess& wantsData();
160  bool isSnapshot() const;
165  uiWorldRect wantedWorldRect() const;
166  uiSize wantedScreenSize() const;
167 
168 protected:
169  QGraphicsItem* mkQtObj();
171 };
172 
173 
174 mExpClass(uiBase) uiPixmapItem : public uiGraphicsItem
175 {
176 public:
177  uiPixmapItem();
178  uiPixmapItem(const uiPixmap&);
179  uiPixmapItem(const uiPoint&,const uiPixmap&);
180  ~uiPixmapItem();
181 
182  ODGraphicsPixmapItem* qPixmapItem() { return qpixmapitem_; }
183  void setOffset(int left,int top);
184  void setPixmap(const uiPixmap&);
185  void setPaintInCenter(bool);
186 
187  uiSize pixmapSize() const;
188  void scaleToScene();
189 
190 protected:
191 
192  QGraphicsItem* mkQtObj();
194 };
195 
196 
197 mExpClass(uiBase) uiPolygonItem : public uiGraphicsItem
198 {
199 public:
200  uiPolygonItem();
201  uiPolygonItem(const TypeSet<uiPoint>&,bool fill);
203  bool fill);
204  uiPolygonItem(const ODPolygon<int>&,bool fill);
205  ~uiPolygonItem();
206 
207  void fill();
208  void setPolygon(const TypeSet<uiPoint>&);
209  void setPolygon(const TypeSet<uiWorldPoint>&);
210  void setPolygon(const ODPolygon<int>&);
211 
212 protected:
213 
214  QGraphicsItem* mkQtObj();
216 };
217 
218 
219 mExpClass(uiBase) uiPolyLineItem : public uiGraphicsItem
220 {
221 public:
222  uiPolyLineItem();
225  ~uiPolyLineItem();
226 
227  void setPolyLine(const TypeSet<uiPoint>&);
228  void setPolyLine(const TypeSet<uiWorldPoint>&);
229 
230  void highlight();
231  void unHighlight();
232 
233 protected:
234 
235  QGraphicsItem* mkQtObj();
237 };
238 
239 
240 mExpClass(uiBase) uiMultiColorPolyLineItem : public uiGraphicsItem
241 {
242 public:
247 
248  void setPolyLine(const TypeSet<uiPoint>&);
249  void setPolyLine(const TypeSet<uiWorldPoint>&);
250  void setColors(const TypeSet<Color>&,bool usetransp=false);
251 
252 protected:
253 
254  QGraphicsItem* mkQtObj();
256 };
257 
258 
259 mExpClass(uiBase) uiRectItem : public uiGraphicsItem
260 {
261 public:
262  uiRectItem();
263  uiRectItem(int x,int y,int width,int height);
264  uiRectItem(QGraphicsRectItem*);
265  ~uiRectItem();
266 
267  QGraphicsRectItem* qRectItem() { return qrectitem_; }
268  void setRect(int x,int y,int width,int height);
269 
270 protected:
271 
272  QGraphicsItem* mkQtObj();
273  QGraphicsRectItem* qrectitem_;
274 };
275 
276 
277 mExpClass(uiBase) uiTextItem : public uiGraphicsItem
278 {
279 public:
280  uiTextItem();
281  uiTextItem(const uiString&,
282  const OD::Alignment& al=OD::Alignment());
283  uiTextItem(const uiPoint&,const uiString&,
284  const OD::Alignment& al=OD::Alignment());
285  ~uiTextItem();
286 
287  void setFont(const uiFont&);
288  void setFontData(const FontData&);
289  const uiString getText() const;
290  uiSize getTextSize() const;
291  void setAlignment(const OD::Alignment&);
292  void setText(const uiString&);
293  void setTextColor(const Color&);
294 
295 protected:
296  uiTextItem(QGraphicsItem*);
297  void translateText();
298 
299  ODGraphicsTextItem* mkODObj();
302 
303  virtual void stPos(float,float);
304 };
305 
306 
307 mExpClass(uiBase) uiAdvancedTextItem : public uiGraphicsItem
308 {
309 public:
310  uiAdvancedTextItem(bool centered=false);
312  const OD::Alignment& =
314  OD::Alignment::Top),
315  bool centered=false);
317 
318  OD::Alignment getAlignment() const;
319  Color getDefaultTextColor() const;
320  uiFont& getFont() const;
321  uiString getPlainText() const;
322  float getTextWidth() const;
323 
324  void setAlignment(const OD::Alignment&);
325  void setDefaultTextColor(const Color&);
326  void setFont(const FontData&);
327  void setPlainText(const uiString&);
328  void setTextWidth(float);
329 
330  void setTextIteraction(bool);
331 
332 protected:
333 
336  QGraphicsItem* mkQtObj();
338 
339  virtual void stPos(float,float);
340 
341 };
342 
343 
344 mExpClass(uiBase) uiMarkerItem : public uiGraphicsItem
345 {
346 public:
347  uiMarkerItem(bool fill=true);
349  bool fill=true);
350  uiMarkerItem(const uiPoint&,
351  const OD::MarkerStyle2D&,
352  bool fill=true);
353  ~uiMarkerItem();
354 
355  ODGraphicsMarkerItem* qMarkerItem() { return qmarkeritem_; }
356  void setMarkerStyle(const OD::MarkerStyle2D&);
357  void setFill(bool);
358  void setFillColor(const Color&,bool withalpha=false);
359 
360 protected:
361 
362  QGraphicsItem* mkQtObj();
364 };
365 
366 
367 mExpClass(uiBase) uiPointItem : public uiGraphicsItem
368 {
369 public:
370  uiPointItem();
371  uiPointItem(const uiPoint&);
372  ~uiPointItem();
373 
374  ODGraphicsPointItem* qPointItem() { return qpointitem_; }
375 
376 protected:
377 
378  QGraphicsItem* mkQtObj();
380 };
381 
382 
383 mExpClass(uiBase) uiArrowItem : public uiGraphicsItem
384 {
385 public:
386  uiArrowItem();
387  uiArrowItem(const uiPoint& tail,
388  const uiPoint& head,
389  const OD::ArrowStyle&);
391  ~uiArrowItem();
392 
393  void setHeadPos(const uiPoint&);
394  void setTailPos(const uiPoint&);
395  void setTailHeadPos(const uiPoint& tail,
396  const uiPoint& head);
397  void setArrowStyle(const OD::ArrowStyle&);
398  void setArrowSize(int);
399 
400  ODGraphicsArrowItem* qArrowItem() { return qarrowitem_; }
401 
402 protected:
403 
404  QGraphicsItem* mkQtObj();
406 
409 
410  void update();
411 };
412 
413 
414 mExpClass(uiBase) uiCurvedItem : public uiGraphicsItem
415 {
416 public:
417  uiCurvedItem(const uiPoint& startpt);
418  uiCurvedItem(const Geom::Point2D<float>& startpt);
419  ~uiCurvedItem();
420 
422  {
423  public:
424  ArcSpec( const uiPoint& c, float r,
425  const Interval<float>& angs )
426  : center_((float)c.x_,(float)c.y_), radius_(r)
427  , angles_(angs), yratio_(1.0f) {}
428  ArcSpec( const Geom::Point2D<float>& c, float r,
429  const Interval<float>& angs )
430  : center_(c), radius_(r)
431  , angles_(angs), yratio_(1.0f) {}
432 
434  float radius_;
436  float yratio_;
437  };
438 
440  {
441  public:
442  SplineSpec( const uiPoint& endp, const uiPoint& cp )
443  : end_((float)endp.x_,(float)endp.y_)
444  , cp1_((float)cp.x_,(float)cp.y_)
445  , cubic_(false) {}
447  const Geom::Point2D<float>& cp )
448  : end_(endp), cp1_(cp), cubic_(false) {}
449  SplineSpec( const uiPoint& endp, const uiPoint& p1,
450  const uiPoint& p2 )
451  : end_((float)endp.x_,(float)endp.y_)
452  , cp1_((float)p1.x_,(float)p1.y_)
453  , cp2_((float)p2.x_,(float)p2.y_), cubic_(true) {}
455  const Geom::Point2D<float>& p1,
456  const Geom::Point2D<float>& p2 )
457  : end_(endp), cp1_(p1), cp2_(p2), cubic_(true) {}
458 
462  bool cubic_;
463  };
464 
465  void drawTo(const ArcSpec&);
466  void drawTo(const SplineSpec&);
467  void drawTo(const Geom::Point2D<float>&);
468  void drawTo(const uiPoint&);
469 
470  void closeCurve();
471 
472  QGraphicsPathItem* qGraphicsPathItem() { return qpathitem_; }
473  QPainterPath* qPainterPath() { return qppath_; }
474 
475 protected:
476 
477  QGraphicsItem* mkQtObj();
478  QGraphicsPathItem* qpathitem_;
479  QPainterPath* qppath_;
480 
481 };
482 
483 
487 {
488 public:
489 
490  mExpClass(uiBase) Setup
491  {
492  public:
493  Setup() : hor_(false), start_(0), stop_(1) {}
494 
495 
496  bool hor_;
497  int thickness_; // width of the 'body' of the marker
498  int start_; // start pixel in direction (usually 0)
499  int stop_; // stop pixel (usually nrPixY()-1)
500  Color color_; // color of 'body'
501  };
502 
503  uiManipHandleItem(const Setup&,int pixpos,
504  int zval=10000);
505  uiManipHandleItem(const Setup&,double fpos,
506  int zval=10000);
507 
508  void setPenColor(const Color&,bool usetransp=false);
509  // usetransp is ignored
510 
511 protected:
512 
513  void init(const Setup&,int,int);
514  uiLineItem* mkLine(bool,int,int,int,int,int);
515 
520 
521 };
Definition: uigroup.h:53
Definition: uigraphicsitemimpl.h:490
uiPoint headpos_
Definition: uigraphicsitemimpl.h:408
#define mExpClass(module)
Definition: commondefs.h:157
bool hor_
Definition: uigraphicsitemimpl.h:496
ArcSpec(const uiPoint &c, float r, const Interval< float > &angs)
Definition: uigraphicsitemimpl.h:424
ODGraphicsArrowItem * qArrowItem()
Definition: uigraphicsitemimpl.h:400
uiPoint tailpos_
Definition: uigraphicsitemimpl.h:407
Definition: odgraphicsitem.h:39
Definition: uigeom.h:40
uiObject * obj_
Definition: uigraphicsitemimpl.h:73
QGraphicsPathItem * qpathitem_
Definition: uigraphicsitemimpl.h:478
Definition: odgraphicsitem.h:113
SplineSpec(const uiPoint &endp, const uiPoint &cp)
Definition: uigraphicsitemimpl.h:442
Definition: odgraphicsitem.h:236
ODGraphicsLineItem * qLineItem()
Definition: uigraphicsitemimpl.h:119
lines looking like a user can pick it up and drag it.
Definition: uigraphicsitemimpl.h:486
QPen & qpen_
Definition: uigraphicsitemimpl.h:140
QGraphicsPathItem * qGraphicsPathItem()
Definition: uigraphicsitemimpl.h:472
Definition: odgraphicsitem.h:91
QGraphicsRectItem * qRectItem()
Definition: uigraphicsitemimpl.h:267
Interface class for Notifier. See comments there.
Definition: notify.h:20
uiString text_
Definition: uigraphicsitemimpl.h:301
Definition: uigraphicsitemimpl.h:383
Definition: draw.h:119
Definition: uigraphicsitemimpl.h:414
Definition: i_layout.h:26
bool init()
QGraphicsRectItem * qrectitem_
Definition: uigraphicsitemimpl.h:273
Definition: uigraphicsitemimpl.h:197
(Closed) sequence of connected 2-D coordinates.
Definition: polygon.h:25
Definition: draw.h:26
Definition: uifont.h:38
Interval< float > angles_
Definition: uigraphicsitemimpl.h:435
ODGraphicsTextItem * qtextitem_
Definition: uigraphicsitemimpl.h:300
int stop_
Definition: uigraphicsitemimpl.h:499
bool textiscentered_
Definition: uigraphicsitemimpl.h:335
Definition: uigraphicsitemimpl.h:307
Definition: uigraphicsitemimpl.h:240
ODGraphicsPointItem * qPointItem()
Definition: uigraphicsitemimpl.h:374
ArcSpec(const Geom::Point2D< float > &c, float r, const Interval< float > &angs)
Definition: uigraphicsitemimpl.h:428
The base class for most UI elements.
Definition: uiobj.h:35
int thickness_
Definition: uigraphicsitemimpl.h:497
Definition: uistring.h:88
Definition: odgraphicsitem.h:265
Definition: uigraphicsitemimpl.h:421
Color color_
Definition: uigraphicsitemimpl.h:500
ODGraphicsMarkerItem * qmarkeritem_
Definition: uigraphicsitemimpl.h:363
Definition: uigraphicsitemimpl.h:344
Geom::Point2D< float > center_
Definition: uigraphicsitemimpl.h:433
ODGraphicsMultiColorPolyLineItem * odmulticoloritem_
Definition: uigraphicsitemimpl.h:255
QPainterPath * qppath_
Definition: uigraphicsitemimpl.h:479
float yratio_
< 1 means: X size > Y size
Definition: uigraphicsitemimpl.h:436
Data needed to make an actual font.
Definition: fontdata.h:18
Definition: draw.h:183
Definition: odgraphicsitem.h:61
Definition: uigraphicsitemimpl.h:367
Definition: odgraphicsitem.h:172
Definition: uigeom.h:23
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
ODGraphicsPixmapItem * qpixmapitem_
Definition: uigraphicsitemimpl.h:193
QGraphicsProxyWidget * qWidgetItem()
Definition: uigraphicsitemimpl.h:67
Definition: draw.h:21
ODGraphicsDynamicImageItem * item_
Definition: uigraphicsitemimpl.h:170
ODGraphicsPolyLineItem * qpolygonitem_
Definition: uigraphicsitemimpl.h:215
bool cubic_
otherwise quadratic
Definition: uigraphicsitemimpl.h:462
SplineSpec(const Geom::Point2D< float > &endp, const Geom::Point2D< float > &cp)
Definition: uigraphicsitemimpl.h:446
Definition: uigraphicsitemimpl.h:51
Set of (small) copyable elements.
Definition: commontypes.h:26
Geom::Point2D< float > end_
Definition: uigraphicsitemimpl.h:459
Definition: uigraphicsitem.h:154
Geom::Point2D< float > cp2_
only for cubic_
Definition: uigraphicsitemimpl.h:461
uiGroup * grp_
Definition: uigraphicsitemimpl.h:74
ODGraphicsPointItem * qpointitem_
Definition: uigraphicsitemimpl.h:379
Definition: draw.h:63
SplineSpec(const Geom::Point2D< float > &endp, const Geom::Point2D< float > &p1, const Geom::Point2D< float > &p2)
Definition: uigraphicsitemimpl.h:454
Definition: odgraphicsitem.h:143
Definition: uigraphicsitemimpl.h:259
int start_
Definition: uigraphicsitemimpl.h:498
Off-screen pixel-based paint device.
Definition: uipixmap.h:33
OD::Alignment al_
Definition: uigraphicsitemimpl.h:334
Definition: odgraphicsitem.h:202
Definition: uigraphicsitemimpl.h:439
QGraphicsEllipseItem * qEllipseItem()
Definition: uigraphicsitemimpl.h:87
Definition: uigraphicsitemimpl.h:97
SplineSpec(const uiPoint &endp, const uiPoint &p1, const uiPoint &p2)
Definition: uigraphicsitemimpl.h:449
uiLineItem * shadeitm1_
Definition: uigraphicsitemimpl.h:518
Setup()
Definition: uigraphicsitemimpl.h:493
float radius_
X radius. Yrad = radius_ * yratio_.
Definition: uigraphicsitemimpl.h:434
ODGraphicsArrowItem * qarrowitem_
Definition: uigraphicsitemimpl.h:405
uiLineItem * centeritm_
Definition: uigraphicsitemimpl.h:516
Definition: uigraphicsitemimpl.h:219
ODGraphicsPathItem * odgraphicspath_
Definition: uigraphicsitemimpl.h:236
ODGraphicsPixmapItem * qPixmapItem()
Definition: uigraphicsitemimpl.h:182
virtual void setFont(const QFont &)
override Qt
Definition: i_uiobjqtbody.h:31
Definition: odgraphicsitem.h:310
Definition: uigraphicsitemimpl.h:78
uiLineItem * bodyitm_
Definition: uigraphicsitemimpl.h:517
Definition: odgraphicsitem.h:182
Definition: uigraphicsitemimpl.h:174
uiLineItem * shadeitm2_
Definition: uigraphicsitemimpl.h:519
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
QPainterPath * qPainterPath()
Definition: uigraphicsitemimpl.h:473
Geom::Point2D< float > cp1_
Definition: uigraphicsitemimpl.h:460
Definition: uigraphicsitemimpl.h:277
QGraphicsProxyWidget * qwidgetitem_
Definition: uigraphicsitemimpl.h:72
QGraphicsEllipseItem * qellipseitem_
Definition: uigraphicsitemimpl.h:93
ODGraphicsMarkerItem * qMarkerItem()
Definition: uigraphicsitemimpl.h:355
ODGraphicsLineItem * qlineitem_
Definition: uigraphicsitemimpl.h:139
Definition: uigraphicsitemimpl.h:109
ODGraphicsAdvancedTextItem * qtextitem_
Definition: uigraphicsitemimpl.h:337
Definition: uigraphicsitemimpl.h:149

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