X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fthreadrecon.h;h=ae6f0d27bd8edbb6575cf1e9208d1c271fa31341;hp=53368fa94fd496724ede052095c63984e8e976ca;hb=9776c9a12ba53419d34563a5ec57c90e3d6798f4;hpb=0730f9f3adbf326b9d4bac754634399ad688efd1 diff --git a/src/threadrecon.h b/src/threadrecon.h index 53368fa..ae6f0d2 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.1 2001/02/22 11:05:38 kevin Exp $ +** $Id: threadrecon.h,v 1.3 2001/02/22 18:22:40 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 @@ -34,13 +34,33 @@ #include "timer.h" +class BackgroundTask : public wxEvtHandler { +private: + bool m_bDone; + +public: + BackgroundTask() + : m_bDone(false), wxEvtHandler() + {} + + virtual ~BackgroundTask() + {} + + virtual void cancel() = 0; + virtual bool start() = 0; + virtual bool testDone() = 0; + + bool isDone() const {return m_bDone;} + void setDone() { m_bDone = true; } +}; + class Reconstructor; class ImageFile; class ProjectionFileDocument; class ReconstructionThread; class ProjectionFileView; -class ThreadedReconstructor : public wxEvtHandler { +class ThreadedReconstructor : public BackgroundTask { private: DECLARE_DYNAMIC_CLASS(ThreadedReconstructor) @@ -49,6 +69,7 @@ private: std::vector m_vecpThread; ProjectionFileView* m_pProjView; wxProgressDialog* m_pDialogProgress; + wxGauge* m_pGauge; volatile bool m_bFail; int m_iNumThreads; @@ -57,12 +78,11 @@ private: volatile int m_iRunning; volatile unsigned int m_iViewsDone; volatile unsigned int m_iTotalViews; - wxCriticalSection m_criticalSection; + //wxCriticalSection m_criticalSection; wxString m_strLabel; Timer* m_pTimer; bool m_bCancelled; bool m_bCancelling; - bool m_bDone; public: ThreadedReconstructor (ProjectionFileView* pProjView, @@ -71,21 +91,21 @@ public: const char* pszBackprojectName, const char* const pszLabel); ThreadedReconstructor () - : m_bFail(true), m_iNumThreads(0), m_iImageNX(0), m_iImageNY(0), m_iTotalViews(0) + : m_bFail(true), m_iNumThreads(0), m_iImageNX(0), m_iImageNY(0), m_iTotalViews(0), BackgroundTask() {} ~ThreadedReconstructor (); void OnThreadEvent (wxCommandEvent& event); - bool testDone(); void cancel(); void onDone(); bool start(); bool fail() const {return m_bFail;} - bool getDone() const {return m_bDone;} + bool testDone(); + void cleanUp(); - ImageFile* getImageFile() const; + ImageFile* getImageFile(); DECLARE_EVENT_TABLE() };