OpendTect  6.3
uigraphicsitem.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: January 2007
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "uibasemod.h"
14 #include "notify.h"
15 #include "keyenum.h"
16 #include "uigeom.h"
17 #include "manobjectset.h"
18 #include "uistring.h"
19 
20 namespace OD { class LineStyle; class FillPattern; }
21 
22 class MouseCursor;
23 class MouseEvent;
24 class uiGraphicsScene;
25 
26 mFDQtclass(QGraphicsItem)
27 mFDQtclass(QGraphicsItemGroup)
28 
29 mExpClass(uiBase) uiGraphicsItem : public CallBacker
30 {
31 public:
33  ~uiGraphicsItem();
34 
35  mQtclass(QGraphicsItem*) qGraphicsItem()
36  { return qgraphicsitem_; }
37  const mQtclass(QGraphicsItem*) qGraphicsItem() const
38  { return qgraphicsitem_; }
39 
40  void show();
41  void hide();
42 
43  virtual void setAcceptHoverEvents(bool);
44  virtual void setAcceptedMouseButtons(OD::ButtonState);
45  virtual void setFiltersChildEvents(bool);
46  virtual void setMovable(bool);
47  virtual void setSelectable(bool);
48  virtual void setSelected(bool);
49  virtual void setVisible(bool);
50 
51  virtual OD::ButtonState acceptedMouseButtonsEnabled() const;
52  virtual bool isFiltersChildEventsEnabled() const;
53  virtual bool isHoverEventsAccepted() const;
54  virtual bool isMovable() const;
55  virtual bool isSelectable() const;
56  virtual bool isSelected() const { return selected_; }
57  virtual bool isVisible() const;
58 
59  Geom::Point2D<float> getPos() const;
60  void setPos( const uiWorldPoint&);
61  void setPos( const uiPoint& p );
62  void setPos( const Geom::Point2D<float>& );
63  void setPos( float x, float y );
64  void moveBy(float x,float y);
65  float getRotation();
66  void getScale(float& sx,float& sy);
67  void setRotation(float angle);
68  void setScale(float sx,float sy);
69  void setZValue(int); //<! z value decides the stacking order
70 
71 
72  uiGraphicsItem* getChild(int);
73  bool isPresent(const uiGraphicsItem&) const;
74  int nrChildren() const;
75  void removeChild(uiGraphicsItem*,bool withdelete);
76  void removeAll(bool withdelete);
77  void addChild(uiGraphicsItem*);
78 
79  uiPoint transformToScenePos(const uiPoint& itmpos) const;
80  void setItemIgnoresTransformations(bool);
81  bool isItemIgnoresTransformationsEnabled() const;
82  virtual uiRect boundingRect() const;
83 
84  virtual void setPenStyle(const OD::LineStyle&,bool usetransp=false);
85  virtual void setPenColor(const Color&,bool usetransp=false);
86  virtual void setFillColor(const Color&,bool usetransp=false);
87  virtual void setFillPattern(const OD::FillPattern&);
88  virtual void setTransparency(float);
95  void setCursor(const MouseCursor&);
96  void setToolTip(const uiString&);
97 
98  virtual void setScene(uiGraphicsScene*);
99  virtual uiGraphicsItem* findItem(QGraphicsItem*);
100 
101  int id() const { return id_; }
102  int getZValue() const;
103 
104  //Old, will be remove once all dep code is changed
105  void rotate(float angle) { setRotation(angle); }
106  void scale(float sx,float sy) { setScale( sx, sy ); }
107 
108  virtual void translateText();
109 
112 protected:
113 
114  uiGraphicsItem(QGraphicsItem*);
115 
116  mQtclass(QGraphicsItem*) qgraphicsitem_;
117 
118  virtual mQtclass(QGraphicsItem*) mkQtObj() { return 0; }
119  bool selected_; // Remove when things in Qt works
120  uiGraphicsScene* scene_;
121  ObjectSet<uiGraphicsItem> children_;
122  uiGraphicsItem* parent_;
123 
124  virtual void stPos(float,float);
125 
126 private:
127 
128  void updateTransform();
129 
130  static int getNewID();
131  const int id_;
132 
133  uiString tooltip_;
134 
135  uiWorldPoint translation_;
136  uiWorldPoint scale_;
137  double angle_;
138 };
139 
140 
142 {
143 public:
145 
146  void add( uiGraphicsItem* itm ) { (*this) += itm; }
147 
148  void setZValue(int); //<! z value decides the stacking order
149  void setVisible(bool yn);
150 };
151 
152 
153 
155 {
156 public:
157  uiGraphicsItemGroup(bool owner=false);
161 
162  void setScene(uiGraphicsScene*);
163 
164  void setIsOwner( bool own ) { owner_ = own; }
165  bool isOwner() const { return owner_; }
166 
167  void add(uiGraphicsItem*);
168  void remove(uiGraphicsItem*,bool withdelete);
169  void removeAll(bool withdelete);
170  bool isEmpty() const { return items_.isEmpty(); }
171  int size() const { return items_.size(); }
172  uiGraphicsItem* getUiItem( int idx ) { return gtItm(idx); }
173  const uiGraphicsItem* getUiItem( int idx ) const { return gtItm(idx); }
174  bool isPresent(const uiGraphicsItem&) const;
175  virtual uiGraphicsItem* findItem(QGraphicsItem*);
176 
177  virtual bool isVisible() const;
178  virtual void setVisible(bool);
179  virtual uiRect boundingRect() const;
180  mQtclass(QGraphicsItemGroup*) qGraphicsItemGroup()
181  { return qgraphicsitemgrp_; }
182 
183 protected:
184 
185  void translateText();
186 
187  mQtclass(QGraphicsItem*) mkQtObj();
188 
189  bool owner_;
191  mQtclass(QGraphicsItemGroup*) qgraphicsitemgrp_;
192  ObjectSet<uiGraphicsItem> items_;
193  ObjectSet<uiGraphicsItem> items2bdel_;
194 
195  uiGraphicsItem* gtItm( int idx ) const
196  { return !items_.validIdx(idx) ? 0
197  : const_cast<uiGraphicsItemGroup*>(this)->items_[idx]; }
198 };
#define mExpClass(module)
Definition: commondefs.h:157
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
Definition: uigeom.h:40
uiGraphicsItemSet()
Definition: uigraphicsitem.h:144
Definition of a mouse cursor, can be either a predefined shape (from the enum, or a file...
Definition: mousecursor.h:24
#define mQtclass(cls)
Definition: commondefs.h:232
ObjectSet< uiGraphicsItem > items_
Definition: uigraphicsscene.h:113
Definition: draw.h:119
const uiGraphicsItem * getUiItem(int idx) const
Definition: uigraphicsitem.h:173
bool isOwner() const
Definition: uigraphicsitem.h:165
void hide(const char *, bool yn)
only Windows
int size() const
Definition: uigraphicsitem.h:171
Definition: uistring.h:88
bool isEmpty() const
Definition: odset.h:43
FixedString LineStyle()
Definition: keystrs.h:80
size_type size() const
Definition: objectset.h:48
bool owner_
Definition: uigraphicsitem.h:189
ButtonState
Definition: keyenum.h:18
void removeAll()
Definition: uigraphicsitem.h:154
Definition: draw.h:145
bool isEmpty() const
Definition: uigraphicsitem.h:170
#define mFDQtclass(cls)
Definition: commondefs.h:231
mQtclass(QGraphicsItemGroup *) qGraphicsItemGroup()
Definition: uigraphicsitem.h:180
Definition: uigraphicsitem.h:141
bool isvisible_
Definition: uigraphicsitem.h:190
void setIsOwner(bool own)
Definition: uigraphicsitem.h:164
virtual bool validIdx(int64_t) const
Definition: objectset.h:306
OpendTect.
Definition: commontypes.h:25
Notifier with automatic capsule creation.
Definition: notify.h:166
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
void translateText()
void add(uiGraphicsItem *itm)
Definition: uigraphicsitem.h:146
ObjectSet where the objects contained are owned by this set.
Definition: manobjectset.h:49
friend class uiGraphicsItem
Definition: uigraphicsscene.h:119
Definition: mouseevent.h:72
uiGraphicsItem * getUiItem(int idx)
Definition: uigraphicsitem.h:172
Definition: uigraphicsscene.h:35

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