r156: *** empty log message ***
authorKevin M. Rosenberg <kevin@rosenberg.net>
Thu, 20 Jul 2000 11:17:31 +0000 (11:17 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Thu, 20 Jul 2000 11:17:31 +0000 (11:17 +0000)
19 files changed:
configure
include/backprojectors.h
include/filter.h
include/phantom.h
include/scanner.h
include/trace.h
libctsim/Makefile.am
libctsim/backprojectors.cpp
libctsim/filter.cpp
libctsim/phantom.cpp
libctsim/scanner.cpp
libctsim/trace.cpp [new file with mode: 0644]
src/ctsim.cpp
src/dialogs.cpp
src/dialogs.h
src/views.cpp
tools/phm2if.cpp
tools/phm2pj.cpp
tools/pjrec.cpp

index 806487ccee5cd9f031f4fc8224debe24e31eee20..455092f807ab22864f78a246587be51b5fa4d62c 100755 (executable)
--- a/configure
+++ b/configure
@@ -710,7 +710,7 @@ fi
 
 PACKAGE=ctsim
 
-VERSION=2.0.0-b4
+VERSION=2.0.0-b5
 
 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
   { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
index f19b9043ecd0a1fcafd5e0ce2a404e46cebd54fb..598c2449ff26ec56edd94fff430e7a7d3bbd5b4c 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: backprojectors.h,v 1.10 2000/07/19 04:33:27 kevin Exp $
+**  $Id: backprojectors.h,v 1.11 2000/07/20 11:17:31 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
@@ -62,17 +62,29 @@ class Backprojector
     INTERP_FREQ_PREINTERPOLATION,
   } InterpolationID;
 
-  static const char BPROJ_TRIG_STR[]=     "trig";
-  static const char BPROJ_TABLE_STR[]=    "table";
-  static const char BPROJ_DIFF_STR[]=     "diff";
-  static const char BPROJ_DIFF2_STR[]=    "diff2";
-  static const char BPROJ_IDIFF2_STR[]=   "idiff2";
-  static const char BPROJ_IDIFF3_STR[]=   "idiff3";
+  static const char BPROJ_TRIG_STR[];
+  static const char BPROJ_TABLE_STR[];
+  static const char BPROJ_DIFF_STR[];
+  static const char BPROJ_DIFF2_STR[];
+  static const char BPROJ_IDIFF2_STR[];
+  static const char BPROJ_IDIFF3_STR[];
+
+  static const char BPROJ_TRIG_TITLE_STR[];
+  static const char BPROJ_TABLE_TITLE_STR[];
+  static const char BPROJ_DIFF_TITLE_STR[];
+  static const char BPROJ_DIFF2_TITLE_STR[];
+  static const char BPROJ_IDIFF2_TITLE_STR[];
+  static const char BPROJ_IDIFF3_TITLE_STR[];
  
-  static const char INTERP_NEAREST_STR[]=  "nearest";
-  static const char INTERP_LINEAR_STR[]=   "linear";
-  static const char INTERP_BSPLINE_STR[]=  "bspline";
-  static const char INTERP_FREQ_PREINTERPOLATION_STR[]= "freq_preinterpolation";
+  static const char INTERP_NEAREST_STR[];
+  static const char INTERP_LINEAR_STR[];
+  static const char INTERP_BSPLINE_STR[];
+  static const char INTERP_FREQ_PREINTERPOLATION_STR[];
+
+  static const char INTERP_NEAREST_TITLE_STR[];
+  static const char INTERP_LINEAR_TITLE_STR[];
+  static const char INTERP_BSPLINE_TITLE_STR[];
+  static const char INTERP_FREQ_PREINTERPOLATION_TITLE_STR[];
 
   Backprojector (const Projections& proj, ImageFile& im, const char* const backprojName, const char* const interpName, const int interpFactor);
 
index 6ad776792158c2f4d6d7604268a39f2baa4a67fd..5527b3eaddabf57cd094809de8db781cf042d3e1 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: filter.h,v 1.14 2000/07/19 04:33:27 kevin Exp $
+**  $Id: filter.h,v 1.15 2000/07/20 11:17:31 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
@@ -75,28 +75,54 @@ class SignalFilter {
        DOMAIN_SPATIAL 
     } DomainID;
     
-    static const char FILTER_ABS_BANDLIMIT_STR[]= "abs_bandlimit";
-    static const char FILTER_ABS_SINC_STR[]=      "abs_sinc";
-    static const char FILTER_ABS_COS_STR[]=       "abs_cos";
-    static const char FILTER_ABS_HAMMING_STR[]=   "abs_hamming";
-    static const char FILTER_SHEPP_STR[]=         "shepp";
-    static const char FILTER_BANDLIMIT_STR[]=     "bandlimit";
-    static const char FILTER_SINC_STR[]=          "sinc";
-    static const char FILTER_COS_STR[]=           "cos";
-    static const char FILTER_HAMMING_STR[]=       "hamming";
-    static const char FILTER_TRIANGLE_STR[]=      "triangle";
+    // Filters
+    static const char FILTER_ABS_BANDLIMIT_STR[];
+    static const char FILTER_ABS_SINC_STR[];
+    static const char FILTER_ABS_COS_STR[];
+    static const char FILTER_ABS_HAMMING_STR[];
+    static const char FILTER_SHEPP_STR[];
+    static const char FILTER_BANDLIMIT_STR[];
+    static const char FILTER_SINC_STR[];
+    static const char FILTER_COS_STR[];
+    static const char FILTER_HAMMING_STR[];
+    static const char FILTER_TRIANGLE_STR[];
+
+    static const char FILTER_ABS_BANDLIMIT_TITLE_STR[];
+    static const char FILTER_ABS_SINC_TITLE_STR[];
+    static const char FILTER_ABS_COS_TITLE_STR[];
+    static const char FILTER_ABS_HAMMING_TITLE_STR[];
+    static const char FILTER_SHEPP_TITLE_STR[];
+    static const char FILTER_BANDLIMIT_TITLE_STR[];
+    static const char FILTER_SINC_TITLE_STR[];
+    static const char FILTER_COS_TITLE_STR[];
+    static const char FILTER_HAMMING_TITLE_STR[];
+    static const char FILTER_TRIANGLE_TITLE_STR[];
     
-    static const char FILTER_METHOD_CONVOLUTION_STR[]=  "convolution";
-    static const char FILTER_METHOD_FOURIER_STR[]=      "fourier";
-    static const char FILTER_METHOD_FOURIER_TABLE_STR[]="fourier_table";
-    static const char FILTER_METHOD_FFT_STR[]=          "fft";
+    // Filter Methods
+    static const char FILTER_METHOD_CONVOLUTION_STR[];
+    static const char FILTER_METHOD_FOURIER_STR[];
+    static const char FILTER_METHOD_FOURIER_TABLE_STR[];
+    static const char FILTER_METHOD_FFT_STR[];
 #if HAVE_FFTW
-    static const char FILTER_METHOD_FFTW_STR[]=         "fftw";
-    static const char FILTER_METHOD_RFFTW_STR[]=        "rfftw";
+    static const char FILTER_METHOD_FFTW_STR[];
+    static const char FILTER_METHOD_RFFTW_STR[];
 #endif
 
-    static const char DOMAIN_FREQUENCY_STR[]="frequency";
-    static const char DOMAIN_SPATIAL_STR[]="spatial";
+    static const char FILTER_METHOD_CONVOLUTION_TITLE_STR[];
+    static const char FILTER_METHOD_FOURIER_TITLE_STR[];
+    static const char FILTER_METHOD_FOURIER_TABLE_TITLE_STR[];
+    static const char FILTER_METHOD_FFT_TITLE_STR[];
+#if HAVE_FFTW
+    static const char FILTER_METHOD_FFTW_TITLESTR[];
+    static const char FILTER_METHOD_RFFTW_TITLE_STR[];
+#endif
+
+    // Domains
+    static const char DOMAIN_FREQUENCY_STR[];
+    static const char DOMAIN_SPATIAL_STR[];
+
+    static const char DOMAIN_FREQUENCY_TITLE_STR[];
+    static const char DOMAIN_SPATIAL_TITLE_STR[];
 
 
     SignalFilter (const char* filterName, const char* filterMethodName,double bw, double signalIncrement, int n, double param, const char* domainName, const int zeropad = 0, const int preinterpolationFactor = 1);
index dbaf169fc430d46ba8d7f09b12c773d112607505..a82381f78fdfc014e8ddebe70ed604a173ac33fd 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: phantom.h,v 1.8 2000/07/19 04:33:27 kevin Exp $
+**  $Id: phantom.h,v 1.9 2000/07/20 11:17:31 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
@@ -134,17 +134,17 @@ class 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";
-
-    static const char PHM_HERMAN_TITLE_STR[]=    "Herman Head";
-    static const char PHM_BHERMAN_TITLE_STR[]=   "Herman Head Bordered";
-    static const char PHM_ROWLAND_TITLE_STR[]=   "Rowland Head";
-    static const char PHM_BROWLAND_TITLE_STR[]=  "Rowland Head Bordered";
-    static const char PHM_UNITPULSE_TITLE_STR[]= "Unit Pulse";
+    static const char PHM_HERMAN_STR[];
+    static const char PHM_BHERMAN_STR[];
+    static const char PHM_ROWLAND_STR[];
+    static const char PHM_BROWLAND_STR[];
+    static const char PHM_UNITPULSE_STR[];
+
+    static const char PHM_HERMAN_TITLE_STR[];
+    static const char PHM_BHERMAN_TITLE_STR[];
+    static const char PHM_ROWLAND_TITLE_STR[];
+    static const char PHM_BROWLAND_TITLE_STR[];
+    static const char PHM_UNITPULSE_TITLE_STR[];
 
     Phantom (void);
     Phantom (const char* const phmName);
index 1a01c89312cc2670dc16b3c3195680d08073f314..000aba1860117dc913d71f23364deb39f23f0b58 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: scanner.h,v 1.6 2000/07/18 14:51:06 kevin Exp $
+**  $Id: scanner.h,v 1.7 2000/07/20 11:17:31 kevin Exp $
 **
 **
 **  This program is free software; you can redistribute it and/or modify
@@ -68,12 +68,16 @@ class Scanner
        GEOMETRY_INVALID,
        GEOMETRY_PARALLEL,
        GEOMETRY_EQUILINEAR,
-       GEOMETRY_EQUIANGLE
+       GEOMETRY_EQUIANGULAR,
     } GeometryID;
   
-    static const char GEOMETRY_PARALLEL_STR[] = "parallel";
-    static const char GEOMETRY_EQUILINEAR_STR[] = "equilinear";
-    static const char GEOMETRY_EQUIANGLE_STR[] = "equiangle";
+    static const char GEOMETRY_PARALLEL_STR[];
+    static const char GEOMETRY_EQUILINEAR_STR[];
+    static const char GEOMETRY_EQUIANGULAR_STR[];
+
+    static const char GEOMETRY_PARALLEL_TITLE_STR[];
+    static const char GEOMETRY_EQUILINEAR_TITLE_STR[];
+    static const char GEOMETRY_EQUIANGULAR_TITLE_STR[];
 
   Scanner (const Phantom& phm, const char* const geometryName, int nDet, int nView, int nSample, const double rot_anglen);
   ~Scanner();
index ed29746d1fd335de4ea2f707123d743e4259ad30..88aa2718b0690277b64b863a71f5b607a87edd19 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef TRACE_H
 #define TRACE_H
 
-enum {
+enum TraceID {
     TRACE_INVALID=-1,
     TRACE_NONE=0,              /* No tracing */
     TRACE_TEXT,                /* Minimal status */
@@ -11,53 +11,33 @@ enum {
     TRACE_CLIPPING     /* Plot clipping */
 };
 
-static const char TRACE_NONE_STR[]=     "none";
-static const char TRACE_TEXT_STR[]=     "text";
-static const char TRACE_PHM_STR[]=      "phm";
-static const char TRACE_RAYS_STR[]=     "rays";
-static const char TRACE_PLOT_STR[]=     "plot";
-static const char TRACE_CLIPPING_STR[]= "clipping";
-
 class TraceLevel
 {
  public:
-    TraceLevel (const char* const traceString);
-
-    void addTrace (const char* const traceString);
-
-    bool isTrace (const char* const traceQuery) const;
-
-    int getTraceLevel(void) const { return m_traceLevel; }
+  static const char TRACE_NONE_STR[];
+  static const char TRACE_TEXT_STR[];
+  static const char TRACE_PHM_STR[];
+  static const char TRACE_RAYS_STR[];
+  static const char TRACE_PLOT_STR[];
+  static const char TRACE_CLIPPING_STR[];
+  
+  TraceLevel (const char* const traceString);
+  
+  void addTrace (const char* const traceString);
+  
+  bool isTrace (const char* const traceQuery) const;
+  
+  int getTraceLevel(void) const { return m_traceLevel; }
+  
+  static TraceID convertTraceNameToID (const char* traceName);
 
  private:
-
-    int m_traceLevel;
-
-    bool addTraceElements (const char* const traceString);
+  
+  int m_traceLevel;
+  
+  bool addTraceElements (const char* const traceString);
 };
 
 
-inline int 
-convertTraceNameToID (const char *traceString)
-{
-  int traceID = TRACE_INVALID;
-
-  if (strcasecmp (traceString, TRACE_NONE_STR) == 0)
-    traceID = TRACE_NONE;
-  else if (strcasecmp (traceString, TRACE_TEXT_STR) == 0)
-    traceID = TRACE_TEXT;
-  else if (strcasecmp (traceString, TRACE_PHM_STR) == 0)
-    traceID = TRACE_PHM;
-  else if (strcasecmp (traceString, TRACE_PLOT_STR) == 0)
-    traceID = TRACE_PLOT;
-  else if (strcasecmp (traceString, TRACE_CLIPPING_STR) == 0)
-    traceID = TRACE_CLIPPING;
-  else if (strcasecmp (traceString, TRACE_RAYS_STR) == 0)
-    traceID = TRACE_RAYS;
-
-  return (traceID);
-}
-
-
 #endif
 
index ec764a3e778852b604ea29762ef01994b2cf274d..96037ccfa024aac0f1243a38cc5fd52addd1e77b 100644 (file)
@@ -1,5 +1,5 @@
 noinst_LIBRARIES = libctsim.a 
-libctsim_a_SOURCES = filter.cpp scanner.cpp projections.cpp phantom.cpp imagefile.cpp backprojectors.cpp array2dfile.cpp
+libctsim_a_SOURCES = filter.cpp scanner.cpp projections.cpp phantom.cpp imagefile.cpp backprojectors.cpp array2dfile.cpp trace.cpp
 
 INCLUDES=@my_includes@
 EXTRA_DIST=Makefile.nt
index 9aa314598a9cc19e69205b3273a39f52d2822e68..ae31cf866967d5f5b1ebab1910e722100e5eb8c9 100644 (file)
@@ -8,7 +8,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: backprojectors.cpp,v 1.8 2000/07/13 07:03:21 kevin Exp $
+**  $Id: backprojectors.cpp,v 1.9 2000/07/20 11:17:31 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 char Backprojector::BPROJ_TRIG_STR[]=     "trig";
+const char Backprojector::BPROJ_TABLE_STR[]=    "table";
+const char Backprojector::BPROJ_DIFF_STR[]=     "diff";
+const char Backprojector::BPROJ_DIFF2_STR[]=    "diff2";
+const char Backprojector::BPROJ_IDIFF2_STR[]=   "idiff2";
+const char Backprojector::BPROJ_IDIFF3_STR[]=   "idiff3";
+
+const char Backprojector::BPROJ_TRIG_TITLE_STR[]=     "Direc Trigometric";
+const char Backprojector::BPROJ_TABLE_TITLE_STR[]=    "Trig Table";
+const char Backprojector::BPROJ_DIFF_TITLE_STR[]=     "Diff";
+const char Backprojector::BPROJ_DIFF2_TITLE_STR[]=    "Diff2";
+const char Backprojector::BPROJ_IDIFF2_TITLE_STR[]=   "Integer Diff2";
+const char Backprojector::BPROJ_IDIFF3_TITLE_STR[]=   "Integer Diff3";
+const char Backprojector::INTERP_NEAREST_STR[]=  "nearest";
+const char Backprojector::INTERP_LINEAR_STR[]=   "linear";
+const char Backprojector::INTERP_BSPLINE_STR[]=  "bspline";
+const char Backprojector::INTERP_FREQ_PREINTERPOLATION_STR[]= "freq_preinterpolation";
+
+const char Backprojector::INTERP_NEAREST_TITLE_STR[]=  "Nearest";
+const char Backprojector::INTERP_LINEAR_TITLE_STR[]=   "Linear";
+const char Backprojector::INTERP_BSPLINE_TITLE_STR[]=  "B-Spline";
+const char Backprojector::INTERP_FREQ_PREINTERPOLATION_TITLE_STR[]= "Frequency Preinterpolation";
+
+
 Backprojector::Backprojector (const Projections& proj, ImageFile& im, const char* const backprojName, const char* const interpName, const int interpFactor)
 {
   m_fail = false;
index 1c9e95bc37c03e372147f3349ea6dea4b75fcad7..a0638b2a1b9538b313d22188f47246a26e7a32c6 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: filter.cpp,v 1.18 2000/07/15 08:36:13 kevin Exp $
+**  $Id: filter.cpp,v 1.19 2000/07/20 11:17:31 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
 
 int SignalFilter::N_INTEGRAL=500;  //static member
 
+// Filters
+const char SignalFilter::FILTER_ABS_BANDLIMIT_STR[] = "abs_bandlimit";
+const char SignalFilter::FILTER_ABS_SINC_STR[] = "abs_sinc";
+const char SignalFilter::FILTER_ABS_COS_STR[] = "abs_cos";
+const char SignalFilter::FILTER_ABS_HAMMING_STR[] = "abs_hamming";
+const char SignalFilter::FILTER_SHEPP_STR[] = "shepp";
+const char SignalFilter::FILTER_BANDLIMIT_STR[] = "bandlimit";
+const char SignalFilter::FILTER_SINC_STR[] = "sinc";
+const char SignalFilter::FILTER_COS_STR[] = "cos";
+const char SignalFilter::FILTER_HAMMING_STR[] = "hamming";
+const char SignalFilter::FILTER_TRIANGLE_STR[] = "triangle";
+
+const char SignalFilter::FILTER_ABS_BANDLIMIT_TITLE_STR[] = "Abs(w) * Bandlimit";
+const char SignalFilter::FILTER_ABS_SINC_TITLE_STR[] = "Abs(w) * Sinc";
+const char SignalFilter::FILTER_ABS_COS_TITLE_STR[] = "Abs(w) * Cos";
+const char SignalFilter::FILTER_ABS_HAMMING_TITLE_STR[] = "Abs(w) * Hamming";
+const char SignalFilter::FILTER_SHEPP_TITLE_STR[] = "Shepp";
+const char SignalFilter::FILTER_BANDLIMIT_TITLE_STR[] = "Bandlimit";
+const char SignalFilter::FILTER_SINC_TITLE_STR[] = "Sinc";
+const char SignalFilter::FILTER_COS_TITLE_STR[] = "Cos";
+const char SignalFilter::FILTER_HAMMING_TITLE_STR[] = "Hamming";
+const char SignalFilter::FILTER_TRIANGLE_TITLE_STR[] = "Triangle";
+    
+// Filter Methods
+const char SignalFilter::FILTER_METHOD_CONVOLUTION_STR[] = "convolution";
+const char SignalFilter::FILTER_METHOD_FOURIER_STR[] = "fourier";
+const char SignalFilter::FILTER_METHOD_FOURIER_TABLE_STR[] = "fourier_table";
+const char SignalFilter::FILTER_METHOD_FFT_STR[] = "fft";
+#if HAVE_FFTW
+const char SignalFilter::FILTER_METHOD_FFTW_STR[] = "fftw";
+const char SignalFilter::FILTER_METHOD_RFFTW_STR[] = "rfftw";
+#endif
+
+const char SignalFilter::FILTER_METHOD_CONVOLUTION_TITLE_STR[] = "Convolution";
+const char SignalFilter::FILTER_METHOD_FOURIER_TITLE_STR[] = "Direct Fourier";
+const char SignalFilter::FILTER_METHOD_FOURIER_TABLE_TITLE_STR[] = "Fourier Trig Table";
+const char SignalFilter::FILTER_METHOD_FFT_TITLE_STR[] = "FFT";
+#if HAVE_FFTW
+const char SignalFilter::FILTER_METHOD_FFTW_TITLESTR[] = "FFTW";
+const char SignalFilter::FILTER_METHOD_RFFTW_TITLE_STR[] = "Real FFTW";
+#endif
+
+// Domains
+const char SignalFilter::DOMAIN_FREQUENCY_STR[] = "frequency";
+const char SignalFilter::DOMAIN_SPATIAL_STR[] = "spatial";
+
+const char SignalFilter::DOMAIN_FREQUENCY_TITLE_STR[] = "Frequency";
+const char SignalFilter::DOMAIN_SPATIAL_TITLE_STR[] = "Spatial";
+
+
 /* NAME
  *   SignalFilter::SignalFilter     Construct a signal
  *
index d07b6a32eae0035242d8c467b5838a55e066655f..8d4ea38475d0936bd8301d30a1497a60f666f6c5 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: phantom.cpp,v 1.8 2000/07/18 03:14:35 kevin Exp $
+**  $Id: phantom.cpp,v 1.9 2000/07/20 11:17:31 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 char Phantom::PHM_HERMAN_STR[]=    "herman";
+const char Phantom::PHM_BHERMAN_STR[]=   "bherman";
+const char Phantom::PHM_ROWLAND_STR[]=   "rowland";
+const char Phantom::PHM_BROWLAND_STR[]=  "browland";
+const char Phantom::PHM_UNITPULSE_STR[]= "unitpulse";
+
+const char Phantom::PHM_HERMAN_TITLE_STR[]=    "Herman Head";
+const char Phantom::PHM_BHERMAN_TITLE_STR[]=   "Herman Head Bordered";
+const char Phantom::PHM_ROWLAND_TITLE_STR[]=   "Rowland Head";
+const char Phantom::PHM_BROWLAND_TITLE_STR[]=  "Rowland Head Bordered";
+const char Phantom::PHM_UNITPULSE_TITLE_STR[]= "Unit Pulse";
+
+
+
 // CLASS IDENTIFICATION
 //   Phanton
 //
index 53588db67b9ff9d047d87c18ed2145a2a4449bb0..4f46d05161b7a9f6a51c5b259eafa93636bb1da9 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: scanner.cpp,v 1.3 2000/07/13 07:03:21 kevin Exp $
+**  $Id: scanner.cpp,v 1.4 2000/07/20 11:17:31 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 char Scanner::GEOMETRY_PARALLEL_STR[] = "parallel";
+const char Scanner::GEOMETRY_EQUILINEAR_STR[] = "equilinear";
+const char Scanner::GEOMETRY_EQUIANGULAR_STR[] = "equiangular";
+
+const char Scanner::GEOMETRY_PARALLEL_TITLE_STR[] = "Parallel";
+const char Scanner::GEOMETRY_EQUILINEAR_TITLE_STR[] = "Equilinear";
+const char Scanner::GEOMETRY_EQUIANGULAR_TITLE_STR[] = "Equiangular";
 
 // NAME
 //   DetectorArray      Construct a DetectorArray
@@ -118,8 +125,8 @@ Scanner::convertGeometryNameToID (const char* const geometryName)
     geometryID = GEOMETRY_PARALLEL;
   else if (strcasecmp (geometryName, GEOMETRY_EQUILINEAR_STR) == 0)
     geometryID = GEOMETRY_EQUILINEAR;
-  else if (strcasecmp (geometryName, GEOMETRY_EQUIANGLE_STR) == 0)
-    geometryID = GEOMETRY_EQUIANGLE;
+  else if (strcasecmp (geometryName, GEOMETRY_EQUIANGULAR_STR) == 0)
+    geometryID = GEOMETRY_EQUIANGULAR;
 
   return (geometryID);
 }
diff --git a/libctsim/trace.cpp b/libctsim/trace.cpp
new file mode 100644 (file)
index 0000000..3bb8ce8
--- /dev/null
@@ -0,0 +1,58 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:        trace.cpp        Class for trace
+**   Programmer:   Kevin Rosenberg
+**   Date Started: June 2000
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2000 Kevin Rosenberg
+**
+**  $Id: trace.cpp,v 1.1 2000/07/20 11:17:31 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
+**  published by the Free Software Foundation.
+**
+**  This program is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+**  GNU General Public License for more details.
+**
+**  You should have received a copy of the GNU General Public License
+**  along with this program; if not, write to the Free Software
+**  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+const char TraceLevel::TRACE_NONE_STR[]=     "none";
+const char TraceLevel::TRACE_TEXT_STR[]=     "text";
+const char TraceLevel::TRACE_PHM_STR[]=      "phm";
+const char TraceLevel::TRACE_RAYS_STR[]=     "rays";
+const char TraceLevel::TRACE_PLOT_STR[]=     "plot";
+const char TraceLevel::TRACE_CLIPPING_STR[]= "clipping";
+
+
+TraceID
+TraceLevel::convertTraceNameToID (const char *traceString)
+{
+  TraceID traceID = TRACE_INVALID;
+
+  if (strcasecmp (traceString, TRACE_NONE_STR) == 0)
+    traceID = TRACE_NONE;
+  else if (strcasecmp (traceString, TRACE_TEXT_STR) == 0)
+    traceID = TRACE_TEXT;
+  else if (strcasecmp (traceString, TRACE_PHM_STR) == 0)
+    traceID = TRACE_PHM;
+  else if (strcasecmp (traceString, TRACE_PLOT_STR) == 0)
+    traceID = TRACE_PLOT;
+  else if (strcasecmp (traceString, TRACE_CLIPPING_STR) == 0)
+    traceID = TRACE_CLIPPING;
+  else if (strcasecmp (traceString, TRACE_RAYS_STR) == 0)
+    traceID = TRACE_RAYS;
+
+  return (traceID);
+}
+
+
index a7417fed387b43cacbd41db94961e760e36d5e81..71b053906de0d2fa31026a1df20117b133e23bde 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: ctsim.cpp,v 1.6 2000/07/19 04:33:27 kevin Exp $
+**  $Id: ctsim.cpp,v 1.7 2000/07/20 11:17:31 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
@@ -104,7 +104,7 @@ CTSimApp::OnInit(void)
     //// Make a menubar
     wxMenu *file_menu = new wxMenu;
     
-    file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "&Create Phantom...");
+    file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...");
     file_menu->Append(wxID_OPEN, "&Open...");
     
     file_menu->AppendSeparator();
@@ -199,10 +199,9 @@ MainFrame::OnCreatePhantom(wxCommandEvent& WXUNUSED(event))
     DialogGetPhantom dialogPhantom (this, Phantom::PHM_HERMAN_STR);
     int dialogReturn = dialogPhantom.ShowModal();
     if (dialogReturn == wxID_OK) {
-      string selection = dialogPhantom.getPhantom();
+      wxString selection = dialogPhantom.getPhantom();
       *theApp->getLog() << "Selected phantom " << selection.c_str() << "\n";
-      wxString filename = selection.c_str();
-      filename += ".phm";
+      wxString filename = selection + ".phm";
       theApp->getDocManager()->CreateDocument(filename, wxDOC_SILENT);
     }
     
index b084fd4c4fba2c7716c84a807cdea58d13ef78ff..27b454f0ff857dabbca266e00399557414ed7814 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: dialogs.cpp,v 1.3 2000/07/19 04:33:27 kevin Exp $
+**  $Id: dialogs.cpp,v 1.4 2000/07/20 11:17:31 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 "backprojectors.h"
 
 
+
+const wxString DialogGetPhantom::s_asPhantom[] = 
+{ 
+    wxString(Phantom::PHM_HERMAN_STR),
+    wxString(Phantom::PHM_BHERMAN_STR),
+    wxString(Phantom::PHM_ROWLAND_STR),
+    wxString(Phantom::PHM_BROWLAND_STR),
+    wxString(Phantom::PHM_UNITPULSE_STR),
+};
+const wxString DialogGetPhantom::s_asPhantomTitle[] = 
+{ 
+    wxString(Phantom::PHM_HERMAN_TITLE_STR),
+    wxString(Phantom::PHM_BHERMAN_TITLE_STR),
+    wxString(Phantom::PHM_ROWLAND_TITLE_STR),
+    wxString(Phantom::PHM_BROWLAND_TITLE_STR),
+    wxString(Phantom::PHM_UNITPULSE_TITLE_STR),
+};
+const unsigned int DialogGetPhantom::s_iNumPhantom = sizeof(s_asPhantom) / sizeof(wxString);
+
+
 DialogGetPhantom::DialogGetPhantom (wxFrame* pParent, const char* szDefaultPhantom = NULL)
     : wxDialog (pParent, -1, "Select Phantom", wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
@@ -66,13 +86,7 @@ DialogGetPhantom::DialogGetPhantom (wxFrame* pParent, const char* szDefaultPhant
                   
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
 
-  wxString aListPhantomTitle [5];
-  aListPhantomTitle[0] = Phantom::PHM_HERMAN_TITLE_STR;
-  aListPhantomTitle[1] = Phantom::PHM_BHERMAN_TITLE_STR;
-  aListPhantomTitle[2] = Phantom::PHM_ROWLAND_TITLE_STR;
-  aListPhantomTitle[3] = Phantom::PHM_BROWLAND_TITLE_STR;
-  aListPhantomTitle[4] = Phantom::PHM_UNITPULSE_TITLE_STR;
-  m_pListBoxPhantom = new wxListBox (this, -1, wxDefaultPosition, wxDefaultSize, 5, aListPhantomTitle, wxLB_SINGLE | wxLB_NEEDED_SB);
+  m_pListBoxPhantom = new wxListBox (this, -1, wxDefaultPosition, wxDefaultSize, s_iNumPhantom, s_asPhantomTitle, wxLB_SINGLE | wxLB_NEEDED_SB);
   pTopSizer->Add (m_pListBoxPhantom, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
 
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
@@ -91,19 +105,12 @@ DialogGetPhantom::DialogGetPhantom (wxFrame* pParent, const char* szDefaultPhant
   pTopSizer->SetSizeHints (this);
 }
 
-string
+const wxString&
 DialogGetPhantom::getPhantom(void)
 {
-    string aListPhantom [5];
-    aListPhantom[0] = Phantom::PHM_HERMAN_STR;
-    aListPhantom[1] = Phantom::PHM_BHERMAN_STR;
-    aListPhantom[2] = Phantom::PHM_ROWLAND_STR;;
-    aListPhantom[3] = Phantom::PHM_BROWLAND_STR;
-    aListPhantom[4] = Phantom::PHM_UNITPULSE_STR;
-
     int selection = m_pListBoxPhantom->GetSelection();
     if (selection >= 0)
-       return (aListPhantom[selection]);
+       return (s_asPhantom[selection]);
 
     return (m_sDefaultPhantom);
 }
@@ -276,6 +283,21 @@ DialogGetRasterParameters::getNSamples (void)
 // DialogGetProjectionParameters
 /////////////////////////////////////////////////////////////////////
 
+const wxString DialogGetProjectionParameters::s_asGeometry[] = 
+{ 
+    wxString(Scanner::GEOMETRY_PARALLEL_STR),
+    wxString(Scanner::GEOMETRY_EQUILINEAR_STR),
+    wxString(Scanner::GEOMETRY_EQUIANGULAR_STR),
+};
+const wxString DialogGetProjectionParameters::s_asGeometryTitle[] = 
+{ 
+    wxString(Scanner::GEOMETRY_PARALLEL_TITLE_STR),
+    wxString(Scanner::GEOMETRY_EQUILINEAR_TITLE_STR),
+    wxString(Scanner::GEOMETRY_EQUIANGULAR_TITLE_STR),
+};
+const unsigned int DialogGetProjectionParameters::s_iNumGeometry = sizeof(s_asGeometry) / sizeof(wxString);
+
+
 DialogGetProjectionParameters::DialogGetProjectionParameters (wxFrame* pParent, int iDefaultNDet = 0, int iDefaultNView = 0, int iDefaultNSamples = 1, double dDefaultRotAngle = 1., const char* szDefaultGeometry = NULL)
     : wxDialog (pParent, -1, "Set Projection Parameters", wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
@@ -285,6 +307,9 @@ DialogGetProjectionParameters::DialogGetProjectionParameters (wxFrame* pParent,
                   
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
 
+  m_pListBoxGeometry = new wxListBox (this, -1, wxDefaultPosition, wxDefaultSize, s_iNumGeometry, s_asGeometryTitle, wxLB_SINGLE | wxLB_NEEDED_SB);
+  pTopSizer->Add (m_pListBoxGeometry, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
+
   ostringstream os;
   os << iDefaultNDet;
   m_pTextCtrlNDet = new wxTextCtrl (this, -1, os.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
@@ -376,10 +401,14 @@ DialogGetProjectionParameters::getRotAngle (void)
       return (m_dDefaultRotAngle);
 }
 
-const string&
+const wxString&
 DialogGetProjectionParameters::getGeometry (void)
 {
-  return m_sDefaultGeometry;
+    int selection = m_pListBoxGeometry->GetSelection();
+    if (selection >= 0)
+       return (s_asGeometry[selection]);
+
+    return m_sDefaultGeometry;
 }
 
 
@@ -390,6 +419,32 @@ DialogGetProjectionParameters::getGeometry (void)
 // DialogGetReconstructionParameters
 /////////////////////////////////////////////////////////////////////
 
+const wxString DialogGetReconstructionParameters::s_asFilter[] = 
+{ 
+    wxString(SignalFilter::FILTER_ABS_BANDLIMIT_STR),
+    wxString(SignalFilter::FILTER_SHEPP_STR),
+};
+const wxString DialogGetReconstructionParameters::s_asFilterTitle[] = 
+{ 
+    wxString(SignalFilter::FILTER_ABS_BANDLIMIT_TITLE_STR),
+    wxString(SignalFilter::FILTER_SHEPP_TITLE_STR),
+};
+const unsigned int DialogGetReconstructionParameters::s_iNumFilter = sizeof(s_asFilter) / sizeof(wxString);
+
+
+const wxString DialogGetReconstructionParameters::s_asInterp[] = 
+{ 
+  wxString(Backprojector::INTERP_NEAREST_STR),
+    wxString(Backprojector::INTERP_LINEAR_STR),
+};
+const wxString DialogGetReconstructionParameters::s_asInterpTitle[] = 
+{ 
+  wxString(Backprojector::INTERP_NEAREST_TITLE_STR),
+    wxString(Backprojector::INTERP_LINEAR_TITLE_STR),
+    };
+const unsigned int DialogGetReconstructionParameters::s_iNumInterp = sizeof(s_asInterp) / sizeof(wxString);
+
+
 DialogGetReconstructionParameters::DialogGetReconstructionParameters (wxFrame* pParent, int iDefaultXSize = 0, int iDefaultYSize = 0, const char* szDefaultFilterName = NULL, double dDefaultFilterParam = 1.,  const char* szDefaultFilterMethodName = NULL, int iDefaultZeropad = 3, const char* szDefaultInterpName = NULL, int iDefaultInterpParam = 1, const char* szDefaultBackprojName = NULL)
     : wxDialog (pParent, -1, "Set Reconstruction Parameters", wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
 {
@@ -399,6 +454,12 @@ DialogGetReconstructionParameters::DialogGetReconstructionParameters (wxFrame* p
                   
   pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
 
+  m_pListBoxFilter = new wxListBox (this, -1, wxDefaultPosition, wxDefaultSize, s_iNumFilter, s_asFilterTitle, wxLB_SINGLE | wxLB_NEEDED_SB);
+  pTopSizer->Add (m_pListBoxFilter, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
+
+  m_pListBoxInterp = new wxListBox (this, -1, wxDefaultPosition, wxDefaultSize, s_iNumInterp, s_asInterpTitle, wxLB_SINGLE | wxLB_NEEDED_SB);
+  pTopSizer->Add (m_pListBoxInterp, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
+
   ostringstream os;
   os << iDefaultXSize;
   m_pTextCtrlXSize = new wxTextCtrl (this, -1, os.str().c_str(), wxDefaultPosition, wxSize(100, 25), 0);
@@ -428,15 +489,6 @@ DialogGetReconstructionParameters::DialogGetReconstructionParameters (wxFrame* p
   pGridSizer->Add (m_pTextCtrlInterpParam, 0, wxALIGN_CENTER_VERTICAL);
   pTopSizer->Add (pGridSizer, 1, wxALL, 10);
 
-  wxString aTitlesFilter[4];
-  aTitlesFilter[0] = "Abs * Bandlimit";
-  aTitlesFilter[1] = "Abs * Hamming";
-  aTitlesFilter[2] = "Abs * Hanning";
-  aTitlesFilter[3] = "Abs * Cosine";
-
-  m_pListBoxFilter = new wxListBox (this, -1, wxDefaultPosition, wxSize(-1,-1), 4, aTitlesFilter, wxLB_SINGLE | wxLB_NEEDED_SB);
-  pTopSizer->Add (m_pListBoxFilter);
-
   m_sDefaultFilterName = szDefaultFilterName;
   m_sDefaultFilterMethodName = szDefaultFilterMethodName;
   m_sDefaultInterpName = szDefaultInterpName;
@@ -519,25 +571,33 @@ DialogGetReconstructionParameters::getFilterParam (void)
       return (m_dDefaultFilterParam);
 }
 
-const string&
+const wxString&
 DialogGetReconstructionParameters::getFilterName (void)
 {
-  return m_sDefaultFilterName;
+    int selection = m_pListBoxFilter->GetSelection();
+    if (selection >= 0)
+       return (s_asFilter[selection]);
+
+    return m_sDefaultFilterName;
 }
 
-const string&
+const wxString&
 DialogGetReconstructionParameters::getFilterMethodName (void)
 {
   return m_sDefaultFilterMethodName;
 }
 
-const string&
+const wxString&
 DialogGetReconstructionParameters::getInterpName (void)
 {
-  return m_sDefaultInterpName;
+    int selection = m_pListBoxInterp->GetSelection();
+    if (selection >= 0)
+       return (s_asInterp[selection]);
+
+    return m_sDefaultInterpName;
 }
 
-const string&
+const wxString&
 DialogGetReconstructionParameters::getBackprojName (void)
 {
   return m_sDefaultBackprojName;
index 6d4d94fef52f9908d364e20b6f25c6d003e7f13b..159294727122dc01326171551b7145d628f81e1d 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: dialogs.h,v 1.4 2000/07/19 04:33:27 kevin Exp $
+**  $Id: dialogs.h,v 1.5 2000/07/20 11:17:31 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 "wx/wx.h"
 #include <string>
 
+
 class DialogGetPhantom : public wxDialog
 {
  public:
     DialogGetPhantom (wxFrame* pParent, const char* szDefaultPhantom);
     virtual ~DialogGetPhantom (void) {}
 
-    string getPhantom (void);
+    const wxString& getPhantom (void);
 
  private:
     wxListBox* m_pListBoxPhantom;
-    string m_sDefaultPhantom;
+    wxString m_sDefaultPhantom;
+
+    static const wxString s_asPhantom[];
+    static const wxString s_asPhantomTitle[];
+    static const unsigned int s_iNumPhantom;
 };
 
 
@@ -96,20 +101,24 @@ class DialogGetProjectionParameters : public wxDialog
     unsigned int getNView (void);
     unsigned int getNSamples (void);
     double getRotAngle (void);
-    const string& getGeometry(void);
+    const wxString& getGeometry(void);
 
  private:
     wxTextCtrl* m_pTextCtrlNDet;
     wxTextCtrl* m_pTextCtrlNView;
     wxTextCtrl* m_pTextCtrlNSamples;
     wxTextCtrl* m_pTextCtrlRotAngle;
-    wxTextCtrl* m_pTextCtrlGeometry;
+    wxListBox* m_pListBoxGeometry;
 
     int m_iDefaultNDet;
     int m_iDefaultNView;
     int m_iDefaultNSamples;
     double m_dDefaultRotAngle;
-    string m_sDefaultGeometry;
+    wxString m_sDefaultGeometry;
+
+    static const wxString s_asGeometry[];
+    static const wxString s_asGeometryTitle[];
+    static const unsigned int s_iNumGeometry;
 };
 
 
@@ -121,23 +130,20 @@ class DialogGetReconstructionParameters : public wxDialog
 
     unsigned int getXSize(void);
     unsigned int getYSize(void);
-    const string& getFilterName(void);
+    const wxString& getFilterName(void);
     double getFilterParam(void);
-    const string& getFilterMethodName(void);
+    const wxString& getFilterMethodName(void);
     unsigned int getZeropad(void);
-    const string& getInterpName(void);
+    const wxString& getInterpName(void);
     unsigned int getInterpParam(void);
-    const string& getBackprojName(void);
+    const wxString& getBackprojName(void);
 
  private:
     wxTextCtrl* m_pTextCtrlXSize;
     wxTextCtrl* m_pTextCtrlYSize;
-    wxTextCtrl* m_pTextCtrlFilterParam;
-    wxTextCtrl* m_pTextCtrlFilterMethodName;
     wxTextCtrl* m_pTextCtrlZeropad;
-    wxTextCtrl* m_pTextCtrlInterpName;
+    wxTextCtrl* m_pTextCtrlFilterParam;
     wxTextCtrl* m_pTextCtrlInterpParam;
-    wxTextCtrl* m_pTextCtrlBackprojName;
 
     wxListBox* m_pListBoxFilter;
     wxListBox* m_pListBoxFilterMethod;
@@ -146,13 +152,29 @@ class DialogGetReconstructionParameters : public wxDialog
 
     int m_iDefaultXSize;
     int m_iDefaultYSize;
-    string m_sDefaultFilterName;
     double m_dDefaultFilterParam;
-    string m_sDefaultFilterMethodName;
     int m_iDefaultZeropad;
-    string m_sDefaultInterpName;
     int m_iDefaultInterpParam;
-    string m_sDefaultBackprojName;
+    wxString m_sDefaultFilterName;
+    wxString m_sDefaultFilterMethodName;
+    wxString m_sDefaultInterpName;
+    wxString m_sDefaultBackprojName;
+
+    static const wxString s_asFilter[];
+    static const wxString s_asFilterTitle[];
+    static const unsigned int s_iNumFilter;
+
+    static const wxString s_asFilterMethod[];
+    static const wxString s_asFilterMethodTitle[];
+    static const unsigned int s_iNumFilterMethod;
+
+    static const wxString s_asInterp[];
+    static const wxString s_asInterpTitle[];
+    static const unsigned int s_iNumInterp;
+
+    static const wxString s_asBackproj[];
+    static const wxString s_asBackprojTitle[];
+    static const unsigned int s_iNumBackproj;
 };
 
 #endif
index 9f9713ec0bc816c574594cf9102078f5994e4830..affcb6f72c7740461a57d83d1fc914986538a502 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: views.cpp,v 1.6 2000/07/19 04:33:27 kevin Exp $
+**  $Id: views.cpp,v 1.7 2000/07/20 11:17:31 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
@@ -93,7 +93,7 @@ ImageFileCanvas::OnMouseEvent(wxMouseEvent& event)
 
        if (pt.x >= 0 && pt.x < nx && pt.y >= 0 & pt.y < ny) {
          ostringstream os;
-         os << "Image value (" << pt.x << "," << pt.y << ") = " << v[pt.x][pt.y] << "\n";
+         os << "Image value (" << pt.x << "," << pt.y << ") = " << v[pt.x][ny - 1 - pt.y] << "\n";
            *theApp->getLog() << os.str().c_str();
        } else
            *theApp->getLog() << "Mouse out of image range (" << pt.x << "," << pt.y << ")\n";
@@ -201,7 +201,7 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view)
     
     wxMenu *file_menu = new wxMenu;
     
-    file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "&Create Phantom...");
+    file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...");
     file_menu->Append(wxID_OPEN, "&Open...");
     file_menu->Append(wxID_CLOSE, "&Close");
     file_menu->Append(wxID_SAVE, "&Save");
@@ -397,7 +397,7 @@ PhantomView::OnProjections (wxCommandEvent& event)
     int nView = dialogProjection.getNView();
     int nSamples = dialogProjection.getNSamples();
     double dRotAngle = dialogProjection.getRotAngle();
-    string sGeometry = dialogProjection.getGeometry();
+    wxString sGeometry = dialogProjection.getGeometry();
     if (nDet > 0 && nView > 0 && sGeometry != "") {
       const Phantom& rPhantom = GetDocument()->getPhantom();
       ProjectionFileDocument* pProjectionDoc = dynamic_cast<ProjectionFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.pj", wxDOC_SILENT));
@@ -408,7 +408,7 @@ PhantomView::OnProjections (wxCommandEvent& event)
       pProjectionDoc->Modify(true);
       pProjectionDoc->UpdateAllViews(this);
       ostringstream os;
-      os << "Projections for " << rPhantom.name() << ": nDet=" << nDet << ", nView=" << nView << ", nSamples=" << nSamples << ", RotAngle=" << dRotAngle << ", Geometry=" << sGeometry << "\n";
+      os << "Projections for " << rPhantom.name() << ": nDet=" << nDet << ", nView=" << nView << ", nSamples=" << nSamples << ", RotAngle=" << dRotAngle << ", Geometry=" << sGeometry.c_str() << "\n";
       *theApp->getLog() << os.str().c_str();
     }
   }
@@ -466,7 +466,7 @@ PhantomView::CreateChildFrame(wxDocument *doc, wxView *view)
     
     wxMenu *file_menu = new wxMenu;
     
-    file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "&Create Phantom...");
+    file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...");
     file_menu->Append(wxID_OPEN, "&Open...");
     file_menu->Append(wxID_CLOSE, "&Close");
     
@@ -612,13 +612,13 @@ ProjectionFileView::OnReconstruct (wxCommandEvent& event)
   if (retVal == wxID_OK) {
     int xSize = dialogReconstruction.getXSize();
     int ySize = dialogReconstruction.getYSize();
-    string optFilterName = dialogReconstruction.getFilterName();
+    wxString optFilterName = dialogReconstruction.getFilterName();
     double optFilterParam = dialogReconstruction.getFilterParam();
-    string optFilterMethodName = dialogReconstruction.getFilterMethodName();
+    wxString optFilterMethodName = dialogReconstruction.getFilterMethodName();
     int optZeropad = dialogReconstruction.getZeropad();
-    string optInterpName = dialogReconstruction.getInterpName();
+    wxString optInterpName = dialogReconstruction.getInterpName();
     int optInterpParam = dialogReconstruction.getInterpParam();
-    string optBackprojectName = dialogReconstruction.getBackprojName();
+    wxString optBackprojectName = dialogReconstruction.getBackprojName();
     if (xSize > 0 && ySize > 0) {
       ImageFileDocument* pReconDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));
       ImageFile& imageFile = pReconDoc->getImageFile();
@@ -628,7 +628,7 @@ ProjectionFileView::OnReconstruct (wxCommandEvent& event)
       pReconDoc->Modify(true);
       pReconDoc->UpdateAllViews(this);
       ostringstream os;
-      os << "Reconstruct " << rProj.getFilename() << ": xSize=" << xSize << ", ySize=" << ySize << ", Filter=" << optFilterName << ", FilterParam=" << optFilterParam << ", FilterMethod=" << optFilterMethodName << ", Zeropad=" << optZeropad << ", Interpolation=" << optInterpName << ", InterpolationParam=" << optInterpParam << ", Backprojection=" << optBackprojectName << "\n";
+      os << "Reconstruct " << rProj.getFilename() << ": xSize=" << xSize << ", ySize=" << ySize << ", Filter=" << optFilterName.c_str() << ", FilterParam=" << optFilterParam << ", FilterMethod=" << optFilterMethodName.c_str() << ", Zeropad=" << optZeropad << ", Interpolation=" << optInterpName.c_str() << ", InterpolationParam=" << optInterpParam << ", Backprojection=" << optBackprojectName.c_str() << "\n";
       *theApp->getLog() << os.str().c_str();
     }
   }
@@ -658,7 +658,7 @@ ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view)
     
     wxMenu *file_menu = new wxMenu;
     
-    file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "&Create Phantom...");
+    file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...");
     file_menu->Append(wxID_OPEN, "&Open...");
     file_menu->Append(wxID_CLOSE, "&Close");
     
index 9b8fd22f89263b3be6405ff8f51463d5a1c8b835..ce522b98ac13c00ffb2f880693f2fe7e4488a247 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: phm2if.cpp,v 1.1 2000/07/13 07:01:35 kevin Exp $
+**  $Id: phm2if.cpp,v 1.2 2000/07/20 11:17:31 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
@@ -152,7 +152,7 @@ phm2if_main (int argc, char* argv[])
        opt_debug = 1;
        break;
       case O_TRACE:
-       if ((opt_trace = convertTraceNameToID(optarg)) == TRACE_INVALID) {
+       if ((opt_trace = TraceLevel::convertTraceNameToID(optarg)) == TRACE_INVALID) {
          phm2if_usage(argv[0]);
          return (1);
        }
index 69c6ea5b853a366498d07e5863d2c237dae5302c..c465210f48ad51d9eddaa5ee4ff8faf6a437fdba 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: phm2pj.cpp,v 1.1 2000/07/13 07:01:35 kevin Exp $
+**  $Id: phm2pj.cpp,v 1.2 2000/07/20 11:17:31 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
@@ -133,7 +133,7 @@ phm2pj_main (int argc, char* argv[])
        break;
        break;
       case O_TRACE:
-       if ((opt_trace = convertTraceNameToID(optarg)) == TRACE_INVALID) {
+       if ((opt_trace = TraceLevel::convertTraceNameToID(optarg)) == TRACE_INVALID) {
          phm2pj_usage(argv[0]);
          return (1);
        }
index df9af1ca2bcf4f12f3e594ba8792cb3ab8bc1c8a..dd4ad81b6695334ecf4daa1506f36fb3bb4407d8 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: pjrec.cpp,v 1.2 2000/07/15 08:36:13 kevin Exp $
+**  $Id: pjrec.cpp,v 1.3 2000/07/20 11:17:31 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
@@ -198,7 +198,7 @@ pjrec_main (int argc, char * argv[])
          optDebug = 1;
          break;
        case O_TRACE:
-         if ((optTrace = convertTraceNameToID(optarg)) == TRACE_INVALID) {
+         if ((optTrace = TraceLevel::convertTraceNameToID(optarg)) == TRACE_INVALID) {
            pjrec_usage(argv[0]);
            return (1);
          }