OpendTect  6.3
volprocchain.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: K. Tingdahl
8  Date: October 2006
9 ________________________________________________________________________
10 
11 
12 -*/
13 
14 #include "volumeprocessingmod.h"
15 #include "volprocstep.h"
16 #include "dbkey.h"
17 #include "refcount.h"
18 #include "threadlock.h"
19 
20 class Scaler;
21 
22 namespace VolProc
23 {
24 
27 mExpClass(VolumeProcessing) Chain : public RefCount::Referenced
29 public:
30  Chain();
31 
32  mExpClass(VolumeProcessing) Connection
33  {
34  public:
35  Connection( Step::ID outpstep=Step::cUndefID(),
37  Step::ID inpstep=Step::cUndefID(),
39 
40  bool isUdf() const;
41  bool operator==(const Connection&) const;
42  bool operator!=(const Connection&) const;
43 
44  void fillPar(IOPar&,const char* key) const;
45  bool usePar(const IOPar&,const char* key);
46 
50 
54  };
55 
56  mExpClass(VolumeProcessing) Web
57  {
58  public:
59  bool addConnection(const Connection&);
60  void removeConnection(const Connection&);
61  void getConnections(Step::ID,bool input,
62  TypeSet<Connection>&) const;
67  { return connections_; }
69  { return connections_; }
70  private:
72  };
73 
74  bool addConnection(const Connection&);
75  void removeConnection(const Connection&);
76  void updateConnections();
77  const Web& getWeb() const { return web_; }
78 
79  void setZStep( float z, bool zist )
80  { zstep_=z; zist_ = zist; }
81  float getZStep() const { return zstep_; }
82  bool zIsT() const { return zist_; }
83 
84  int nrSteps() const;
85  Step* getStep(int);
86  Step* getStepFromName(const char*);
87  const Step* getStepFromName(const char*) const;
88  Step* getStepFromID(Step::ID);
89  const Step* getStepFromID(Step::ID) const;
90  int indexOf(const Step*) const;
91  void addStep(Step*);
92  void insertStep(int,Step*);
93  void swapSteps(int,int);
94  void removeStep(int);
95  const ObjectSet<Step>& getSteps() const { return steps_; }
96  int getNrUsers(Step::ID,Step::InputSlotID) const;
97 
98  bool setOutputSlot(Step::ID,Step::OutputSlotID);
99  void setOutputScalers(const ObjectSet<Scaler>&);
101  { return outcompscalers_; }
102 
103  const VelocityDesc* getVelDesc() const;
104 
105  void fillPar(IOPar&) const;
106  bool usePar(const IOPar&);
107 
108  void setStorageID(const DBKey& mid);
109  const DBKey& storageID() const { return storageid_; }
110  uiString name() const;
111 
112  bool areSamplesIndependent() const;
113  bool needsFullVolume() const;
114  uiString errMsg() const;
115 
116  Step::ID getNewStepID() { return freeid_++; }
117 
118 private:
119  ~Chain();
120 
121  friend class ChainExecutor;
122 
123  bool validConnection(const Connection&) const;
124 
125  static const char* sKeyNrSteps() { return "Nr Steps"; }
126  static const char* sKeyStepType() { return "Type"; }
127  static const char* sKeyNrConnections() { return "Nr Connections"; }
128  static const char* sKeyConnection(int idx,BufferString&);
129 
132 
137 
138  float zstep_;
139  bool zist_;
140 
143 
144 };
145 
146 
147 } // namespace VolProc
#define mExpClass(module)
Definition: commondefs.h:157
void setZStep(float z, bool zist)
Definition: volprocchain.h:79
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:51
ObjectSet< Scaler > outcompscalers_
Definition: volprocchain.h:136
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
const ObjectSet< Scaler > & getOutputScalers() const
Definition: volprocchain.h:100
Step::ID outputstepid_
Step that is sending data.
Definition: volprocchain.h:52
Definition: veldesc.h:36
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
Web web_
Definition: volprocchain.h:135
Step::OutputSlotID outputslotid_
Definition: volprocchain.h:131
bool zIsT() const
Definition: volprocchain.h:82
static const char * sKeyNrConnections()
Definition: volprocchain.h:127
float getZStep() const
Definition: volprocchain.h:81
Definition: uistring.h:88
int InputSlotID
Definition: volprocstep.h:46
ObjectSet< T >::size_type indexOf(const ObjectSet< T > &os, const S &val)
Locate object in set.
Definition: objectset.h:173
TypeSet< Connection > connections_
Definition: volprocchain.h:71
static const char * sKeyStepType()
Definition: volprocchain.h:126
Definition: volprocchain.h:56
static int cUndefSlotID()
Definition: volprocstep.h:49
Set of pointers to objects.
Definition: commontypes.h:28
Set of (small) copyable elements.
Definition: commontypes.h:26
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
A chain of Steps that can be applied to a volume of scalars.
Definition: volprocchain.h:27
const TypeSet< Connection > & getConnections() const
Definition: volprocchain.h:68
Threads::Atomic< int > freeid_
Definition: volprocchain.h:142
Adapter for a VolProc chain to external attribute calculation.
Definition: velocitygridder.h:29
DBKey storageid_
Definition: volprocchain.h:133
const Web & getWeb() const
Definition: volprocchain.h:77
int OutputSlotID
Definition: volprocstep.h:47
const ObjectSet< Step > & getSteps() const
Definition: volprocchain.h:95
int ID
Definition: volprocstep.h:45
static ID cUndefID()
Definition: volprocstep.h:48
bool operator!=(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:60
Scaling of floating point numbers.
Definition: scaler.h:30
TypeSet< Connection > & getConnections()
Definition: volprocchain.h:66
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
executes the work for a single VolProc::Chain.
Definition: volprocchainexec.h:24
ObjectSet< Step > steps_
Definition: volprocchain.h:134
An algorithm/calculation/transformation that takes one scalar volume as input, processes it...
Definition: volprocstep.h:39
const DBKey & storageID() const
Definition: volprocchain.h:109
Definition: volprocchain.h:32
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
static const char * sKeyNrSteps()
Definition: volprocchain.h:125
bool zist_
Definition: volprocchain.h:139
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
const char * errMsg() const
Definition: horizontracker.h:59
float zstep_
Definition: volprocchain.h:138
FixedString Chain()
Definition: keystrs.h:43
Step::InputSlotID inputslotid_
Definition: volprocchain.h:49
Step::OutputSlotID outputslotid_
Definition: volprocchain.h:53
Step::ID inputstepid_
Step that is receiving data.
Definition: volprocchain.h:48
bool isUdf(const T &t)
Definition: undefval.h:241
Step::ID getNewStepID()
Definition: volprocchain.h:116
uiString errmsg_
Definition: volprocchain.h:141
Step::ID outputstepid_
Definition: volprocchain.h:130

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