** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: views.cpp,v 1.16 2000/08/25 15:59:13 kevin Exp $
+** $Id: views.cpp,v 1.17 2000/08/27 20:32:55 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
#include "docs.h"
#include "views.h"
#include "dialogs.h"
+#include "dlgprojections.h"
#include <sstream>
#include "backprojectors.h"
file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...");
file_menu->Append(wxID_OPEN, "&Open...");
- file_menu->Append(wxID_CLOSE, "&Close");
file_menu->Append(wxID_SAVE, "&Save");
file_menu->Append(wxID_SAVEAS, "Save &As...");
+ file_menu->Append(wxID_CLOSE, "&Close");
file_menu->AppendSeparator();
file_menu->Append(IFMENU_FILE_PROPERTIES, "P&roperties");
ImageFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
{
m_frame = CreateChildFrame(doc, this);
+ SetFrame(m_frame);
m_bMinSpecified = false;
m_bMaxSpecified = false;
void
PhantomView::OnProjections (wxCommandEvent& event)
{
- DialogGetProjectionParameters dialogProjection (m_frame, 367, 320, 1, 1., 1., 1., Scanner::GEOMETRY_PARALLEL);
+ DialogGetProjectionParameters dialogProjection (m_frame, 367, 320, 1, 1., 1., 1., Scanner::GEOMETRY_PARALLEL, Trace::TRACE_NONE);
int retVal = dialogProjection.ShowModal();
if (retVal == wxID_OK) {
int nDet = dialogProjection.getNDet();
int nView = dialogProjection.getNView();
int nSamples = dialogProjection.getNSamples();
+ int iTrace = dialogProjection.getTrace();
double dRotAngle = dialogProjection.getRotAngle();
double dFocalLengthRatio = dialogProjection.getFocalLengthRatio();
double dFieldOfViewRatio = dialogProjection.getFieldOfViewRatio();
}
rProj.initFromScanner (theScanner);
-#if 1
- wxFrame frame (m_frame, -1, "", wxDefaultPosition, wxSize(500,500));
- frame.Show();
- wxClientDC dc (&frame);
- int x, y;
- frame.GetClientSize(&x, &y);
- SGPDriver driver (dynamic_cast<wxDC*>(&dc), x, y);
- SGP sgp (driver);
- for (int iView = 0; iView < rProj.nView(); iView++) {
- theScanner.collectProjections (rProj, rPhantom, iView, 1, true, TRACE_RAYS, &sgp);
- }
-#else
- theScanner.collectProjections (rProj, rPhantom);
-#endif
+ if (iTrace > Trace::TRACE_CONSOLE) {
+ ProjectionsDialog dialogProjections (theScanner, rProj, rPhantom, iTrace, dynamic_cast<wxWindow*>(m_frame));
+ for (int iView = 0; iView < rProj.nView(); iView++) {
+ if (! dialogProjections.projectView (iView)) {
+ pProjectionDoc->DeleteAllViews();
+ return;
+ }
+ ::wxYield();
+ }
+ } else
+ theScanner.collectProjections (rProj, rPhantom);
pProjectionDoc->Modify(true);
pProjectionDoc->UpdateAllViews(this);
+ if (wxView* pView = pProjectionDoc->GetFirstView())
+ if (wxFrame* pFrame = pView->GetFrame()) {
+ pFrame->SetFocus();
+ }
ostringstream os;
os << "Projections for " << rPhantom.name() << ": nDet=" << nDet << ", nView=" << nView << ", nSamples=" << nSamples << ", RotAngle=" << dRotAngle << ", FocalLengthRatio=" << dFocalLengthRatio << ", FieldOfViewRatio=" << dFieldOfViewRatio << ", Geometry=" << sGeometry.c_str() << "\n";
*theApp->getLog() << os.str().c_str();
ImageFile& imageFile = pRasterDoc->getImageFile();
imageFile.setArraySize (xSize, ySize);
- rPhantom.convertToImagefile (imageFile, nSamples, TRACE_NONE);
+ rPhantom.convertToImagefile (imageFile, nSamples, Trace::TRACE_NONE);
pRasterDoc->Modify(true);
pRasterDoc->UpdateAllViews(this);
PhantomView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
{
m_frame = CreateChildFrame(doc, this);
-
+ SetFrame(m_frame);
+
int width, height;
m_frame->GetClientSize(&width, &height);
m_frame->SetTitle("PhantomView");
ImageFile& imageFile = pReconDoc->getImageFile();
const Projections& rProj = GetDocument()->getProjections();
imageFile.setArraySize (xSize, ySize);
- rProj.reconstruct (imageFile, optFilterName.c_str(), optFilterParam, optFilterMethodName.c_str(), optZeropad, optFilterGenerationName.c_str(), optInterpName.c_str(), optInterpParam, optBackprojectName.c_str(), TRACE_NONE);
+ rProj.reconstruct (imageFile, optFilterName.c_str(), optFilterParam, optFilterMethodName.c_str(), optZeropad, optFilterGenerationName.c_str(), optInterpName.c_str(), optInterpParam, optBackprojectName.c_str(), Trace::TRACE_NONE);
pReconDoc->Modify(true);
pReconDoc->UpdateAllViews(this);
ostringstream os;
file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...");
file_menu->Append(wxID_OPEN, "&Open...");
+ file_menu->Append(wxID_SAVE, "&Save");
+ file_menu->Append(wxID_SAVEAS, "Save &As...");
file_menu->Append(wxID_CLOSE, "&Close");
file_menu->AppendSeparator();
ProjectionFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
{
m_frame = CreateChildFrame(doc, this);
+ SetFrame(m_frame);
int width, height;
m_frame->GetClientSize(&width, &height);