OpendTect  6.3
probe.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: Satyaki Maitra
8  Date: September 2016
9 ___________________________________________________________________
10 
11 -*/
12 
13 #include "generalmod.h"
14 #include "bufstringset.h"
15 #include "integerid.h"
16 #include "odpresentationmgr.h"
17 #include "saveable.h"
18 #include "sharedobject.h"
19 #include "trckeyzsampling.h"
20 
21 class IOPar;
22 class IOObj;
23 class Probe;
24 class ProbeManager;
25 
27 {
28 public:
29 
30  typedef int IDType;
31  mDefIntegerIDType(IDType,ID);
32 
33  ProbeLayer();
35 
36  virtual void fillPar(IOPar&) const;
37  virtual bool usePar(const IOPar&) =0;
38  virtual void invalidateData() =0;
39  virtual const char* layerType() const =0;
40 
41  virtual bool useDisplayPars() { return false; }
42  virtual void saveDisplayPars() {}
43 
44  ID getID() const;
45  const Probe* getProbe() const;
46  static ID getNewID();
47 
48  static const char* sKeyLayerType();
49  static const char* sKeyLayer();
50 
51 protected:
52 
54 
55  const ID id_;
57 
58 private:
59 
60  void setProbe(const Probe*);
61 
62  friend class Probe;
63 
64 };
65 
66 
68 {
69 public:
70  typedef ProbeLayer* (*CreateFunc)(const IOPar&);
71 
72  void addCreateFunc(CreateFunc,const char*);
73  ProbeLayer* create(const IOPar&);
74 protected:
77 };
78 
80 
81 
82 mExpClass(General) Probe : public SharedObject
83 {
84 public:
85  Probe();
88 
89  static const char* sProbeType();
90  static ChangeType cPositionChange() { return 2; }
91  static ChangeType cDimensionChange() { return 3; }
92  static ChangeType cLayerAdd() { return 4; }
93  static ChangeType cLayerToRemove() { return 5; }
94  static ChangeType cLayerChange() { return 6; }
95 
97 
98  void setPos(const TrcKeyZSampling&);
99  virtual const char* type() const =0;
100  virtual bool is2D() const { return false; }
101  virtual bool isVertical() const { return true; }
102  virtual bool is3DSlice() const { return false; }
103  virtual void fillPar(IOPar&) const;
104  virtual bool usePar(const IOPar&);
105 
106  int nrLayers() const;
107  void addLayer(ProbeLayer*);
109  const ProbeLayer* getLayerByIdx(int) const;
111  const ProbeLayer* getLayer(ProbeLayer::ID) const;
113  virtual BufferString getDisplayName() const =0;
114 
115 protected:
116  ~Probe();
119 
120 };
121 
122 
124 {
125 public:
126  typedef Probe* (*CreateFunc)(const IOPar&);
127 
128  void addCreateFunc(CreateFunc,const char*);
129  Probe* create(const IOPar&);
130 protected:
133 };
134 
135 
136 mGlobal(General) ProbeFactory& ProbeFac();
137 
138 
139 mExpClass(General) ProbeSaver : public Saveable
140 {
141 public:
142  ProbeSaver(const Probe&);
144  ~ProbeSaver();
145 protected:
146 
147  virtual uiRetVal doStore(const IOObj&) const;
148 
149 };
150 
151 
152 mExpClass(General) ProbePresentationInfo : public OD::ObjPresentationInfo
153 {
154 public:
157 
158  static OD::ObjPresentationInfo* createFrom( const IOPar&);
159  static void initClass();
160  static const char* sFactoryKey();
161 };
#define mExpClass(module)
Definition: commondefs.h:157
Definition: probe.h:26
const ProbeLayer * getLayerByIdx(int) const
Definition: ioobj.h:57
int ChangeType
Definition: monitorable.h:80
static ChangeType cLayerToRemove()
Definition: probe.h:93
static ChangeType cLayerChange()
Definition: probe.h:94
ObjID getID(const Probe &) const
void addLayer(ProbeLayer *)
#define mGlobal(module)
Definition: commondefs.h:160
void setPos(const TrcKeyZSampling &)
~ProbeLayer()
Definition: probe.h:53
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
Definition: sharedobject.h:18
int IDType
Definition: probe.h:30
static ChangeType cDimensionChange()
Definition: probe.h:91
int nrLayers() const
Manages all stored Pick::Set&#39;s.
Definition: probemanager.h:24
#define mImplSimpleMonitoredGet(fnnm, typ, memb)
Defines simple MT-safe copyable member get.
Definition: monitor.h:21
Set of BufferString objects.
Definition: bufstringset.h:25
#define mDeclMonitorableAssignment(clss)
like mDeclAbstractMonitorableAssignment but for non-abstract subclasses. Implements the clone() metho...
Definition: monitor.h:111
Object that can be saved at any time.
Definition: saveable.h:23
Definition: probe.h:123
#define mDeclInstanceCreatedNotifierAccess(clss)
Definition: notify.h:235
Definition: probe.h:67
BufferStringSet keys_
Definition: probe.h:132
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
ProbeLayerFactory & PrLayFac()
static const char * sProbeType()
virtual BufferString getDisplayName() const =0
#define mDefIntegerIDType(IntType, classname)
Definition: integerid.h:83
TypeSet< CreateFunc > createfuncs_
Definition: probe.h:75
Definition: probe.h:152
const ID id_
Definition: probe.h:55
ConstRefMan< Probe > probe_
Definition: probe.h:56
virtual bool useDisplayPars()
Definition: probe.h:41
TypeSet< CreateFunc > createfuncs_
Definition: probe.h:131
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
virtual bool is2D() const
Definition: probe.h:100
virtual const char * type() const =0
virtual bool isVertical() const
Definition: probe.h:101
ProbeFactory & ProbeFac()
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
static uiHor3DInterpol * create(uiParent *)
Definition: uistring.h:299
ProbeLayer * removeLayer(ProbeLayer::ID)
OpendTect.
Definition: commontypes.h:25
FixedString Probe()
Definition: keystrs.h:104
static ChangeType cPositionChange()
Definition: probe.h:90
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
ObjectSet< ProbeLayer > layers_
Definition: probe.h:117
TrcKeyZSampling probepos_
Definition: probe.h:118
BufferStringSet keys_
Definition: probe.h:76
FixedString ID()
Definition: keystrs.h:71
virtual bool is3DSlice() const
Definition: probe.h:102
#define mDeclAbstractMonitorableAssignment(clss)
Monitorable subclasses: assignment and comparison.
Definition: monitor.h:105
Definition: probe.h:139
Definition: probe.h:82
Definition: odpresentationmgr.h:60
static ChangeType cLayerAdd()
Definition: probe.h:92
virtual void saveDisplayPars()
Definition: probe.h:42
static void initClass()
const ProbeLayer * getLayer(ProbeLayer::ID) const

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