OpendTect  6.3
visdragger.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: December 2003
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "visobject.h"
14 #include "visosg.h"
15 #include "position.h"
16 
17 namespace osgManipulator { class Dragger; }
18 namespace osg
19 {
20  class MatrixTransform;
21  class Node;
22 }
23 
24 namespace visBase
25 {
26 
30 class DraggerCallbackHandler;
31 class Transformation;
32 
34 {
35 public:
36 
41 
42  virtual void setDisplayTransformation( const mVisTrans* );
43  const mVisTrans* getDisplayTransformation() const;
44 
45  void setSpaceLimits(const Interval<float>& x,
46  const Interval<float>& y,
47  const Interval<float>& z);
48 
49  void handleEvents(bool yn);
50  bool isHandlingEvents() const;
51 
52 protected:
53  friend class DraggerCallbackHandler;
54  DraggerBase();
55  ~DraggerBase();
56 
57  virtual void notifyStart() = 0;
58  virtual void notifyStop() = 0;
59  virtual void notifyMove() = 0;
60 
62  osgManipulator::Dragger* osgdragger_;
63  osg::Group* osgroot_;
64 
65  void initDragger(osgManipulator::Dragger*);
66 
67  Interval<float> spaceranges_[3];
68 
69 private:
70  DraggerCallbackHandler* cbhandler_;
71 
72 
73 };
74 
75 
77 {
78 public:
79  static Dragger* create()
81 
82  enum Type { Translate1D, Translate2D, Translate3D,
83  Scale3D };
84  void setDraggerType(Type);
85 
86  void setPos(const Coord3&);
87  Coord3 getPos() const;
88 
89  void setSize(const float);
90  float getSize() const;
91 
92  void setArrowColor(const Color&);
93  const Color& getArrowColor() const;
94 
95  void setRotation(const Coord3&, const float);
96  void setDefaultRotation();
97  bool defaultRotation() const;
98 
99  void setOwnShape(DataObject*,bool activeshape);
101  bool selectable() const;
102 
103  NotifierAccess* rightClicked() { return &rightclicknotifier_; }
104  const TypeSet<int>* rightClickedPath() const;
105  const EventInfo* rightClickedEventInfo() const;
106  void updateDragger( bool active );
107  void setDisplayTransformation( const mVisTrans* );
108 
109  bool isMoving() const { return ismoving_; }
110 
111 protected:
112  ~Dragger();
113  void triggerRightClick(const EventInfo* eventinfo);
114  virtual void notifyStart();
115  virtual void notifyStop();
116  virtual void notifyMove();
117  osg::MatrixTransform* createDefaultDraggerGeometry();
118  osg::MatrixTransform* createTranslateDefaultGeometry();
119  void setScaleAndTranslation(bool move=false);
120 
121 
124 
131 
132  bool ismoving_;
133 
135  float rotangle_;
137 };
138 
139 } // namespace visBase
#define mExpClass(module)
Definition: commondefs.h:157
Definition: visdragger.h:33
Notifier< DraggerBase > started
Definition: visdragger.h:37
Coord3 rotation_
Definition: visdragger.h:134
const visBase::Transformation * displaytrans_
Definition: visdragger.h:61
Notifier< DraggerBase > finished
Definition: visdragger.h:39
DraggerCallbackHandler * cbhandler_
Definition: visdragger.h:70
float draggersizescale_
Definition: visdragger.h:129
Notifier< Dragger > rightclicknotifier_
Definition: visdragger.h:122
Notifier< DraggerBase > motion
Definition: visdragger.h:38
bool isMoving() const
Definition: visdragger.h:109
Interface class for Notifier. See comments there.
Definition: notify.h:20
DataObject is the base class off all objects that are used in Visualization and ought to be shared in...
Definition: visdata.h:59
Color arrowcolor_
Definition: visdragger.h:136
bool ismoving_
Definition: visdragger.h:132
Coord3 markerpos_
Definition: visdragger.h:128
Type
Definition: visdragger.h:82
Class to help setup a callback handling.
Definition: notify.h:121
Definition: visdragger.h:17
bool is2dtranslate_
Definition: visdragger.h:127
3D point or vector
Definition: commontypes.h:57
#define mVisTrans
Definition: visdata.h:25
static Dragger * create()
Definition: visdragger.h:79
bool ismarkershape_
Definition: visdragger.h:126
const EventInfo * rightclickeventinfo_
Definition: visdragger.h:123
NotifierAccess * rightClicked()
Definition: visdragger.h:103
osg::Group * osgroot_
Definition: visdragger.h:63
Definition: visannot.h:40
Notifier< DraggerBase > changed
Definition: visdragger.h:40
Open Scene Graph.
Definition: visannot.h:26
Definition: visevent.h:40
DataObject * inactiveshape_
Definition: visdragger.h:125
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
#define mCreateDataObj(clss)
Definition: visdata.h:210
osgManipulator::Dragger * osgdragger_
Definition: visdragger.h:62
float defaultdraggergeomsize_
Definition: visdragger.h:130
Definition: visdragger.h:76
float rotangle_
Definition: visdragger.h:135

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