X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fplotfile.h;fp=include%2Fplotfile.h;h=35c7f9ff9a15a95555205d9e88fa4da8e3586bc3;hp=0000000000000000000000000000000000000000;hb=75a3edd6e6a5c16aea583771dfd1924c7aee9103;hpb=b23f279cdf3c7b175d3683f059d5126deb465b0f diff --git a/include/plotfile.h b/include/plotfile.h new file mode 100644 index 0000000..35c7f9f --- /dev/null +++ b/include/plotfile.h @@ -0,0 +1,148 @@ +/***************************************************************************** +** FILE IDENTIFICATION +** +** Name: plotfile.h +** Purpose: PlotFile class header +** Programmer: Kevin Rosenberg +** Date Started: Dec 2000 +** +** This is part of the CTSim program +** Copyright (C) 1983-2000 Kevin Rosenberg +** +** $Id: plotfile.h,v 1.1 2000/12/19 21:37:10 kevin Exp $ +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License (version 2) as +** published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +#ifndef PLOTFILE_H +#define PLOTFILE_H + +#ifndef MSVC +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include "ctsupport.h" +#include "plotfile.h" + +// Plotfile structure: +// 1. Lines that begin with # are comments +// 2. ASCII file format +// 3. Header lines begin with and end with +// 4. Valid headers +//
(signifies beginning of headers) +// (multiple instances may be present) +// +// +// <xlabel> +// <ylabel> +// <filetype>plotfile</filetype> (required) +// <ncolumns> (required) +// <nrecords> (required) +// </header> (required, signifies end of headers) +// 5. Data is ASCII file format, one record per line +// Number of columns is variable and is set by ncolumns header +// 6. Data begins with <plotdata> and ends with </plotdata> + + +class PlotFile +{ + private: + std::string m_strFilename; + std::string m_strTitle; + std::string m_strXLabel; + std::string m_strYLabel; + std::string m_strDate; + std::vector<std::string> m_vecStrDescriptions; + std::vector<double> m_vecCurves; + int m_iNumColumns; + int m_iNumRecords; + + bool headerRead (std::iostream& os); + bool headerWrite (std::iostream& os); + bool columnsRead (std::iostream& os); + bool columnsWrite (std::iostream& os); + + void initHeaders (); + + PlotFile (const PlotFile& rhs); // copy constructor + PlotFile& operator= (const PlotFile&); // assignment operator + +public: + PlotFile (int iNColumns, int iNRecords); + PlotFile (void); + ~PlotFile (); + + void setTitle (const std::string& title) + { m_strTitle = title; } + + void setXLabel (const std::string& label) + { m_strXLabel = label; } + + void setYLabel (const std::string& label) + { m_strYLabel = label; } + + void setCurveSize (int iNCurves, int iNRecords); + + void addDescription (const char* const pszDesc) + { m_vecStrDescriptions.push_back (pszDesc); } + + bool addColumn (int iCol, const double* const pdColumn); + + bool addColumn (int iCol, const float* const pdColumn); + + const std::string& getTitle () const + { return m_strTitle; } + + const std::string& getXLabel () const + { return m_strXLabel; } + + const std::string& getYLabel () const + { return m_strXLabel; } + + const std::string& getData () const + { return m_strDate; } + + int getNumColumns () const + { return m_iNumColumns; } + + int getNumRecords () const + { return m_iNumRecords; } + + unsigned int getNumDescriptions (void) const + { return m_vecStrDescriptions.size(); } + + const std::string& getDescription (int iDescIndex) const + { return m_vecStrDescriptions[iDescIndex]; } + + bool fileRead (const char* const filename); + + bool fileWrite (const char* const filename); + + const std::string& getFilename (void) const + { return m_strFilename; } + + void printHeaders (std::ostream& os) const; +}; + + + +#endif