OpendTect  6.3
visplanedatadisplay.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 ________________________________________________________________________
10 
11 -*/
12 
13 #include "vissurveymod.h"
14 #include "vismultiattribsurvobj.h"
15 
16 #include "mousecursor.h"
17 #include "oduicommon.h"
18 #include "undo.h"
20 #include "vistexturerect.h"
21 #include "vistransform.h"
22 
23 template <class T> class Array2D;
24 namespace visBase
25 {
26  class GridLines;
27 }
28 
29 class BinIDValueSet;
30 class Probe;
31 
32 namespace visSurvey
33 {
34 
35 class Scene;
36 
47 public:
48 
50  mDeclareEnumUtils(SliceType);
51 
53 
56  PlaneDataDisplay, "PlaneDataDisplay",
57  ::toUiString(sFactoryKeyword()));
58 
59  bool isInlCrl() const { return true; }
60 
61  void setOrientation(SliceType);
62  SliceType getOrientation() const { return orientation_; }
63 
64  bool hasPosModeManipulator() const { return true; }
65  void showManipulator(bool);
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  NotifierAccess* getManipulationNotifier();
74  { return &movefinished_; }
76  { return &datachanged_; }
78  { return &poschanged_; }
79 
80  bool allowMaterialEdit() const { return true; }
81  bool isSection() const { return true; }
82 
83  int nrResolutions() const;
84  void setResolution(int,TaskRunner*);
85 
86  SurveyObject::AttribFormat getAttributeFormat(int attrib=-1) const;
87 
88  TrcKeyZSampling getTrcKeyZSampling(int attrib=-1) const;
89  void getTraceKeyPath(TrcKeyPath&,
90  TypeSet<Coord>*) const;
91  TrcKeyZSampling getTrcKeyZSampling(bool manippos,
92  bool displayspace,
93  int attrib=-1) const;
94  Interval<float> getDataTraceRange() const;
95  void getRandomPos(DataPointSet&,TaskRunner* =0)const;
96  void setRandomPosData(int attrib,
97  const DataPointSet*,
98  TaskRunner*);
99  void setTrcKeyZSampling(const TrcKeyZSampling&);
100 
101  bool setDataPackID(int attrib,DataPack::ID,
102  TaskRunner*);
103  DataPack::ID getDataPackID(int attrib) const;
104  DataPack::ID getDisplayedDataPackID(int attrib) const;
106  { return DataPackMgr::SeisID(); }
107 
108  visBase::GridLines* gridlines() { return gridlines_; }
109 
110  const MouseCursor* getMouseCursor() const { return &mousecursor_; }
111 
113  IOPar& iop ) const
114  { return MultiTextureSurveyObject
115  ::getMousePosInfo(ei,iop);}
116  void getMousePosInfo(const visBase::EventInfo&,
117  Coord3&,
118  BufferString& val,
119  BufferString& info) const;
120  void getObjectInfo(BufferString&) const;
121 
122  virtual float calcDist(const Coord3&) const;
123  virtual float maxDist() const;
124  virtual Coord3 getNormal(const Coord3&) const;
125  virtual bool allowsPicks() const { return true; }
126 
127  bool setZAxisTransform(ZAxisTransform*,TaskRunner*);
128  const ZAxisTransform* getZAxisTransform() const;
129 
130  void setTranslationDragKeys(bool depth, int );
137  int getTranslationDragKeys(bool depth) const;
142  bool isVerticalPlane() const;
143 
144  virtual bool canDuplicate() const { return true; }
145  virtual SurveyObject* duplicate(TaskRunner*) const;
146 
147  virtual void annotateNextUpdateStage(bool yn);
148 
149  static const char* sKeyDepthKey() { return "DepthKey"; }
150  static const char* sKeyPlaneKey() { return "PlaneKey"; }
151 
152  virtual void fillPar(IOPar&) const;
153  virtual bool usePar(const IOPar&);
154 
155  void setDisplayTransformation(const mVisTrans*);
157  { return texturerect_; }
158  float getZScale() const;
160  { return displaytrans_; }
161  bool updatePlanePos(const TrcKeyZSampling&);
162  Undo& undo();
163  const Undo& undo() const;
164 
165  void setProbe(Probe*);
166  Probe* getProbe() { return probe_; }
167  const Probe* getProbe() const { return probe_; }
168 
169 protected:
170  ~PlaneDataDisplay();
171 
172  void setRandomPosDataNoCache(int attrib,
173  const BinIDValueSet*,
174  TaskRunner*);
175  void updateChannels(int attrib,TaskRunner*);
176  void createTransformedDataPack(int attrib,
177  TaskRunner* =0);
178  void updateMainSwitch();
179  void setScene(Scene*);
180  void setSceneEventCatcher(visBase::EventCatcher*);
181  void setRightHandSystem(bool);
182  void updateRanges(bool resetpos=false);
183  void updateRanges(bool resetinlcrl=false,
184  bool resetz=false);
185  void manipChanged(CallBacker*);
186  void coltabChanged(CallBacker*);
187  void draggerStart(CallBacker*);
188  void draggerMotion(CallBacker*);
189  void draggerFinish(CallBacker*);
190  void draggerRightClick(CallBacker*);
191  void setDraggerPos(const TrcKeyZSampling&);
192  void dataTransformCB(CallBacker*);
193  void updateMouseCursorCB(CallBacker*);
194 
195  bool getCacheValue(int attrib,int version,
196  const Coord3&,float&) const;
197  void addCache();
198  void removeCache(int);
199  void swapCache(int,int);
200  void emptyCache(int);
201  bool hasCache(int) const;
202 
203  TrcKeyZSampling snapPosition(const TrcKeyZSampling&) const;
204 
205  void updateTexShiftAndGrowth();
206  void updateTexOriginAndScale(int attrib,
207  const TrcKeyZSampling&);
208 
212 
214  SliceType orientation_;
215 
219 
222 
229 
231  int voiidx_;
232 
235 
239 
241  {
242  bool refreeze_;
244  SliceType oldorientation_;
245  };
249 
250  static const char* sKeyOrientation() { return "Orientation"; }
251  static const char* sKeyResolution() { return "Resolution"; }
252  static const char* sKeyGridLinesID() { return "GridLines ID"; }
253 };
254 
255 } // namespace visSurvey
Notifier< PlaneDataDisplay > poschanged_
Definition: visplanedatadisplay.h:228
#define mExpClass(module)
Definition: commondefs.h:157
bool isSection() const
Definition: visplanedatadisplay.h:81
Notifier< PlaneDataDisplay > movefinished_
Definition: visplanedatadisplay.h:226
NotifierAccess * posChanged()
Definition: visplanedatadisplay.h:77
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
const mVisTrans * getDisplayTransformation() const
Definition: visplanedatadisplay.h:159
NotifierAccess * getMovementNotifier()
Definition: visplanedatadisplay.h:73
Definition of a mouse cursor, can be either a predefined shape (from the enum, or a file...
Definition: mousecursor.h:24
SliceType oldorientation_
Definition: visplanedatadisplay.h:244
Set of data points with group selection.
Definition: datapointset.h:47
virtual bool allowsPicks() const
Definition: visplanedatadisplay.h:125
ZAxisTransform * datatransform_
Definition: visplanedatadisplay.h:230
ConstRefMan< mVisTrans > displaytrans_
Definition: visplanedatadisplay.h:233
const Probe * getProbe() const
Definition: visplanedatadisplay.h:167
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
int voiidx_
Definition: visplanedatadisplay.h:231
static const char * sKeyDepthKey()
Definition: visplanedatadisplay.h:149
Notifier< PlaneDataDisplay > datachanged_
Definition: visplanedatadisplay.h:227
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
SliceType getOrientation() const
Definition: visplanedatadisplay.h:62
visBase::GridLines * gridlines()
Definition: visplanedatadisplay.h:108
RefMan< Probe > probe_
Definition: visplanedatadisplay.h:216
#define mDefaultFactoryInstantiation(baseclss, clss, keywrd, usernm)
Definition: factory.h:287
Definition: visplanedatadisplay.h:240
visBase::EventCatcher * eventcatcher_
Definition: visplanedatadisplay.h:209
TypeSet< DataPack::ID > datapackids_
Definition: visplanedatadisplay.h:217
bool canResetManipulation() const
Definition: visplanedatadisplay.h:68
static ID SeisID()
Cube/Block (N1xN2xN3) data: 3.
static const char * sKeyResolution()
Definition: visplanedatadisplay.h:251
Used for displaying a polyline, preview for a random line created throught well path.
Definition: visarrowdisplay.h:18
const MouseCursor * getMouseCursor() const
Definition: visplanedatadisplay.h:110
int originalresolution_
Definition: visplanedatadisplay.h:236
bool interactivetexturedisplay_
Definition: visplanedatadisplay.h:238
BinID curicstep_
Definition: visplanedatadisplay.h:224
ObjectSet< BinIDValueSet > rposcache_
Definition: visplanedatadisplay.h:221
#define mDeclareEnumUtils(enm)
Some utilities surrounding the often needed enum <-> string table.
Definition: enums.h:188
NotifierAccess * getDataChangedNotifier()
Definition: visplanedatadisplay.h:75
MouseCursor mousecursor_
Definition: visplanedatadisplay.h:210
Class to handle undo/redo information.
Definition: undo.h:40
A TextureRectangle is a Rectangle with a datatexture. The data is set via setData.
Definition: vistexturerect.h:32
Class to help setup a callback handling.
Definition: notify.h:121
Set of pointers to objects.
Definition: commontypes.h:28
Definition: groupedid.h:40
TrcKeyZSampling oldtkzs_
Definition: visplanedatadisplay.h:243
bool forcemanipupdate_
Definition: visplanedatadisplay.h:237
3D point or vector
Definition: commontypes.h:57
Notifier< PlaneDataDisplay > moving_
Definition: visplanedatadisplay.h:225
bool allowMaterialEdit() const
Definition: visplanedatadisplay.h:80
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Array2D ( Subclass of ArrayND ) is a two dimensional array.
Definition: arraynd.h:127
Class that can execute a task.
Definition: task.h:193
virtual bool canDuplicate() const
Definition: visplanedatadisplay.h:144
void getMousePosInfo(const visBase::EventInfo &ei, IOPar &iop) const
Definition: visplanedatadisplay.h:112
#define mVisTrans
Definition: visdata.h:25
Definition: visgridlines.h:29
RefMan< visBase::DepthTabPlaneDragger > dragger_
Definition: visplanedatadisplay.h:211
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
Database for 3D objects.
Definition: vissurvscene.h:74
TypeSet< DataPack::ID > transfdatapackids_
Definition: visplanedatadisplay.h:218
uiString toUiString(const DBKey &ky)
Definition: dbkey.h:117
TrcKeyZSampling startmovepos_
Definition: visplanedatadisplay.h:247
const visBase::TextureRectangle * getTextureRectangle() const
Definition: visplanedatadisplay.h:156
static const char * sKeyOrientation()
Definition: visplanedatadisplay.h:250
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
OD::SliceType SliceType
Definition: visplanedatadisplay.h:49
Definition: vismultiattribsurvobj.h:35
bool isInlCrl() const
Definition: visplanedatadisplay.h:59
Definition: visannot.h:40
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
SliceType
OpendTect flat slice types.
Definition: oduicommon.h:30
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
RefMan< visBase::TextureRectangle > texturerect_
Definition: visplanedatadisplay.h:234
virtual DataPackMgr::ID getDataPackMgrID() const
Definition: visplanedatadisplay.h:105
Base class for all &#39;Display&#39; objects.
Definition: vissurvobj.h:54
A Pos::IdxPairValueSet with BinIDs.
Definition: binidvalset.h:21
Definition: visevent.h:40
static const char * sKeyGridLinesID()
Definition: visplanedatadisplay.h:252
visBase::GridLines * gridlines_
Definition: visplanedatadisplay.h:213
Undo & undo_
Definition: visplanedatadisplay.h:248
AttribFormat
Definition: vissurvobj.h:178
Used for displaying an inline, crossline or timeslice.
Definition: visplanedatadisplay.h:44
bool hasPosModeManipulator() const
Definition: visplanedatadisplay.h:64
Definition: groupedid.h:41
UpdateStageInfo updatestageinfo_
Definition: visplanedatadisplay.h:246
bool refreeze_
Definition: visplanedatadisplay.h:242
TrcKeyZSampling csfromsession_
Definition: visplanedatadisplay.h:223
Probe * getProbe()
Definition: visplanedatadisplay.h:166
Base class for z-axis transforms.
Definition: zaxistransform.h:35
SliceType orientation_
Definition: visplanedatadisplay.h:214
Definition: probe.h:82
Definition: visevent.h:83
ObjectSet< TypeSet< DataPack::ID > > displaycache_
Definition: visplanedatadisplay.h:220
static const char * sKeyPlaneKey()
Definition: visplanedatadisplay.h:150

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