** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: phantom.cpp,v 1.18 2000/09/04 09:06:46 kevin Exp $
+** $Id: phantom.cpp,v 1.22 2000/12/16 06:12:47 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
#include "ct.h"
+const int PhantomElement::POINTS_PER_CIRCLE = 360;\r
+const double PhantomElement::SCALE_PELEM_EXTENT=0.005; // increase pelem limits by 0.5% \r
const int Phantom::PHM_INVALID = -1;
const int Phantom::PHM_HERMAN = 0;
bool
Phantom::createFromFile (const char* const fname)
{
- bool stoploop = false;
- bool retval = false;
+ bool bGoodFile = true;
FILE *fp;
if ((fp = fopen (fname, "r")) == NULL)
return (false);
m_name = fname;
- do {
- 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);
+
+ while (1) {
+ double cx, cy, u, v, rot, dens;
+ char pelemtype[80];
+
+ int status = fscanf (fp, "%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;
- } else {
- addPElem (pelemtype, cx, cy, u, v, rot, dens);
- retval = true;
- }
- } else {
- stoploop = true;
- retval = true;
+ if (status == static_cast<int>(EOF))
+ break;
+ else if (status != 7) {
+ sys_error (ERR_WARNING, "Insufficient fields reading phantom file %s [Phantom::createFromFile]", fname);
+ bGoodFile = false;
}
- } while (stoploop == false);
+ addPElem (pelemtype, cx, cy, u, v, rot, dens);
+ }
fclose (fp);
- return (retval);
+ return (bGoodFile);
}
show (sgp);
- cout << "Press return to continue";
+ std::cout << "Press return to continue";
cio_kb_getc();
}