Ilwis-Objects  1.0
GIS and Remote Sensing framework for data access and processing
 All Classes Functions Enumerations Pages
basegrid.h
1 #ifndef GRID_H
2 #define GRID_H
3 
4 #include "Kernel_global.h"
5 
6 namespace Ilwis {
7 
8 class BaseGrid {
9 public:
10  BaseGrid() {}
11  virtual ~BaseGrid() {}
12  virtual double value(quint32 block, qint32 offset ) = 0;
13  virtual double value(const Voxel& pix) = 0;
14  virtual void setValue(quint32 block, qint32 offset, double value) = 0;
15  virtual quint32 blockSize(quint32 index) const {
16  if ( index < _blockSizes.size() )
17  return _blockSizes[index];
18  return iUNDEF;
19  }
20  virtual Size size() const { return _size;}
21  virtual void setSize(const Size& sz) = 0;
22  virtual quint32 blocks() const = 0;
23  virtual void store(QDataStream &s, const SerializationOptions &opt) const = 0;
24  virtual void setBlock(quint32 index, const std::vector<double>& data, bool creation) = 0;
25  virtual char *blockAsMemory(quint32 index, bool creation) = 0;
26  virtual quint32 blocksPerBand() const = 0;
27  virtual bool prepare() = 0;
28 
29 protected:
30  virtual void clear() { _size = Size(); _blockSizes.clear(); }
31  std::vector<quint32> _blockSizes;
32  Size _size;
33 };
34 
35 }
36 
37 #endif // GRID_H