OpendTect  6.3
vismpe.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: N. Hemstra
8 Date: August 2002
9 ________________________________________________________________________
10 
11 
12 -*/
13 
14 #include "mousecursor.h"
15 #include "vissurveymod.h"
16 #include "vissurvobj.h"
17 #include "visobject.h"
18 
19 namespace Attrib { class SelSpec; }
20 template <class T> class Selector;
22 class ZAxisTransform;
23 
24 namespace visBase
25 {
26  class BoxDragger;
27  class TextureChannels;
28  class OrthogonalSlice;
29  class Transformation;
30 };
31 
32 namespace ColTab { class Sequence; }
33 namespace MPE { class Engine; };
34 class TaskRunner;
35 
36 
37 namespace visSurvey
38 {
39 
45  public visSurvey::SurveyObject
46 {
47 public:
48  MPEDisplay();
51  "MPEDisplay", ::toUiString(sFactoryKeyword()));
52 
53  bool isInlCrl() const { return true; }
54  bool isOn() const;
55 
56  void showBoxDragger(bool);
57  bool isBoxDraggerShown() const;
58 
59  void showDragger(bool yn);
60  bool isDraggerShown() const;
61 
62  void enablePicking(bool);
63  bool isPickingEnabled() const;
64 
65  void setDraggerTransparency(float);
66  float getDraggerTransparency() const;
67 
68  void setPlaneOrientation(int orient);
69  int getPlaneOrientation() const;
70 
71  bool getPlanePosition(TrcKeyZSampling&) const;
72  void moveMPEPlane(int nrsteps);
73 
74  void updateBoxSpace();
75  void freezeBoxPosition(bool yn);
76 
77  TrcKeyZSampling getTrcKeyZSampling(int attrib=-1) const;
78 
79  void setSelSpec(int,const Attrib::SelSpec&);
80  const char* getSelSpecUserRef() const;
84  const Attrib::SelSpec* getSelSpec(int attrib,int version=0) const;
85  const TypeSet<Attrib::SelSpec>* getSelSpecs(int attrib) const;
86 
87  const ColTab::Mapper& getColTabMapper(int) const;
88  void setColTabMapper(int,const ColTab::Mapper&,TaskRunner*);
89 
90  const ColTab::Sequence& getColTabSequence(int) const;
91  bool canSetColTabSequence() const;
92  void setColTabSequence(int,const ColTab::Sequence&,
93  TaskRunner*);
94 
95  const MouseCursor* getMouseCursor() const { return &mousecursor_; }
96 
98  IOPar& iop ) const
99  { return SurveyObject::getMousePosInfo(ei,iop);}
100  void getMousePosInfo(const visBase::EventInfo&, Coord3&,
101  BufferString& val, BufferString& info) const;
102  void getObjectInfo(BufferString&) const;
103 
104  void updateSeedOnlyPropagation(bool);
105  void updateMPEActiveVolume();
106  void removeSelectionInPolygon(const Selector<Coord3>&,
107  TaskRunner*);
108 
109  virtual float calcDist(const Coord3&) const;
110  virtual float maxDist() const;
111 
112  virtual void fillPar(IOPar&) const;
113  virtual bool usePar( const IOPar&);
114 
115  NotifierAccess* getMovementNotifier();
116 
119 
120  // methods for volume-based display
121  int addSlice(int dim, bool show);
122  visBase::OrthogonalSlice* getSlice(int index);
123  void updateSlice();
124  float slicePosition(visBase::OrthogonalSlice*) const;
125  float getValue(const Coord3&) const;
126 
127  void removeChild(int displayid);
128  void getChildren(TypeSet<int>&) const;
129 
130  bool setZAxisTransform(ZAxisTransform*,TaskRunner*);
131  const ZAxisTransform* getZAxisTransform() const;
132 
133  void setRightHandSystem(bool yn);
134 
135  bool setDataVolume(int attrib,const RegularSeisDataPack*,
136  TaskRunner*);
137  void setTrcKeyZSampling(const TrcKeyZSampling&);
138 
139  const RegularSeisDataPack* getCacheVolume(int attrib) const;
140  bool setDataPackID(int attrib,DataPack::ID,TaskRunner*);
141  DataPack::ID getDataPackID(int attrib) const;
143  { return DataPackMgr::SeisID(); }
144 
145  virtual bool allowsPicks() const;
146  void allowShading(bool yn );
147  bool hasPosModeManipulator() const { return true; }
148  void showManipulator(bool yn);
149  bool isManipulated() const;
150  bool canResetManipulation() const;
151  void resetManipulation();
152  void acceptManipulation();
153  BufferString getManipulationString() const;
154  NotifierAccess* getManipulationNotifier();
155 
156  static int cInLine() { return 0; }
157  static int cCrossLine() { return 1; }
158  static int cTimeSlice() { return 2; }
159 
160  // texture channel-related methods
161 
162  SurveyObject::AttribFormat getAttributeFormat(int attrib=-1) const;
163 
164  bool canAddAttrib(int nrattribstoadd=1) const;
165  bool canRemoveAttrib() const;
166  int nrAttribs() const;
167  bool addAttrib();
168  bool removeAttrib(int attrib);
169  void enableAttrib(int attrib,bool yn);
170  bool isAttribEnabled(int attrib) const;
171 
172  const uiString& errMsg() const { return errmsg_; }
173 
174  void setDisplayTransformation(const mVisTrans*);
175 
176 
177 protected:
178  ~MPEDisplay();
179  TrcKeyZSampling getBoxPosition() const;
180  void setPlanePosition(const TrcKeyZSampling&);
181 
182  void setSliceDimension(int slice,int dim);
183  void alignSliceToSurvey(visBase::OrthogonalSlice&);
184 
185  void setSceneEventCatcher(visBase::EventCatcher*);
186 
187  // callback from boxdragger
188  void boxDraggerFinishCB(CallBacker*);
189 
190  // callbacks from MPE
191  void updateBoxPosition(CallBacker*);
192 
193  // methods for volume-based display
194  TrcKeyZSampling getTrcKeyZSampling(bool manippos,bool display,
195  int attrib) const;
196 
197  void triggerSel();
198  void triggerDeSel();
199 
200  bool pickable() const { return true; }
201  bool rightClickable() const { return false; }
202  bool selectable() const { return false; } // check!
203  bool isSelected() const;
204 
205  void turnOnSlice(bool);
206  void updateRanges(bool updateic,bool updatez);
207 
208  // callback from user
209  void mouseClickCB(CallBacker*);
210  void updateMouseCursorCB(CallBacker*);
211 
212  // other callbacks
213  void dataTransformCB(CallBacker*);
214  void sliceMoving(CallBacker*);
215 
216  // texture channel-related methods
217  bool updateFromCacheID(int attrib, TaskRunner* tskr);
218 
227 
230 
231  // data for volume-based display
241  int dim_;
243 
244  // texture channel-related data
246 
250 
251  // common keys
252  static const char* sKeyTransparency() { return "Transparency"; }
253  static const char* sKeyBoxShown() { return "Box Shown"; }
254 
255  static const char* sKeyBoxDepthKey() { return "BoxDepthKey"; }
256  static const char* sKeyBoxPlaneKey() { return "BoxPlaneKey"; }
257  static const char* sKeyInDepthBoxResize()
258  { return "InDepthBoxResize"; }
259 
260  static const Color reTrackColor;
261  static const Color eraseColor;
262  static const Color movingColor;
263  static const Color extendColor;
264 
265  // volume-related keys
266  static const char* sKeyNrSlices() { return "Nr of slices"; }
267  static const char* sKeySlice() { return "SliceID"; }
268  static const char* sKeyInline() { return "Inline"; }
269  static const char* sKeyCrossLine() { return "Crossline"; }
270  static const char* sKeyTime() { return "Time"; }
271 
272 };
273 
274 }; // namespace visSurvey
Attrib::SelSpec & curtextureas_
Definition: vismpe.h:228
#define mExpClass(module)
Definition: commondefs.h:157
ConstRefMan< RegularSeisDataPack > volumecache_
Definition: vismpe.h:235
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
bool allowshading_
Definition: vismpe.h:240
DataPack::ID cacheid_
Definition: vismpe.h:234
visBase::TextureChannels * channels_
Definition: vismpe.h:245
Definition of a mouse cursor, can be either a predefined shape (from the enum, or a file...
Definition: mousecursor.h:24
static const Color extendColor
Definition: vismpe.h:263
Definition: vistexturechannels.h:46
const MouseCursor * getMouseCursor() const
Definition: vismpe.h:95
Slice that cuts orthogonal through a VolumeData.
Definition: visvolorthoslice.h:27
static const char * sKeySlice()
Definition: vismpe.h:267
ObjectSet< visBase::OrthogonalSlice > slices_
Definition: vismpe.h:233
visBase::Transformation * voltrans_
Definition: vismpe.h:232
A series of color control points able to give an (interpolated) color for every position [0...
Definition: coltabsequence.h:37
Definition: visboxdragger.h:28
TrcKeyZSampling csfromsession_
Definition: vismpe.h:238
Interface class for Notifier. See comments there.
Definition: notify.h:20
static const Color reTrackColor
Definition: vismpe.h:260
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
MPE stands for Model, Predict, Edit. Contains tracking and editing functions.
Definition: autotracker.h:30
static int cTimeSlice()
Definition: vismpe.h:158
MouseCursor mousecursor_
Definition: vismpe.h:222
static int cCrossLine()
Definition: vismpe.h:157
static const char * sKeyNrSlices()
Definition: vismpe.h:266
static const Color movingColor
Definition: vismpe.h:262
#define mDefaultFactoryInstantiation(baseclss, clss, keywrd, usernm)
Definition: factory.h:287
VolumeDataPack for 2D and 3D seismic data.
Definition: seisdatapack.h:42
bool selectable() const
Definition: vismpe.h:202
Definition: uistring.h:88
static ID SeisID()
Cube/Block (N1xN2xN3) data: 3.
Maps data values to color sequence positions: [0,1].
Definition: coltabmapper.h:33
Used for displaying a polyline, preview for a random line created throught well path.
Definition: visarrowdisplay.h:18
bool hasPosModeManipulator() const
Definition: vismpe.h:147
BufferString slicename_
Definition: vismpe.h:237
Coord3 curboxcenter_
Definition: vismpe.h:248
static const char * sKeyCrossLine()
Definition: vismpe.h:269
Coord3 curboxwidth_
Definition: vismpe.h:249
Class to help setup a callback handling.
Definition: notify.h:121
Definition: groupedid.h:40
3D point or vector
Definition: commontypes.h:57
static const char * sKeyInDepthBoxResize()
Definition: vismpe.h:257
VisualObjectImpl
Definition: visobject.h:123
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
ConstRefMan< mVisTrans > displaytrans_
Definition: vismpe.h:247
bool isOn(int flag=0xffff)
Class that can execute a task.
Definition: task.h:193
int dim_
Definition: vismpe.h:241
Notifier< MPEDisplay > planeOrientationChange
Definition: vismpe.h:118
#define mVisTrans
Definition: visdata.h:25
static const char * sKeyBoxDepthKey()
Definition: vismpe.h:255
bool issliceshown_
Definition: vismpe.h:239
MPE::Engine & engine_
Definition: vismpe.h:219
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
bool manipulated_
Definition: vismpe.h:225
static const char * sKeyTime()
Definition: vismpe.h:270
Interface for classes that select on basis of a key.
Definition: selector.h:23
static const char * sKeyTransparency()
Definition: vismpe.h:252
uiString toUiString(const DBKey &ky)
Definition: dbkey.h:117
static const char * sKeyInline()
Definition: vismpe.h:268
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
int lasteventnr_
Definition: vismpe.h:226
static int cInLine()
Definition: vismpe.h:156
static const Color eraseColor
Definition: vismpe.h:261
static const char * sKeyBoxShown()
Definition: vismpe.h:253
Definition: visannot.h:40
bool pickable() const
Definition: vismpe.h:200
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
bool rightClickable() const
Definition: vismpe.h:201
static const char * sKeyBoxPlaneKey()
Definition: vismpe.h:256
BufferString errmsg_
Definition: horizontracker.h:117
TrcKeyZSampling curtexturecs_
Definition: vismpe.h:229
Base class for all &#39;Display&#39; objects.
Definition: vissurvobj.h:54
bool isInlCrl() const
Definition: vismpe.h:53
Definition: visevent.h:40
visBase::BoxDragger * boxdragger_
Definition: vismpe.h:220
AttribFormat
Definition: vissurvobj.h:178
Definition: coltab.h:20
Specifies an attribute selection (ID or output number of NN).
Definition: attribsel.h:43
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
Definition: vismpe.h:44
virtual DataPackMgr::ID getDataPackMgrID() const
Definition: vismpe.h:142
BufferString sliceposition_
Definition: vismpe.h:236
Definition: groupedid.h:41
Notifier< MPEDisplay > boxDraggerStatusChange
Definition: vismpe.h:117
const uiString & errMsg() const
Definition: vismpe.h:172
Base class for z-axis transforms.
Definition: zaxistransform.h:35
void getMousePosInfo(const visBase::EventInfo &ei, IOPar &iop) const
Definition: vismpe.h:97
Main engine for tracking EM objects like horizons, faults etc.,.
Definition: mpeengine.h:51
The Transformation is an object that transforms everything following the node.
Definition: vistransform.h:71
Notifier< MPEDisplay > movement
Definition: vismpe.h:223
visBase::EventCatcher * sceneeventcatcher_
Definition: vismpe.h:221
Definition: visevent.h:83
ZAxisTransform * datatransform_
Definition: vismpe.h:242
Semblance Attribute.
Definition: attribdataholder.h:21
TypeSet< Attrib::SelSpec > & as_
Definition: vismpe.h:224

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