00001 /*************************************************************************** 00002 File : Origin750Parser.h 00003 -------------------------------------------------------------------- 00004 Copyright : (C) 2007-2008 Alex Kargovsky, Stefan Gerlach, 00005 Ion Vasilief 00006 Email (use @ for *) : kargovsky*yumr.phys.msu.su, ion_vasilief*yahoo.fr 00007 Description : Origin 7.5 file parser class 00008 00009 ***************************************************************************/ 00010 00011 /*************************************************************************** 00012 * * 00013 * This program is free software; you can redistribute it and/or modify * 00014 * it under the terms of the GNU General Public License as published by * 00015 * the Free Software Foundation; either version 2 of the License, or * 00016 * (at your option) any later version. * 00017 * * 00018 * This program is distributed in the hope that it will be useful, * 00019 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00021 * GNU General Public License for more details. * 00022 * * 00023 * You should have received a copy of the GNU General Public License * 00024 * along with this program; if not, write to the Free Software * 00025 * Foundation, Inc., 51 Franklin Street, Fifth Floor, * 00026 * Boston, MA 02110-1301 USA * 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