r256: *** empty log message ***
authorKevin M. Rosenberg <kevin@rosenberg.net>
Sat, 16 Dec 2000 02:44:26 +0000 (02:44 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Sat, 16 Dec 2000 02:44:26 +0000 (02:44 +0000)
include/array2dfile.h
include/ct.h
include/ctsupport.h
libctsim/array2dfile.cpp
libctsim/imagefile.cpp
libctsim/procsignal.cpp
libctsim/reconstruct.cpp
libctsim/scanner.cpp
libctsupport/msvc.cpp [new file with mode: 0644]
tools/pjrec.cpp

index 512772d3111418239702bdd59e8ece22dcb623a5..1a0d838ee69ec5811043cf941f06c104e7dfbd40 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: array2dfile.h,v 1.9 2000/12/06 15:17:51 kevin Exp $
+**  $Id: array2dfile.h,v 1.10 2000/12/16 02:44:26 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
 **
 **  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 <sys/types.h>
 #include <cstring>
 
 #include <sys/types.h>
 #include <cstring>
-#include <string>
-#include <fstream>
-#include <iostream>
+#include <string>\r
+#include <iosfwd>
+#include <iomanip>\r
+#include <fstream>\r
+#include <iostream>\r
 #include <vector>
 #include "ctsupport.h"
 #include "fnetorderstream.h"
 #include <vector>
 #include "ctsupport.h"
 #include "fnetorderstream.h"
@@ -88,7 +90,7 @@ public:
 
     const string& getDateString () const;
 
 
     const string& getDateString () const;
 
-    void print (ostream& os) const;
+    void print (std::ostream& os) const;
 
     Array2dFileLabel (const Array2dFileLabel& rhs);
 
 
     Array2dFileLabel (const Array2dFileLabel& rhs);
 
index 16b79a60c3b03e3ac03853432d2977bbcb308ead..255e905d01eb138300c55d26adbd1b1d1f7b65c3 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: ct.h,v 1.43 2000/12/15 23:48:25 kevin Exp $
+**  $Id: ct.h,v 1.44 2000/12/16 02:44:26 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
 **
 **  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
@@ -41,7 +41,7 @@
 #ifdef HAVE_CONFIG_H
   #include <config.h>
 #endif
 #ifdef HAVE_CONFIG_H
   #include <config.h>
 #endif
-
+\r
 #define HAVE_ANSI_CPP 1
 #ifdef HAVE_ANSI_CPP
 #include <complex>
 #define HAVE_ANSI_CPP 1
 #ifdef HAVE_ANSI_CPP
 #include <complex>
index ce05b3bb59e9cc3b737f0f07eb9ec61984653305..6263b69bd88228019a0e5f930d3ec66dc930aa46 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: ctsupport.h,v 1.10 2000/12/06 16:41:17 kevin Exp $
+**  $Id: ctsupport.h,v 1.11 2000/12/16 02:44:26 kevin Exp $
 **
 **
 **  This program is free software; you can redistribute it and/or modify
 **
 **
 **  This program is free software; you can redistribute it and/or modify
@@ -225,6 +225,9 @@ inline T nearest (double x)
 inline int imax (int a, int b)\r
 { return (a >= b ? a : b); }\r
 \r
 inline int imax (int a, int b)\r
 { return (a >= b ? a : b); }\r
 \r
+inline double dmax (double a, double b)\r
+{ return (a >= b ? a : b); }\r
+\r
 template<class T>
 inline T clamp (T value, T lowerBounds, T upperBounds)
 { return (value >= upperBounds ? upperBounds : (value <= lowerBounds ? lowerBounds : value )); }
 template<class T>
 inline T clamp (T value, T lowerBounds, T upperBounds)
 { return (value >= upperBounds ? upperBounds : (value <= lowerBounds ? lowerBounds : value )); }
index b3538da0b79f610a325c0e7c729884c325fadb70..b3dc43263beaf1a54e01455126a907a31a614960 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: array2dfile.cpp,v 1.19 2000/12/16 02:31:00 kevin Exp $
+**  $Id: array2dfile.cpp,v 1.20 2000/12/16 02:44:26 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
 **
 **  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
@@ -139,7 +139,7 @@ Array2dFileLabel::operator= (const Array2dFileLabel& rhs)
 }
 
 void
 }
 
 void
-Array2dFileLabel::print (ostream& os) const
+Array2dFileLabel::print (std::ostream& os) const
 {
   if (m_labelType == L_HISTORY) {
     os << "History: " << endl;
 {
   if (m_labelType == L_HISTORY) {
     os << "History: " << endl;
index 851b4fdb6d953efb848259debe3e987cac3c7e84..a751573aef3e35ab0ee60b80c7c37d603228966b 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: imagefile.cpp,v 1.18 2000/12/16 02:31:00 kevin Exp $
+**  $Id: imagefile.cpp,v 1.19 2000/12/16 02:44:26 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
 **
 **  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
@@ -399,7 +399,7 @@ ImageFile::writeImagePNG (const char *outfile, int bitdepth, int nxcell, int nyc
   int ny = m_ny;
   ImageFileArray v = getArray();
 
   int ny = m_ny;
   ImageFileArray v = getArray();
 
-  unsigned char rowp [nx * nxcell * (bitdepth / 8)];
+  unsigned char* rowp = new unsigned char [nx * nxcell * (bitdepth / 8)];
 
   if ((fp = fopen (outfile, "wb")) == NULL)
      return;
 
   if ((fp = fopen (outfile, "wb")) == NULL)
      return;
@@ -451,6 +451,7 @@ ImageFile::writeImagePNG (const char *outfile, int bitdepth, int nxcell, int nyc
 
   png_write_end(png_ptr, info_ptr);
   png_destroy_write_struct(&png_ptr, &info_ptr);
 
   png_write_end(png_ptr, info_ptr);
   png_destroy_write_struct(&png_ptr, &info_ptr);
+  delete rowp;\r
 
   fclose(fp);
 }
 
   fclose(fp);
 }
index db00df703287c9e9a045e3bcc8a2091b70d7d2da..cd44cf834d8bd0d2b776c1a0a48f958229114329 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: procsignal.cpp,v 1.8 2000/12/06 01:46:43 kevin Exp $
+**  $Id: procsignal.cpp,v 1.9 2000/12/16 02:44:26 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
 **
 **  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
@@ -115,7 +115,8 @@ ProcessSignal::ProcessSignal (const char* szFilterName, const char* szFilterMeth
 
 void
 ProcessSignal::init (const int idFilter, const int idFilterMethod, double dBandwidth, double dSignalIncrement, int nSignalPoints, double dFilterParam, const int idDomain, const int idFilterGeneration, const int iZeropad, const int iPreinterpolationFactor, int iTraceLevel, int iGeometry, double dFocalLength, SGP* pSGP)
 
 void
 ProcessSignal::init (const int idFilter, const int idFilterMethod, double dBandwidth, double dSignalIncrement, int nSignalPoints, double dFilterParam, const int idDomain, const int idFilterGeneration, const int iZeropad, const int iPreinterpolationFactor, int iTraceLevel, int iGeometry, double dFocalLength, SGP* pSGP)
-{
+{\r
+  int i;
   m_idFilter = idFilter;
   m_idDomain = idDomain;
   m_idFilterMethod = idFilterMethod;
   m_idFilter = idFilter;
   m_idDomain = idDomain;
   m_idFilterMethod = idFilterMethod;
@@ -220,15 +221,15 @@ ProcessSignal::init (const int idFilter, const int idFilterMethod, double dBandw
          delete pEZPlot;
        }
 #endif
          delete pEZPlot;
        }
 #endif
-       for (int i = 0; i < m_nFilterPoints; i++) {
+       for (i = 0; i < m_nFilterPoints; i++) {
            m_adFilter[i] /= m_dSignalInc;
        }
     }
     if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) {
            m_adFilter[i] /= m_dSignalInc;
        }
     }
     if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) {
-       for (int i = 0; i < m_nFilterPoints; i++)
+       for (i = 0; i < m_nFilterPoints; i++)
            m_adFilter[i] *= 0.5;
     } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) {
            m_adFilter[i] *= 0.5;
     } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) {
-       for (int i = 0; i < m_nFilterPoints; i++) {
+       for (i = 0; i < m_nFilterPoints; i++) {
          int iDetFromZero = i - ((m_nFilterPoints - 1) / 2);
          double sinScale = sin (iDetFromZero * m_dSignalInc);
          if (fabs(sinScale) < 1E-7)
          int iDetFromZero = i - ((m_nFilterPoints - 1) / 2);
          double sinScale = sin (iDetFromZero * m_dSignalInc);
          if (fabs(sinScale) < 1E-7)
@@ -278,10 +279,10 @@ ProcessSignal::init (const int idFilter, const int idFilterMethod, double dBandw
       // This doesn't work!
       // Need to add filtering for divergent geometries & Frequency/Direct filtering
       if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) {
       // This doesn't work!
       // Need to add filtering for divergent geometries & Frequency/Direct filtering
       if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) {
-       for (int i = 0; i < m_nFilterPoints; i++)
+       for (i = 0; i < m_nFilterPoints; i++)
          m_adFilter[i] *= 0.5;
       } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) {
          m_adFilter[i] *= 0.5;
       } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) {
-       for (int i = 0; i < m_nFilterPoints; i++) {
+       for (i = 0; i < m_nFilterPoints; i++) {
          int iDetFromZero = i - ((m_nFilterPoints - 1) / 2);
          double sinScale = sin (iDetFromZero * m_dSignalInc);
          if (fabs(sinScale) < 1E-7)
          int iDetFromZero = i - ((m_nFilterPoints - 1) / 2);
          double sinScale = sin (iDetFromZero * m_dSignalInc);
          if (fabs(sinScale) < 1E-7)
@@ -350,10 +351,10 @@ ProcessSignal::init (const int idFilter, const int idFilterMethod, double dBandw
       }
 #endif
       if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) {
       }
 #endif
       if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) {
-       for (int i = 0; i < m_nFilterPoints; i++)
+       for (i = 0; i < m_nFilterPoints; i++)
          adSpatialFilter[i] *= 0.5;
       } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) {
          adSpatialFilter[i] *= 0.5;
       } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) {
-       for (int i = 0; i < m_nFilterPoints; i++) {
+       for (i = 0; i < m_nFilterPoints; i++) {
          int iDetFromZero = i - ((m_nFilterPoints - 1) / 2);
          double sinScale = sin (iDetFromZero * m_dSignalInc);
          if (fabs(sinScale) < 1E-7)
          int iDetFromZero = i - ((m_nFilterPoints - 1) / 2);
          double sinScale = sin (iDetFromZero * m_dSignalInc);
          if (fabs(sinScale) < 1E-7)
@@ -364,7 +365,6 @@ ProcessSignal::init (const int idFilter, const int idFilterMethod, double dBandw
          adSpatialFilter[i] *= dScale;
        }
       }\r
          adSpatialFilter[i] *= dScale;
        }
       }\r
-         int i;
       for (i = nSpatialPoints; i < m_nFilterPoints; i++)
        adSpatialFilter[i] = 0;
 
       for (i = nSpatialPoints; i < m_nFilterPoints; i++)
        adSpatialFilter[i] = 0;
 
@@ -395,7 +395,7 @@ ProcessSignal::init (const int idFilter, const int idFilterMethod, double dBandw
     m_adFourierCosTable = new double[ nFourier ];
     m_adFourierSinTable = new double[ nFourier ];
     double angle = 0;
     m_adFourierCosTable = new double[ nFourier ];
     m_adFourierSinTable = new double[ nFourier ];
     double angle = 0;
-    for (int i = 0; i < nFourier; i++) {
+    for (i = 0; i < nFourier; i++) {
       m_adFourierCosTable[i] = cos (angle);
       m_adFourierSinTable[i] = sin (angle);
       angle += angleIncrement;
       m_adFourierCosTable[i] = cos (angle);
       m_adFourierSinTable[i] = sin (angle);
       angle += angleIncrement;
@@ -404,7 +404,7 @@ ProcessSignal::init (const int idFilter, const int idFilterMethod, double dBandw
 
 #if HAVE_FFTW
   if (m_idFilterMethod == FILTER_METHOD_FFTW || m_idFilterMethod == FILTER_METHOD_RFFTW) {
 
 #if HAVE_FFTW
   if (m_idFilterMethod == FILTER_METHOD_FFTW || m_idFilterMethod == FILTER_METHOD_RFFTW) {
-    for (int i = 0; i < m_nFilterPoints; i++)  //fftw uses unnormalized fft
+    for (i = 0; i < m_nFilterPoints; i++)  //fftw uses unnormalized fft
       m_adFilter[i] /= m_nFilterPoints;
   }
 
       m_adFilter[i] /= m_nFilterPoints;
   }
 
@@ -413,16 +413,16 @@ ProcessSignal::init (const int idFilter, const int idFilterMethod, double dBandw
     m_realPlanBackward = rfftw_create_plan (m_nOutputPoints, FFTW_COMPLEX_TO_REAL, FFTW_ESTIMATE);
     m_adRealFftInput = new fftw_real [ m_nFilterPoints ];
     m_adRealFftSignal = new fftw_real [ m_nOutputPoints ];
     m_realPlanBackward = rfftw_create_plan (m_nOutputPoints, FFTW_COMPLEX_TO_REAL, FFTW_ESTIMATE);
     m_adRealFftInput = new fftw_real [ m_nFilterPoints ];
     m_adRealFftSignal = new fftw_real [ m_nOutputPoints ];
-    for (int i = 0; i < m_nFilterPoints; i++) 
+    for (i = 0; i < m_nFilterPoints; i++) 
       m_adRealFftInput[i] = 0;
   } else if (m_idFilterMethod == FILTER_METHOD_FFTW) {
     m_complexPlanForward = fftw_create_plan (m_nFilterPoints, FFTW_FORWARD, FFTW_ESTIMATE);
     m_complexPlanBackward = fftw_create_plan (m_nOutputPoints, FFTW_BACKWARD, FFTW_ESTIMATE);
     m_adComplexFftInput = new fftw_complex [ m_nFilterPoints ];
     m_adComplexFftSignal = new fftw_complex [ m_nOutputPoints ];
       m_adRealFftInput[i] = 0;
   } else if (m_idFilterMethod == FILTER_METHOD_FFTW) {
     m_complexPlanForward = fftw_create_plan (m_nFilterPoints, FFTW_FORWARD, FFTW_ESTIMATE);
     m_complexPlanBackward = fftw_create_plan (m_nOutputPoints, FFTW_BACKWARD, FFTW_ESTIMATE);
     m_adComplexFftInput = new fftw_complex [ m_nFilterPoints ];
     m_adComplexFftSignal = new fftw_complex [ m_nOutputPoints ];
-    for (int i = 0; i < m_nFilterPoints; i++) 
+    for (i = 0; i < m_nFilterPoints; i++) 
       m_adComplexFftInput[i].re = m_adComplexFftInput[i].im = 0;
       m_adComplexFftInput[i].re = m_adComplexFftInput[i].im = 0;
-    for (int i = 0; i < m_nOutputPoints; i++) 
+    for (i = 0; i < m_nOutputPoints; i++) 
       m_adComplexFftSignal[i].re = m_adComplexFftSignal[i].im = 0;
   }
 #endif
       m_adComplexFftSignal[i].re = m_adComplexFftSignal[i].im = 0;
   }
 #endif
@@ -583,34 +583,38 @@ ProcessSignal::filterSignal (const float constInput[], double output[]) const
   }
 #if HAVE_FFTW
   else if (m_idFilterMethod == FILTER_METHOD_RFFTW) {
   }
 #if HAVE_FFTW
   else if (m_idFilterMethod == FILTER_METHOD_RFFTW) {
-      for (int i = 0; i < m_nSignalPoints; i++)
+      for (i = 0; i < m_nSignalPoints; i++)
          m_adRealFftInput[i] = input[i];
 
          m_adRealFftInput[i] = input[i];
 
-      fftw_real fftOutput [ m_nFilterPoints ];
+      fftw_real* fftOutput = new fftw_real [ m_nFilterPoints ];
       rfftw_one (m_realPlanForward, m_adRealFftInput, fftOutput);
       rfftw_one (m_realPlanForward, m_adRealFftInput, fftOutput);
-      for (int i = 0; i < m_nFilterPoints; i++)
-         m_adRealFftSignal[i] = m_adFilter[i] * fftOutput[i];
-      for (int i = m_nFilterPoints; i < m_nOutputPoints; i++)
-       m_adRealFftSignal[i] = 0;
+      for (i = 0; i < m_nFilterPoints; i++)
+           m_adRealFftSignal[i] = m_adFilter[i] * fftOutput[i];\r
+         delete [] fftOutput;
+      for (i = m_nFilterPoints; i < m_nOutputPoints; i++)
+            m_adRealFftSignal[i] = 0;
 
 
-      fftw_real ifftOutput [ m_nOutputPoints ];
+      fftw_real* ifftOutput = new fftw_real [ m_nOutputPoints ];
       rfftw_one (m_realPlanBackward, m_adRealFftSignal, ifftOutput);
       rfftw_one (m_realPlanBackward, m_adRealFftSignal, ifftOutput);
-      for (int i = 0; i < m_nSignalPoints * m_iPreinterpolationFactor; i++)
-         output[i] = ifftOutput[i];
+      for (i = 0; i < m_nSignalPoints * m_iPreinterpolationFactor; i++)
+           output[i] = ifftOutput[i];\r
+         delete [] ifftOutput;
   } else if (m_idFilterMethod == FILTER_METHOD_FFTW) {
   } else if (m_idFilterMethod == FILTER_METHOD_FFTW) {
-      for (int i = 0; i < m_nSignalPoints; i++)
+      for (i = 0; i < m_nSignalPoints; i++)
          m_adComplexFftInput[i].re = input[i];
 
          m_adComplexFftInput[i].re = input[i];
 
-      fftw_complex fftOutput [ m_nFilterPoints ];
+      fftw_complex* fftOutput = new fftw_complex [ m_nFilterPoints ];
       fftw_one (m_complexPlanForward, m_adComplexFftInput, fftOutput);
       fftw_one (m_complexPlanForward, m_adComplexFftInput, fftOutput);
-      for (int i = 0; i < m_nFilterPoints; i++) {
+      for (i = 0; i < m_nFilterPoints; i++) {
          m_adComplexFftSignal[i].re = m_adFilter[i] * fftOutput[i].re;
          m_adComplexFftSignal[i].im = m_adFilter[i] * fftOutput[i].im;
          m_adComplexFftSignal[i].re = m_adFilter[i] * fftOutput[i].re;
          m_adComplexFftSignal[i].im = m_adFilter[i] * fftOutput[i].im;
-      }
-      fftw_complex ifftOutput [ m_nOutputPoints ];
+      }\r
+         delete [] fftOutput;
+      fftw_complex* ifftOutput = new fftw_complex [ m_nOutputPoints ];
       fftw_one (m_complexPlanBackward, m_adComplexFftSignal, ifftOutput);
       fftw_one (m_complexPlanBackward, m_adComplexFftSignal, ifftOutput);
-      for (int i = 0; i < m_nSignalPoints * m_iPreinterpolationFactor; i++) 
-         output[i] = ifftOutput[i].re;
+      for (i = 0; i < m_nSignalPoints * m_iPreinterpolationFactor; i++) 
+         output[i] = ifftOutput[i].re;\r
+         delete [] ifftOutput;
   }
 #endif\r
   delete input;
   }
 #endif\r
   delete input;
index 58f17bc9ac7e7bfc530f446246cc5cf3d388a134..591aed28282888f9441c2e190b1a5a38093740d5 100644 (file)
@@ -8,7 +8,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: reconstruct.cpp,v 1.2 2000/12/06 01:46:43 kevin Exp $
+**  $Id: reconstruct.cpp,v 1.3 2000/12/16 02:44:26 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
 **
 **  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
@@ -108,7 +108,7 @@ Reconstructor::plotFilter (SGP* pSGP)
 {
 #if HAVE_SGP
   int nVecFilter = m_pProcessSignal->getNFilterPoints();
 {
 #if HAVE_SGP
   int nVecFilter = m_pProcessSignal->getNFilterPoints();
-  double adPlotXAxis [nVecFilter];
+  double* adPlotXAxis = new double [nVecFilter];
 
   if (nVecFilter > 0 && pSGP)  {
     double f = m_pProcessSignal->getFilterMin();
 
   if (nVecFilter > 0 && pSGP)  {
     double f = m_pProcessSignal->getFilterMin();
@@ -123,7 +123,8 @@ Reconstructor::plotFilter (SGP* pSGP)
       ezplot.addCurve (adPlotXAxis, m_pProcessSignal->getFilter(), nVecFilter);
       ezplot.plot();
     }
       ezplot.addCurve (adPlotXAxis, m_pProcessSignal->getFilter(), nVecFilter);
       ezplot.plot();
     }
-  }
+  }\r
+  delete adPlotXAxis;
 #endif
 }
 
 #endif
 }
 
index 48f23943a739ec654d361fba8fdcc35f1fad92d5..cf6c78cf8a8a55e99f3985e1ef9b3381ca39c2b0 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: scanner.cpp,v 1.18 2000/12/16 02:31:00 kevin Exp $
+**  $Id: scanner.cpp,v 1.19 2000/12/16 02:44:26 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
 **
 **  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
@@ -303,7 +303,7 @@ Scanner::collectProjections (Projections& proj, const Phantom& phm, const int iS
   if (pSGP && m_trace >= Trace::TRACE_PHANTOM) {
       m_pSGP = pSGP;
       m_pSGP->eraseWindow();
   if (pSGP && m_trace >= Trace::TRACE_PHANTOM) {
       m_pSGP = pSGP;
       m_pSGP->eraseWindow();
-      double dWindowSize = max(m_detLen, m_dFocalLength * 2) * SQRT2;
+      double dWindowSize = dmax (m_detLen, m_dFocalLength * 2) * SQRT2;
       double dHalfWindowSize = dWindowSize / 2;
       m_dXMinWin = m_dXCenter - dHalfWindowSize;
       m_dXMaxWin = m_dXCenter + dHalfWindowSize;
       double dHalfWindowSize = dWindowSize / 2;
       m_dXMinWin = m_dXCenter - dHalfWindowSize;
       m_dXMaxWin = m_dXCenter + dHalfWindowSize;
diff --git a/libctsupport/msvc.cpp b/libctsupport/msvc.cpp
new file mode 100644 (file)
index 0000000..02266ae
--- /dev/null
@@ -0,0 +1,8 @@
+#include "ct.h"
+
+// Work around bug in VC6
+#ifdef MSVC
+const  struct fpos_t std::_Fpz = {0, 0};
+#endif
+
+\r
index 33fe7d3f6e45a7af71f1b6e38fdc1b9abf657db9..841a1981f19f386ee1661af79100b9a6091ff05d 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: pjrec.cpp,v 1.17 2000/09/02 05:10:39 kevin Exp $
+**  $Id: pjrec.cpp,v 1.18 2000/12/16 02:44:26 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
 **
 **  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
@@ -27,7 +27,7 @@
 
 #include "ct.h"
 #include "timer.h"
 
 #include "ct.h"
 #include "timer.h"
-
+\r
 
 enum {O_INTERP, O_FILTER, O_FILTER_METHOD, O_ZEROPAD, O_FILTER_PARAM, O_FILTER_GENERATION, O_BACKPROJ, O_PREINTERPOLATION_FACTOR, O_VERBOSE, O_TRACE, O_HELP, O_DEBUG, O_VERSION};
 
 
 enum {O_INTERP, O_FILTER, O_FILTER_METHOD, O_ZEROPAD, O_FILTER_PARAM, O_FILTER_GENERATION, O_BACKPROJ, O_PREINTERPOLATION_FACTOR, O_VERBOSE, O_TRACE, O_HELP, O_DEBUG, O_VERSION};
 
@@ -49,7 +49,7 @@ static struct option my_options[] =
   {0, 0, 0, 0}
 };
 
   {0, 0, 0, 0}
 };
 
-static const char* g_szIdStr = "$Id: pjrec.cpp,v 1.17 2000/09/02 05:10:39 kevin Exp $";
+static const char* g_szIdStr = "$Id: pjrec.cpp,v 1.18 2000/12/16 02:44:26 kevin Exp $";
 
 void 
 pjrec_usage (const char *program)
 
 void 
 pjrec_usage (const char *program)