r328: *** empty log message ***
[ctsim.git] / libctsupport / plotfile.cpp
index 706fce1d352bcd367e22e257965c7ea4c3ebbb2b..ef8d26420a5dfb95aec58445d17eac3d4667c4ea 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: plotfile.cpp,v 1.6 2000/12/27 03:16:02 kevin Exp $
+**  $Id: plotfile.cpp,v 1.8 2001/01/02 05:34:57 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
@@ -40,7 +40,7 @@
 PlotFile::PlotFile (int nCurves, int nRecords)
 {
   initHeaders ();
-  setCurveSize (nCurves, nRecords);
+  setCurveSize (nCurves, nRecords);\r
 }
 
 PlotFile::PlotFile ()
@@ -57,7 +57,8 @@ PlotFile::initHeaders ()
 {
   m_iNumColumns = 0;
   m_iNumRecords = 0;
-  m_strDate = "";
+  time_t currentTime = time (NULL);\r
+  m_strDate = ctime (&currentTime);\r
   m_vecStrDescriptions.clear();\r
   m_vecStrEzsetCommands.clear();
 }
@@ -148,8 +149,7 @@ PlotFile::statistics (int iStartingCol, double& min, double& max, double& mean,
     sys_error (ERR_WARNING, "iStartingCol >= iNumColumns");\r
     return false;\r
   }\r
-  \r
-  int iOffset = iStartingCol * m_iNumRecords;\r
\r
   int iNPoints = (m_iNumColumns - iStartingCol) * m_iNumRecords;\r
   std::vector<double> vec;\r
   vec.resize (iNPoints);\r
@@ -222,11 +222,32 @@ PlotFile::headerRead (std::iostream& fs)
   fs.seekg (0);\r
   bool bFinishedHeaders = false;\r
 \r
+  fs >> m_iNumColumns;\r
+  fs >> m_iNumRecords;\r
+\r
+  if (fs.fail() || m_iNumColumns == 0 || m_iNumRecords == 0)\r
+    return false;\r
+\r
   while (! bFinishedHeaders && ! fs.eof() && ! fs.fail()) {\r
     char line[1024];\r
     fs.getline (line, sizeof(line));\r
-    if (strstr (line, "<datapoints>") != NULL)\r
+    int iSP = 0;\r
+    while (line[iSP] == ' ')\r
+      iSP++;\r
+    if (line[iSP] == '\n' || ! line[iSP])\r
+      ;\r
+    else if (line[iSP] == '#') {\r
+      iSP++;\r
+      while (line[iSP] == ' ')\r
+        iSP++;\r
+      if (line[iSP] == '\n' || ! line[iSP])\r
+        ;\r
+      else\r
+        addDescription (&line[iSP]);\r
+    } else if (strstr (&line[iSP], "<datapoints>") != NULL) {\r
          bFinishedHeaders = true;\r
+    } else\r
+      addEzsetCommand (&line[iSP]);\r
   }\r
 
   return ! fs.fail();
@@ -242,27 +263,18 @@ PlotFile::headerWrite (std::iostream& fs)
   }
   
   fs.seekp (0);
-  fs << "<plotfile " << m_iNumColumns << " " << m_iNumRecords << " >\n";\r
-  
-  int iNEzset = m_vecStrEzsetCommands.size();\r
-  if (iNEzset > 0) {\r
-    fs << "<ezset>\n";\r
-    for (int i = 0; i < iNEzset; i++)\r
+  fs << m_iNumColumns << " " << m_iNumRecords << "\n";\r
+\r
+  int i;
+  for (i = 0; i < m_vecStrEzsetCommands.size(); i++)\r
       fs << m_vecStrEzsetCommands[i] << "\n";\r
-    fs << "</ezset>\n";\r
-  }\r
+  \r
+  for (i = 0; i < m_vecStrDescriptions.size(); i++)\r
+      fs << "# " << m_vecStrDescriptions[i] << "\n";\r
   \r
   if (! m_strDate.empty())
-    fs << "<date>" << m_strDate << "</date>\n";
-  
-  int iNDesc = m_vecStrDescriptions.size();\r
-  if (iNDesc > 0) {\r
-    fs << "<description>\n";
-    for (int i = 0; i < iNDesc; i++)
-      fs << m_vecStrDescriptions[i] << "\n";\r
-    fs << "</description>\n";\r
-  }
-  
+    fs << "# Date: " << m_strDate << "\n";
+    
   return ! fs.fail();
 }
 
@@ -300,8 +312,6 @@ PlotFile::columnsRead (std::iostream& fs)
     return false;
   }
   
-  return ! fs.fail();
-  
   if (m_iNumColumns == 0 || m_iNumRecords == 0) {
     sys_error (ERR_WARNING, "Called PlotFile::columnsRead with 0 columns or records");
     return false;
@@ -328,5 +338,12 @@ PlotFile::columnsRead (std::iostream& fs)
 
 void
 PlotFile::printHeaders (std::ostream& os) const
-{
+{\r
+  os << "EZSet Commands\n";\r
+  for (unsigned int iEZ = 0; iEZ < m_vecStrEzsetCommands.size(); iEZ++)\r
+    os << m_vecStrEzsetCommands[iEZ] << "\n";\r
+\r
+  os << "Descriptions\n";\r
+  for (unsigned int iDesc = 0; iDesc < m_vecStrDescriptions.size(); iDesc++)\r
+    os << m_vecStrDescriptions[iDesc] << "\n";
 }