OpendTect  6.6
visdata.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: Kristofer Tingdahl
8  Date: 4-11-2002
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 
15 #include "visdataman.h"
16 #include "namedobj.h"
17 #include "uistring.h"
18 
19 class SoNode;
20 class BufferString;
21 
22 namespace visBase { class DataObject; class EventInfo; }
23 
24 namespace osg { class Switch; class Node; }
25 namespace osgViewer { class CompositeViewer; }
26 
27 
28 #define mVisTrans visBase::Transformation
29 
30 namespace osg { class Switch; class StateSet; }
31 namespace visBase
32 {
33 
34 class Transformation;
35 class SelectionManager;
36 class DataManager;
37 class Scene;
38 class DataObjectGroup;
39 class NodeState;
40 
41 
42 // OSG traversal bitmasks defined by OpendTect
43 inline unsigned int cNoTraversalMask() { return 0; }
44 inline unsigned int cAllTraversalMask() { return 0xFFFFFFFF; }
45 inline unsigned int cEventTraversalMask() { return 0x00000001; }
46 inline unsigned int cBBoxTraversalMask() { return 0x00000002; }
47 
48 inline unsigned int cActiveIntersecTraversalMask() { return 0x00000004; }
49 inline unsigned int cPassiveIntersecTraversalMask() { return 0x00000008; }
50 inline unsigned int cIntersectionTraversalMask()
52 inline unsigned int cDraggerIntersecTraversalMask() { return 0x00000010; }
53 
54 
64 public:
65 
66  virtual const char* getClassName() const { return "Not impl"; }
67 
68  virtual bool isOK() const { return true; }
69 
70  int id() const { return id_; }
71 
72  void setID(int nid);
73  static int getID(const osg::Node*);
74 
75  virtual BufferString getName() const;
76  virtual const OD::String& name() const;
77  virtual void setName(const char*);
78  uiString uiName() const;
79  void setUiName(const uiString&);
80  mDeprecated("Use setUiName") void setName( const uiString& uistr )
81  { setUiName(uistr); }
82 
83  osg::Node* osgNode(bool skipswitch=false);
84  const osg::Node* osgNode(bool skipswitch=false) const;
85 
86  void enableTraversal(unsigned int mask,bool yn=true);
87  bool isTraversalEnabled(unsigned int mask) const;
88 
89  inline SoNode* getInventorNode() {return 0;}
90  inline const SoNode* getInventorNode() const
91  { return 0; }
92 
93  virtual bool turnOn(bool yn);
94  virtual bool isOn() const;
95 
96  bool isPickable(bool actively=true) const;
97  void setPickable(bool actively,bool passively=true);
101  virtual bool rightClickable() const { return selectable(); }
102  virtual bool selectable() const { return false; }
103  void select() const;
104  /*<! Is here for convenience. Will rewire to
105  SelectionManager. */
106  void deSelect() const;
107  /*<! Is here for convenience. Will rewire to
108  SelectionManager. */
109  void updateSel() const;
110  /*<! Is here for convenience. Will rewire to
111  SelectionManager. */
112 
113  virtual bool isSelected() const;
114  virtual NotifierAccess* selection() { return 0; }
115  virtual NotifierAccess* deSelection() { return 0; }
116  virtual NotifierAccess* rightClicked() { return 0; }
117  virtual const TypeSet<int>* rightClickedPath() const{ return 0; }
118 
119  virtual void setDisplayTransformation(const mVisTrans*);
128  virtual const mVisTrans* getDisplayTransformation() const { return 0; }
137  virtual void setRightHandSystem(bool yn) {}
140  virtual bool isRightHandSystem() const { return true; }
141 
142  static float getDefaultPixelDensity();
143  static void setDefaultPixelDensity(float);
144  /* Will only affect objects to be created */
145 
146  virtual void setPixelDensity(float dpi);
147  virtual float getPixelDensity() const;
148 
149  virtual const char* errMsg() const { return nullptr; }
150 
151  bool serialize(const char* filename,
152  bool binary=false);
153 
154  void setParent(DataObjectGroup* g) { parent_ = g; }
155 
156  template <class T> T* addNodeState(T* ns)
157  { doAddNodeState(ns); return ns; }
159  NodeState* getNodeState( int idx );
160 
161  static void setVisualizationThread(const void*);
163  static bool isVisualizationThread();
164 
165  static void requestSingleRedraw();
166 
167  static void setCommonViewer(osgViewer::CompositeViewer*);
168  static osgViewer::CompositeViewer* getCommonViewer();
169 
170 protected:
171 
172  virtual osg::StateSet* getStateSet();
174 
175  friend class SelectionManager;
176  friend class Scene;
177  virtual void triggerSel() {}
179  virtual void triggerDeSel() {}
181  virtual void triggerRightClick(const EventInfo* =0) {}
182 
184 
186 
187  template <class T>
188  T* setOsgNode( T* t )
189  {
190  setOsgNodeInternal( (osg::Node*) t );
191  return t;
192  }
194 
196 
197 private:
198  void setOsgNodeInternal(osg::Node*);
200 
202  osg::Node* osgnode_;
203  osg::Switch* osgoffswitch_;
204  int id_;
205  bool ison_;
207  unsigned int enabledmask_;
208  static const void* visualizationthread_;
209  static osgViewer::CompositeViewer* commonviewer_;
210 };
211 
212 };
213 
214 #define mCreateDataObj(clss) \
215 { \
216  return new clss; \
217 } \
218  \
219 private: \
220  static visBase::DataObject* createInternal() \
221  { return new clss; } \
222  clss& operator =(const clss&); \
223  clss(const clss&); \
224 public: \
225  clss(); \
226  static void initClass(); \
227  static const char* getStaticClassName(); \
228  static const char* sFactoryKeyword(); \
229  virtual const char* getClassName() const
230 
231 
232 #define mCreateFactoryEntry( clss ) \
233 const char* clss::getStaticClassName() { return #clss; } \
234 const char* clss::getClassName() const \
235 { return clss::getStaticClassName(); } \
236 const char* clss::sFactoryKeyword() { return #clss; } \
237 void clss::initClass() \
238 { visBase::DataManager::factory().addCreator( \
239  createInternal, getStaticClassName() ); }
240 
241 
242 
visBase::DataObject::doAddNodeState
void doAddNodeState(NodeState *ns)
visBase::cPassiveIntersecTraversalMask
unsigned int cPassiveIntersecTraversalMask()
Definition: visdata.h:49
visBase::DataObject::setID
void setID(int nid)
visBase::DataObject::isRightHandSystem
virtual bool isRightHandSystem() const
Definition: visdata.h:140
visBase::DataObject::setVisualizationThread
static void setVisualizationThread(const void *)
Call only once from initialization.
visBase::DataObject::osgoffswitch_
osg::Switch * osgoffswitch_
Definition: visdata.h:203
visBase::DataObject::addNodeState
T * addNodeState(T *ns)
Definition: visdata.h:156
visBase::DataObject::getClassName
virtual const char * getClassName() const
Definition: visdata.h:66
visBase::DataObject::setOsgNodeInternal
void setOsgNodeInternal(osg::Node *)
visBase::DataObject::triggerDeSel
virtual void triggerDeSel()
Definition: visdata.h:179
visBase::DataObject::setPickable
void setPickable(bool actively, bool passively=true)
visBase::DataObject::visualizationthread_
static const void * visualizationthread_
Definition: visdata.h:208
visBase::DataObject::setParent
void setParent(DataObjectGroup *g)
Definition: visdata.h:154
visBase::DataObject::id_
int id_
Definition: visdata.h:204
visBase::DataObject::selection
virtual NotifierAccess * selection()
Definition: visdata.h:114
NamedCallBacker
CallBacker object with a name. Use if you want your object to be able to send and receive CallBack's,...
Definition: namedobj.h:72
uistring.h
visBase::DataObject::updateNodemask
void updateNodemask()
ObjectSet
Set of pointers to objects.
Definition: commontypes.h:31
visBase::cNoTraversalMask
unsigned int cNoTraversalMask()
Definition: visdata.h:43
visBase
Definition: visannot.h:43
visBase::DataObject::updateSel
void updateSel() const
visBase::DataObject::getName
virtual BufferString getName() const
visBase::cDraggerIntersecTraversalMask
unsigned int cDraggerIntersecTraversalMask()
Definition: visdata.h:52
visBase::DataObject::getCommonViewer
static osgViewer::CompositeViewer * getCommonViewer()
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
namedobj.h
visBase::DataObject::getID
static int getID(const osg::Node *)
osg
Open Scene Graph.
Definition: visannot.h:29
visBase::DataObject
DataObject is the base class off all objects that are used in Visualization and ought to be shared in...
Definition: visdata.h:63
visBase::DataObject::rightClickable
virtual bool rightClickable() const
Definition: visdata.h:101
visBase::DataObject::isSelected
virtual bool isSelected() const
visBase::DataObject::mRefCountImpl
mRefCountImpl(DataObject)
visBase::DataObject::isPickable
bool isPickable(bool actively=true) const
visBase::DataObject::name
virtual const OD::String & name() const
visBase::DataObject::osgNode
const osg::Node * osgNode(bool skipswitch=false) const
visBase::DataObject::turnOn
virtual bool turnOn(bool yn)
visBase::DataObject::getDisplayTransformation
virtual const visBase::Transformation * getDisplayTransformation() const
Definition: visdata.h:128
visBase::DataObject::parent_
DataObjectGroup * parent_
Definition: visdata.h:185
visBase::DataObject::DataObject
DataObject()
visBase::DataObject::selectable
virtual bool selectable() const
Definition: visdata.h:102
visBase::DataObject::setRightHandSystem
virtual void setRightHandSystem(bool yn)
Definition: visdata.h:137
visBase::DataObject::setDefaultPixelDensity
static void setDefaultPixelDensity(float)
visBase::DataObject::isTraversalEnabled
bool isTraversalEnabled(unsigned int mask) const
visBase::DataObjectGroup
Definition: visdatagroup.h:27
visBase::DataObject::triggerRightClick
virtual void triggerRightClick(const EventInfo *=0)
Definition: visdata.h:181
visdataman.h
visBase::DataObject::rightClicked
virtual NotifierAccess * rightClicked()
Definition: visdata.h:116
visBase::SelectionManager
SelectionManager handles DataObject that can be selected. If an object can be selected,...
Definition: visselman.h:44
visBase::DataObject::setDisplayTransformation
virtual void setDisplayTransformation(const visBase::Transformation *)
visBase::DataObject::deSelection
virtual NotifierAccess * deSelection()
Definition: visdata.h:115
visBase::DataObject::errMsg
virtual const char * errMsg() const
Definition: visdata.h:149
visBase::DataObject::isOK
virtual bool isOK() const
Definition: visdata.h:68
visBase::DataObject::serialize
bool serialize(const char *filename, bool binary=false)
NotifierAccess
Interface class for Notifier. See comments there.
Definition: notify.h:22
visBase::DataObject::removeNodeState
NodeState * removeNodeState(NodeState *)
visBase::EventInfo
Definition: visevent.h:44
visBase::DataObject::ison_
bool ison_
Definition: visdata.h:205
visBase::DataObject::enableTraversal
void enableTraversal(unsigned int mask, bool yn=true)
visBase::DataObject::updateOsgNodeData
void updateOsgNodeData()
visBase::DataObject::mDeprecated
mDeprecated("Use setUiName") void setName(const uiString &uistr)
Definition: visdata.h:80
visBase::cBBoxTraversalMask
unsigned int cBBoxTraversalMask()
Definition: visdata.h:46
visBase::DataObject::uiname_
uiString uiname_
Definition: visdata.h:206
visBase::DataObject::getDefaultPixelDensity
static float getDefaultPixelDensity()
visBase::NodeState
Definition: visnodestate.h:27
visBase::DataObject::deSelect
void deSelect() const
visBase::DataObject::enabledmask_
unsigned int enabledmask_
Definition: visdata.h:207
visBase::cActiveIntersecTraversalMask
unsigned int cActiveIntersecTraversalMask()
Definition: visdata.h:48
visBase::DataObject::setPixelDensity
virtual void setPixelDensity(float dpi)
visBase::DataObject::nodestates_
ObjectSet< NodeState > nodestates_
Definition: visdata.h:201
visBase::DataObject::rightClickedPath
virtual const TypeSet< int > * rightClickedPath() const
Definition: visdata.h:117
visBase::DataObject::setName
virtual void setName(const char *)
visBase::DataObject::setOsgNode
T * setOsgNode(T *t)
Must be called during construction.
Definition: visdata.h:188
mVisTrans
#define mVisTrans
Definition: visdata.h:28
visBase::DataObject::uiName
uiString uiName() const
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
visBase::DataObject::commonviewer_
static osgViewer::CompositeViewer * commonviewer_
Definition: visdata.h:209
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
OD::String
encapsulates the read-access-only part of strings in OD.
Definition: odstring.h:31
visBase::DataObject::select
void select() const
visBase::DataObject::getNodeState
NodeState * getNodeState(int idx)
visBase::DataObject::osgNode
osg::Node * osgNode(bool skipswitch=false)
visBase::DataObject::triggerSel
virtual void triggerSel()
Definition: visdata.h:177
visBase::DataObject::osgnode_
osg::Node * osgnode_
Definition: visdata.h:202
visBase::DataObject::isOn
virtual bool isOn() const
visBase::DataObject::setCommonViewer
static void setCommonViewer(osgViewer::CompositeViewer *)
visBase::cAllTraversalMask
unsigned int cAllTraversalMask()
Definition: visdata.h:44
visBase::DataObject::getInventorNode
SoNode * getInventorNode()
Definition: visdata.h:89
visBase::cEventTraversalMask
unsigned int cEventTraversalMask()
Definition: visdata.h:45
visBase::DataObject::id
int id() const
Definition: visdata.h:70
visBase::DataObject::getInventorNode
const SoNode * getInventorNode() const
Definition: visdata.h:90
visBase::DataObject::getPixelDensity
virtual float getPixelDensity() const
visBase::DataObject::isVisualizationThread
static bool isVisualizationThread()
visBase::DataObject::setUiName
void setUiName(const uiString &)
visBase::DataObject::requestSingleRedraw
static void requestSingleRedraw()
visBase::cIntersectionTraversalMask
unsigned int cIntersectionTraversalMask()
Definition: visdata.h:50
visBase::DataObject::getStateSet
virtual osg::StateSet * getStateSet()
osgViewer
Definition: visdata.h:25
visBase::Scene
Scene manages all DataObjects and has some managing functions such as the selection management and va...
Definition: visscene.h:40
TypeSet< int >

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