m_composition = P_PELEMS;
m_fail = false;
m_id = PHM_INVALID;
+ m_im = NULL;
}
Phantom::~Phantom ()
for (PElemIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) {
delete *i;
}
+ if (m_im)
+ delete m_im;
}
-
const char*
Phantom::convertPhantomIDToName (int phmID)
{
/* METHOD IDENTIFICATION
-* createFromFile Add PhantomElements from file
+* createFromPhmFile Add PhantomElements from file
*
* SYNOPSIS
-* createFromFile (filename)
+* createFromPhmFile (filename)
*
* RETURNS
* true if pelem were added
*/
bool
-Phantom::createFromFile (const char* const fname)
+Phantom::createFromPhmFile (const char* const fname)
{
bool bGoodFile = true;
FILE *fp;
if (status == static_cast<int>(EOF))
break;
else if (status != 7) {
- sys_error (ERR_WARNING, "Insufficient fields reading phantom file %s [Phantom::createFromFile]", fname);
+ sys_error (ERR_WARNING, "Insufficient fields reading phantom file %s [Phantom::createFromPhmFile]", fname);
bGoodFile = false;
}
addPElem (pelemtype, cx, cy, u, v, rot, dens);
return (bGoodFile);
}
+bool
+Phantom::createFromImageFile (const char* const fname)
+{
+ bool bGoodFile = true;
+
+ m_im = new ImageFile ();
+ if (! m_im || ! m_im->fileRead (fname)) {
+ sys_error (ERR_SEVERE, "Unable to read image file %s", fname);
+ bGoodFile = false;
+ delete m_im;
+ m_im = NULL;
+ m_fail = true;
+ } else {
+ m_name = fname;
+ m_id = -1;
+ m_fail = false;
+
+ if (! m_im->getAxisExtent(m_xmin, m_xmax, m_ymin, m_ymax)) {
+ m_xmax = m_im->nx() / 2.; m_xmin = -m_xmax;
+ m_ymax = m_im->ny() / 2.; m_ymin = -m_ymax;
+ }
+ }
+
+ return (bGoodFile);
+}
+
bool
Phantom::fileWrite (const char* const fname)
{