** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: dlgreconstruct.cpp,v 1.10 2000/12/18 05:40:30 kevin Exp $
+** $Id: dlgreconstruct.cpp,v 1.12 2000/12/18 12:29:41 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 x, y;\r
this->GetClientSize(&x, &y);\r
m_pSGPDriver = new SGPDriver (m_pDC, x, y);\r
- m_pSGP = new SGP (*m_pSGPDriver);
- m_pSGP->getDriver().idWX()->setDC (&m_pDC);\r
+ m_pSGP = new SGP (*m_pSGPDriver);\r
wxYield(); // Update the display
m_pSGPDriver->idWX()->SetFont(*wxSWISS_FONT);
-#ifdef __WXMAC__
- MacUpdateImmediately();
-#endif
}
void
ReconstructDialog::showView (int iViewNumber, bool bBackprojectView)
{\r
- // m_pSGP->setTextSize(0.01);
if ( iViewNumber < m_rProjections.nView() ) {
m_iLastView = iViewNumber;
::wxYield(); // update the display\r
m_pSGP->eraseWindow();\r
- Refresh();\r
-
+ m_btnPause->Refresh();
+ m_btnStep->Refresh();
+ m_btnAbort->Refresh();
+
char szProgress [256];
snprintf (szProgress, sizeof(szProgress), "Reconstructing View %d (%.1f%%)", iViewNumber, 100 * iViewNumber / static_cast<double>(m_rProjections.nView()));
m_pSGP->setViewport (0, 0, 1, 1);
}
bool
-ReconstructDialog::reconstructView (int iViewNumber)
+ReconstructDialog::reconstructView (int iViewNumber, bool bBackproject)
{
if (iViewNumber <= m_iLastView) // have already done this view
return true;
if (iViewNumber < m_rProjections.nView()) {
::wxYield(); // update the display
- showView (iViewNumber, true);
+ showView (iViewNumber, bBackproject);
::wxYield(); // update the display
if (m_iTrace >= Trace::TRACE_PLOT) {
::wxUsleep(250);
m_state = Finished; // so that we return TRUE below and
} // that [Cancel] handler knew what to do
-#ifdef __WXMAC__
- MacUpdateImmediately();
-#endif
-
::wxYield(); // update the display
return m_state != Cancelled;
}
// shown as a modal dialog - so just let the default handler do the job
event.Skip();
} else if (m_state == Continue) {\r
-// m_memoryDC.SelectObject (m_bitmap); // in memoryDC\r
-// m_pSGP->setDC (&m_memoryDC);\r
-// m_memoryDC.SetFont (*wxSWISS_FONT);\r
+ m_memoryDC.SelectObject (m_bitmap); // in memoryDC\r
+ m_pSGP->setDC (&m_memoryDC);\r
+ m_memoryDC.SetFont (*wxSWISS_FONT);\r
showView (m_iLastView, false);\r
m_state = Paused;
m_btnPause->SetLabel (wxString("Resume"));
+ m_pSGP->setDC (m_pDC);\r
+ m_memoryDC.SelectObject(wxNullBitmap);\r
} else if (m_state == Paused) {
-// m_pSGP->setDC (m_pDC);\r
-// m_memoryDC.SelectObject(wxNullBitmap);\r
m_state = Continue;
m_btnPause->SetLabel (wxString("Pause"));
}
if ( m_state == Finished ) {
event.Skip();
} else if (m_state == Continue) {\r
-// m_memoryDC.SelectObject (m_bitmap); // in memoryDC\r
-// m_pSGP->setDC (&m_memoryDC);\r
-// m_memoryDC.SetFont (*wxSWISS_FONT);\r
+ m_memoryDC.SelectObject (m_bitmap); // in memoryDC\r
+ m_pSGP->setDC (&m_memoryDC);\r
+ m_memoryDC.SetFont (*wxSWISS_FONT);\r
showView (m_iLastView, false);\r
m_state = Paused;
m_btnPause->SetLabel (wxString("Resume"));
+ m_pSGP->setDC (m_pDC);\r
+ m_memoryDC.SelectObject(wxNullBitmap);\r
+ Refresh();\r
} else if (m_state == Paused) {
-// m_pSGP->setDC (m_pDC);\r
-// m_memoryDC.SelectObject(wxNullBitmap);\r
+ m_memoryDC.SelectObject (m_bitmap); // in memoryDC\r
+ m_pSGP->setDC (&m_memoryDC);\r
+ m_memoryDC.SetFont (*wxSWISS_FONT);\r
reconstructView (m_iLastView + 1);
+ m_pSGP->setDC (m_pDC);\r
+ m_memoryDC.SelectObject(wxNullBitmap);\r
+ Refresh();\r
}
}
{\r
wxPaintDC paintDC (this);\r
if (m_state == Paused) {
- paintDC.DrawBitmap(m_bitmap, 0, 0, false);\r
+ paintDC.DrawBitmap (m_bitmap, 0, 0, false);\r
}\r
}