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

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