36 #ifndef PROFILESURFACE_OBJECT_H
37 #define PROFILESURFACE_OBJECT_H
63 class GeoTessMetaData;
112 virtual int class_size()
const
124 {
return GeoTessProfileType::SURFACE; };
130 {
return (GeoTessProfile::operator==(p) &&
142 virtual double getValue(
int attributeIndex,
int nodeIndex)
const
144 return nodeIndex == 0 ? data->getDouble(attributeIndex) : NaN_DOUBLE;
153 virtual double getValueTop(
int attributeIndex)
const
154 {
return data->getDouble(attributeIndex); }
166 virtual bool isNaN(
int nodeIndex,
int attributeIndex)
168 return nodeIndex != 0 || data->isNaN(attributeIndex);
176 int attributeIndex,
double radius,
177 bool allowRadiusOutOfRange)
const
179 return getData(0).getDouble(attributeIndex);
186 virtual float getRadius(
int i)
const
187 {
return NaN_FLOAT; };
223 virtual void setData(
const vector<GeoTessData*>& inData)
224 {
delete data; data = inData[0]; }
230 {
delete data; data = inData; }
236 virtual void setRadii(
const vector<float>& newRadii)
239 virtual void setRadius(
int index,
float radius)
245 virtual float getRadiusTop()
const
246 {
return NaN_FLOAT; };
261 virtual float getRadiusBottom()
const
262 {
return NaN_FLOAT; };
280 data(NULL), pointIndex(-1)
281 { data = GeoTessData::getData(ifs, gtmd); };
286 GeoTessProfileSurface(IFStreamAscii& ifs, GeoTessMetaData& gtmd) : GeoTessProfile(),
287 data(NULL), pointIndex(-1)
288 { data = GeoTessData::getData(ifs, gtmd); };
294 virtual ~GeoTessProfileSurface() {
if (data != NULL)
delete data; };
299 virtual void write(IFStreamBinary& ofs)
300 { ofs.writeByte((
byte) GeoTessProfileType::SURFACE.ordinal());
306 virtual void write(IFStreamAscii& ofs)
307 { ofs.writeInt(GeoTessProfileType::SURFACE.ordinal());
320 virtual int findClosestRadiusIndex(
double radius)
const
331 virtual void setPointIndex(
int nodeIndex,
int pntIndex)
332 { pointIndex = pntIndex; }
342 virtual void resetPointIndices() { pointIndex = -1; }
352 virtual int getPointIndex(
int nodeIndex)
const
353 {
return pointIndex; }
359 virtual GeoTessProfile* copy()
361 return new GeoTessProfileSurface(data->copy());
370 #endif // PROFILESURFACE_OBJECT_H