X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fplotfile.h;h=2643081e7ea39adcd14e21063de012f2a0fab78a;hp=af627b4ed82414927c7b1e8ddb32147e90f0811c;hb=8a7697ce57b56cdc43698cd1241ad98d49f9b5ac;hpb=739e435359d44546dd812fff8c86b815a214d587 diff --git a/include/plotfile.h b/include/plotfile.h index af627b4..2643081 100644 --- a/include/plotfile.h +++ b/include/plotfile.h @@ -7,9 +7,9 @@ ** Date Started: Dec 2000 ** ** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg +** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: plotfile.h,v 1.2 2000/12/20 14:39:09 kevin Exp $ +** $Id$ ** ** 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 @@ -43,115 +43,101 @@ #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) +// <plotfile ncolumns nrecords> (signifies beginning of plotfile) +// <description> (beginning of description lines) +// <ezset> (signifies beginning of ezset commands) +// <columns> Beginning of data columns // 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: +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<std::string> m_vecStrEzsetCommands; std::vector<double> m_vecCurves; int m_iNumColumns; int m_iNumRecords; - + bool m_bScatterPlot; + 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 setTitle (const char* const title) - { m_strTitle = title; } - - void setXLabel (const std::string& label) - { m_strXLabel = label; } - - void setXLabel (const char* const label) - { m_strXLabel = label; } - - void setYLabel (const std::string& label) - { m_strYLabel = label; } - - void setYLabel (const char* const label) - { m_strYLabel = label; } - - void setCurveSize (int iNCurves, int iNRecords); - + + void setCurveSize (int iNCurves, int iNRecords, bool bScatterPlot = false); + void addDescription (const char* const pszDesc) - { m_vecStrDescriptions.push_back (pszDesc); } - + { m_vecStrDescriptions.push_back (pszDesc); } + + void addEzsetCommand (const char* const pszCmd) + { m_vecStrEzsetCommands.push_back (pszCmd); } + bool addColumn (int iCol, const double* const pdColumn); - - bool addColumn (int iCol, const float* const pdColumn); - - void getColumn (int iCol, double *pdColumnData) const; - - const std::string& getTitle () const - { return m_strTitle; } - - const std::string& getXLabel () const - { return m_strXLabel; } - - const std::string& getYLabel () const - { return m_strXLabel; } - + + bool addColumn (int iCol, const float* const pdColumn); + + void getColumn (int iCol, double *pdColumnData) const; + const std::string& getDate () const - { return m_strDate; } - + { return m_strDate; } + int getNumColumns () const - { return m_iNumColumns; } - + { return m_iNumColumns; } + int getNumRecords () const - { return m_iNumRecords; } - + { return m_iNumRecords; } + + bool getIsScatterPlot() const + { return m_bScatterPlot; } + + bool getMinMax (int startingCol, double& min, double& max) const; + + bool statistics (int startingCol, double& min, double& max, double& mean, double& mode, double& median, double &stddev) const; + unsigned int getNumDescriptions (void) const - { return m_vecStrDescriptions.size(); } - + { return m_vecStrDescriptions.size(); } + const std::string& getDescription (int iDescIndex) const - { return m_vecStrDescriptions[iDescIndex]; } - + { return m_vecStrDescriptions[iDescIndex]; } + + unsigned int getNumEzsetCommands (void) const + { return m_vecStrEzsetCommands.size(); } + + const std::string& getEzsetCommand (int iIndex) const + { return m_vecStrEzsetCommands[iIndex]; } + bool fileRead (const char* const filename); - + bool fileWrite (const char* const filename); - + const std::string& getFilename (void) const - { return m_strFilename; } - + { return m_strFilename; } + void printHeaders (std::ostream& os) const; + void printHeaders (std::ostringstream& os) const; + void printHeadersBrief (std::ostream& os) const; + void printHeadersBrief (std::ostringstream& os) const; };