115 lines
2.7 KiB
C++
115 lines
2.7 KiB
C++
#ifndef __GRID_H_
|
|
#define __GRID_H_
|
|
|
|
#include "grid/gridPoint.h"
|
|
|
|
/**
|
|
* The class represents the base class for all 2D views.
|
|
* It contains a two dimensional array of gridPoints,
|
|
* the offset (in absolute coordinates) of the grid and
|
|
* the size of the grid.
|
|
* The size of the grid must be set during the instanciation of
|
|
* the grid and cant be changed afterwards.
|
|
*
|
|
* It provides methods for adding and setting information about
|
|
* points to the grid and obtaining a point and writing the grid
|
|
* using a gridWriter-object.
|
|
|
|
*
|
|
* @author Uwe Hebbelmann, Sebastian Stock, Andre Schemschat
|
|
*
|
|
* @date 12.02.2008
|
|
*/
|
|
class grid
|
|
{
|
|
public:
|
|
/** Array containing the gridPoints */
|
|
gridPoint*** points;
|
|
|
|
private:
|
|
/** X offset (absolute coordinate) */
|
|
long offsetX;
|
|
|
|
/** Z offset (absolute coordinate) */
|
|
long offsetZ;
|
|
|
|
/** Width of the array */
|
|
long sizeX;
|
|
|
|
/** Height of the array */
|
|
long sizeZ;
|
|
|
|
/** @brief The method frees the internal array */
|
|
void clear();
|
|
|
|
/** @brief The method allocates and initialises the internal array */
|
|
void allocate(long maxX, long maxZ);
|
|
|
|
public:
|
|
/** @brief CTor */
|
|
grid(long offsetX, long offsetZ, long sizeX, long sizeZ);
|
|
|
|
/** @brief Dtor */
|
|
virtual ~grid();
|
|
|
|
/** @brief Adds the information of the given point to the grid */
|
|
virtual void addPoint(const gridPoint& point);
|
|
|
|
/** @brief Adds the information to the grid at the specified coords */
|
|
virtual void addPoint(long x, long z, unsigned int count, unsigned int occupied);
|
|
|
|
/** @brief Sets the fixed values for a points */
|
|
virtual void setPoint(long x, long z, unsigned int count, unsigned int occupied);
|
|
|
|
/** @brief Returns the point of the absolute coordinates */
|
|
gridPoint* getAbsolutePoint(long x, long z) const;
|
|
|
|
/**
|
|
* Method checks if the given Point is in this grid
|
|
* @param x The absolute x coordinate
|
|
* @param z The absolute z coordinate
|
|
*/
|
|
inline bool contains(long x, long z) const
|
|
{
|
|
x -= getOffsetX();
|
|
z -= getOffsetZ();
|
|
if( x < 0 || z < 0 || x >= getSizeX() || z >= getSizeZ())
|
|
return false;
|
|
else
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Getter for offsetx
|
|
* @return offsetX
|
|
*/
|
|
inline long getOffsetX() const {
|
|
return this->offsetX;
|
|
}
|
|
|
|
/**
|
|
* Getter for offsetZ
|
|
* @return offsetZ
|
|
*/
|
|
inline long getOffsetZ() const {
|
|
return this->offsetZ;
|
|
}
|
|
|
|
/**
|
|
* Getter for the arraysize (X)
|
|
* @return arraysize x
|
|
*/
|
|
inline long getSizeX() const {
|
|
return this->sizeX;
|
|
}
|
|
|
|
/**
|
|
* Getter for the arraysize (Z)
|
|
* @return arraysize z
|
|
*/
|
|
inline long getSizeZ() const {
|
|
return this->sizeZ;
|
|
}
|
|
};
|
|
|
|
#endif
|