OpendTect  6.6
array2dbitmap.h
Go to the documentation of this file.
1 #pragma once
2 /*+
3 ________________________________________________________________________
4 
5  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
6  Author: A.H. Bril
7  Date: Sep 2006
8  RCS: $Id$
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "generalmod.h"
14 #include "generalmod.h"
15 #include "ranges.h"
16 #include "arraynd.h"
17 #include "dataclipper.h"
18 
19 
21 #define A2DBitMapImpl Array2DImpl<char>
22 
27 mStruct(General) A2DBitMapGenPars
28 {
29  A2DBitMapGenPars()
30  : nointerpol_(false)
31  , autoscale_(true)
32  , clipratio_(0.025,0.025)
33  , midvalue_( mUdf(float) )
34  , scale_(0,1) {}
35 
36  bool nointerpol_;
37  bool autoscale_;
38  Interval<float> clipratio_;
39  float midvalue_;
41  Interval<float> scale_;
42 
43  static char cNoFill();
44 
45 };
46 
47 
53 {
54 public:
55 
57  : data_(d) { collectData(); }
58  virtual ~A2DBitMapInpData() {}
59 
60  const Array2D<float>& data() const { return data_; }
62  float midval) const;
63  virtual float midVal() const;
64 
65  void collectData();
66 
67 protected:
69 
71 };
72 
73 
109 {
110 public:
111 
112  A2DBitMapPosSetup(const Array2DInfo&,float* dim0pos=0);
113  // If passed, dim0pos becomes mine
115 
116  void setDim0Positions(float* dim0positions);
118  void setDim1Positions(float,float);
120  inline const float* dim0Positions() const
121  { return dim0pos_; }
122  inline const Interval<float>& dim1Positions() const
123  { return dim1pos_; }
124  int dimSize( int dim ) const
125  { return dim ? szdim1_ : szdim0_; }
126 
127  void setDimRange( int dim, const Interval<float>& r )
128  { (dim ? dim1rg_ : dim0rg_) = r; }
129  inline const Interval<float>& dimRange( int dim ) const
130  { return dim ? dim1rg_ : dim0rg_; }
131  inline float dim0MedianDist() const { return dim0mediandist_; }
132 
133  void setBitMapSizes(int,int) const;
134  inline int nrXPix() const { return nrxpix_; }
135  inline int nrYPix() const { return nrypix_; }
136  void setPixSizes(int,int);
137  int availableXPix() const { return availablenrxpix_; }
138  int availableYPix() const { return availablenrypix_; }
139 
140  inline float getPixPerDim( int dim ) const
141  { return dim ? pixperdim1_ : pixperdim0_; }
142  inline float getPixOffs( int dim, float pos ) const
143  { return (pos - (dim ? dim1rg_ : dim0rg_).start)
144  * getPixPerDim( dim ); }
145 
146  int getPix(int dim,float) const;
147  // Nr of pixels from (0,0), always inside bitmap
148  bool isInside(int dim,float) const;
149  // Is position in dim inside bitmap?
150 
151 protected:
152 
153  float* dim0pos_;
155  int szdim0_;
156  int szdim1_;
157 
161 
162  // Vars for current bitmap
163  int nrxpix_;
164  int nrypix_;
167  float pixperdim0_;
168  float pixperdim1_;
169 
170 };
171 
172 
178 {
179 public:
180 
181  virtual ~A2DBitMapGenerator() { delete &pars_; }
182 
184  A2DBitMap& bitmap() { return *bitmap_; }
185  const A2DBitMap& bitmap() const { return *bitmap_; }
186  int bitmapSize(int dim) const;
187 
188  static void initBitMap(A2DBitMap&);
189  void initBitMap()
190  { if ( bitmap_ ) initBitMap( *bitmap_ ); }
191  void setPixSizes(int,int);
192 
193  void fill();
194 
195  A2DBitMapGenPars& pars() { return pars_; }
196  const A2DBitMapGenPars& pars() const { return pars_; }
197  const A2DBitMapInpData& data() const { return data_; }
198  const A2DBitMapPosSetup& setup() const { return setup_; }
199 
200  const Interval<float> getScaleRange() const { return scalerg_; }
201 
202 protected:
203 
205  const A2DBitMapPosSetup&,
206  A2DBitMapGenPars&);
209 
212  A2DBitMapGenPars& pars_;
214 
215  // handy, duplicated from respective objects
216  int szdim0_;
217  int szdim1_;
218  const float* dim0pos_;
222  float dim0perpix_;
223  float dim1perpix_;
225  float scalewidth_;
226 
227  virtual void doFill() = 0;
228 };
229 
230 
A2DBitMapPosSetup::A2DBitMapPosSetup
A2DBitMapPosSetup(const Array2DInfo &, float *dim0pos=0)
A2DBitMapPosSetup::dim0pos_
float * dim0pos_
Definition: array2dbitmap.h:153
A2DBitMapPosSetup::availablenrxpix_
int availablenrxpix_
Definition: array2dbitmap.h:165
A2DBitMapPosSetup::szdim0_
int szdim0_
Definition: array2dbitmap.h:155
A2DBitMapPosSetup::dim0MedianDist
float dim0MedianDist() const
Definition: array2dbitmap.h:131
A2DBitMapPosSetup::isInside
bool isInside(int dim, float) const
A2DBitMapGenerator::dim0pos_
const float * dim0pos_
Definition: array2dbitmap.h:218
Array2DInfo
Contains the information about the size of Array2D, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:124
dataclipper.h
A2DBitMapPosSetup::dim0Positions
const float * dim0Positions() const
Definition: array2dbitmap.h:120
A2DBitMapPosSetup::setDim0Positions
void setDim0Positions(float *dim0positions)
dim0posistions will become mine
A2DBitMapGenerator::data
const A2DBitMapInpData & data() const
Definition: array2dbitmap.h:197
A2DBitMapGenerator::scalerg_
Interval< float > scalerg_
Definition: array2dbitmap.h:224
A2DBitMapGenerator::initBitMap
void initBitMap()
Definition: array2dbitmap.h:189
A2DBitMapInpData::collectData
void collectData()
again.
A2DBitMapPosSetup::getPixPerDim
float getPixPerDim(int dim) const
Definition: array2dbitmap.h:140
A2DBitMapPosSetup::availableXPix
int availableXPix() const
Definition: array2dbitmap.h:137
A2DBitMapPosSetup::setDim1Positions
void setDim1Positions(float, float)
For dim1.
A2DBitMapPosSetup::getPix
int getPix(int dim, float) const
A2DBitMapPosSetup::availableYPix
int availableYPix() const
Definition: array2dbitmap.h:138
A2DBitMapGenerator::bitmap
A2DBitMap & bitmap()
Definition: array2dbitmap.h:184
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
A2DBitMapGenerator::pars
A2DBitMapGenPars & pars()
Definition: array2dbitmap.h:195
A2DBitMapInpData::midVal
virtual float midVal() const
A2DBitMapPosSetup::dim0rg_
Interval< float > dim0rg_
Definition: array2dbitmap.h:158
A2DBitMapGenerator::pars
const A2DBitMapGenPars & pars() const
Definition: array2dbitmap.h:196
A2DBitMapGenerator::dim1rg_
Interval< float > dim1rg_
Definition: array2dbitmap.h:221
A2DBitMapGenerator::setBitMap
void setBitMap(A2DBitMap &)
A2DBitMapPosSetup::nrXPix
int nrXPix() const
Definition: array2dbitmap.h:134
A2DBitMapGenerator::dim1perpix_
float dim1perpix_
Definition: array2dbitmap.h:223
A2DBitMapPosSetup::pixperdim0_
float pixperdim0_
Definition: array2dbitmap.h:167
A2DBitMapInpData::clipper_
DataClipper clipper_
Definition: array2dbitmap.h:68
A2DBitMapPosSetup::setBitMapSizes
void setBitMapSizes(int, int) const
A2DBitMapPosSetup::getPixOffs
float getPixOffs(int dim, float pos) const
Definition: array2dbitmap.h:142
A2DBitMapGenerator::doFill
virtual void doFill()=0
A2DBitMapPosSetup::pixperdim1_
float pixperdim1_
Definition: array2dbitmap.h:168
A2DBitMapPosSetup::szdim1_
int szdim1_
Definition: array2dbitmap.h:156
arraynd.h
A2DBitMapPosSetup
Array2D Bitmap generation setup.
Definition: array2dbitmap.h:109
A2DBitMapInpData::data_
const Array2D< float > & data_
Definition: array2dbitmap.h:70
A2DBitMapPosSetup::dimRange
const Interval< float > & dimRange(int dim) const
Definition: array2dbitmap.h:129
A2DBitMapPosSetup::nrYPix
int nrYPix() const
Definition: array2dbitmap.h:135
DataClipper
A DataClipper gets a bunch of data and determines at what value to clip if a certain clip percentage ...
Definition: dataclipper.h:73
A2DBitMapPosSetup::nrypix_
int nrypix_
Definition: array2dbitmap.h:164
A2DBitMapPosSetup::dimSize
int dimSize(int dim) const
Definition: array2dbitmap.h:124
A2DBitMapPosSetup::dim1pos_
Interval< float > dim1pos_
Definition: array2dbitmap.h:154
mStruct
#define mStruct(module)
Definition: commondefs.h:182
A2DBitMapPosSetup::dim1Positions
const Interval< float > & dim1Positions() const
Definition: array2dbitmap.h:122
A2DBitMapGenerator
Generates Array2D bitmap from Array2D<float>.
Definition: array2dbitmap.h:178
A2DBitMap
Array2D< char > A2DBitMap
Definition: array2dbitmap.h:20
A2DBitMapGenerator::setPixSizes
void setPixSizes(int, int)
A2DBitMapGenerator::A2DBitMapGenerator
A2DBitMapGenerator(const A2DBitMapInpData &, const A2DBitMapPosSetup &, A2DBitMapGenPars &)
A2DBitMapGenerator::dim0rg_
Interval< float > dim0rg_
Definition: array2dbitmap.h:220
A2DBitMapPosSetup::dim0mediandist_
float dim0mediandist_
Definition: array2dbitmap.h:160
A2DBitMapGenerator::setup
const A2DBitMapPosSetup & setup() const
Definition: array2dbitmap.h:198
A2DBitMapInpData::scale
Interval< float > scale(const Interval< float > &clipratio, float midval) const
A2DBitMapGenerator::initBitMap
static void initBitMap(A2DBitMap &)
with cNoFill
A2DBitMapGenerator::szdim1_
int szdim1_
Definition: array2dbitmap.h:217
A2DBitMapGenerator::bitmap
const A2DBitMap & bitmap() const
Definition: array2dbitmap.h:185
A2DBitMapGenerator::bitmapSize
int bitmapSize(int dim) const
A2DBitMapGenerator::bitmap_
A2DBitMap * bitmap_
Definition: array2dbitmap.h:213
A2DBitMapPosSetup::nrxpix_
int nrxpix_
Definition: array2dbitmap.h:163
A2DBitMapGenerator::getScaleRange
const Interval< float > getScaleRange() const
Definition: array2dbitmap.h:200
A2DBitMapGenerator::scalewidth_
float scalewidth_
Definition: array2dbitmap.h:225
A2DBitMapPosSetup::availablenrypix_
int availablenrypix_
Definition: array2dbitmap.h:166
A2DBitMapGenerator::fill
void fill()
A2DBitMapGenerator::szdim0_
int szdim0_
Definition: array2dbitmap.h:216
A2DBitMapGenerator::~A2DBitMapGenerator
virtual ~A2DBitMapGenerator()
Definition: array2dbitmap.h:181
A2DBitMapGenerator::dim1pos_
Interval< float > dim1pos_
Definition: array2dbitmap.h:219
A2DBitMapGenerator::pars_
A2DBitMapGenPars & pars_
Definition: array2dbitmap.h:212
A2DBitMapInpData::~A2DBitMapInpData
virtual ~A2DBitMapInpData()
Definition: array2dbitmap.h:58
A2DBitMapGenerator::data_
const A2DBitMapInpData & data_
Definition: array2dbitmap.h:210
A2DBitMapInpData::A2DBitMapInpData
A2DBitMapInpData(const Array2D< float > &d)
Definition: array2dbitmap.h:56
mUdf
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
A2DBitMapGenerator::setup_
const A2DBitMapPosSetup & setup_
Definition: array2dbitmap.h:211
A2DBitMapPosSetup::dim1rg_
Interval< float > dim1rg_
Definition: array2dbitmap.h:159
A2DBitMapGenerator::dim0perpix_
float dim0perpix_
Definition: array2dbitmap.h:222
A2DBitMapPosSetup::setDimRange
void setDimRange(int dim, const Interval< float > &r)
'zooming'
Definition: array2dbitmap.h:127
A2DBitMapInpData::data
const Array2D< float > & data() const
Definition: array2dbitmap.h:60
A2DBitMapPosSetup::setPixSizes
void setPixSizes(int, int)
A2DBitMapPosSetup::~A2DBitMapPosSetup
virtual ~A2DBitMapPosSetup()
ranges.h
Interval< float >
Array2D< char >
A2DBitMapInpData
Array2D<float>& + statistics.
Definition: array2dbitmap.h:53

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