r628: no message
[ctsim.git] / src / views.cpp
index 19d564ef84ecbd11f9d913623b2e4284cd1ada81..9a2eb3113b23ed9f9f3f6796c9e974a570a7e30c 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: views.cpp,v 1.131 2001/03/10 23:56:58 kevin Exp $
+**  $Id: views.cpp,v 1.132 2001/03/11 06:34:37 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
@@ -2277,9 +2277,12 @@ EVT_MENU(PJMENU_RECONSTRUCT_FBP, ProjectionFileView::OnReconstructFBP)
 EVT_MENU(PJMENU_RECONSTRUCT_FOURIER, ProjectionFileView::OnReconstructFourier)
 EVT_MENU(PJMENU_CONVERT_POLAR, ProjectionFileView::OnConvertPolar)
 EVT_MENU(PJMENU_CONVERT_FFT_POLAR, ProjectionFileView::OnConvertFFTPolar)
+EVT_MENU(PJMENU_CONVERT_PARALLEL, ProjectionFileView::OnConvertParallel)
 EVT_MENU(PJMENU_PLOT_TTHETA_SAMPLING, ProjectionFileView::OnPlotTThetaSampling)
+EVT_MENU(PJMENU_ARTIFACT_REDUCTION, ProjectionFileView::OnArtifactReduction)
 END_EVENT_TABLE()
 
+
 ProjectionFileView::ProjectionFileView() 
 : wxView(), m_pFrame(0), m_pCanvas(0), m_pFileMenu(0)
 {
@@ -2344,13 +2347,12 @@ ProjectionFileView::OnConvertPolar (wxCommandEvent& event)
     ImageFile* pIF = new ImageFile (m_iDefaultPolarNX, m_iDefaultPolarNY);
     m_iDefaultPolarInterpolation = Projections::convertInterpNameToID (strInterpolation.c_str());
     
-  if (! rProj.convertPolar (*pIF, m_iDefaultPolarInterpolation)) {
+    if (! rProj.convertPolar (*pIF, m_iDefaultPolarInterpolation)) {
       delete pIF;
       *theApp->getLog() << "Error converting to Polar\n";
       return;
     }
 
-
     pPolarDoc = theApp->newImageDoc ();
     if (! pPolarDoc) {
       sys_error (ERR_SEVERE, "Unable to create image file");
@@ -2449,6 +2451,34 @@ ProjectionFileView::OnPlotTThetaSampling (wxCommandEvent& event)
     return;
 }
 
+void
+ProjectionFileView::OnConvertParallel (wxCommandEvent& event)
+{
+  Projections& rProj = GetDocument()->getProjections();
+  if (rProj.geometry() == Scanner::GEOMETRY_PARALLEL) {
+    wxMessageBox ("Projections are already parallel", "Error");
+    return;
+  }
+  Projections* pProjNew = rProj.interpolateToParallel();
+  ProjectionFileDocument* pProjDocNew = theApp->newProjectionDoc();
+  pProjDocNew->setProjections (pProjNew);  
+
+  if (ProjectionFileView* projView = pProjDocNew->getView()) {
+    projView->OnUpdate (projView, NULL);
+    if (projView->getCanvas())
+      projView->getCanvas()->SetClientSize (pProjNew->nDet(), pProjNew->nView());
+    if (wxFrame* pFrame = projView->getFrame()) {
+      pFrame->Show(true);
+      pFrame->SetFocus();
+      pFrame->Raise();
+    }
+    GetDocumentManager()->ActivateView (projView, true, false);
+  }
+  if (theApp->getAskDeleteNewDocs())
+    pProjDocNew-> Modify(true);
+  pProjDocNew->UpdateAllViews (this);
+}
+
 void
 ProjectionFileView::OnReconstructFourier (wxCommandEvent& event)
 {
@@ -2572,6 +2602,12 @@ ProjectionFileView::OnReconstructFBP (wxCommandEvent& event)
 }
 
 
+void
+ProjectionFileView::OnArtifactReduction (wxCommandEvent& event)
+{
+}
+
+
 ProjectionFileCanvas* 
 ProjectionFileView::CreateCanvas (wxFrame *parent)
 {
@@ -2631,6 +2667,11 @@ ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   wxMenu *convert_menu = new wxMenu;
   convert_menu->Append (PJMENU_CONVERT_POLAR, "&Polar Image...\tCtrl-L");
   convert_menu->Append (PJMENU_CONVERT_FFT_POLAR, "&FFT->Polar Image...\tCtrl-M");
+  convert_menu->AppendSeparator();
+  convert_menu->Append (PJMENU_CONVERT_PARALLEL, "&Interpolate to Parallel");
+
+  wxMenu* filter_menu = new wxMenu;
+  filter_menu->Append (PJMENU_ARTIFACT_REDUCTION, "&Artifact Reduction");
 
   wxMenu* analyze_menu = new wxMenu;
   analyze_menu->Append (PJMENU_PLOT_TTHETA_SAMPLING, "&Plot T-Theta Sampling\tCtrl-T");
@@ -2650,6 +2691,7 @@ ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   
   menu_bar->Append (m_pFileMenu, "&File");
   menu_bar->Append (convert_menu, "&Convert");
+  menu_bar->Append (filter_menu, "Fi&lter");
   menu_bar->Append (analyze_menu, "&Analyze");
   menu_bar->Append (reconstruct_menu, "&Reconstruct");
   menu_bar->Append (help_menu, "&Help");