** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: phantom.h,v 1.2 2000/06/19 20:08:09 kevin Exp $
+** $Id: phantom.h,v 1.4 2000/06/25 17:32:24 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
double m_rectLimits[4];
static const int POINTS_PER_CIRCLE = 360;
+ static const double SCALE_PELEM_EXTENT=0.005; // increase pelem limits by 0.5%
+
+ static PhmElemType PhantomElement::convertNameToType (const char* const typeName);
void makeTransformMatrices (void);
void calcEllipsePoints (double x[], double y[], const int pts, const double u, const double v);
- int numCirclePoints (double theta) const;
+ static int numCirclePoints (double theta);
};
class Phantom
{
public:
+ typedef enum {
+ PHM_INVALID,
+ PHM_HERMAN, /* Herman head phantom */
+ PHM_BHERMAN, /* Bordered Herman head phantom */
+ PHM_ROWLAND, /* Rowland head phantom */
+ PHM_BROWLAND, /* Bordered Rowland head phantom */
+ PHM_UNITPULSE /* Unit pulse phantom */
+ } PhantomID;
+
+ static const char PHM_HERMAN_STR[]= "herman";
+ static const char PHM_BHERMAN_STR[]= "bherman";
+ static const char PHM_ROWLAND_STR[]= "rowland";
+ static const char PHM_BROWLAND_STR[]= "browland";
+ static const char PHM_UNITPULSE_STR[]= "unitpulse";
+
Phantom (void);
+ Phantom (const char* const phmName);
+
~Phantom (void);
void setComposition (PhantomComposition composition)
const PhantomComposition getComposition (void) const
{ return m_composition; }
- void create (const int phmid);
+ bool createFromPhantom (const char* const phmName);
+
+ bool createFromPhantom (const PhantomID phmid);
bool createFromFile (const char* const fname);
void convertToImagefile (ImageFile& im, const int in_nsample, const int trace) const;
+ bool fail(void) const {return m_fail;}
+ const string& failMessage(void) const {return m_failMessage;}
+ const string& name(void) const {return m_name;}
+ const PhantomID id(void) const {return m_id;}
+
#if HAVE_SGP
void show (void) const;
void draw (void) const;
#endif
void addStdHerman (void);
+ void addStdHermanBordered (void);
void addStdRowland (void);
void addStdRowlandBordered (void);
double m_diameter; // diameter of object
mutable slist<PhantomElement*> m_listPElem; // pelem lists
string m_name;
+ PhantomID m_id;
+ bool m_fail;
+ string m_failMessage;
+
+ // Standard phantomsa
+ static PhantomID convertNameToPhantomID (const char* const phmName);
+ static const char* convertPhantomIDToName (const PhantomID phmID);
+
+ void init(void);
};
typedef slist<PhantomElement*>::iterator PElemIterator;