-3.0.0 - Release 2/19/01
+3.0.1 - Released 2/19/01
+
+ * ctsim: Fixed dialog box for reconstruction so that
+ rotation angle setting will stay fixed in-between use
+ of the dialog box.
+
+ * syserror: Fixed display bug for trace messages
+
+ * ctsim: MSVC optimization bug work-around, compiler
+ options changed.
+
+3.0.0 - Released 2/19/01
* ctsim: Massive update/fix to online help and print manual.
* ctsim: Reformated all dialog boxes, much nicer now.
+ * ctsim: Improved accelerator key handling
+
* global: Added Hanning filter.
- * global: Improved default parameters so that all defaults give
+ * global: Improved default parameters to that all defaults give
sensible output.
-
- * ctsim: Improved accelerator key handling
-
- * ctsim,pjrec: Changed rotation angle to be a fraction of
- a circle rather than a multiple of pi.
3.0.0beta1 - Released 2/11/01
1
ctsim.tex
18
-5
-0
+8
+4
-ctsim-gui.tex
-TeX
-268447738 0 43 18 43 18 176 176 1253 763
mytitle.sty
DATA
5243570 0 9 1 8 22 66 66 1143 653
-ctsim-appendix.tex
-TeX
-12282 0 12 1 0 1 44 44 1121 631
ctsim-textui.tex
TeX
-12282 0 289 27 96 48 198 198 1275 785
+12282 0 297 15 0 1 198 198 1275 785
ctsim-install.tex
TeX
-12282 0 34 10 34 66 110 110 1187 697
-ctsim-concepts.tex
+12282 0 34 10 42 1 110 110 1187 697
+ctsim-web.tex
TeX
-268447738 0 363 20 363 77 110 110 1187 697
+12283 0 24 50 0 60 88 88 1165 675
ctsim.tex
TeX
-402665466 0 86 36 105 25 22 22 1099 609
-ctsim-web.tex
+402665466 0 68 19 98 23 22 22 1099 609
+ctsim-appendix.tex
+TeX
+12282 0 12 1 0 1 44 44 1121 631
+ctsim-gui.tex
+TeX
+12282 0 38 28 38 69 176 176 1253 763
+ctsim-concepts.tex
TeX
-268447739 0 24 50 0 60 88 88 1165 675
+12282 0 213 1 0 1 110 110 1187 697
tex2rtf.ini
DATA
273777330 0 0 1 17 8 22 22 938 609
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: phantom.h,v 1.23 2001/02/09 14:34:16 kevin Exp $
+** $Id: phantom.h,v 1.24 2001/02/20 04:48:45 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
const std::string& name() const {return m_name;}
const int id() const {return m_id;}
-#if HAVE_SGP
+#ifdef HAVE_SGP
void show () const;
void show (SGP& sgp) const;
void draw (SGP& sgp) const;
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: reconstruct.h,v 1.5 2001/01/29 23:11:32 kevin Exp $
+** $Id: reconstruct.h,v 1.6 2001/02/20 04:48:45 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
class Reconstructor
{
-public:
- Reconstructor (const Projections& rProj, ImageFile& rIF, const char* const filterName, double filt_param, const char* const filterMethodName, const int zeropad, const char* filterGenerationName, const char* const interpName, int interpFactor, const char* const backprojectName, const int trace, SGP* pSGP = NULL);
-
- ~Reconstructor ();
-
- bool fail() const {return m_bFail;}
- const std::string& failMessage() const {return m_strFailMessage;}
-
- void plotFilter (SGP* pSGP = NULL);
-
- void reconstructAllViews ();
-
- void reconstructView (int iStartView = 0, int iViewCount = -1, SGP* pSGP = NULL, bool bBackprojectView = true, double dGraphWidth = 1.);
-
private:
const Projections& m_rProj;
ImageFile& m_rImagefile;
std::string m_strFailMessage;
double* m_adPlotXAxis;
+
+ public:
+ Reconstructor (const Projections& rProj, ImageFile& rIF, const char* const filterName, double filt_param, const char* const filterMethodName, const int zeropad, const char* filterGenerationName, const char* const interpName, int interpFactor, const char* const backprojectName, const int trace, SGP* pSGP = NULL);
+
+ ~Reconstructor ();
+
+ bool fail() const {return m_bFail;}
+ const std::string& failMessage() const {return m_strFailMessage;}
+
+ void plotFilter (SGP* pSGP = NULL);
+
+ void reconstructAllViews ();
+
+ void reconstructView (int iStartView = 0, int iViewCount = -1, SGP* pSGP = NULL, bool bBackprojectView = true, double dGraphWidth = 1.);
};
#endif
** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: scanner.h,v 1.17 2001/02/08 06:25:07 kevin Exp $
+** $Id: scanner.h,v 1.18 2001/02/20 04:48:45 kevin Exp $
**
**
** This program is free software; you can redistribute it and/or modify
GRFMTX_2D m_rotmtxIncrement;
-#if HAVE_SGP
+#ifdef HAVE_SGP
SGP* m_pSGP; // Pointer to graphics device
double m_dXMinWin; // Extent of graphics window
double m_dXMaxWin;
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: ezplot.cpp,v 1.30 2001/01/28 19:10:18 kevin Exp $
+** $Id: ezplot.cpp,v 1.31 2001/02/20 04:48:45 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
EZPlotCurve::EZPlotCurve (const double* xData, const double* yData, int n)
-: x(NULL), y(NULL)
+: x(new double[n]), y(new double[n])
{
- x = new double [n];
- y = new double [n];
-
- int copyCount = n * sizeof(double);
- memcpy (x, xData, copyCount);
- memcpy (y, yData, copyCount);
+ for (int i = 0; i < n; i++) {
+ x[i] = xData[i];
+ y[i] = yData[i];
+ }
m_iPointCount = n;
}
}
void
-EZPlot::addCurve (const double x[], const float y[], int num)
+EZPlot::addCurve (const double* const x, const float* const y, int num)
{
double* dy = new double [num];
void
-EZPlot::addCurve (const double x[], const double y[], int num)
+EZPlot::addCurve (const double* const x, const double* const y, int num)
{
if (num < 1)
return;
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: reconstruct.cpp,v 1.12 2001/02/11 04:56:37 kevin Exp $
+** $Id: reconstruct.cpp,v 1.13 2001/02/20 04:48:45 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
return;
}
-#if HAVE_SGP
+#ifdef HAVE_SGP
m_adPlotXAxis = new double [m_rProj.nDet()];
double x = - ((m_rProj.nDet() - 1) / 2) * m_rProj.detInc();
double xInc = m_rProj.detInc();
void
Reconstructor::plotFilter (SGP* pSGP)
{
-#if HAVE_SGP
+#ifdef HAVE_SGP
int nVecFilter = m_pProcessSignal->getNFilterPoints();
double* adPlotXAxis = new double [nVecFilter];
osXLength << "xlength " << dGraphWidth;
ezplotProj.ezset ("clear");
- ezplotProj.ezset ("title Filtered Projection");
+ ezplotProj.ezset ("title Raw Projection");
ezplotProj.ezset ("xticks major 5");
+ ezplotProj.ezset ("yticks major 5");
ezplotProj.ezset ("xlabel ");
ezplotProj.ezset ("ylabel ");
- ezplotProj.ezset ("yticks major 5");
- ezplotProj.ezset ("yporigin 0.10");
+ ezplotProj.ezset ("yporigin 0.55");
ezplotProj.ezset ("ylength 0.45");
ezplotProj.ezset (osXLength.str().c_str());
- ezplotProj.ezset ("box");
- ezplotProj.ezset ("grid");
- ezplotProj.addCurve (m_adPlotXAxis, adFilteredProj, m_nFilteredProjections);
+ ezplotProj.ezset ("box.");
+ ezplotProj.ezset ("grid.");
+#if 0 // workaround c++ optimizer bug, now disabled by using /O1 in code
+ double* pdDetval = new double [m_rProj.nDet()];
+ for (unsigned int id = 0; id < m_rProj.nDet(); id++) {
+ pdDetval[id] = detval[id];
+ }
+ ezplotProj.addCurve (m_adPlotXAxis, pdDetval, m_rProj.nDet());
+ delete pdDetval;
+#else
+ ezplotProj.addCurve (m_adPlotXAxis, detval, m_rProj.nDet());
+#endif
pSGP->setTextPointSize (12);
ezplotProj.plot (pSGP);
ezplotProj.ezset ("clear");
- ezplotProj.ezset ("title Raw Projection");
+ ezplotProj.ezset ("title Filtered Projection");
ezplotProj.ezset ("xticks major 5");
- ezplotProj.ezset ("yticks major 5");
ezplotProj.ezset ("xlabel ");
ezplotProj.ezset ("ylabel ");
- ezplotProj.ezset ("yporigin 0.55");
+ ezplotProj.ezset ("yticks major 5");
+ ezplotProj.ezset ("yporigin 0.10");
ezplotProj.ezset ("ylength 0.45");
ezplotProj.ezset (osXLength.str().c_str());
- ezplotProj.ezset ("box.");
- ezplotProj.ezset ("grid.");
- ezplotProj.addCurve (m_adPlotXAxis, detval, m_rProj.nDet());
+ ezplotProj.ezset ("box");
+ ezplotProj.ezset ("grid");
+ ezplotProj.addCurve (m_adPlotXAxis, adFilteredProj, m_nFilteredProjections);
pSGP->setTextPointSize (12);
ezplotProj.plot (pSGP);
- }
+
+}
#endif //HAVE_SGP
}
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: syserror.cpp,v 1.20 2001/01/30 02:20:50 kevin Exp $
+** $Id: syserror.cpp,v 1.21 2001/02/20 04:48:45 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
* Can take 24 byte transfer
*/
-static int s_reportErrorLevel = ERR_WARNING; // Set error reporting level
+static int s_reportErrorLevel = ERR_TRACE; // Set error reporting level
void sys_error (int severity, const char *msg, ...)
}
else
#endif
- std::cout << strOutput;
+ std::cout << strOutput << "\n";
va_end(arg);
}
std::ostringstream os;
- s_nErrorCount++;
+ if (severity > ERR_TRACE)
+ s_nErrorCount++;
+
if (severity != ERR_FATAL) {
if (s_nErrorCount > MAX_ERROR_COUNT)
return;
strncpy (errStr, sizeof(errStr), "Error message not available on this platform.");
#endif
- os << errStr << "\n";
+ os << errStr;
strOutput = os.str();
if (severity == ERR_FATAL) {
- std::cerr << strOutput;
+ std::cerr << strOutput << "\n";
throw std::runtime_error (strOutput);
}
--------------------Configuration: ctsim - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP151.tmp" with contents
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP267.tmp" with contents
[
-/nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\include" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D "NDEBUG" /D "__WXWIN__" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.0alpha5\" /FR"Release/" /Fp"Release/ctsim.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
+/nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\include" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D "NDEBUG" /D "__WXWIN__" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.1\" /D CTSIMVERSION=\"3.0.0alpha5\" /FR"Release/" /Fp"Release/ctsim.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
"C:\ctsim\src\ctsim.cpp"
+"C:\ctsim\src\dialogs.cpp"
+"C:\ctsim\src\dlgprojections.cpp"
+"C:\ctsim\src\docs.cpp"
+"C:\ctsim\src\views.cpp"
]
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP151.tmp"
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP152.tmp" with contents
+Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP267.tmp"
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP268.tmp" with contents
+[
+/nologo /G6 /MT /W3 /GR /GX /O1 /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\include" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D "NDEBUG" /D "__WXWIN__" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.1\" /D CTSIMVERSION=\"3.0.0alpha5\" /FR"Release/" /Fp"Release/ctsim.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
+"C:\ctsim\src\dlgreconstruct.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP268.tmp"
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP269.tmp" with contents
+[
+/nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\include" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D "NDEBUG" /D "__WXWIN__" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.1\" /FR"Release/" /Fp"Release/ctsim.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
+"C:\ctsim\src\graph3dview.cpp"
+]
+Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP269.tmp"
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP26A.tmp" with contents
[
wsock32.lib tiff.lib jpeg.lib png.lib zlib.lib xpm.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib htmlhelp.lib /nologo /subsystem:windows /incremental:no /pdb:"Release/ctsim.pdb" /machine:I386 /out:"Release/ctsim.exe" /libpath:"\wx2.2.5\lib"
.\Release\ctsim.obj
\wx2.2.5\lib\zlib.lib
\wx2.2.5\lib\tiff.lib
]
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP152.tmp"
+Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP26A.tmp"
<h3>Output Window</h3>
Compiling...
ctsim.cpp
+dialogs.cpp
+dlgprojections.cpp
+docs.cpp
+views.cpp
+Compiling...
+dlgreconstruct.cpp
+Compiling...
+graph3dview.cpp
Linking...
LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: dlgreconstruct.cpp,v 1.16 2001/01/29 23:11:32 kevin Exp $
+** $Id: dlgreconstruct.cpp,v 1.17 2001/02/20 04:48:45 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
m_pSGP->setViewport (0, 0, 1, 1);
m_pSGP->setWindow (0, 0, 1, 1);
m_pSGP->setTextColor (C_LTRED, -1);
- double dCharHeight = m_pSGP->getCharHeight();
- m_pSGP->setTextSize (dCharHeight * 2);
+ m_pSGP->setTextPointSize (20.);
m_pSGP->moveAbs(0., m_pSGP->getCharHeight());
m_pSGP->drawText (szProgress);
- m_pSGP->setTextSize (dCharHeight);
+ m_pSGP->setTextPointSize (10.);
int iXDialog, iYDialog;
GetClientSize (&iXDialog, &iYDialog);
double dGraphWidth = (iXDialog - m_nxImage) / static_cast<double>(iXDialog);
m_rReconstructor.reconstructView (iViewNumber, 1, m_pSGP, bBackprojectView, dGraphWidth);
-
+ ::wxYield();
+::wxYield();
+::wxYield();
+::wxYield();
+
ImageFileArrayConst v = m_rImageFile.getArray();
int xBase = m_nxGraph;
int yBase = 0;
m_pSGP->getDriver().idWX()->DrawBitmap(bitmap, xBase, yBase, false);
delete imageData;
}
+
+ ::wxYield();
}
bool
"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888",
"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888",
"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888",
-"88888888888888888888888888888888888888888888888822278888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888722288888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888O>>$888888888888888>>;888888888888888>>;88888888888",
-"8888888888#uuu#8885uuu68888888888888888888888888uuu#8888888888888888888883uuu.8888#uuuu8888888888888888uuuuuuu-.=888888888888888888888888888888888888888888888888888#uuu8888888888888888888888888888888888888888888888888888888#uuu-8888ryuuu#8888888882uuuuuu2Xr88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888@<O8888889<w8888888888888888888888888888><48888888888888888888888888888888>@<<<<e988888888888+&<<<qO88888888888+&<<<qO888888888",
-"8888888888#uuu#886uuu38888888888888888888888888822278888888888888888888883uuuu=888.uuuu8888888888888888uuuuuuuuuy=88888888888888888888888888888888888888888888888888#uuu8888888888888888888888888888888888888888888888888888888#uuuu68886uuuu#8888888882uuuuuuuuy*8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888:<+888888%<$8888888888888888888888888888$q+88888888888888888888888888888884&w>>:&<;888888888><@9>4<q8888888888><@9>4<q888888888",
-"8888888888#uuu#87yuu.88888888888888888888888888888888888888888888888888883uuuu388=uuuuu8888888888888888uuu2332uuu.88888888888888888888888888888888888888888888888888#uuu8888888888888888888888888888888888888888888888888888888#uuuu2888-uuuu#8888888882uu-331uuuu#888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888;<q88888O&e888888888888888888888888888888888888888888888888888888888888888$O8888+<4888888888,<;888%<$888888888,<;888%<$88888888",
-"8888888888#uuu#riuui88888862uuy1#88.22X888r222r82227885226*iuy588888888883uuuu-883uuuuu8888888888888888uuu3888iuu28888#1yuu268888862uuui.7888=.-uui3r88822273-u-6888#uuu=.yui78888r3iuu-.=8885226=52688*iuu15225888888888888888#uuuuu=8#uuuuu#8888888882uu28887yuu-8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888,<;8888+<:8889@<<,>888$q+;wqw8;%&<&,988$q+888O%&<&%O888+q$4e<e+88888888888888889<:888888888<q8888><4888888888<q8888><488888888",
-"8888888888#uuu#1uu-r8888riuuuuuuu*83uu-8886uu288uuu#882uuyuuuuu38888888883uuyuu68-uyuuu8888888888888888uuu3888iuu18886uuuuuuu.888iuuuuuuu3886uuuuuuui888uuuyuuuuu#88#uuuyuuuuy=887yuuuuuuy=882uu2yuu386uuuuuuuu2888888888888888#uuuyu.8.uyuuu#8888888882uu288886uuu7888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888+<:8888,<;88w<w>9@<>88><q&<<q;&&%4%eq88><488O@<%4%<@O884<&ew4&<>88888888888888;@@O88888888;<w88888<%88888888;<w88888<%88888888",
-"8888888888#uuu2uuy7888885uui*#1uu-8=uuu*881uu688uuu#882uuy.3yuu-8888888883uu2iu26uu5uuu8888888888888888uuu.##1uuu*88=uuu3#6yuu686uu-6##5-38=yuu3#6yuu688uuu-55uuu.88#uuui3.uuu.88iuu1#*iuu.882uuu-223ryuui*#1uu2888888888888888#uuu5uy7uu5uuu#8888888882uu28888ruuu3888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888O&@888O<q88$<4888O<,88><<4O8;:<98888>88><4884<:888:<4884<w888><%888888888888q@&%O888888888><488888<q88888888><488888<q88888888",
-"8888888888#uuuuuuy=88888uuu=88ruuu782uu.8ruuy888uuu#882uu3886uuu8888888883uu26uu-u.3uuu8888888888888888uuuuuuuuu58885uui8885uui83uuy67888=83uu.8885uu188uuu#88.uu288#uuu8885uu-8#uu-888*uuy882uu388886uuyr883uu2888888888888888#uuu=uu-u-#uuu#8888888882uu288888uuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888%<$88:<+88w<O8888q<88><48888:<w8888888><488@&88888&@884<>8888<q888888888888qq&e9888888888><488888<q88888888><488888<q88888888",
-"8888888888#uuuuuuui8888#uuuuuuuuuu#86uuy8Xuu.888uuu#882uu388#uuu8888888883uu28yuuu73uuu8888888888888888uuuuuuuuX88882uu3888#uuu87uuuuuuiX882uuuuuuuuu288uuu#883uu288#uuu888#uuu83uuuuuuuuuu882uu388883uu28883uu2888888888888888#uuu81uuuX#uuu#8888888882uu28888ruuuX88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889<w88@<O88q<<<<<<<<88><48888O&<&,4$888><488<q88888q<884<>8888<q888888888888888%<988888888><488888<q88888888><488888<q88888888",
-"8888888888#uuuX2uuu5888#uuu2222222788yuu*iuu7888uuu#882uu388#uuu8888888883uu285uui83uuu8888888888888888uuu.Xuuuyr8882uu3888#uuu88*-uuuuuu582uu-222222588uuu#883uu288#uuu888#uuu83uuy2222222882uu388883uu28883uu2888888888888888#uuu8*uuur#uuu#8888888882uu288886uuu788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ee8;<%888q<>>>>>>>88><488888O:q&<<%88><488<q88888q<884<>8888<q888888888888888O<,88888888;<48888O<%88888888;<48888O<%88888888",
-"8888888888#uuu#ryuuu*88=uuu=8888888885uu2uui8888uuu#882uu388#uuu8888888883uu28=uu683uuu888633#888888888uuu385uuu2888.uu18886uu-8=88765-uuu8.uu.888888888uuu#883uu288#uuu888Xuui86uu-8888888882uu38888*uuu7885uu2888633*88888888#uuu88-u.8#uuu#88#3368882uu28887yuui888333=88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888w<$4<9888%<$88888888><4888888888$@<$8><488ee88888ee884<>8888<q8888888888888888<q888888888<q8888><4888888888<q8888><488888888",
-"8888888888#uuu#8#uuuy7882uui*88=X-888=uuuuu68888uuu#882uu388#uuu8888888883uu28888883uuu8882uu3888888888uuu388iuuu588#uuu#8=-uu383-6=886uuy8#uuu3=88*.388uuu#883uu288#uuur8#yuu38ryuu1788751882uu38888ryuuu2-uuu2888uuu#88888888#uuu888888#uuu#883uu28882uu-331uuuy7888uuu#88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888$<%e&8888+<,88888$88><48888$O88884<>8><488%<>888><%884<>8888<q888888888>88888:<w888+4;888,<;888%<$888+4;888,<;888%<$88888888",
-"8888888888#uuu#883uuuir87yuuuuuuuu8888iuuuyr8888uuu#882uu388#uuu8888888883uu28888883uuu8882uu3888888888uuu388=yuuu*88.uuuuuuuir83uuuuuuuu388.uuuuuuuu388uuu#883uu288#uuuuuuuu-r886uuuuuuuu2882uu3888886uuuuuyuu288#uu2888888888#uuu888888#uuu#883uu28882uuuuuuuuy#8888uuu#888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888@&<w88888@<q9>+qq88><488884&w>>:&e88><488;&&:>+&&;884<>8888<q888888888<@:>>w<&O888q<>888><@9>4<q8888q<>888><@9>4<q888888888",
-"8888888888#uuu#8882uuu.88=.uuuuuy.88886uuu.88888uuu#882uu388#uuu8888888883uu28888883uuu8882uu3888888888uuu3888*uuuy7883yuuuu.r88#iuuuuu-*88886-uuuuui#88uuu#883uu288#uuu2uuu278888#2uuuuu-X882uu3888888#.2163uu2883uu*888888888#uuu888888#uuu#883uu28882uuuuuy2Xr88888uuu#888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888:<<$88888Ow<<<<e:88><48888>@<<<<q$88><4888$e<<<e$8884<>8888<q888888888%&<<<<q;8888q<>8888+&<<<qO8888q<>8888+&<<<qO888888888",
-"88888888888888888888888888887##=88888888888888888888888888888888888888888888888888888888888888888888888888888888888888887##88888888###=88888888r###8888888888888888888888=#=888888888###r8888888888888=r888r-uu588iu-88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888>>;8888888888888O>>;888888888888$>$8888888888888888888888888;>>O888888888888888>>;888888888888888>>;88888888888",
+"88888888888888888888888888888888888888888888888822278888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888722288888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888O>>$888888888888888>>;88888888888888888888888888888",
+"8888888888#uuu#8885uuu68888888888888888888888888uuu#8888888888888888888883uuu.8888#uuuu8888888888888888uuuuuuu-.=888888888888888888888888888888888888888888888888888#uuu8888888888888888888888888888888888888888888888888888888#uuu-8888ryuuu#8888888882uuuuuu2Xr88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888@<O8888889<w8888888888888888888888888888><48888888888888888888888888888888>@<<<<e988888888888+&<<<qO8888888888888O<488888888888",
+"8888888888#uuu#886uuu38888888888888888888888888822278888888888888888888883uuuu=888.uuuu8888888888888888uuuuuuuuuy=88888888888888888888888888888888888888888888888888#uuu8888888888888888888888888888888888888888888888888888888#uuuu68886uuuu#8888888882uuuuuuuuy*8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888:<+888888%<$8888888888888888888888888888$q+88888888888888888888888888888884&w>>:&<;888888888><@9>4<q88888888888>+@<488888888888",
+"8888888888#uuu#87yuu.88888888888888888888888888888888888888888888888888883uuuu388=uuuuu8888888888888888uuu2332uuu.88888888888888888888888888888888888888888888888888#uuu8888888888888888888888888888888888888888888888888888888#uuuu2888-uuuu#8888888882uu-331uuuu#888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888;<q88888O&e888888888888888888888888888888888888888888888888888888888888888$O8888+<4888888888,<;888%<$8888888888<<<<488888888888",
+"8888888888#uuu#riuui88888862uuy1#88.22X888r222r82227885226*iuy588888888883uuuu-883uuuuu8888888888888888uuu3888iuu28888#1yuu268888862uuui.7888=.-uui3r88822273-u-6888#uuu=.yui78888r3iuu-.=8885226=52688*iuu15225888888888888888#uuuuu=8#uuuuu#8888888882uu28887yuu-8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888,<;8888+<:8889@<<,>888$q+;wqw8;%&<&,988$q+888O%&<&%O888+q$4e<e+88888888888888889<:888888888<q8888><4888888888888><488888888888",
+"8888888888#uuu#1uu-r8888riuuuuuuu*83uu-8886uu288uuu#882uuyuuuuu38888888883uuyuu68-uyuuu8888888888888888uuu3888iuu18886uuuuuuu.888iuuuuuuu3886uuuuuuui888uuuyuuuuu#88#uuuyuuuuy=887yuuuuuuy=882uu2yuu386uuuuuuuu2888888888888888#uuuyu.8.uyuuu#8888888882uu288886uuu7888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888+<:8888,<;88w<w>9@<>88><q&<<q;&&%4%eq88><488O@<%4%<@O884<&ew4&<>88888888888888;@@O88888888;<w88888<%888888888888><488888888888",
+"8888888888#uuu2uuy7888885uui*#1uu-8=uuu*881uu688uuu#882uuy.3yuu-8888888883uu2iu26uu5uuu8888888888888888uuu.##1uuu*88=uuu3#6yuu686uu-6##5-38=yuu3#6yuu688uuu-55uuu.88#uuui3.uuu.88iuu1#*iuu.882uuu-223ryuui*#1uu2888888888888888#uuu5uy7uu5uuu#8888888882uu28888ruuu3888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888O&@888O<q88$<4888O<,88><<4O8;:<98888>88><4884<:888:<4884<w888><%888888888888q@&%O888888888><488888<q888888888888><488888888888",
+"8888888888#uuuuuuy=88888uuu=88ruuu782uu.8ruuy888uuu#882uu3886uuu8888888883uu26uu-u.3uuu8888888888888888uuuuuuuuu58885uui8885uui83uuy67888=83uu.8885uu188uuu#88.uu288#uuu8885uu-8#uu-888*uuy882uu388886uuyr883uu2888888888888888#uuu=uu-u-#uuu#8888888882uu288888uuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888%<$88:<+88w<O8888q<88><48888:<w8888888><488@&88888&@884<>8888<q888888888888qq&e9888888888><488888<q888888888888><488888888888",
+"8888888888#uuuuuuui8888#uuuuuuuuuu#86uuy8Xuu.888uuu#882uu388#uuu8888888883uu28yuuu73uuu8888888888888888uuuuuuuuX88882uu3888#uuu87uuuuuuiX882uuuuuuuuu288uuu#883uu288#uuu888#uuu83uuuuuuuuuu882uu388883uu28883uu2888888888888888#uuu81uuuX#uuu#8888888882uu28888ruuuX88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889<w88@<O88q<<<<<<<<88><48888O&<&,4$888><488<q88888q<884<>8888<q888888888888888%<988888888><488888<q888888888888><488888888888",
+"8888888888#uuuX2uuu5888#uuu2222222788yuu*iuu7888uuu#882uu388#uuu8888888883uu285uui83uuu8888888888888888uuu.Xuuuyr8882uu3888#uuu88*-uuuuuu582uu-222222588uuu#883uu288#uuu888#uuu83uuy2222222882uu388883uu28883uu2888888888888888#uuu8*uuur#uuu#8888888882uu288886uuu788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ee8;<%888q<>>>>>>>88><488888O:q&<<%88><488<q88888q<884<>8888<q888888888888888O<,88888888;<48888O<%888888888888><488888888888",
+"8888888888#uuu#ryuuu*88=uuu=8888888885uu2uui8888uuu#882uu388#uuu8888888883uu28=uu683uuu888633#888888888uuu385uuu2888.uu18886uu-8=88765-uuu8.uu.888888888uuu#883uu288#uuu888Xuui86uu-8888888882uu38888*uuu7885uu2888633*88888888#uuu88-u.8#uuu#88#3368882uu28887yuui888333=88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888w<$4<9888%<$88888888><4888888888$@<$8><488ee88888ee884<>8888<q8888888888888888<q888888888<q8888><4888888888888><488888888888",
+"8888888888#uuu#8#uuuy7882uui*88=X-888=uuuuu68888uuu#882uu388#uuu8888888883uu28888883uuu8882uu3888888888uuu388iuuu588#uuu#8=-uu383-6=886uuy8#uuu3=88*.388uuu#883uu288#uuur8#yuu38ryuu1788751882uu38888ryuuu2-uuu2888uuu#88888888#uuu888888#uuu#883uu28882uu-331uuuy7888uuu#88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888$<%e&8888+<,88888$88><48888$O88884<>8><488%<>888><%884<>8888<q888888888>88888:<w888+4;888,<;888%<$888+4;888888><488888888888",
+"8888888888#uuu#883uuuir87yuuuuuuuu8888iuuuyr8888uuu#882uu388#uuu8888888883uu28888883uuu8882uu3888888888uuu388=yuuu*88.uuuuuuuir83uuuuuuuu388.uuuuuuuu388uuu#883uu288#uuuuuuuu-r886uuuuuuuu2882uu3888886uuuuuyuu288#uu2888888888#uuu888888#uuu#883uu28882uuuuuuuuy#8888uuu#888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888@&<w88888@<q9>+qq88><488884&w>>:&e88><488;&&:>+&&;884<>8888<q888888888<@:>>w<&O888q<>888><@9>4<q8888q<>8888>>:<%>>O88888888",
+"8888888888#uuu#8882uuu.88=.uuuuuy.88886uuu.88888uuu#882uu388#uuu8888888883uu28888883uuu8882uu3888888888uuu3888*uuuy7883yuuuu.r88#iuuuuu-*88886-uuuuui#88uuu#883uu288#uuu2uuu278888#2uuuuu-X882uu3888888#.2163uu2883uu*888888888#uuu888888#uuu#883uu28882uuuuuy2Xr88888uuu#888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888:<<$88888Ow<<<<e:88><48888>@<<<<q$88><4888$e<<<e$8884<>8888<q888888888%&<<<<q;8888q<>8888+&<<<qO8888q<>8888<<<<<<<>88888888",
+"88888888888888888888888888887##=88888888888888888888888888888888888888888888888888888888888888888888888888888888888888887##88888888###=88888888r###8888888888888888888888=#=888888888###r8888888888888=r888r-uu588iu-88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888>>;8888888888888O>>;888888888888$>$8888888888888888888888888;>>O888888888888888>>;88888888888888888888888888888",
"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883u-22uuuu=8ruu688888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888",
"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uuuuuu-*88*u-888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888",
"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888r#X333#8888=#=888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888",
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: views.cpp,v 1.107 2001/02/19 20:23:17 kevin Exp $
+** $Id: views.cpp,v 1.108 2001/02/20 04:48:45 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
return;
}
pProj->initFromScanner (theScanner);
- m_dDefaultRotation /= PI; // convert back to PI units
+ m_dDefaultRotation /= TWOPI; // convert back to fraction of a circle
Timer timer;
if (m_iDefaultTrace > Trace::TRACE_CONSOLE) {
wxString optBackprojectName = dialogReconstruction.getBackprojectName();
m_iDefaultBackprojector = Backprojector::convertBackprojectNameToID (optBackprojectName.c_str());
m_iDefaultTrace = dialogReconstruction.getTrace();
+
if (m_iDefaultNX > 0 && m_iDefaultNY > 0) {
const Projections& rProj = GetDocument()->getProjections();
-
ImageFile* pImageFile = new ImageFile;
pImageFile->setArraySize (m_iDefaultNX, m_iDefaultNY);
- Reconstructor* pReconstructor = new Reconstructor (rProj, *pImageFile, optFilterName.c_str(), m_dDefaultFilterParam, optFilterMethodName.c_str(), m_iDefaultZeropad, optFilterGenerationName.c_str(), optInterpName.c_str(), m_iDefaultInterpParam, optBackprojectName.c_str(), m_iDefaultTrace);
+ Reconstructor* pReconstructor = new Reconstructor (rProj, *pImageFile, optFilterName.c_str(),
+ m_dDefaultFilterParam, optFilterMethodName.c_str(), m_iDefaultZeropad, optFilterGenerationName.c_str(),
+ optInterpName.c_str(), m_iDefaultInterpParam, optBackprojectName.c_str(), m_iDefaultTrace);
Timer timerRecon;
if (m_iDefaultTrace > Trace::TRACE_CONSOLE) {
ReconstructDialog* pDlgReconstruct = new ReconstructDialog (*pReconstructor, rProj, *pImageFile, m_iDefaultTrace, getFrameForChild());
for (int iView = 0; iView < rProj.nView(); iView++) {
::wxYield();
- if (pDlgReconstruct->isCancelled() || ! pDlgReconstruct->reconstructView (iView)) {
+ if (pDlgReconstruct->isCancelled() || ! pDlgReconstruct->reconstructView (iView, true)) {
delete pDlgReconstruct;
delete pReconstructor;
delete pImageFile;
return;
}
::wxYield();
+ ::wxYield();
while (pDlgReconstruct->isPaused()) {
::wxYield();
::wxUsleep(50);
delete pDlgReconstruct;
} else {
wxProgressDialog dlgProgress (wxString("Reconstruction"), wxString("Reconstruction Progress"), rProj.nView() + 1, getFrameForChild(), wxPD_CAN_ABORT);
- for (int i = 0; i < rProj.nView(); i++) {
- pReconstructor->reconstructView (i, 1);
- if (! dlgProgress.Update (i + 1)) {
+ for (int iView = 0; iView < rProj.nView(); iView++) {
+ pReconstructor->reconstructView (iView, 1);
+ if (! dlgProgress.Update (iView + 1)) {
delete pReconstructor;
delete pImageFile;
return;