Rev 647 | Rev 671 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 647 | Rev 648 | ||
---|---|---|---|
1 | Redirecting to URL 'https://iland.boku.ac.at/svn/iland/tags/release_1.0/src/core/layeredgrid.h': |
1 | Redirecting to URL 'https://iland.boku.ac.at/svn/iland/tags/release_1.0/src/core/layeredgrid.h': |
2 | #ifndef LAYEREDGRID_H
|
2 | #ifndef LAYEREDGRID_H
|
3 | #define LAYEREDGRID_H
|
3 | #define LAYEREDGRID_H
|
4 | 4 | ||
5 | #include "grid.h"
|
5 | #include "grid.h"
|
6 | 6 | ||
7 | /** LayeredGrid
|
7 | /** LayeredGrid
|
8 | 8 | ||
9 | */
|
9 | */
|
10 | 10 | ||
11 | class LayeredGridBase
|
11 | class LayeredGridBase
|
12 | {
|
12 | {
|
13 | public: |
13 | public: |
14 | // access to properties
|
14 | // access to properties
|
15 | virtual int sizeX() const=0; |
15 | virtual int sizeX() const=0; |
16 | virtual int sizeY() const=0; |
16 | virtual int sizeY() const=0; |
17 | virtual QRectF metricRect() const=0; |
17 | virtual QRectF metricRect() const=0; |
18 | virtual QRectF cellRect(const QPoint &p) const=0; |
18 | virtual QRectF cellRect(const QPoint &p) const=0; |
19 | // available variables
|
19 | // available variables
|
20 | virtual const QStringList names() const=0; |
20 | virtual const QStringList names() const=0; |
21 | // statistics
|
21 | // statistics
|
22 | /// retrieve min and max of variable 'index'
|
22 | /// retrieve min and max of variable 'index'
|
23 | virtual void range(double &rMin, double &rMax, const int index) const=0; |
23 | virtual void range(double &rMin, double &rMax, const int index) const=0; |
24 | 24 | ||
25 | // data access functions
|
25 | // data access functions
|
26 | virtual double value(const float x, const float y, const int index) const = 0; |
26 | virtual double value(const float x, const float y, const int index) const = 0; |
- | 27 | virtual double value(const QPointF &world_coord, const int index) const = 0; |
|
27 | virtual double value(const int ix, const int iy, const int index) const = 0; |
28 | virtual double value(const int ix, const int iy, const int index) const = 0; |
28 | virtual double value(const int grid_index, const int index) const = 0; |
29 | virtual double value(const int grid_index, const int index) const = 0; |
29 | }; |
30 | }; |
30 | 31 | ||
31 | template <class T> |
32 | template <class T> |
32 | class LayeredGrid: public LayeredGridBase |
33 | class LayeredGrid: public LayeredGridBase |
33 | {
|
34 | {
|
34 | public: |
35 | public: |
35 | LayeredGrid(const Grid<T>& grid) { mGrid = &grid; } |
36 | LayeredGrid(const Grid<T>& grid) { mGrid = &grid; } |
36 | LayeredGrid() { mGrid = 0; } |
37 | LayeredGrid() { mGrid = 0; } |
37 | QRectF cellRect(const QPoint &p) const { return mGrid->cellRect(p); } |
38 | QRectF cellRect(const QPoint &p) const { return mGrid->cellRect(p); } |
38 | QRectF metricRect() const { return mGrid->metricRect(); } |
39 | QRectF metricRect() const { return mGrid->metricRect(); } |
39 | int sizeX() const { return mGrid->sizeX(); } |
40 | int sizeX() const { return mGrid->sizeX(); } |
40 | int sizeY() const { return mGrid->sizeY();} |
41 | int sizeY() const { return mGrid->sizeY();} |
41 | 42 | ||
42 | virtual double value(const T& data, const int index) const = 0; |
43 | virtual double value(const T& data, const int index) const = 0; |
43 | double value(const T* ptr, const int index) const { return value(mGrid->constValueAtIndex(mGrid->indexOf(ptr)), index); } |
44 | double value(const T* ptr, const int index) const { return value(mGrid->constValueAtIndex(mGrid->indexOf(ptr)), index); } |
44 | double value(const int grid_index, const int index) const { return value(mGrid->constValueAtIndex(grid_index), index); } |
45 | double value(const int grid_index, const int index) const { return value(mGrid->constValueAtIndex(grid_index), index); } |
45 | double value(const float x, const float y, const int index) const { return value(mGrid->constValueAt(x,y), index); } |
46 | double value(const float x, const float y, const int index) const { return value(mGrid->constValueAt(x,y), index); } |
- | 47 | double value(const QPointF &world_coord, const int index) const { return value(mGrid->constValueAt(world_coord), index); } |
|
46 | double value(const int ix, const int iy, const int index) const { return value(mGrid->constValueAtIndex(ix, iy), index); } |
48 | double value(const int ix, const int iy, const int index) const { return value(mGrid->constValueAtIndex(ix, iy), index); } |
47 | void range(double &rMin, double &rMax, const int index) const { rMin=9999999999.; rMax=-99999999999.; |
49 | void range(double &rMin, double &rMax, const int index) const { rMin=9999999999.; rMax=-99999999999.; |
48 | for (int i=0;i<mGrid->count(); ++i) { |
50 | for (int i=0;i<mGrid->count(); ++i) { |
49 | rMin=qMin(rMin, value(i, index)); |
51 | rMin=qMin(rMin, value(i, index)); |
50 | rMax=qMax(rMax, value(i,index));}} |
52 | rMax=qMax(rMax, value(i,index));}} |
51 | 53 | ||
52 | protected: |
54 | protected: |
53 | const Grid<T> *mGrid; |
55 | const Grid<T> *mGrid; |
54 | }; |
56 | }; |
55 | 57 | ||
56 | #endif // LAYEREDGRID_H
|
58 | #endif // LAYEREDGRID_H
|
57 | 59 |