OpendTect  6.6
windowfunction.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: Kristofer
8  Date: 2007
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 
15 #include "algomod.h"
16 #include "factory.h"
17 #include "mathfunc.h"
18 
19 
27 {
28 public:
29  virtual const char* name() const = 0;
30  virtual bool hasVariable() const { return false; }
31  virtual float getVariable() const { return mUdf(float); }
32  virtual bool setVariable(float) { return true; }
33  virtual const char* variableName() const { return 0; }
34  virtual bool isAcceptableVariable(float) const { return true; }
35 
36  static const char* sKeyVariable() { return "Variable"; }
37  static const char* sKeyTaperVal() { return "taperval"; }
38  static bool hasVariable(const BufferString& wintyp);
39 
40  void fillPar(IOPar&) const;
41  bool usePar(const IOPar&);
42 
43 #define mDeclWFStdFns(nm) \
44  static void initClass(); \
45  static const char* sName() { return #nm; }\
46  static WindowFunction* create() { return new nm##Window; } \
47  const char* name() const { return #nm; } \
48  float getValue(float) const; \
49  float getValue( const float* x ) const { return getValue(*x); }
50 
51  static void addAllStdClasses(); // done by Algo/initalgo.cc
52 
53 };
54 
55 
56 #define mDeclWFSimpleClass(nm) \
57 mExpClass(Algo) nm##Window : public WindowFunction \
58 { \
59 public: \
60  mDeclWFStdFns(nm); \
61 };
62 
69 
70 
71 #define mDeclWFClassWithVariable(clss) \
72  clss##Window(); \
73  bool hasVariable() const { return true; } \
74  bool setVariable(float); \
75  bool isAcceptableVariable(float) const; \
76 
77 
82 {
83 public:
84 
85  mDeclWFStdFns(CosTaper)
87 
88  float getVariable() const { return threshold_; }
89  const char* variableName() const
90  { return "Taper length";}
91 
92  static bool isLegacyTaper(const BufferString&);
93  static float getLegacyTaperVariable(const BufferString&);
94 
95 protected:
96 
97  float threshold_;
98  float factor_;
99 };
100 
101 
107 {
108 public:
109 
112 
113  KaiserWindow(double twidth,int nrsamples);
114  bool set(double width,int nrsamples);
115  //Alternate way of setting alpha
116 
117  float getVariable() const { return (float)alpha_;}
118  const char* variableName() const { return "alpha"; }
119 
120  // Variable must be set first
121  double getWidth() const { return width_; }
122  double getError() const;
123  int getLength() const { return ns_; }
124  double getWidth(int nrsamples) const;
125  double getError(int nrsamples) const;
126 
127 protected:
128 
129  double alpha_;
130  double denom_;
131  double width_;
132  int ns_;
133 };
134 
135 
137 
138 
WindowFunction::sKeyVariable
static const char * sKeyVariable()
Definition: windowfunction.h:36
factory.h
KaiserWindow::getWidth
double getWidth(int nrsamples) const
KaiserWindow::getError
double getError(int nrsamples) const
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
KaiserWindow
Kaiser Window Function.
Definition: windowfunction.h:107
WindowFunction::hasVariable
static bool hasVariable(const BufferString &wintyp)
WindowFunction::hasVariable
virtual bool hasVariable() const
Definition: windowfunction.h:30
KaiserWindow::getWidth
double getWidth() const
Definition: windowfunction.h:121
mDeclWFStdFns
#define mDeclWFStdFns(nm)
Definition: windowfunction.h:43
KaiserWindow::alpha_
double alpha_
Definition: windowfunction.h:129
WindowFunction
Base class for window functions. The inheriting classes will give a value between 0 and 1 in the inte...
Definition: windowfunction.h:27
mDeclWFSimpleClass
#define mDeclWFSimpleClass(nm)
Definition: windowfunction.h:56
WindowFunction::fillPar
void fillPar(IOPar &) const
CosTaperWindow::threshold_
float threshold_
Definition: windowfunction.h:97
KaiserWindow::denom_
double denom_
Definition: windowfunction.h:130
KaiserWindow::variableName
const char * variableName() const
Definition: windowfunction.h:118
mDefineFactory
mDefineFactory(Algo, WindowFunction, WINFUNCS)
MathFunction< float, float >
KaiserWindow::width_
double width_
Definition: windowfunction.h:131
WindowFunction::usePar
bool usePar(const IOPar &)
WindowFunction::variableName
virtual const char * variableName() const
Definition: windowfunction.h:33
WindowFunction::getVariable
virtual float getVariable() const
Definition: windowfunction.h:31
CosTaperWindow::getLegacyTaperVariable
static float getLegacyTaperVariable(const BufferString &)
WindowFunction::sKeyTaperVal
static const char * sKeyTaperVal()
Definition: windowfunction.h:37
KaiserWindow::getLength
int getLength() const
Definition: windowfunction.h:123
Conv::set
void set(T &_to, const F &fr)
template based type conversion
Definition: convert.h:27
mathfunc.h
WindowFunction::setVariable
virtual bool setVariable(float)
Definition: windowfunction.h:32
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
WindowFunction::name
virtual const char * name() const =0
KaiserWindow::getError
double getError() const
mDeclWFClassWithVariable
#define mDeclWFClassWithVariable(clss)
Definition: windowfunction.h:71
KaiserWindow::ns_
int ns_
Definition: windowfunction.h:132
CosTaperWindow::factor_
float factor_
Definition: windowfunction.h:98
mUdf
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
CosTaperWindow::isLegacyTaper
static bool isLegacyTaper(const BufferString &)
WindowFunction::isAcceptableVariable
virtual bool isAcceptableVariable(float) const
Definition: windowfunction.h:34
CosTaperWindow
Tapered Cosine Window Function.
Definition: windowfunction.h:82
WindowFunction::addAllStdClasses
static void addAllStdClasses()
CosTaperWindow::variableName
const char * variableName() const
Definition: windowfunction.h:89
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55

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