r168: *** empty log message ***
[ctsim.git] / libctsim / phantom.cpp
index ac0fa4a83f76abc278d8f712b6941e13f2d6aa8b..09245b2205332b7ba02d2df14f0e63d66c5dbe97 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: phantom.cpp,v 1.13 2000/07/29 19:50:08 kevin Exp $
+**  $Id: phantom.cpp,v 1.15 2000/08/02 18:06:00 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
@@ -204,19 +204,25 @@ Phantom::createFromFile (const char* const fname)
     return (false);
 
   do {
-    double cx, cy, u, v, rot, dens;
-    char pelemtype[80];
-    int n = fscanf (fp, "%79s %lf %lf %lf %lf %lf %lf",
-               pelemtype, &cx, &cy, &u, &v, &rot, &dens);
+    if (! feof(fp)) {
+      double cx, cy, u, v, rot, dens;
+      char pelemtype[80];
+      char str[1024];
+      fgets (str, sizeof(str), fp);
+      int n = sscanf (str, "%79s %lf %lf %lf %lf %lf %lf", pelemtype, &cx, &cy, &u, &v, &rot, &dens);
     
-    if (n == EOF || n == 0) {  /* end of file */
-      stoploop = true;
-      retval = false;
-    } else if (n != 7) {
-      stoploop = true;
-      retval = false;
+      if (n == EOF || n == 0) {        /* end of file */
+       stoploop = true;
+       retval = false;
+      } else if (n != 7) {
+       stoploop = true;
+       retval = false;
+      } else {
+       addPElem (pelemtype, cx, cy, u, v, rot, dens);
+       retval = true;
+      }
     } else {
-      addPElem (pelemtype, cx, cy, u, v, rot, dens);
+      stoploop = true;
       retval = true;
     }
   } while (stoploop == false);
@@ -308,24 +314,15 @@ Phantom::show () const
 {
   SGPDriver driverSGP ("Phantom Show");
   SGP sgp (driverSGP);
-  draw (sgp);
+
+  show (sgp);
 
   cout << "Press return to continue";
   cio_kb_getc();
 }
-#endif
 
-
-/* NAME
- *   draw              Draw vector outline of Phantom
- *
- * SYNOPSIS
- *   draw ()
- */
-
-#ifdef HAVE_SGP
 void 
-Phantom::draw (SGP& sgp) const
+Phantom::show (SGP& sgp) const
 {
   double wsize = m_xmax - m_xmin;
   if ((m_ymax - m_ymin) > wsize) 
@@ -338,6 +335,22 @@ Phantom::draw (SGP& sgp) const
 
   sgp.setWindow (xcent - halfWindow, ycent - halfWindow, xcent + halfWindow, ycent + halfWindow);
 
+  draw (sgp);
+}
+#endif
+
+
+/* NAME
+ *   draw              Draw vector outline of Phantom
+ *
+ * SYNOPSIS
+ *   draw ()
+ */
+
+#ifdef HAVE_SGP
+void 
+Phantom::draw (SGP& sgp) const
+{
   for (PElemIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++)
     sgp.polylineAbs ((*i)->xOutline(), (*i)->yOutline(), (*i)->nOutlinePoints());
 }