00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef SBTVIZREGULARGRIDDATA_H
00025 #define SBTVIZREGULARGRIDDATA_H
00026
00027 #include <TerrainViz/SbTVizData.h>
00028
00029 #include <Inventor/SbLinear.h>
00030 #include <Inventor/SbString.h>
00031
00032
00033 class Array2D;
00034
00035 class SoDEPRECATED SbTVizRegularGridData : public SbTVizData {
00084
00085 public:
00089 SbTVizRegularGridData();
00090
00095 SbTVizRegularGridData(const SbTVizRegularGridData& data);
00096
00100 virtual ~SbTVizRegularGridData();
00101
00113 SbBool loadDataFile(const SbString& fileName, const SbVec3d& step, const SbVec3d& offset);
00121 SbBool loadDataFile(const SbString& fileName, const SbVec2s numSamples,
00122 const SbVec3d& step, const SbVec3d& offset,
00123 DataType dataType, OpenMode openMode,
00124 Encoding encoding);
00125
00129 float getAvgValue() const;
00133 float getMaxValue() const;
00137 float getMinValue() const;
00138
00139
00146 float getValue(const SbVec2d& point) const;
00150 float getValue(int idx) const;
00151
00166 int getLineValues(SbVec3f*& values, SbVec2d& point0, SbVec2d& point1, float& lineStep) const;
00167
00168
00173 void setValues(const void* data, const SbVec2s numSamples, const SbVec3d& step,
00174 const SbVec3d& offset, DataType dataType);
00175
00179 inline const SbVec2s& getNumSamples() const {return numSamples;};
00183 inline const SbVec3d& getSteps() const {return step;};
00184
00191 SbBool writeDataFile(const SbString& filename, OpenMode mode);
00192
00193
00194 private:
00195 SbBool isOfType(SbString& className) const;
00196
00197 ZType getZValue(SbVec2i32 coord) const;
00198 float getModellingZValue(SbVec2i32 coord) const;
00199
00200
00201 float getAvgValueIC() const;
00202 float getMaxValueIC() const;
00203 float getMinValueIC() const;
00204
00205 const Array2D* getArray2D() const {return m_data;};
00206
00207 private:
00208 FILE* openFile(SbString& out_buf, SbString& mode);
00209
00210 SbBool loadDataFile();
00211 SbBool readData(FILE* fd);
00212 void adjustData();
00213
00214 void uppercase(char* str);
00215
00216 void endianConvertUShort(unsigned short* data);
00217 void endianConvertShort(short* data);
00218 void endianConvertFloat(float* data);
00219 void endianConvertUInt(uint32_t* data);
00220 void endianConvertInt(int32_t* data);
00221
00222 void writeASCIIData(FILE* fd);
00223
00224
00225 SbVec2s numSamples;
00226 SbVec3d step;
00227
00228
00229 Array2D* m_data;
00230 void* m_xmap;
00231 void* m_ymap;
00232 };
00233
00234 #endif
00235
00236