OpendTect  6.6
visrandomtrackdragger.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: K. Tingdahl
8  Date: Feb 2006
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "visbasemod.h"
15 #include "visobject.h"
16 #include "objectset.h"
17 #include "position.h"
18 #include "ranges.h"
19 
20 
21 namespace osg { class Switch; }
22 
23 namespace visBase
24 {
25 
29 class Transformation;
30 class Dragger;
31 class MarkerSet;
32 class PlaneDragCBHandler;
33 class PolyLine;
34 
35 
37 {
38  friend class PlaneDragCBHandler;
39 
40 public:
43 
44  int nrKnots() const;
45  Coord getKnot(int) const;
46  void setKnot(int,const Coord&);
47  void insertKnot(int,const Coord&);
48  void removeKnot(int);
49 
50  void showAdjacentPanels(int knotidx,bool yn);
51  bool areAdjacentPanelsShown(int knotidx) const;
52  void showAllPanels(bool yn);
53  bool areAllPanelsShown() const;
54 
55  Interval<float> getDepthRange() const;
56  void setDepthRange(const Interval<float>&);
57 
58  void setDisplayTransformation(const mVisTrans*);
59  const mVisTrans* getDisplayTransformation() const;
60 
61  void setLimits(const Coord3& start,
62  const Coord3& stop,
63  const Coord3& step);
64 
65  void updateZLimit( const Interval<float>& zborder );
66 
67  void showPlaneDraggers(bool yn,int minsizeinsteps=0);
68 
69  void setTransDragKeys(bool trans1d,int keys,
70  int groupidx=0);
71  int getTransDragKeys(bool trans1d,
72  int groupidx=0) const;
73 
76 
77  NotifierAccess* rightClicked() { return &rightclicknotifier_; }
80 
81 protected:
83 
87 
88  void triggerRightClick(const EventInfo* eventinfo);
89 
90  void doSetKnot(int,const Coord&);
91 
92  void followActiveDragger(int activeidx);
93  void updatePanels();
94  void postponePanelUpdate(bool);
95  void turnPanelOn(int planeidx,bool yn);
97 
100 
102  void updateKnotColor(int idx,bool horoverlap);
103  bool canShowPlaneDragger(int planeidx,
104  bool& horoverlap) const;
105  void snapToLimits(Coord3& pos) const;
106  Coord3 getPlaneBoundingBoxInSteps(int planeidx) const;
107 
108  bool doesKnotStickToBorder(int knotidx) const;
109  unsigned char getOnBorderFlags(int knotidx) const;
110 
111  void showRotationAxis(bool yn,int planeidx=0,
112  Coord normpickedpos=Coord::udf());
113 
114  int getDragControlIdx(bool trans1d,int groupidx,
115  bool docreate);
116  int getDragControlIdx(bool trans1d,
117  int groupidx) const;
118 
120  /* Contains four coupled draggers per knot:
121  idx%4==0: 2D horizontal dragger at start depth
122  idx%4==1: 1D vertical dragger at start depth
123  idx%4==2: 2D horizontal dragger at stop depth
124  idx%4==3: 1D vertical dragger at stop depth */
126 
128 
129  osg::Switch* panels_;
130  osg::Switch* planedraggers_;
131  osg::Switch* rotationaxis_;
132 
135 
138 
140 
143 
146 
149 
151 
152  struct DragControl
153  {
154  DragControl(bool trans1d,int groupidx);
156 
157  bool trans1d_;
161  };
162 
164 
165  static const char* sKeyDraggerScale() { return "subDraggerScale"; }
166 
167 public:
168  int getKnotIdx(const TypeSet<int>& pickpath) const;
169  void handleEvents(bool yn);
170  bool isHandlingEvents() const;
171 };
172 
173 } // namespace visBase
174 
visBase::RandomTrackDragger::followActiveDragger
void followActiveDragger(int activeidx)
Coord3
A cartesian coordinate in 3D space.
Definition: coord.h:72
visBase::RandomTrackDragger::updatePanels
void updatePanels()
visBase::RandomTrackDragger::setPanelsPolygonOffset
void setPanelsPolygonOffset(bool)
visBase::RandomTrackDragger::zrange_
Interval< float > zrange_
Definition: visrandomtrackdragger.h:141
visBase::RandomTrackDragger::DragControl::DragControl
DragControl(bool trans1d, int groupidx)
ObjectSet
Set of pointers to objects.
Definition: commontypes.h:31
visBase::RandomTrackDragger::updatePlaneDraggers
void updatePlaneDraggers()
visBase::RandomTrackDragger::rightclicknotifier_
Notifier< RandomTrackDragger > rightclicknotifier_
Definition: visrandomtrackdragger.h:147
visBase
Definition: visannot.h:43
visBase::RandomTrackDragger::displaytrans_
const visBase::Transformation * displaytrans_
Definition: visrandomtrackdragger.h:150
visBase::RandomTrackDragger::snapToLimits
void snapToLimits(Coord3 &pos) const
visBase::RandomTrackDragger::turnPanelOn
void turnPanelOn(int planeidx, bool yn)
visBase::RandomTrackDragger::DragControl::~DragControl
~DragControl()
Definition: visrandomtrackdragger.h:155
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
visBase::RandomTrackDragger::removePlaneDraggerCBHandler
void removePlaneDraggerCBHandler(int idx)
osg
Open Scene Graph.
Definition: visannot.h:29
visBase::RandomTrackDragger::doSetKnot
void doSetKnot(int, const Coord &)
visBase::RandomTrackDragger::finishCB
void finishCB(CallBacker *)
visBase::RandomTrackDragger::getDragControlIdx
int getDragControlIdx(bool trans1d, int groupidx) const
visBase::RandomTrackDragger::showadjacents_
BoolTypeSet showadjacents_
Definition: visrandomtrackdragger.h:133
visBase::RandomTrackDragger::DragControl::trans1d_
bool trans1d_
Definition: visrandomtrackdragger.h:157
visBase::RandomTrackDragger::moveCB
void moveCB(CallBacker *)
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
visobject.h
visBase::RandomTrackDragger::triggerRightClick
void triggerRightClick(const EventInfo *eventinfo)
visBase::RandomTrackDragger::postponepanelupdate_
bool postponepanelupdate_
Definition: visrandomtrackdragger.h:139
visBase::RandomTrackDragger::rightClickedEventInfo
const EventInfo * rightClickedEventInfo() const
visBase::RandomTrackDragger::addPlaneDraggerCBHandler
void addPlaneDraggerCBHandler()
visBase::RandomTrackDragger::startCB
void startCB(CallBacker *)
visBase::RandomTrackDragger::showallpanels_
bool showallpanels_
Definition: visrandomtrackdragger.h:134
StepInterval< float >
Coord
A cartesian coordinate in 2D space.
Definition: coord.h:25
visBase::RandomTrackDragger::DragControl
Definition: visrandomtrackdragger.h:153
visBase::RandomTrackDragger
Definition: visrandomtrackdragger.h:37
visBase::RandomTrackDragger::rotationaxis_
osg::Switch * rotationaxis_
Definition: visrandomtrackdragger.h:131
visBase::RandomTrackDragger::postponePanelUpdate
void postponePanelUpdate(bool)
visBase::RandomTrackDragger::rightclickeventinfo_
const EventInfo * rightclickeventinfo_
Definition: visrandomtrackdragger.h:148
NotifierAccess
Interface class for Notifier. See comments there.
Definition: notify.h:22
visBase::RandomTrackDragger::DragControl::mousebutmask_
int mousebutmask_
Definition: visrandomtrackdragger.h:159
visBase::RandomTrackDragger::handleEvents
void handleEvents(bool yn)
visBase::RandomTrackDragger::canShowPlaneDragger
bool canShowPlaneDragger(int planeidx, bool &horoverlap) const
visBase::RandomTrackDragger::planedraghandlers_
ObjectSet< PlaneDragCBHandler > planedraghandlers_
Definition: visrandomtrackdragger.h:127
visBase::EventInfo
Definition: visevent.h:44
visBase::RandomTrackDragger::getPlaneBoundingBoxInSteps
Coord3 getPlaneBoundingBoxInSteps(int planeidx) const
Notifier
Class to help setup a callback handling.
Definition: notify.h:126
visBase::RandomTrackDragger::doesKnotStickToBorder
bool doesKnotStickToBorder(int knotidx) const
visBase::RandomTrackDragger::create
static RandomTrackDragger * create()
Definition: visrandomtrackdragger.h:41
visBase::RandomTrackDragger::getKnotIdx
int getKnotIdx(const TypeSet< int > &pickpath) const
visBase::RandomTrackDragger::panels_
osg::Switch * panels_
Definition: visrandomtrackdragger.h:129
visBase::RandomTrackDragger::isHandlingEvents
bool isHandlingEvents() const
position.h
mVisTrans
#define mVisTrans
Definition: visdata.h:28
visBase::RandomTrackDragger::showRotationAxis
void showRotationAxis(bool yn, int planeidx=0, Coord normpickedpos=Coord::udf())
visBase::RandomTrackDragger::DragControl::groupidx_
int groupidx_
Definition: visrandomtrackdragger.h:158
visBase::VisualObjectImpl
Definition: visobject.h:72
visBase::RandomTrackDragger::planedraggerminsizeinsteps_
int planedraggerminsizeinsteps_
Definition: visrandomtrackdragger.h:137
visBase::RandomTrackDragger::draggers_
ObjectSet< Dragger > draggers_
Definition: visrandomtrackdragger.h:119
visBase::RandomTrackDragger::zborder_
Interval< float > zborder_
Definition: visrandomtrackdragger.h:145
visBase::RandomTrackDragger::DragControl::modkeymask_
int modkeymask_
Definition: visrandomtrackdragger.h:160
visBase::RandomTrackDragger::~RandomTrackDragger
~RandomTrackDragger()
mCreateDataObj
#define mCreateDataObj(clss)
Definition: visdata.h:214
visBase::RandomTrackDragger::planedraggers_
osg::Switch * planedraggers_
Definition: visrandomtrackdragger.h:130
visBase::RandomTrackDragger::rightClickedPath
const TypeSet< int > * rightClickedPath() const
visBase::RandomTrackDragger::showplanedraggers_
bool showplanedraggers_
Definition: visrandomtrackdragger.h:136
visBase::RandomTrackDragger::getOnBorderFlags
unsigned char getOnBorderFlags(int knotidx) const
visBase::RandomTrackDragger::updateKnotColor
void updateKnotColor(int idx, bool horoverlap)
visBase::RandomTrackDragger::draggermarkers_
ObjectSet< MarkerSet > draggermarkers_
Definition: visrandomtrackdragger.h:125
visBase::RandomTrackDragger::horborder_
Geom::Rectangle< double > horborder_
Definition: visrandomtrackdragger.h:144
visBase::RandomTrackDragger::sKeyDraggerScale
static const char * sKeyDraggerScale()
Definition: visrandomtrackdragger.h:165
visBase::RandomTrackDragger::getDragControlIdx
int getDragControlIdx(bool trans1d, int groupidx, bool docreate)
Geom::Rectangle< double >
ranges.h
Coord::udf
static const Coord & udf()
Interval
Interval of values.
Definition: commontypes.h:30
objectset.h
CNotifier
Notifier with automatic capsule creation.
Definition: notify.h:171
visBase::RandomTrackDragger::dragcontrols_
ObjectSet< DragControl > dragcontrols_
Definition: visrandomtrackdragger.h:163
TypeSet< int >

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