Go to the documentation of this file.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
00026
00027
00028
00029
00030
00031 #ifndef ORIGIN_750_PARSER_H
00032 #define ORIGIN_750_PARSER_H
00033
00034 #include "OriginParser.h"
00035 #include "endianfstream.hh"
00036 #include <boost/date_time/posix_time/posix_time.hpp>
00037 #include <QString>
00038
00039 using namespace Origin;
00040
00041 class Origin750Parser : public OriginParser
00042 {
00043 public:
00044 Origin750Parser(const string& fileName);
00045 bool parse();
00046
00047 protected:
00048 void readSpreadInfo();
00049 void readExcelInfo();
00050 void readMatrixInfo();
00051 void readGraphInfo();
00052 unsigned int readGraphAxisInfo(GraphAxis& axis);
00053 void readGraphGridInfo(GraphGrid& grid);
00054 void readGraphAxisBreakInfo(GraphAxisBreak& axis_break);
00055 void readGraphAxisFormatInfo(GraphAxisFormat& format);
00056 void readGraphAxisTickLabelsInfo(GraphAxisTick& tick);
00057 void readProjectTree();
00058 virtual void readProjectTreeFolder(tree<ProjectNode>::iterator parent);
00059 void readWindowProperties(Window& window, unsigned int size);
00060 virtual void readColorMap(ColorMap& colorMap);
00061 void skipLine();
00062 inline double stringToDouble(const string& s){return QString(s.c_str()).replace(",", ".").toDouble();};
00063
00064 inline boost::posix_time::ptime doubleToPosixTime(double jdt)
00065 {
00066 return boost::posix_time::ptime(boost::gregorian::date(boost::gregorian::gregorian_calendar::from_julian_day_number(jdt+1)), boost::posix_time::seconds((jdt-(int)jdt)*86400));
00067 }
00068
00069 unsigned int objectIndex;
00070 iendianfstream file;
00071
00072 unsigned int d_file_size;
00073 unsigned int d_colormap_offset;
00074 unsigned int d_start_offset;
00075 };
00076
00077 #endif // ORIGIN_750_PARSER_H