OpendTect  6.3
visrandomtrackdisplay.h
Go to the documentation of this file.
1 #pragma once
2 /*+
3 ________________________________________________________________________
4 
5  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
6  Author: N. Hemstra
7  Date: January 2003
8 ________________________________________________________________________
9 
10 -*/
11 
12 #include "mousecursor.h"
13 #include "vissurveymod.h"
14 #include "vismultiattribsurvobj.h"
15 #include "seisdatapack.h"
16 #include "probe.h"
17 
18 namespace visBase
19 {
20  class PolyLine;
21  class RandomTrackDragger;
22  class TexturePanelStrip;
23 }
24 
25 class RandomSeisDataPack;
26 
27 namespace Geometry
28 {
29  class RandomLine;
30 }
31 
32 namespace visSurvey
33 {
34 
45 
47 public:
51  "RandomTrackDisplay",
52  toUiString(sFactoryKeyword()));
53 
54  void setProbe(Probe*);
55  int getRandomLineID() const;
56  Geometry::RandomLine* getRandomLine();
57 
58  bool isInlCrl() const { return true; }
59  bool isSection() const { return true; }
60 
61  int nrResolutions() const { return 3; }
62  void setResolution(int,TaskRunner*);
63 
64  bool hasPosModeManipulator() const { return true; }
65  void showManipulator(bool yn);
66  bool isManipulatorShown() const;
67  bool isManipulated() const;
68  bool canResetManipulation() const { return true; }
69  void resetManipulation();
70  void acceptManipulation();
71  BufferString getManipulationString() const;
72 
73  bool canDuplicate() const { return true; }
74  SurveyObject* duplicate(TaskRunner*) const;
75  DBKey getDBKey() const;
76 
77  bool allowMaterialEdit() const { return true; }
78 
79  SurveyObject::AttribFormat getAttributeFormat(int attrib) const;
80 
81  TypeSet<BinID>* getPath() { return &trcspath_; }
82  TrcKeyPath* getTrcKeyPath() { return &tkpath_; }
84  void getDataTraceBids(TypeSet<BinID>&) const;
86 
87  void getTraceKeyPath(TrcKeyPath&,
88  TypeSet<Coord>*) const;
89  Interval<float> getDataTraceRange() const;
90  TypeSet<Coord> getTrueCoords() const;
91 
92  bool setDataPackID(int attrib,DataPack::ID,
93  TaskRunner*);
94  DataPack::ID getDataPackID(int attrib) const;
95  DataPack::ID getDisplayedDataPackID(int attrib) const;
97  { return DataPackMgr::SeisID(); }
98 
99  bool canAddNode(int nodenr) const;
104  void addNode(int nodenr);
109  int nrNodes() const;
110  void addNode(const BinID&);
111  void insertNode(int,const BinID&);
112  void setNodePos(int,const BinID&);
113  BinID getNodePos(int) const;
114  BinID getManipNodePos(int) const;
115  void getAllNodePos(TypeSet<BinID>&) const;
116  TypeSet<BinID>* getNodes() { return &nodes_; }
117  void removeNode(int);
118  void removeAllNodes();
119  bool setNodePositions(const TypeSet<BinID>&);
120  void lockGeometry(bool);
121  bool isGeometryLocked() const;
122 
123  TrcKeyZSampling getTrcKeyZSampling(int attrib) const;
124  void setDepthInterval(const Interval<float>&);
125  Interval<float> getDepthInterval() const;
126 
127  const MouseCursor* getMouseCursor() const { return &mousecursor_; }
128 
129  bool getSelMousePosInfo(const visBase::EventInfo&,
130  Coord3&, BufferString&,
131  BufferString&) const;
132  void getMousePosInfo(const visBase::EventInfo&,
133  Coord3&, BufferString&,
134  BufferString&) const;
135  void getMousePosInfo(const visBase::EventInfo&,
136  IOPar&) const;
137 
138  int getSelNodeIdx() const { return selnodeidx_; }
140 
141  NotifierAccess* posChanged() { return &poschanged_; }
142  virtual NotifierAccess* getMovementNotifier() { return &moving_; }
143  NotifierAccess* getManipulationNotifier() {return &nodemoving_;}
144 
145  int getClosestPanelIdx(const Coord&,
146  double* fracptr=0) const;
147  Coord3 getNormal(const Coord3&) const;
148  virtual float calcDist(const Coord3&) const;
149  virtual bool allowsPicks() const { return true; }
150 
151  virtual void fillPar(IOPar&) const;
152  virtual bool usePar(const IOPar&);
153 
154  bool canBDispOn2DViewer() const { return true; }
155  void setSceneEventCatcher(visBase::EventCatcher*);
156 
157  void setRightHandSystem(bool);
158 
159 
163 
164  const uiString& errMsg() const { return errmsg_; }
165  void setPolyLineMode(bool yn);
166  bool createFromPolyLine();
167  void setColor(Color);
168 
169  bool setZAxisTransform(ZAxisTransform*,TaskRunner*);
170  const ZAxisTransform* getZAxisTransform() const;
171 
172  void setDisplayTransformation(const mVisTrans*);
173  const mVisTrans* getDisplayTransformation() const;
174 
175  virtual void annotateNextUpdateStage(bool yn);
176  virtual void setPixelDensity(float);
177 
178  static const char* sKeyPanelDepthKey() { return "PanelDepthKey"; }
179  static const char* sKeyPanelPlaneKey() { return "PanelPlaneKey"; }
180  static const char* sKeyPanelRotateKey() { return "PanelRotateKey";}
181 
182 protected:
184 
185  void addNodeInternal(const BinID&);
186  void insertNodeInternal(int,const BinID&);
187  void removeNodeInternal(int);
188  void movingNodeInternal(int selnodeidx);
189  void finishNodeMoveInternal();
190 
191  void setNodePositions(const TypeSet<BinID>&,
192  bool onlyinternal);
193 
194  bool getCacheValue(int attrib,int version,
195  const Coord3&,float&) const;
196 
197  void addCache();
198  void removeCache(int);
199  void swapCache(int,int);
200  void emptyCache(int);
201  bool hasCache(int) const;
202 
203  void getDataTraceBids(TypeSet<BinID>&,
204  TypeSet<int>* segments) const;
205  BinID proposeNewPos(int node) const;
206  bool isMappingTraceOfBid(BinID bid,int trcidx,
207  bool forward) const;
208  void updateTexOriginAndScale(
209  int attrib,const TrcKeyPath&,
210  const StepInterval<float>& zrg);
211  void updateChannels(int attrib,TaskRunner*);
212  void createTransformedDataPack(int attrib,
213  TaskRunner* =0);
214  void setNodePos(int,const BinID&,bool check);
215 
216  BinID snapPosition(const BinID&) const;
217  bool checkPosition(const BinID&) const;
218 
219  void geomChangeCB(CallBacker*);
220  void geomNodeMoveCB( CallBacker*);
221 
222  void nodeMoved(CallBacker*);
223  void draggerRightClick(CallBacker*);
224 
225  void mouseCB(CallBacker*);
226  void pickCB(CallBacker*);
227  bool isPicking() const;
228 
229  bool checkValidPick(const visBase::EventInfo&) const;
230  void addPickPos(const Coord3& pos);
231  void removePickPos(const Coord3&);
232  void removePickPos(int polyidx);
233  void dataTransformCB(CallBacker*);
234  void updateRanges(bool,bool);
235 
236  void updatePanelStripPath();
237  void setPanelStripZRange(const Interval<float>&);
238  float appliedZRangeStep() const;
239  void draggerMoveFinished(CallBacker*);
240  void updateMouseCursorCB(CallBacker*);
241 
245 
249 
251 
254 
257 
261 
264  //TODO replace trcspath_ by tkpath_;
266 
269  int voiidx_;
270 
272  {
274  };
276 
278  bool ismanip_;
279 
283 
286 
287  static const char* sKeyTrack();
288  static const char* sKeyNrKnots();
289  static const char* sKeyKnotPrefix();
290  static const char* sKeyDepthInterval();
291  static const char* sKeyLockGeometry();
292 };
293 
294 } // namespace visSurvey
static const char * sKeyPanelRotateKey()
Definition: visrandomtrackdisplay.h:180
#define mExpClass(module)
Definition: commondefs.h:157
virtual DataPackMgr::ID getDataPackMgrID() const
Definition: visrandomtrackdisplay.h:96
bool ispicking_
Definition: visrandomtrackdisplay.h:280
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
static const char * sKeyPanelPlaneKey()
Definition: visrandomtrackdisplay.h:179
Definition of a mouse cursor, can be either a predefined shape (from the enum, or a file...
Definition: mousecursor.h:24
TypeSet< BinID > * getNodes()
Definition: visrandomtrackdisplay.h:116
Used for displaying a random or arbitrary line.
Definition: visrandomtrackdisplay.h:44
bool geomnodejustmoved_
Definition: visrandomtrackdisplay.h:244
bool lockgeometry_
Definition: visrandomtrackdisplay.h:277
const uiString & errMsg() const
Definition: visrandomtrackdisplay.h:164
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
Notifier< RandomTrackDisplay > moving_
Definition: visrandomtrackdisplay.h:160
Interface class for Notifier. See comments there.
Definition: notify.h:20
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
Definition: randomlinegeom.h:30
virtual bool allowsPicks() const
Definition: visrandomtrackdisplay.h:149
static const char * sKeyPanelDepthKey()
Definition: visrandomtrackdisplay.h:178
TrcKeyPath tkpath_
Definition: visrandomtrackdisplay.h:263
RefObjectSet< RandomSeisDataPack > transfdatapacks_
Definition: visrandomtrackdisplay.h:260
#define mDefaultFactoryInstantiation(baseclss, clss, keywrd, usernm)
Definition: factory.h:287
TypeSet< BinID > nodes_
Definition: visrandomtrackdisplay.h:265
int nrResolutions() const
Definition: visrandomtrackdisplay.h:61
Definition: uistring.h:88
static ID SeisID()
Cube/Block (N1xN2xN3) data: 3.
A TexturePanelStrip is geometrically invariant in the z-direction. Its serially connected panels are ...
Definition: vistexturepanelstrip.h:31
int nrgeomchangecbs_
Definition: visrandomtrackdisplay.h:242
Used for displaying a polyline, preview for a random line created throught well path.
Definition: visarrowdisplay.h:18
int originalresolution_
Definition: visrandomtrackdisplay.h:285
bool polylinemode_
Definition: visrandomtrackdisplay.h:281
bool isInlCrl() const
Definition: visrandomtrackdisplay.h:58
Notifier< RandomTrackDisplay > poschanged_
Definition: visrandomtrackdisplay.h:162
SeisVolumeDataPack for random lines.
Definition: seisdatapack.h:99
NotifierAccess * posChanged()
Definition: visrandomtrackdisplay.h:141
float oldzrgstart_
Definition: visrandomtrackdisplay.h:273
Class to help setup a callback handling.
Definition: notify.h:121
visBase::EventCatcher * eventcatcher_
Definition: visrandomtrackdisplay.h:255
Definition: groupedid.h:40
bool interactivetexturedisplay_
Definition: visrandomtrackdisplay.h:284
TrcKeyPath * getTrcKeyPath()
BinID-based coding: inner nodes single.
Definition: visrandomtrackdisplay.h:82
UpdateStageInfo updatestageinfo_
Definition: visrandomtrackdisplay.h:275
ZAxisTransform * datatransform_
Definition: visrandomtrackdisplay.h:267
3D point or vector
Definition: commontypes.h:57
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
visBase::RandomTrackDragger * dragger_
Definition: visrandomtrackdisplay.h:250
Class that can execute a task.
Definition: task.h:193
NotifierAccess * getManipulationNotifier()
Definition: visrandomtrackdisplay.h:143
int pickstartnodeidx_
Definition: visrandomtrackdisplay.h:282
#define mVisTrans
Definition: visdata.h:25
Definition: vispolyline.h:33
Definition: visrandomtrackdisplay.h:271
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
bool allowMaterialEdit() const
Definition: visrandomtrackdisplay.h:77
int selnodeidx_
Definition: visrandomtrackdisplay.h:258
visBase::TexturePanelStrip * panelstrip_
Definition: visrandomtrackdisplay.h:248
bool ismanip_
Definition: visrandomtrackdisplay.h:278
int getSelNodeIdx() const
knotidx>=0, panelidx<0
Definition: visrandomtrackdisplay.h:138
uiString toUiString(const DBKey &ky)
Definition: dbkey.h:117
Definition: visrandomtrackdragger.h:34
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
MouseCursor mousecursor_
Definition: visrandomtrackdisplay.h:256
bool hasPosModeManipulator() const
Definition: visrandomtrackdisplay.h:64
TypeSet< int > * premovingselids_
Definition: visrandomtrackdisplay.h:243
visBase::MarkerSet * markerset_
Definition: visrandomtrackdisplay.h:253
Definition: vismultiattribsurvobj.h:35
Geometry::RandomLine * rl_
Definition: visrandomtrackdisplay.h:247
RefObjectSet< RandomSeisDataPack > datapacks_
Definition: visrandomtrackdisplay.h:259
Definition: visannot.h:40
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
BufferString errmsg_
Definition: horizontracker.h:117
virtual NotifierAccess * getMovementNotifier()
Definition: visrandomtrackdisplay.h:142
Interval< float > depthrg_
Definition: visrandomtrackdisplay.h:268
const MouseCursor * getMouseCursor() const
Definition: visrandomtrackdisplay.h:127
Base class for all &#39;Display&#39; objects.
Definition: vissurvobj.h:54
Definition: visevent.h:40
AttribFormat
Definition: vissurvobj.h:178
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
RefMan< Probe > probe_
Definition: visrandomtrackdisplay.h:246
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
Definition: groupedid.h:41
int voiidx_
Definition: visrandomtrackdisplay.h:269
TypeSet< BinID > trcspath_
Definition: visrandomtrackdisplay.h:262
bool canDuplicate() const
Definition: visrandomtrackdisplay.h:73
Notifier< RandomTrackDisplay > nodemoving_
Definition: visrandomtrackdisplay.h:161
2D point or vector class.
Definition: commontypes.h:58
visBase::PolyLine * polyline_
Definition: visrandomtrackdisplay.h:252
bool canResetManipulation() const
Definition: visrandomtrackdisplay.h:68
bool isSection() const
Definition: visrandomtrackdisplay.h:59
Base class for z-axis transforms.
Definition: zaxistransform.h:35
Definition: probe.h:82
MarkerSet is a set of basic pickmarker with a constant size on screen. Size and shape are settable...
Definition: vismarkerset.h:33
Definition: arraytesselator.h:19
bool canBDispOn2DViewer() const
Definition: visrandomtrackdisplay.h:154
TypeSet< BinID > * getPath()
Definition: visrandomtrackdisplay.h:81
Definition: visevent.h:83

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