--------------------Configuration: ctsim - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
-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
\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"
<h3>Output Window</h3>
Compiling...
+threadrecon.cpp
backgroundmgr.cpp
+graph3dview.cpp
+Compiling...
+ctsim.cpp
+dialogs.cpp
+docs.cpp
+views.cpp
Linking...
** 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
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;
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;
{
wxCriticalSection doneSection;
doneSection.Enter();
-
+
m_pProjView->GetDocument()->removeReconstructor (this);
ImageFileDocument* pReconDoc = theApp->newImageDoc();
if (! pReconDoc) {
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())
}
-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;
void
ReconstructionThread::OnExit ()
{
+ delete m_pReconstructor;
}
** 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
};
+// Pure virtual class for BackgroundTasks that can communication
+// with BackgroundManager
+
class BackgroundTask : public wxEvtHandler {
private:
bool m_bDone;
class ReconstructionThread;
class ProjectionFileView;
+
class ThreadedReconstructor : public BackgroundTask {
private:
DECLARE_DYNAMIC_CLASS(ThreadedReconstructor)
- std::vector<Reconstructor*> m_vecpReconstructor;
std::vector<ImageFile*> m_vecpChildImageFile;
std::vector<ReconstructionThread*> m_vecpThread;
ProjectionFileView* m_pProjView;
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
#endif
+
\ No newline at end of file