OpendTect  6.3
mpeengine.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: A.H. Bril
8  Date: 23-10-1996
9  RCS: $Id: mpeengine.h 38753 2015-04-11 21:19:18Z nanne.hemstra@dgbes.com $
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "mpeenginemod.h"
15 
16 #include "attribsel.h"
17 #include "notify.h"
18 #include "datapack.h"
19 #include "emposid.h"
20 #include "survgeom.h"
21 
22 class BufferStringSet;
23 class Executor;
24 
25 namespace EM { class EMObject; }
26 namespace Geometry { class Element; }
27 template <class T> class Selector;
28 
29 namespace MPE
30 {
31 
32 class EMTracker;
33 class HorizonTrackerMgr;
34 class ObjectEditor;
35 
37 {
38 public:
40  virtual bool checkInVolumeTrackMode() const = 0;
41  virtual bool checkActiveTracker() const = 0;
42  virtual bool checkStoredData(Attrib::SelSpec&,DBKey&) const = 0;
43  virtual bool checkPreloadedData(const DBKey&) const = 0;
44 };
45 
46 
51 mExpClass(MPEEngine) Engine : public CallBacker
53  mGlobal(MPEEngine) friend Engine& engine();
54 
55 public:
56  Engine();
57  virtual ~Engine();
58 
59  void init();
60 
61  const TrcKeyZSampling& activeVolume() const;
62  void setActiveVolume(const TrcKeyZSampling&);
63  const TrcKeyPath* activePath() const
64  { return rdmlinetkpath_; }
65  void setActivePath( const TrcKeyPath* tkp )
66  { rdmlinetkpath_ = tkp; }
67  int activeRandomLineID() const
68  { return rdlid_; }
69  void setActiveRandomLineID( int rdlid )
70  { rdlid_ = rdlid; }
72 
73  void setActive2DLine(Pos::GeomID);
74  Pos::GeomID activeGeomID() const;
75 
78 
79  void updateSeedOnlyPropagation(bool);
80 
81  enum TrackState { Started, Paused, Stopped };
82  TrackState getState() const { return state_; }
83  bool startTracking(uiString&);
84  bool startRetrack(uiString&);
85  void stopTracking();
86  bool trackingInProgress() const;
87  void undo(uiString& errmsg);
88  void redo(uiString& errmsg);
89  bool canUnDo();
90  bool canReDo();
91  void enableTracking(bool yn);
94 
95  void removeSelectionInPolygon(
96  const Selector<Coord3>&,
97  TaskRunner*);
98  void getAvailableTrackerTypes(BufferStringSet&)const;
99 
100  int nrTrackersAlive() const;
101  int highestTrackerID() const;
102  const EMTracker* getTracker(int idx) const;
103  EMTracker* getTracker(int idx);
104  int getTrackerByObject(const EM::ObjectID&) const;
105  int getTrackerByObject(const char*) const;
106  int addTracker(EM::EMObject*);
107  void removeTracker(int idx);
108  void refTracker(EM::ObjectID);
109  void unRefTracker(EM::ObjectID,bool nodel=false);
110  bool hasTracker(EM::ObjectID) const;
113  void setActiveTracker(const EM::ObjectID&);
114  void setActiveTracker(EMTracker*);
115  EMTracker* getActiveTracker();
116 
117  /*Attribute stuff */
118  void setOneActiveTracker(const EMTracker*);
119  void unsetOneActiveTracker();
120  void getNeededAttribs(
121  TypeSet<Attrib::SelSpec>&) const;
122  TrcKeyZSampling getAttribCube(const Attrib::SelSpec&) const;
126  int getCacheIndexOf(const Attrib::SelSpec&) const;
127  DataPack::ID getAttribCacheID(const Attrib::SelSpec&) const;
128  bool hasAttribCache(const Attrib::SelSpec&) const;
129  bool setAttribData( const Attrib::SelSpec&,
130  DataPack::ID);
131  bool cacheIncludes(const Attrib::SelSpec&,
132  const TrcKeyZSampling&);
133  void swapCacheAndItsBackup();
134 
135  bool pickingOnSameData(const Attrib::SelSpec& oldss,
136  const Attrib::SelSpec& newss,
137  uiString& error) const;
138  bool isSelSpecSame(const Attrib::SelSpec& setupss,
139  const Attrib::SelSpec& clickedss) const;
140 
141  void updateFlatCubesContainer(const TrcKeyZSampling&,
142  int idx,bool);
144  ObjectSet<TrcKeyZSampling>* getTrackedFlatCubes(const int idx) const;
145  DataPack::ID getSeedPosDataPack(const TrcKey&,float z,
146  int nrtrcs,
147  const StepInterval<float>& zrg) const;
148 
149  /*Editors */
150  ObjectEditor* getEditor(const EM::ObjectID&,bool create);
151  void removeEditor(const EM::ObjectID&);
152 
153  void setValidator(TrackSettingsValidator*);
154  const char* errMsg() const;
155 
156  BufferString setupFileName(const DBKey&) const;
157 
158  void fillPar(IOPar&) const;
159  bool usePar(const IOPar&);
160 
161 protected:
162  void applClosingCB(CallBacker*);
163 
168  int rdlid_;
169 
171 
176 
181 
182  bool prepareForTrackInVolume(uiString&);
183  bool prepareForRetrack();
184  bool trackInVolume();
185  void trackingFinishedCB(CallBacker*);
186  EM::EMObject* getCurrentEMObject() const;
187 
188  struct CacheSpecs
189  {
191  Pos::GeomID geomid=
193  : attrsel_(as),geomid_(geomid)
194  {}
195 
198  };
199 
204 
205  mStruct(MPEEngine) FlatCubeInfo
206  {
207  FlatCubeInfo()
208  :nrseeds_(1)
209  {
210  flatcs_.setEmpty();
211  }
212  TrcKeyZSampling flatcs_;
213  int nrseeds_;
214  };
215 
217 
218  static const char* sKeyNrTrackers(){ return "Nr Trackers"; }
219  static const char* sKeyObjectID() { return "ObjectID"; }
220  static const char* sKeyEnabled() { return "Is enabled"; }
221  static const char* sKeyTrackPlane(){ return "Track Plane"; }
222  static const char* sKeySeedConMode(){ return "Seed Connect Mode"; }
223 };
224 
225 
226 mGlobal(MPEEngine) Engine& engine();
227 
228 } // namespace MPE
int undoeventid_
Definition: mpeengine.h:179
#define mExpClass(module)
Definition: commondefs.h:157
od_int32 ObjectID
Definition: emposid.h:22
ObjectSet< HorizonTrackerMgr > trackermgrs_
Definition: mpeengine.h:173
static const char * sKeyNrTrackers()
Definition: mpeengine.h:218
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
TrcKeyZSampling activevolume_
Definition: mpeengine.h:166
virtual ~TrackSettingsValidator()
Definition: mpeengine.h:39
static Geometry::ID cUndefGeomID()
Definition: survgeom.h:146
#define mStruct(module)
Definition: commondefs.h:162
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
TrackState
Definition: mpeengine.h:81
#define mGlobal(module)
Definition: commondefs.h:160
Pos::GeomID geomid_
Definition: mpeengine.h:197
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
bool init()
ObjectSet< CacheSpecs > attribbackupcachespecs_
Definition: mpeengine.h:203
Attrib::SelSpec attrsel_
Definition: mpeengine.h:196
Engine & engine()
ObjectSet< EMTracker > trackers_
Definition: mpeengine.h:174
TypeSet< DataPack::ID > attribbkpcachedatapackids_
Definition: mpeengine.h:202
TypeSet< DataPack::ID > attribcachedatapackids_
Definition: mpeengine.h:200
Tracks EM objects.
Definition: emtracker.h:38
Definition: uistring.h:88
Set of BufferString objects.
Definition: bufstringset.h:25
const TrcKeyPath * activePath() const
Definition: mpeengine.h:63
static const char * sKeySeedConMode()
Definition: mpeengine.h:222
CacheSpecs(const Attrib::SelSpec &as, Pos::GeomID geomid=Survey::GeometryManager::cUndefGeomID())
Definition: mpeengine.h:190
CNotifier< Engine, int > trackertoberemoved
Definition: mpeengine.h:112
Class to help setup a callback handling.
Definition: notify.h:121
Set of pointers to objects.
Definition: commontypes.h:28
Manages DataPacks.
Definition: datapack.h:174
BufferString errmsg_
Definition: mpeengine.h:165
int rdlid_
Definition: mpeengine.h:168
Pos::GeomID activegeomid_
Definition: mpeengine.h:170
static const char * sKeyObjectID()
Definition: mpeengine.h:219
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Class that can execute a task.
Definition: task.h:193
Notifier< Engine > actionFinished
Definition: mpeengine.h:93
Notifier< Engine > actionCalled
Definition: mpeengine.h:92
static const char * sKeyEnabled()
Definition: mpeengine.h:220
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
Abstraction of EM Object editing. It gives lists of which nodes that may be moved, and in what manner.
Definition: emeditor.h:44
ObjectSet< CacheSpecs > attribcachespecs_
Definition: mpeengine.h:201
static const char * sKeyTrackPlane()
Definition: mpeengine.h:221
Interface for classes that select on basis of a key.
Definition: selector.h:23
DataPackMgr & dpm_
Definition: mpeengine.h:180
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
int activeRandomLineID() const
Definition: mpeengine.h:67
Definition: mpeengine.h:188
Index_Type GeomID
Definition: commontypes.h:48
ObjectSet< ObjectSet< FlatCubeInfo > > flatcubescontainer_
Definition: mpeengine.h:214
const TrcKeyPath * rdmlinetkpath_
Definition: mpeengine.h:167
DBKey midtoload
Definition: mpeengine.h:77
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
static uiHor3DInterpol * create(uiParent *)
Base class for all EarthModel objects.
Definition: emobject.h:117
EMTracker * activetracker_
Definition: mpeengine.h:178
Notifier< Engine > loadEMObject
Definition: mpeengine.h:76
const EMTracker * oneactivetracker_
Definition: mpeengine.h:177
void setActivePath(const TrcKeyPath *tkp)
Definition: mpeengine.h:65
Earth Model objects like horizons, faults, fault-sticks and bodies.
Definition: embody.h:23
ObjectSet< ObjectEditor > editors_
Definition: mpeengine.h:175
Notifier with automatic capsule creation.
Definition: notify.h:166
Specifies an attribute selection (ID or output number of NN).
Definition: attribsel.h:43
TrackSettingsValidator * validator_
Definition: mpeengine.h:164
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
Notifier< Engine > trackeraddremove
Definition: mpeengine.h:111
Definition: groupedid.h:41
const char * errMsg() const
Definition: horizontracker.h:59
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:26
void setActiveRandomLineID(int rdlid)
Definition: mpeengine.h:69
Main engine for tracking EM objects like horizons, faults etc.,.
Definition: mpeengine.h:51
Definition: mpeengine.h:36
TrackState state_
Definition: mpeengine.h:172
Definition: arraytesselator.h:19
TrackState getState() const
Definition: mpeengine.h:82
Notifier< Engine > activevolumechange
Definition: mpeengine.h:71
Specification to enable chunkwise execution of a process.
Definition: executor.h:38

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