12 #include "LocalConversion.h"
15 #define INVALID_ELEVATION SHRT_MIN
25 bool Save(
const char *fname)
const;
26 bool Load(
const char *fname);
27 void Add(
float elev,
const RGBi &color);
28 void RemoveAt(
int num);
31 void GenerateColors(std::vector<RGBi> &table,
int iTableSize,
float fMin,
float fMax)
const;
35 std::vector<float> m_elev;
36 std::vector<RGBi> m_color;
51 void Initialize(
const DRECT &extents,
float fMinHeight,
float fMaxHeight);
53 virtual bool FindAltitudeOnEarth(
const DPoint2 &p,
float &fAltitude,
bool bTrue =
false)
const = 0;
58 return m_EarthExtents.ContainsPoint(p, bInclusive);
71 float m_fMinHeight, m_fMaxHeight;
79 #define CE_STRUCTURES 1
81 #define CE_ALL (CE_STRUCTURES|CE_ROADS)
86 virtual bool FindAltitudeOnCulture(
const FPoint3 &p3,
float &fAltitude,
87 bool bTrue,
int iCultureFlags)
const = 0;
102 void Initialize(
const LinearUnits units,
const DRECT &earthextents,
103 float fMinHeight,
float fMaxHeight);
129 bool bTrue =
false,
int iCultureFlags = 0,
130 FPoint3 *vNormal = NULL)
const = 0;
139 int iCultureFlags = 0,
bool bTrue =
false);
142 void GetCenter(
FPoint3 ¢er);
146 FRECT m_WorldExtents;
150 void UpdateWorldExtents();
152 float m_fDiagonalLength;
167 void Initialize(
const LinearUnits units,
const DRECT &earthextents,
168 float fMinHeight,
float fMaxHeight,
int cols,
int rows);
177 FPoint2 GetWorldSpacing()
const;
179 int NumColumns() {
return m_iColumns; }
180 int NumRows() {
return m_iRows; }
188 virtual float GetElevation(
int iX,
int iZ,
bool bTrue =
false)
const = 0;
189 virtual void GetWorldLocation(
int i,
int j,
FPoint3 &loc,
bool bTrue =
false)
const = 0;
192 int iGranularity,
const RGBAi &nodata,
bool progress_callback(
int) = NULL);
194 float fMin,
float fMax,
const RGBAi &nodata,
bool progress_callback(
int) = NULL);
197 float fLightFactor,
float fAmbient = 0.1f,
float fGamma = 1.0f,
198 bool bTrue =
false,
bool progress_callback(
int) = NULL);
200 bool progress_callback(
int) = NULL);
202 float fLightFactor,
float fAmbient,
bool progress_callback(
int) = NULL);
205 int m_iColumns, m_iRows;
206 float m_fXStep, m_fZStep;
207 double m_dXStep, m_dYStep;
210 #endif // HEIGHTFIELDH