00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _CIvfFileReader_h_
00026 #define _CIvfFileReader_h_
00027
00028 #include <ivffile/IvfFileBase.h>
00029
00030 #include <ivf/IvfShape.h>
00031
00032 IvfSmartPointer(CIvfFileReader);
00033
00046 class IVFFILE_API CIvfFileReader : public CIvfFileBase {
00047 private:
00048 char m_rawRow[256];
00049 double m_min[3];
00050 double m_max[3];
00051 double m_scaleFactor;
00052 bool m_reverseFace;
00053 public:
00055 CIvfFileReader();
00056
00058 virtual ~CIvfFileReader();
00059
00060 IvfClassInfo("CIvfFileReader",CIvfFileBase);
00061
00069 void getSize(double* min, double* max);
00070
00072 void setReverseFace(bool flag);
00073
00075 bool getReverseFace();
00076
00078 void setScaling(double scaleFactor);
00079
00081 double getScaling();
00082
00084 void getMidpoint(double &x, double &y, double &z);
00085
00091 virtual void read();
00092
00093 protected:
00094 void getLine(std::istream &in, std::string &row);
00095 bool findPos(const char* keyword, std::string &row, int &pos);
00096 bool find(const char* keyword, std::string &row);
00097 void getLine(std::string &row);
00098 void maxMinCalc(double x, double y, double z);
00099 void resetSize();
00100 };
00101
00104 #endif