X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fdlgprojections.cpp;h=76b0ae4e0a65693c7b677a6434f4e8aa39bc90d3;hb=3ea498d51ce4597e9649cd21f155b51175ea0bea;hp=cc5b246f85c2e39972518b8f0e626b190c9cfc54;hpb=e9222e8a8190ca48f30a1359badae06bcb200210;p=ctsim.git diff --git a/src/dlgprojections.cpp b/src/dlgprojections.cpp index cc5b246..76b0ae4 100644 --- a/src/dlgprojections.cpp +++ b/src/dlgprojections.cpp @@ -7,9 +7,9 @@ ** Date Started: August 2000 ** ** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg +** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: dlgprojections.cpp,v 1.10 2000/12/18 05:40:30 kevin Exp $ +** $Id: dlgprojections.cpp,v 1.23 2001/02/22 11:05:38 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 @@ -29,13 +29,8 @@ #pragma implementation "dlgprojections.h" #endif -// For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - #ifndef WX_PRECOMP #include "wx/utils.h" #include "wx/frame.h" @@ -68,7 +63,8 @@ IMPLEMENT_CLASS(ProjectionsDialog, wxDialog) ProjectionsDialog::ProjectionsDialog (Scanner& rScanner, Projections& rProj, const Phantom& rPhantom, const int iTrace, wxWindow *parent) -: wxDialog(parent, -1, "Collect Projections", wxDefaultPosition), m_rScanner(rScanner), m_rProjections(rProj), m_rPhantom(rPhantom), m_pSGPDriver(NULL), m_pSGP(NULL), m_iTrace(iTrace), m_pDC(NULL), m_btnAbort(0), m_btnPause(0), m_btnStep(0) +: wxDialog(parent, -1, "Collect Projections", wxDefaultPosition), m_rScanner(rScanner), m_rProjections(rProj), m_rPhantom(rPhantom), + m_pSGPDriver(NULL), m_pSGP(NULL), m_iTrace(iTrace), m_pDC(NULL), m_btnAbort(0), m_btnPause(0), m_btnStep(0) { m_state = Continue; m_iLastView = -1; @@ -126,7 +122,7 @@ ProjectionsDialog::ProjectionsDialog (Scanner& rScanner, Projections& rProj, con Show(TRUE); Enable(TRUE); // enable this window - m_bitmap.Create (m_iClientX, m_iClientY); // save a copy of screen + m_bitmap.Create (m_iClientX, m_iClientY); // save a copy of screen m_pDC = dynamic_cast (new wxClientDC (this)); int x, y; this->GetClientSize(&x, &y); @@ -135,7 +131,7 @@ ProjectionsDialog::ProjectionsDialog (Scanner& rScanner, Projections& rProj, con wxYield(); // Update the display - m_pSGPDriver->idWX()->SetFont(*wxSWISS_FONT); + m_pSGP->setTextPointSize(10); #ifdef __WXMAC__ MacUpdateImmediately(); #endif @@ -145,14 +141,16 @@ void ProjectionsDialog::showView (int iViewNumber) { if ( iViewNumber < m_rProjections.nView() ) { - m_iLastView = iViewNumber; - ::wxYield(); // update the display - m_pSGP->eraseWindow(); - Refresh(); + m_iLastView = iViewNumber; + ::wxYield(); // update the display + m_pSGP->eraseWindow(); + m_btnPause->Refresh(); + m_btnStep->Refresh(); + m_btnAbort->Refresh(); if (m_iTrace >= Trace::TRACE_PLOT) m_pSGP->setViewport (0, 0, 0.66, 1); - ::wxYield(); // update the display + ::wxYield(); // update the display m_rScanner.collectProjections (m_rProjections, m_rPhantom, iViewNumber, 1, true, m_iTrace, m_pSGP); ::wxYield(); // update the display if (m_iTrace >= Trace::TRACE_PLOT) { @@ -161,12 +159,23 @@ ProjectionsDialog::showView (int iViewNumber) double* detPos = new double [detArray.nDet()]; for (int i = 0; i < detArray.nDet(); i++) detPos[i] = i; - EZPlot ezplot (*m_pSGP); - ezplot.ezset("grid"); - ezplot.ezset("box"); - ezplot.addCurve (detValues, detPos, detArray.nDet()); + EZPlot ezplot; + ezplot.ezset ("grid"); + ezplot.ezset ("box"); + ezplot.ezset ("yticks left"); + ezplot.ezset ("xticks major 5"); + ezplot.ezset ("yticks major 10"); + ezplot.addCurve (detValues, detPos, detArray.nDet()); +#if 1 + ezplot.ezset ("xporigin 0.67"); + ezplot.ezset ("yporigin 0.10"); + ezplot.ezset ("xlength 0.33"); + ezplot.ezset ("ylength 0.90"); + m_pSGP->setViewport (0., 0., 1., 1.); +#else m_pSGP->setViewport (0.67, 0.1, 1., 1.); - ezplot.plot(); +#endif + ezplot.plot (m_pSGP); delete detPos; } } @@ -221,19 +230,16 @@ void ProjectionsDialog::OnPause (wxCommandEvent& event) { if ( m_state == Finished ) { - // this means that the count down is already finished and we're being - // shown as a modal dialog - so just let the default handler do the job event.Skip(); } else if (m_state == Continue) { m_memoryDC.SelectObject (m_bitmap); // in memoryDC m_pSGP->setDC (&m_memoryDC); - m_memoryDC.SetFont (*wxSWISS_FONT); showView (m_iLastView); m_state = Paused; m_btnPause->SetLabel (wxString("Resume")); + m_pSGP->setDC (m_pDC); + m_memoryDC.SelectObject(wxNullBitmap); } else if (m_state == Paused) { - m_pSGP->setDC (m_pDC); - m_memoryDC.SelectObject(wxNullBitmap); m_state = Continue; m_btnPause->SetLabel (wxString("Pause")); } @@ -243,20 +249,24 @@ void ProjectionsDialog::OnStep (wxCommandEvent& event) { if ( m_state == Finished ) { - // this means that the count down is already finished and we're being - // shown as a modal dialog - so just let the default handler do the job event.Skip(); } else if (m_state == Continue) { m_memoryDC.SelectObject (m_bitmap); // in memoryDC m_pSGP->setDC (&m_memoryDC); - m_memoryDC.SetFont (*wxSWISS_FONT); - m_rScanner.collectProjections (m_rProjections, m_rPhantom, m_iLastView, 1, true, m_iTrace, m_pSGP); + showView (m_iLastView); + // m_rScanner.collectProjections (m_rProjections, m_rPhantom, m_iLastView, 1, true, m_iTrace, m_pSGP); m_state = Paused; m_btnPause->SetLabel (wxString("Resume")); + m_pSGP->setDC (m_pDC); + m_memoryDC.SelectObject(wxNullBitmap); + Refresh(); } else if (m_state == Paused) { - m_pSGP->setDC (m_pDC); - m_memoryDC.SelectObject(wxNullBitmap); + m_memoryDC.SelectObject (m_bitmap); // in memoryDC + m_pSGP->setDC (&m_memoryDC); projectView (m_iLastView + 1); + m_pSGP->setDC (m_pDC); + m_memoryDC.SelectObject(wxNullBitmap); + Refresh(); } } @@ -273,9 +283,9 @@ void ProjectionsDialog::OnClose(wxCloseEvent& event) void ProjectionsDialog::OnPaint (wxPaintEvent& event) { - wxPaintDC paintDC (this); + wxPaintDC paintDC (this); if (m_state == Paused) { - paintDC.DrawBitmap(m_bitmap, 0, 0, false); + paintDC.DrawBitmap (m_bitmap, 0, 0, false); } }