** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: views.cpp,v 1.49 2001/01/02 15:58:18 kevin Exp $
+** $Id: views.cpp,v 1.50 2001/01/03 22:00:46 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
BEGIN_EVENT_TABLE(ProjectionFileView, wxView)
EVT_MENU(PJMENU_FILE_PROPERTIES, ProjectionFileView::OnProperties)
-EVT_MENU(PJMENU_PROCESS_RECONSTRUCT, ProjectionFileView::OnReconstruct)
+EVT_MENU(PJMENU_RECONSTRUCT_FBP, ProjectionFileView::OnReconstructFBP)
+EVT_MENU(PJMENU_CONVERT_POLAR, ProjectionFileView::OnConvertPolar)
+EVT_MENU(PJMENU_CONVERT_FFT_POLAR, ProjectionFileView::OnConvertFFTPolar)
END_EVENT_TABLE()
ProjectionFileView::ProjectionFileView(void)
void
-ProjectionFileView::OnReconstruct (wxCommandEvent& event)
+ProjectionFileView::OnConvertPolar (wxCommandEvent& event)
+{
+ Projections& rProj = GetDocument()->getProjections();
+}
+
+void
+ProjectionFileView::OnConvertFFTPolar (wxCommandEvent& event)
+{
+ Projections& rProj = GetDocument()->getProjections();
+ wxMessageBox ("Polar conversion not yet implemented", "Unimplemented function");
+#if 0
+ rProj.convertPolar ();
+ if (theApp->getSetModifyNewDocs())
+ GetDocument()->Modify(true);
+ GetDocument()->UpdateAllViews();
+#ifndef HAVE_FFT
+ wxMessageBox ("FFT support has not been compiled into this version of CTSim", "Error");
+#endif
+#endif
+}
+
+void
+ProjectionFileView::OnReconstructFourier (wxCommandEvent& event)
+{
+ wxMessageBox ("Fourier Reconstruction is not yet supported", "Unimplemented function");
+}
+
+void
+ProjectionFileView::OnReconstructFBP (wxCommandEvent& event)
{
DialogGetReconstructionParameters dialogReconstruction (m_frame, m_iDefaultNX, m_iDefaultNY, m_iDefaultFilter, m_dDefaultFilterParam, m_iDefaultFilterMethod, m_iDefaultFilterGeneration, m_iDefaultZeropad, m_iDefaultInterpolation, m_iDefaultInterpParam, m_iDefaultBackprojector, m_iDefaultTrace);
file_menu->Append(wxID_PRINT_SETUP, "Print &Setup...");
file_menu->Append(wxID_PREVIEW, "Print Pre&view");
- wxMenu *process_menu = new wxMenu;
- process_menu->Append(PJMENU_PROCESS_RECONSTRUCT, "R&econstruct...");
+ wxMenu *convert_menu = new wxMenu;
+ convert_menu->Append (PJMENU_CONVERT_POLAR, "&Polar Image...");
+ convert_menu->Append (PJMENU_CONVERT_FFT_POLAR, "&FFT->Polar Image...");
+ wxMenu *reconstruct_menu = new wxMenu;
+ reconstruct_menu->Append (PJMENU_RECONSTRUCT_FBP, "&Filtered Backprojection...");
+ reconstruct_menu->Append (PJMENU_RECONSTRUCT_FOURIER, "&Fourier...");
+
wxMenu *help_menu = new wxMenu;
help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents");
help_menu->AppendSeparator();
wxMenuBar *menu_bar = new wxMenuBar;
- menu_bar->Append(file_menu, "&File");
- menu_bar->Append(process_menu, "&Process");
- menu_bar->Append(help_menu, "&Help");
+ menu_bar->Append (file_menu, "&File");
+ menu_bar->Append (convert_menu, "&Convert");
+ menu_bar->Append (reconstruct_menu, "&Reconstruct");
+ menu_bar->Append (help_menu, "&Help");
subframe->SetMenuBar(menu_bar);
** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: views.h,v 1.23 2001/01/02 13:57:30 kevin Exp $
+** $Id: views.h,v 1.24 2001/01/03 22:00:46 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
class ImageFileCanvas;
class ImageFileView : public wxView
{
- DECLARE_DYNAMIC_CLASS(ImageFileView)
-
+ DECLARE_DYNAMIC_CLASS(ImageFileView)
+
wxMemoryDC m_memoryDC;
- wxBitmap m_bitmap;
-
+ wxBitmap m_bitmap;
+
private:
- ImageFileCanvas *CreateCanvas(wxView *view, wxFrame *parent);
- wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
-
- ImageFileCanvas *m_canvas;
- wxFrame *m_frame;
- bool m_bMinSpecified;
- bool m_bMaxSpecified;
- double m_dMinPixel;
- double m_dMaxPixel;
- double m_dAutoScaleFactor;
-
- int m_iDefaultExportFormatID;
-
+ ImageFileCanvas *CreateCanvas(wxView *view, wxFrame *parent);
+ wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
+
+ ImageFileCanvas *m_canvas;
+ wxFrame *m_frame;
+ bool m_bMinSpecified;
+ bool m_bMaxSpecified;
+ double m_dMinPixel;
+ double m_dMaxPixel;
+ double m_dAutoScaleFactor;
+
+ int m_iDefaultExportFormatID;
+
public:
- ImageFileView(void);
- virtual ~ImageFileView(void);
-
- bool OnCreate(wxDocument *doc, long flags);
- void OnDraw(wxDC* dc);
- void OnUpdate(wxView *sender, wxObject *hint = NULL);
- bool OnClose (bool deleteWindow = true);
-
- void OnScaleSize (wxCommandEvent& event);
- void OnExport (wxCommandEvent& event);
-
- void OnProperties (wxCommandEvent& event);
- void OnCompare (wxCommandEvent& event);
-
- void OnInvertValues (wxCommandEvent& event);
- void OnSquare (wxCommandEvent& event);
- void OnSquareRoot (wxCommandEvent& event);
- void OnLog (wxCommandEvent& event);
- void OnExp (wxCommandEvent& event);
- void OnAdd (wxCommandEvent& event);
- void OnSubtract (wxCommandEvent& event);
- void OnMultiply (wxCommandEvent& event);
- void OnDivide (wxCommandEvent& event);
- void OnFourier (wxCommandEvent& event);
- void OnInverseFourier (wxCommandEvent& event);
- void OnShuffleNaturalToFourierOrder (wxCommandEvent& event);
- void OnShuffleFourierToNaturalOrder (wxCommandEvent& event);
-
+ ImageFileView(void);
+ virtual ~ImageFileView(void);
+
+ bool OnCreate(wxDocument *doc, long flags);
+ void OnDraw(wxDC* dc);
+ void OnUpdate(wxView *sender, wxObject *hint = NULL);
+ bool OnClose (bool deleteWindow = true);
+
+ void OnScaleSize (wxCommandEvent& event);
+ void OnExport (wxCommandEvent& event);
+
+ void OnProperties (wxCommandEvent& event);
+ void OnCompare (wxCommandEvent& event);
+
+ void OnInvertValues (wxCommandEvent& event);
+ void OnSquare (wxCommandEvent& event);
+ void OnSquareRoot (wxCommandEvent& event);
+ void OnLog (wxCommandEvent& event);
+ void OnExp (wxCommandEvent& event);
+ void OnAdd (wxCommandEvent& event);
+ void OnSubtract (wxCommandEvent& event);
+ void OnMultiply (wxCommandEvent& event);
+ void OnDivide (wxCommandEvent& event);
+ void OnFourier (wxCommandEvent& event);
+ void OnInverseFourier (wxCommandEvent& event);
+ void OnShuffleNaturalToFourierOrder (wxCommandEvent& event);
+ void OnShuffleFourierToNaturalOrder (wxCommandEvent& event);
+
#ifdef HAVE_FFTW
- void OnFFT (wxCommandEvent& event);
- void OnIFFT (wxCommandEvent& event);
+ void OnFFT (wxCommandEvent& event);
+ void OnIFFT (wxCommandEvent& event);
#endif
-
- void OnMagnitude (wxCommandEvent& event);
- void OnPhase (wxCommandEvent& event);
-
- void OnScaleAuto (wxCommandEvent& event);
- void OnScaleMinMax (wxCommandEvent& event);
- void OnPlotRow (wxCommandEvent& event);
- void OnPlotCol (wxCommandEvent& event);
- void OnPlotHistogram (wxCommandEvent& event);
- void OnCompareRow (wxCommandEvent& event);
- void OnCompareCol (wxCommandEvent& event);
-
- wxFrame* getFrame()
- { return m_frame; }
-
- ImageFileDocument* GetDocument(void)
- { return dynamic_cast<ImageFileDocument*>(wxView::GetDocument()); }
-
- DECLARE_EVENT_TABLE()
+
+ void OnMagnitude (wxCommandEvent& event);
+ void OnPhase (wxCommandEvent& event);
+
+ void OnScaleAuto (wxCommandEvent& event);
+ void OnScaleMinMax (wxCommandEvent& event);
+ void OnPlotRow (wxCommandEvent& event);
+ void OnPlotCol (wxCommandEvent& event);
+ void OnPlotHistogram (wxCommandEvent& event);
+ void OnCompareRow (wxCommandEvent& event);
+ void OnCompareCol (wxCommandEvent& event);
+
+ wxFrame* getFrame()
+ { return m_frame; }
+
+ ImageFileDocument* GetDocument(void)
+ { return dynamic_cast<ImageFileDocument*>(wxView::GetDocument()); }
+
+ DECLARE_EVENT_TABLE()
};
class ImageFileCanvas: public wxScrolledWindow
{
private:
-
- int m_xCursor;
- int m_yCursor;
-
+
+ int m_xCursor;
+ int m_yCursor;
+
public:
- ImageFileView* m_pView;
-
- ImageFileCanvas (ImageFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
- virtual void OnDraw(wxDC& dc);
- void OnMouseEvent(wxMouseEvent& event);
- void DrawRubberBandCursor (wxDC& dc, int x, int y);
- bool GetCurrentCursor (int& x, int& y);
-
- DECLARE_EVENT_TABLE()
+ ImageFileView* m_pView;
+
+ ImageFileCanvas (ImageFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
+ virtual void OnDraw(wxDC& dc);
+ void OnMouseEvent(wxMouseEvent& event);
+ void DrawRubberBandCursor (wxDC& dc, int x, int y);
+ bool GetCurrentCursor (int& x, int& y);
+
+ DECLARE_EVENT_TABLE()
};
class ProjectionFileCanvas;
class ProjectionFileView : public wxView
{
- DECLARE_DYNAMIC_CLASS(ProjectionFileView)
-
+ DECLARE_DYNAMIC_CLASS(ProjectionFileView)
+
wxMemoryDC m_memoryDC;
- wxBitmap m_bitmap;
-
+ wxBitmap m_bitmap;
+
private:
- ProjectionFileCanvas *CreateCanvas(wxView *view, wxFrame *parent);
- wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
-
- ProjectionFileCanvas *m_canvas;
- wxFrame *m_frame;
-
- int m_iDefaultNX;
- int m_iDefaultNY;
- int m_iDefaultFilter;
- int m_iDefaultFilterMethod;
- double m_dDefaultFilterParam;
- int m_iDefaultFilterGeneration;
- int m_iDefaultZeropad;
- int m_iDefaultInterpolation;
- int m_iDefaultInterpParam;
- int m_iDefaultBackprojector;
- int m_iDefaultTrace;
-
+ ProjectionFileCanvas *CreateCanvas(wxView *view, wxFrame *parent);
+ wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
+
+ ProjectionFileCanvas *m_canvas;
+ wxFrame *m_frame;
+
+ int m_iDefaultNX;
+ int m_iDefaultNY;
+ int m_iDefaultFilter;
+ int m_iDefaultFilterMethod;
+ double m_dDefaultFilterParam;
+ int m_iDefaultFilterGeneration;
+ int m_iDefaultZeropad;
+ int m_iDefaultInterpolation;
+ int m_iDefaultInterpParam;
+ int m_iDefaultBackprojector;
+ int m_iDefaultTrace;
+
public:
- ProjectionFileView(void);
- virtual ~ProjectionFileView(void);
-
- bool OnCreate(wxDocument *doc, long flags);
- void OnDraw(wxDC* dc);
- void OnUpdate(wxView *sender, wxObject *hint = NULL);
- bool OnClose (bool deleteWindow = true);
- void OnProperties (wxCommandEvent& event);
- void OnReconstruct (wxCommandEvent& event);
-
- wxFrame* getFrame ()
- { return m_frame; }
-
- ProjectionFileDocument* GetDocument(void)
- { return dynamic_cast<ProjectionFileDocument*>(wxView::GetDocument()); }
- DECLARE_EVENT_TABLE()
+ ProjectionFileView(void);
+ virtual ~ProjectionFileView(void);
+
+ bool OnCreate(wxDocument *doc, long flags);
+ void OnDraw(wxDC* dc);
+ void OnUpdate(wxView *sender, wxObject *hint = NULL);
+ bool OnClose (bool deleteWindow = true);
+ void OnProperties (wxCommandEvent& event);
+ void OnReconstructFBP (wxCommandEvent& event);
+ void OnReconstructFourier (wxCommandEvent& event);
+ void OnConvertPolar (wxCommandEvent& event);
+ void OnConvertFFTPolar (wxCommandEvent& event);
+
+ wxFrame* getFrame ()
+ { return m_frame; }
+
+ ProjectionFileDocument* GetDocument(void)
+ { return dynamic_cast<ProjectionFileDocument*>(wxView::GetDocument()); }
+ DECLARE_EVENT_TABLE()
};
class ProjectionFileCanvas: public wxScrolledWindow
{
public:
- ProjectionFileView* m_pView;
-
- ProjectionFileCanvas (ProjectionFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
- virtual void OnDraw(wxDC& dc);
+ ProjectionFileView* m_pView;
+
+ ProjectionFileCanvas (ProjectionFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
+ virtual void OnDraw(wxDC& dc);
};
class PhantomCanvas;
class PhantomView : public wxView
{
- DECLARE_DYNAMIC_CLASS(PhantomView)
-
+ DECLARE_DYNAMIC_CLASS(PhantomView)
+
private:
- PhantomCanvas *CreateCanvas(wxView *view, wxFrame *parent);
- wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
-
- PhantomCanvas *m_canvas;
- wxFrame *m_frame;
-
- int m_iDefaultNDet;
- int m_iDefaultNView;
- int m_iDefaultNSample;
- int m_iDefaultGeometry;
- int m_iDefaultTrace;
- double m_dDefaultRotation;
- double m_dDefaultFocalLength;
- double m_dDefaultFieldOfView;
-
+ PhantomCanvas *CreateCanvas(wxView *view, wxFrame *parent);
+ wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
+
+ PhantomCanvas *m_canvas;
+ wxFrame *m_frame;
+
+ int m_iDefaultNDet;
+ int m_iDefaultNView;
+ int m_iDefaultNSample;
+ int m_iDefaultGeometry;
+ int m_iDefaultTrace;
+ double m_dDefaultRotation;
+ double m_dDefaultFocalLength;
+ double m_dDefaultFieldOfView;
+
public:
- PhantomView(void);
- virtual ~PhantomView(void);
-
- bool OnCreate(wxDocument *doc, long flags);
- void OnUpdate(wxView *sender, wxObject *hint = NULL);
- bool OnClose (bool deleteWindow = true);
- void OnDraw(wxDC* dc);
- void OnProperties (wxCommandEvent& event);
- void OnRasterize (wxCommandEvent& event);
- void OnProjections (wxCommandEvent& event);
-
- PhantomDocument* GetDocument(void)
- { return dynamic_cast<PhantomDocument*>(wxView::GetDocument()); }
-
- DECLARE_EVENT_TABLE()
+ PhantomView(void);
+ virtual ~PhantomView(void);
+
+ bool OnCreate(wxDocument *doc, long flags);
+ void OnUpdate(wxView *sender, wxObject *hint = NULL);
+ bool OnClose (bool deleteWindow = true);
+ void OnDraw(wxDC* dc);
+ void OnProperties (wxCommandEvent& event);
+ void OnRasterize (wxCommandEvent& event);
+ void OnProjections (wxCommandEvent& event);
+
+ PhantomDocument* GetDocument(void)
+ { return dynamic_cast<PhantomDocument*>(wxView::GetDocument()); }
+
+ DECLARE_EVENT_TABLE()
};
class PhantomCanvas: public wxScrolledWindow
{
public:
- PhantomView* m_pView;
-
- PhantomCanvas (PhantomView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
- virtual void OnDraw(wxDC& dc);
+ PhantomView* m_pView;
+
+ PhantomCanvas (PhantomView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
+ virtual void OnDraw(wxDC& dc);
};
class PlotFileCanvas;
class PlotFileView : public wxView
{
- DECLARE_DYNAMIC_CLASS(PlotFileView)
-
+ DECLARE_DYNAMIC_CLASS(PlotFileView)
+
private:
- PlotFileCanvas *CreateCanvas(wxView *view, wxFrame *parent);
- wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
-
- PlotFileCanvas *m_canvas;
- wxFrame *m_frame;
- EZPlot* m_pEZPlot;
-
- bool m_bMinSpecified;
- bool m_bMaxSpecified;
- double m_dMinPixel;
- double m_dMaxPixel;
- double m_dAutoScaleFactor;
-
+ PlotFileCanvas *CreateCanvas(wxView *view, wxFrame *parent);
+ wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
+
+ PlotFileCanvas *m_canvas;
+ wxFrame *m_frame;
+ EZPlot* m_pEZPlot;
+
+ bool m_bMinSpecified;
+ bool m_bMaxSpecified;
+ double m_dMinPixel;
+ double m_dMaxPixel;
+ double m_dAutoScaleFactor;
+
public:
- PlotFileView(void);
- virtual ~PlotFileView(void);
-
- bool OnCreate(wxDocument *doc, long flags);
- void OnDraw(wxDC* dc);
- void OnUpdate(wxView *sender, wxObject *hint = NULL);
- bool OnClose (bool deleteWindow = true);
- void OnProperties (wxCommandEvent& event);
- void OnScaleAuto (wxCommandEvent& event);
- void OnScaleMinMax (wxCommandEvent& event);
-
- wxFrame* getFrame ()
- { return m_frame; }
-
- PlotFileDocument* GetDocument(void)
- { return dynamic_cast<PlotFileDocument*>(wxView::GetDocument()); }
-
- DECLARE_EVENT_TABLE()
+ PlotFileView(void);
+ virtual ~PlotFileView(void);
+
+ bool OnCreate(wxDocument *doc, long flags);
+ void OnDraw(wxDC* dc);
+ void OnUpdate(wxView *sender, wxObject *hint = NULL);
+ bool OnClose (bool deleteWindow = true);
+ void OnProperties (wxCommandEvent& event);
+ void OnScaleAuto (wxCommandEvent& event);
+ void OnScaleMinMax (wxCommandEvent& event);
+
+ wxFrame* getFrame ()
+ { return m_frame; }
+
+ PlotFileDocument* GetDocument(void)
+ { return dynamic_cast<PlotFileDocument*>(wxView::GetDocument()); }
+
+ DECLARE_EVENT_TABLE()
};
class PlotFileCanvas: public wxScrolledWindow
{
public:
- PlotFileView* m_pView;
-
- PlotFileCanvas (PlotFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
- virtual void OnDraw(wxDC& dc);
+ PlotFileView* m_pView;
+
+ PlotFileCanvas (PlotFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
+ virtual void OnDraw(wxDC& dc);
};