From b0df0a0f3008d0fee67f388cfa1c37af6383b38f Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Fri, 23 Feb 2001 03:30:31 +0000 Subject: [PATCH] r575: no message --- configure.in | 2 +- doc/ctsim.prj | 18 +++++++++--------- msvc/ctsim/ctsim.plg | 26 ++++++++++++++++++++++---- src/Makefile.am | 3 ++- src/threadrecon.cpp | 39 +++++++++++++++++---------------------- src/threadrecon.h | 16 ++++++++++++---- 6 files changed, 63 insertions(+), 41 deletions(-) diff --git a/configure.in b/configure.in index ce5d134..8a943c1 100644 --- a/configure.in +++ b/configure.in @@ -4,7 +4,7 @@ dnl Must reset CDPATH so that bash's cd does not print to stdout dnl CDPATH= AC_INIT(src/ctsim.cpp) -AM_INIT_AUTOMAKE(ctsim,3.0.4) +AM_INIT_AUTOMAKE(ctsim,3.1.0) AM_CONFIG_HEADER(config.h) dnl Checks for programs. diff --git a/doc/ctsim.prj b/doc/ctsim.prj index d9dd4ae..b763f7d 100644 --- a/doc/ctsim.prj +++ b/doc/ctsim.prj @@ -5,19 +5,22 @@ 1 ctsim.tex 18 -0 -0 +3 +1 ctsim-gui.tex TeX -268447738 0 207 31 207 1 176 176 1253 763 +12282 0 290 27 0 1 176 176 1253 763 +ctsim-concepts.tex +TeX +268447738 0 334 29 307 1 110 110 1187 697 +ctsim-textui.tex +TeX +12282 0 38 45 38 46 198 198 1275 785 mytitle.sty DATA 273679026 0 9 1 8 22 66 66 1143 653 -ctsim-textui.tex -TeX -268447738 0 297 15 0 1 198 198 1275 785 ctsim-install.tex TeX 268447738 0 34 10 42 1 110 110 1187 697 @@ -30,9 +33,6 @@ TeX ctsim.tex TeX 402665466 0 25 31 27 37 22 22 1099 609 -ctsim-concepts.tex -TeX -268447738 2 305 28 305 41 110 110 1187 697 tex2rtf.ini DATA 273777330 0 0 1 17 8 22 22 938 609 diff --git a/msvc/ctsim/ctsim.plg b/msvc/ctsim/ctsim.plg index 5b1d868..c89a669 100644 --- a/msvc/ctsim/ctsim.plg +++ b/msvc/ctsim/ctsim.plg @@ -6,13 +6,24 @@ --------------------Configuration: ctsim - Win32 Debug--------------------

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP58.tmp" with contents +Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP8D.tmp" with contents [ /nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "\wx2.2.5\include" /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"3.0.0beta1\" /D "_DEBUG" /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.4\" /FR"Debug/" /Fp"Debug/ctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c "C:\ctsim\src\backgroundmgr.cpp" +"C:\ctsim\src\graph3dview.cpp" +"C:\ctsim\src\threadrecon.cpp" ] -Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP58.tmp" -Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP59.tmp" with contents +Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP8D.tmp" +Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP8E.tmp" with contents +[ +/nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "\wx2.2.5\include" /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"3.0.0beta1\" /D "_DEBUG" /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.4\" /D CTSIMVERSION=\"3.0.0alpha5\" /FR"Debug/" /Fp"Debug/ctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c +"C:\ctsim\src\ctsim.cpp" +"C:\ctsim\src\dialogs.cpp" +"C:\ctsim\src\docs.cpp" +"C:\ctsim\src\views.cpp" +] +Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP8E.tmp" +Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP8F.tmp" with contents [ winmm.lib rpcrt4.lib ws2_32.lib ../libctsim/Debug/libctsim.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib wxd.lib xpmd.lib tiffd.lib zlibd.lib pngd.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:yes /pdb:"Debug/ctsim.pdb" /debug /machine:I386 /out:"Debug/ctsim.exe" /pdbtype:sept /libpath:"\wx2.2.5\lib" .\Debug\backgroundmgr.obj @@ -36,10 +47,17 @@ winmm.lib rpcrt4.lib ws2_32.lib ../libctsim/Debug/libctsim.lib libcmtd.lib ..\.. \wx2.2.5\lib\zlibd.lib \wx2.2.5\lib\tiffd.lib ] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP59.tmp" +Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP8F.tmp"

Output Window

Compiling... +threadrecon.cpp backgroundmgr.cpp +graph3dview.cpp +Compiling... +ctsim.cpp +dialogs.cpp +docs.cpp +views.cpp Linking... diff --git a/src/Makefile.am b/src/Makefile.am index be72fcf..a06eee2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,6 +1,7 @@ bin_PROGRAMS=ctsim -ctsim_SOURCES=ctsim.cpp docs.cpp views.cpp dialogs.cpp ctsim.h docs.h views.h dialogs.h dlgprojections.cpp dlgprojections.h dlgreconstruct.cpp dlgreconstruct.h graph3dview.cpp graph3dview.h ctsim-map.h ctsim.xpm splash.xpm tips.cpp tips.h +ctsim_SOURCES=ctsim.cpp docs.cpp views.cpp dialogs.cpp ctsim.h docs.h views.h dialogs.h dlgprojections.cpp dlgprojections.h dlgreconstruct.cpp dlgreconstruct.h graph3dview.cpp graph3dview.h ctsim-map.h ctsim.xpm splash.xpm tips.cpp tips.h threadrecon.cpp threadrecon.h backgroundmgr.cpp backgroundmgr.h + ctsim_DEPENDENCIES=../libctgraphics/libctgraphics.a ../libctsupport/libctsupport.a ../libctsim/libctsim.a ../include/ct.h ctsim_LDADD=-L../libctgraphics -L../libctsupport -L../libctsim @ctlibs@ diff --git a/src/threadrecon.cpp b/src/threadrecon.cpp index f973c68..159e9d4 100644 --- a/src/threadrecon.cpp +++ b/src/threadrecon.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2001 Kevin Rosenberg ** -** $Id: threadrecon.cpp,v 1.4 2001/02/23 02:06:02 kevin Exp $ +** $Id: threadrecon.cpp,v 1.5 2001/02/23 03:28: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 @@ -70,20 +70,17 @@ ThreadedReconstructor::ThreadedReconstructor (ProjectionFileView* pProjView, int iExtraViews = m_iTotalViews % m_iNumThreads; m_vecpChildImageFile.reserve (m_iNumThreads); - m_vecpReconstructor.reserve (m_iNumThreads); m_vecpThread.reserve (m_iNumThreads); for (unsigned int iProc = 0; iProc < m_iNumThreads; iProc++) { m_vecpChildImageFile[iProc] = new ImageFile (iImageNX, iImageNY); - m_vecpReconstructor[iProc] = new Reconstructor (m_pProjView->GetDocument()->getProjections(), *m_vecpChildImageFile[iProc], - pszFilterName, dFilterParam, pszFilterMethod, iZeropad, pszFilterGenerationName, - pszInterpName, iInterpParam, pszBackprojectName, Trace::TRACE_NONE); int iStartView = iProc * iBaseViews; int iNumViews = iBaseViews; if (iProc < iExtraViews) ++iNumViews; - m_vecpThread[iProc] = new ReconstructionThread (this, m_vecpReconstructor[iProc], iProc, iStartView, iNumViews); + m_vecpThread[iProc] = new ReconstructionThread (this, pProjView, m_vecpChildImageFile[iProc], iProc, iStartView, iNumViews, + pszFilterName, dFilterParam, pszFilterMethod, iZeropad, pszFilterGenerationName, pszInterpName, iInterpParam, pszBackprojectName); if (m_vecpThread[iProc]->Create () != wxTHREAD_NO_ERROR) { m_bFail = true; break; @@ -147,12 +144,7 @@ ThreadedReconstructor::cleanUp() for (i = 0; i < m_iNumThreads; i++) { delete m_vecpChildImageFile[i]; m_vecpChildImageFile[i] = NULL; - } - for (i = 0; i < m_iNumThreads; i++) { - delete m_vecpReconstructor[i]; - m_vecpReconstructor[i] = NULL; - } - + } m_iNumThreads = 0; m_iRunning = 0; @@ -172,7 +164,7 @@ ThreadedReconstructor::onDone() { wxCriticalSection doneSection; doneSection.Enter(); - + m_pProjView->GetDocument()->removeReconstructor (this); ImageFileDocument* pReconDoc = theApp->newImageDoc(); if (! pReconDoc) { @@ -180,12 +172,7 @@ ThreadedReconstructor::onDone() doneSection.Leave(); return; } - - for (int i = 0; i < m_iNumThreads; i++) { - delete m_vecpReconstructor[i]; - m_vecpReconstructor[i] = NULL; - } - + ImageFile* pImageFile = getImageFile(); pReconDoc->setImageFile (pImageFile); if (theApp->getAskDeleteNewDocs()) @@ -285,18 +272,25 @@ ThreadedReconstructor::~ThreadedReconstructor() } -ReconstructionThread::ReconstructionThread (ThreadedReconstructor* pSupervisor, - Reconstructor* pReconstructor, int iThread, int iStartView, int iNumViews) - : m_pSupervisor(pSupervisor), m_pReconstructor(pReconstructor), +ReconstructionThread::ReconstructionThread +(ThreadedReconstructor* pSupervisor, ProjectionFileView* pProjView, ImageFile* pImageFile, int iThread, int iStartView, int iNumViews, + const char* pszFilterName, double dFilterParam, const char* pszFilterMethod, + int iZeropad, const char* pszFilterGenerationName, const char* pszInterpName, int iInterpParam, + const char* pszBackprojectName) + : m_pSupervisor(pSupervisor), m_iStartView(iStartView), m_iNumViews(iNumViews), m_iThread(iThread), wxThread(wxTHREAD_DETACHED) { + m_pReconstructor = new Reconstructor (pProjView->GetDocument()->getProjections(), + *pImageFile, pszFilterName, dFilterParam, pszFilterMethod, iZeropad, pszFilterGenerationName, + pszInterpName, iInterpParam, pszBackprojectName, Trace::TRACE_NONE); } wxThread::ExitCode ReconstructionThread::Entry () { wxCommandEvent eventProgress (wxEVT_COMMAND_MENU_SELECTED, RECONSTRUCTION_THREAD_EVENT); + for (int iView = 0; iView < m_iNumViews; iView++) { if (TestDestroy()) { wxString msg; @@ -321,4 +315,5 @@ ReconstructionThread::Entry () void ReconstructionThread::OnExit () { + delete m_pReconstructor; } diff --git a/src/threadrecon.h b/src/threadrecon.h index e9ab35e..0daa621 100644 --- a/src/threadrecon.h +++ b/src/threadrecon.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2001 Kevin Rosenberg ** -** $Id: threadrecon.h,v 1.4 2001/02/23 02:06:02 kevin Exp $ +** $Id: threadrecon.h,v 1.5 2001/02/23 03:28: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 @@ -48,6 +48,9 @@ public: }; +// Pure virtual class for BackgroundTasks that can communication +// with BackgroundManager + class BackgroundTask : public wxEvtHandler { private: bool m_bDone; @@ -74,11 +77,11 @@ class ProjectionFileDocument; class ReconstructionThread; class ProjectionFileView; + class ThreadedReconstructor : public BackgroundTask { private: DECLARE_DYNAMIC_CLASS(ThreadedReconstructor) - std::vector m_vecpReconstructor; std::vector m_vecpChildImageFile; std::vector m_vecpThread; ProjectionFileView* m_pProjView; @@ -135,8 +138,12 @@ private: int m_iThread; public: - ReconstructionThread (ThreadedReconstructor* pSupervisor, Reconstructor* pReconstructor, - int iThread, int iStartView, int iNumViews); + ReconstructionThread (ThreadedReconstructor* pSupervisor, + ProjectionFileView* pProjFile, ImageFile* pImageFile, + int iThread, int iStartView, int iNumViews, + const char* pszFilterName, double dFilterParam, const char* pszFilterMethod, + int iZeropad, const char* pszFilterGenerationName, const char* pszInterpName, int iInterpParam, + const char* pszBackprojectName); virtual wxThread::ExitCode Entry(); // thread execution starts here @@ -146,3 +153,4 @@ public: #endif + \ No newline at end of file -- 2.34.1