OpendTect  6.6
visobject.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: Kris Tingdahl
8  Date: Jan 2002
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 
15 #include "visbasemod.h"
16 #include "visdata.h"
17 #include "thread.h"
18 #include "visosg.h"
19 
20 
21 namespace osg { class Group; }
22 
23 namespace visBase
24 {
25 class Material;
26 class Transformation;
27 class EventCatcher;
28 
34 
35 
37 {
38 public:
39  virtual void setMaterial( Material* ) = 0;
40  virtual Material* getMaterial() = 0;
41 
42  virtual bool getBoundingBox(Coord3& min,Coord3& max) const;
43  virtual void setSceneEventCatcher( EventCatcher* ) {}
44 
45  void setSelectable(bool yn) { isselectable=yn; }
46  bool selectable() const { return isselectable; }
47  NotifierAccess* selection() { return &selnotifier; }
48  NotifierAccess* deSelection() {return &deselnotifier;}
49  virtual NotifierAccess* rightClicked() { return &rightClick; }
50  const EventInfo* rightClickedEventInfo() const{return rcevinfo;}
52 
53 protected:
54  void triggerSel()
55  { if (isselectable) selnotifier.trigger(); }
56  void triggerDeSel()
57  { if (isselectable) deselnotifier.trigger(); }
59  VisualObject(bool selectable=false);
61 
62 private:
68 };
69 
70 
72 {
73 public:
74 
75  void setRightHandSystem(bool yn) { righthandsystem_=yn; }
76  bool isRightHandSystem() const { return righthandsystem_; }
77 
78  void setLockable();
82  void readLock();
83  void readUnLock();
84  bool tryReadLock();
85  void writeLock();
86  void writeUnLock();
87  bool tryWriteLock();
88 
90  const Material* getMaterial() const { return material_; }
92 
93  static const char* sKeyMaterialID(); //Remove
94  static const char* sKeyMaterial();
95  static const char* sKeyIsOn();
96 
97  virtual bool usePar(const IOPar&);
98  virtual void fillPar(IOPar&) const;
99 
100 protected:
101 
102  int addChild(osg::Node*);
104  void insertChild(int pos,osg::Node*);
105  void removeChild(osg::Node*);
106  int childIndex(const osg::Node*) const;
107 
108 
109  VisualObjectImpl(bool selectable);
110  virtual ~VisualObjectImpl();
111 
112  virtual void materialChangeCB(CallBacker*);
113 
114  virtual void setGroupNode(osg::Group*);
116 
119 
120 private:
121 
122  osg::Group* osgroot_;
123 };
124 
125 mLockerClassImpl( visBase, VisualReadLockLocker, VisualObjectImpl,
126  readLock(), readUnLock(), tryReadLock() )
128  writeLock(), writeUnLock(), tryWriteLock() )
129 };
130 
visosg.h
Coord3
A cartesian coordinate in 3D space.
Definition: coord.h:72
visBase::VisualObject::selnotifier
Notifier< VisualObject > selnotifier
Definition: visobject.h:64
visBase::VisualObject::~VisualObject
~VisualObject()
visBase::VisualObject::getBoundingBox
virtual bool getBoundingBox(Coord3 &min, Coord3 &max) const
visBase::VisualObject::getMaterial
virtual Material * getMaterial()=0
visBase::VisualObjectImpl::righthandsystem_
bool righthandsystem_
Definition: visobject.h:118
visBase::VisualObjectImpl::sKeyIsOn
static const char * sKeyIsOn()
visBase::VisualObject::selection
NotifierAccess * selection()
Definition: visobject.h:47
visBase::VisualObjectImpl::usePar
virtual bool usePar(const IOPar &)
visBase::VisualWriteLockLocker
VisualWriteLockLocker
Definition: visobject.h:127
visBase::VisualObjectImpl::getMaterial
const Material * getMaterial() const
Definition: visobject.h:90
visBase::VisualObjectImpl::readUnLock
void readUnLock()
visBase::VisualObjectImpl::childIndex
int childIndex(const osg::Node *) const
visBase::VisualObjectImpl::writeLock
void writeLock()
visBase::VisualObjectImpl::removeChild
void removeChild(osg::Node *)
visBase
Definition: visannot.h:43
visBase::writeLock
writeLock()
visBase::VisualObjectImpl::materialChangeCB
virtual void materialChangeCB(CallBacker *)
visBase::VisualObject::rcevinfo
const EventInfo * rcevinfo
Definition: visobject.h:67
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
visBase::VisualObjectImpl::isRightHandSystem
bool isRightHandSystem() const
Definition: visobject.h:76
visBase::VisualObjectImpl::tryWriteLock
bool tryWriteLock()
visBase::VisualObjectImpl::readLock
void readLock()
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::VisualObject::rightClicked
virtual NotifierAccess * rightClicked()
Definition: visobject.h:49
visBase::VisualObject
Definition: visobject.h:37
visBase::VisualObject::triggerSel
void triggerSel()
Definition: visobject.h:54
visBase::VisualObjectImpl::osgroot_
osg::Group * osgroot_
Definition: visobject.h:122
visBase::VisualObjectImpl
VisualObjectImpl
Definition: visobject.h:127
visBase::EventCatcher
Definition: visevent.h:87
visBase::VisualObjectImpl::fillPar
virtual void fillPar(IOPar &) const
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
visBase::VisualObjectImpl::material_
Material * material_
Definition: visobject.h:117
visBase::VisualObject::triggerDeSel
void triggerDeSel()
Definition: visobject.h:56
visBase::VisualObject::VisualObject
VisualObject(bool selectable=false)
visBase::VisualObjectImpl::getMaterial
Material * getMaterial()
visBase::VisualObjectImpl::insertChild
void insertChild(int pos, osg::Node *)
visBase::VisualObjectImpl::tryReadLock
bool tryReadLock()
visBase::VisualObjectImpl::VisualObjectImpl
VisualObjectImpl(bool selectable)
visBase::VisualObject::setMaterial
virtual void setMaterial(Material *)=0
visBase::VisualObjectImpl::writeUnLock
void writeUnLock()
visBase::VisualObjectImpl::setGroupNode
virtual void setGroupNode(osg::Group *)
Must be called during construction.
visBase::VisualObjectImpl::sKeyMaterial
static const char * sKeyMaterial()
visBase::VisualObject::isselectable
bool isselectable
Definition: visobject.h:63
NotifierAccess
Interface class for Notifier. See comments there.
Definition: notify.h:22
visBase::VisualObject::rightClickedPath
const TypeSet< int > * rightClickedPath() const
visBase::EventInfo
Definition: visevent.h:44
visBase::VisualObject::rightClickedEventInfo
const EventInfo * rightClickedEventInfo() const
Definition: visobject.h:50
Notifier
Class to help setup a callback handling.
Definition: notify.h:126
visBase::RenderBothSides
@ RenderBothSides
Definition: visobject.h:33
visBase::VisualObject::rightClick
Notifier< VisualObject > rightClick
Definition: visobject.h:66
visBase::Material
Definition: vismaterial.h:37
visdata.h
visBase::VisualObject::triggerRightClick
void triggerRightClick(const EventInfo *)
visBase::VisualObjectImpl
Definition: visobject.h:72
visBase::VisualObjectImpl::setLockable
void setLockable()
visBase::VisualObject::setSceneEventCatcher
virtual void setSceneEventCatcher(EventCatcher *)
Definition: visobject.h:43
visBase::VisualObject::selectable
bool selectable() const
Definition: visobject.h:46
visBase::VisualObjectImpl::~VisualObjectImpl
virtual ~VisualObjectImpl()
visBase::VisualObjectImpl::sKeyMaterialID
static const char * sKeyMaterialID()
visBase::RenderBackSide
@ RenderBackSide
Definition: visobject.h:33
visBase::RenderFrontSide
@ RenderFrontSide
Definition: visobject.h:33
visBase::VisualObjectImpl::addChild
int addChild(osg::Node *)
visBase::VisualObjectImpl::setMaterial
void setMaterial(Material *)
visBase::mLockerClassImpl
mLockerClassImpl(visBase, VisualReadLockLocker, VisualObjectImpl, readLock(), readUnLock(), tryReadLock()) mLockerClassImpl(visBase
visBase::RenderMode
RenderMode
Base class for all objects that are visual on the scene.
Definition: visobject.h:33
thread.h
visBase::writeUnLock
writeUnLock()
visBase::VisualObject::deselnotifier
Notifier< VisualObject > deselnotifier
Definition: visobject.h:65
visBase::VisualObjectImpl::setRightHandSystem
void setRightHandSystem(bool yn)
Definition: visobject.h:75
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
visBase::VisualObject::deSelection
NotifierAccess * deSelection()
Definition: visobject.h:48
visBase::VisualObject::setSelectable
void setSelectable(bool yn)
Definition: visobject.h:45
TypeSet< int >

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