r348: fix linefeed problem
[ctsim.git] / include / phantom.h
index e30ce87934c8234344b895d96be5c9cd56dd6233..286f3ed0e94e68603d37051a989cac8f6803a415 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: phantom.h,v 1.17 2000/12/16 06:12:47 kevin Exp $
+**  $Id: phantom.h,v 1.20 2001/01/02 16:02:12 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
@@ -66,6 +66,8 @@ class PhantomElement
     double* rectLimits() {return m_rectLimits;}
     double* xOutline() {return m_xOutline;}
     double* yOutline() {return m_yOutline;}
+    double* const xOutline() const {return m_xOutline;}
+    double* const yOutline() const {return m_yOutline;}
     const double atten() const {return m_atten;}
     const double diameter() const {return m_diameter;}
     const double xmin() const {return m_xmin;}
@@ -78,6 +80,9 @@ class PhantomElement
     const double u() const {return m_u;}
     const double v() const {return m_v;}
 
+    void printDefinition (std::ostream& os) const;
+    void printDefinition (std::ostringstream& os) const;
+
  private:
     PhmElemType m_type;             // pelem type (box, ellipse, etc)
     double m_cx, m_cy;      // center of pelem 
@@ -97,7 +102,8 @@ class PhantomElement
     static const int POINTS_PER_CIRCLE;
     static const double SCALE_PELEM_EXTENT;  // increase pelem limits by 0.5% 
 
-    static PhmElemType PhantomElement::convertNameToType (const char* const typeName);
+    static PhmElemType convertNameToType (const char* const typeName);
+    static const char* const convertTypeToName (PhmElemType iType);
 
     void makeTransformMatrices ();
 
@@ -154,6 +160,8 @@ class Phantom
 
     bool createFromFile (const char* const fname);
 
+    bool fileWrite (const char* const fname);
+
     void addPElem (const PhantomElement& pelem);
 
     void addPElem (const char* const composition, const double cx, const double cy, const double u, const double v, const double rot, const double atten);
@@ -162,6 +170,9 @@ class Phantom
 
     void convertToImagefile (ImageFile& im, const int in_nsample, const int trace) const;
 
+    void printDefinitions (std::ostream& os) const;
+    void printDefinitions (std::ostringstream& os) const;
+
     bool fail() const             {return m_fail;}
     const std::string& failMessage() const {return m_failMessage;}
     const std::string& name() const     {return m_name;}
@@ -178,7 +189,8 @@ class Phantom
     void addStdSheppLogan ();
     void addStdSheppLoganBordered ();
 
-    void print () const;
+    void print (std::ostream& os) const;
+    void print (std::ostringstream& os) const;
 
     const double maxAxisLength () const {return (((m_xmax - m_xmin) > (m_ymax - m_ymin)) ? (m_xmax - m_xmin) : (m_ymax - m_ymin));}
 
@@ -187,7 +199,7 @@ class Phantom
     const double xmax() const {return m_xmax;}
     const double ymin() const {return m_ymin;}
     const double ymax() const {return m_ymax;}
-       std::list<PhantomElement*>& listPElem() {return m_listPElem;}
+         std::list<PhantomElement*>& listPElem() {return m_listPElem;}
     const std::list<PhantomElement*>& listPElem() const {return m_listPElem;}
     const int nPElem() const {return m_nPElem;}