r7061: initial property settings
[ctsim.git] / include / plotfile.h
index 35c7f9ff9a15a95555205d9e88fa4da8e3586bc3..2643081e7ea39adcd14e21063de012f2a0fab78a 100644 (file)
@@ -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.1 2000/12/19 21:37:10 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
 #include "ctsupport.h"
 #include "plotfile.h"
 
+
 // Plotfile structure:
 // 1. Lines that begin with # are comments
 // 2. ASCII file format
 // 3. Header lines begin with <tags> and end with </tags>
 // 4. Valid headers
-//      <header>    (signifies beginning of headers)
-//      <description> (multiple instances may be present)
-//      <date>
-//      <title>
-//      <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 setXLabel (const std::string& label)
-    { m_strXLabel = label; }
-
-  void setYLabel (const std::string& 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);\r
-\r
-  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; }
-
+  
+  bool addColumn (int iCol, const float* const pdColumn);
+  
+  void getColumn (int iCol, double *pdColumnData) const;
+  
+  const std::string& getDate () const
+  { 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;
 };