** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: views.h,v 1.42 2001/01/30 07:32:13 kevin Exp $
+** $Id: views.h,v 1.61 2003/03/15 10:27:30 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
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
******************************************************************************/
-#ifdef __GNUG__
-// #pragma interface
-#endif
-
#ifndef __VIEWSH__
#define __VIEWSH__
#include "wx/wx.h"
#include "docs.h"
#include "imagefile.h"
+#include "threadrecon.h"
+
+#if wxUSE_GLCANVAS
#include "graph3dview.h"
+#endif
class ImageFileCanvas;
class ImageFileView : public wxView
DECLARE_DYNAMIC_CLASS(ImageFileView)
wxMemoryDC m_memoryDC;
- wxBitmap m_bitmap;
+ wxBitmap* m_pBitmap;
wxMenu* m_pMenuAnalyze;
ImageFileCanvas *CreateCanvas (wxFrame* parent);
ImageFileCanvas *m_pCanvas;
wxMenu* m_pFileMenu;
+ wxMenu* m_pFilterMenu;
bool m_bMinSpecified;
bool m_bMaxSpecified;
double m_dMinPixel;
void OnUpdate(wxView *sender, wxObject *hint = NULL);
bool OnClose (bool deleteWindow = true);
+ void OnEditCopy (wxCommandEvent& event);
+ void OnEditCut (wxCommandEvent& event);
+ void OnEditPaste (wxCommandEvent& event);
+
void OnRevert (wxCommandEvent& event);
void OnExport (wxCommandEvent& event);
void OnProperties (wxCommandEvent& event);
void OnInverseFourier (wxCommandEvent& event);
void OnShuffleNaturalToFourierOrder (wxCommandEvent& event);
void OnShuffleFourierToNaturalOrder (wxCommandEvent& event);
-
+#if wxUSE_GLCANVAS
+ void OnConvert3d (wxCommandEvent& event);
+#endif
+
#ifdef HAVE_FFT
void OnFFT (wxCommandEvent& event);
void OnIFFT (wxCommandEvent& event);
void OnMagnitude (wxCommandEvent& event);
void OnPhase (wxCommandEvent& event);
+ void OnReal (wxCommandEvent& event);
+ void OnImaginary (wxCommandEvent& event);
void OnScaleAuto (wxCommandEvent& event);
void OnScaleMinMax (wxCommandEvent& event);
#else
wxDocChildFrame* getFrame() { return m_pFrame; }
#endif
+ void setInitialClientSize();
wxMenu* getMenuAnalyze() { return m_pMenuAnalyze; }
class ProjectionFileCanvas;
class ProjectionFileView : public wxView
{
+private:
DECLARE_DYNAMIC_CLASS(ProjectionFileView)
- wxMemoryDC m_memoryDC;
- wxBitmap m_bitmap;
+ wxMemoryDC m_memoryDC;
+ wxBitmap* m_pBitmap;
-private:
ProjectionFileCanvas *CreateCanvas (wxFrame* parent);
#if CTSIM_MDI
wxDocMDIChildFrame* m_pFrame;
ProjectionFileCanvas *m_pCanvas;
wxMenu* m_pFileMenu;
-
+ wxMenu* m_pReconstructMenu;
+ wxMenu* m_pConvertMenu;
+
int m_iDefaultNX;
int m_iDefaultNY;
int m_iDefaultFilter;
bool OnClose (bool deleteWindow = true);
void OnProperties (wxCommandEvent& event);
void OnReconstructFBP (wxCommandEvent& event);
+ void OnReconstructFBPRebin (wxCommandEvent& event);
void OnReconstructFourier (wxCommandEvent& event);
+ void OnConvertRectangular (wxCommandEvent& event);
void OnConvertPolar (wxCommandEvent& event);
void OnConvertFFTPolar (wxCommandEvent& event);
-
+ void OnPlotTThetaSampling (wxCommandEvent& event);
+ void OnPlotHistogram (wxCommandEvent& event);
+ void OnConvertParallel (wxCommandEvent& event);
+ void OnArtifactReduction (wxCommandEvent& event);
+
+ void doReconstructFBP (const Projections& rProj, bool bRebinToParallel);
+
#if CTSIM_MDI
wxDocMDIChildFrame* getFrame() { return m_pFrame; }
#else
wxDocChildFrame* getFrame() { return m_pFrame; }
#endif
ProjectionFileCanvas* getCanvas() { return m_pCanvas; }
+ void setInitialClientSize();
wxMenu* getFileMenu() { return m_pFileMenu; }
+ wxMenu* getReconstructMenu() { return m_pReconstructMenu; }
ProjectionFileDocument* GetDocument()
{ return dynamic_cast<ProjectionFileDocument*>(wxView::GetDocument()); }
int m_iDefaultNDet;
int m_iDefaultNView;
+ int m_iDefaultOffsetView;
int m_iDefaultNSample;
int m_iDefaultGeometry;
int m_iDefaultTrace;
double m_dDefaultRotation;
double m_dDefaultFocalLength;
- double m_dDefaultFieldOfView;
+ double m_dDefaultCenterDetectorLength;
+ double m_dDefaultViewRatio;
+ double m_dDefaultScanRatio;
int m_iDefaultRasterNX;
int m_iDefaultRasterNY;
int m_iDefaultRasterNSamples;
+ double m_dDefaultRasterViewRatio;
wxWindow* getFrameForChild()
#if CTSIM_MDI
PhantomCanvas (PhantomFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
virtual ~PhantomCanvas();
+ virtual wxSize GetBestSize() const;
void setView(PhantomFileView* pView)
{ m_pView = pView; }
virtual void OnDraw(wxDC& dc);
wxDocChildFrame* getFrame() { return m_pFrame; }
#endif
+ void setInitialClientSize();
wxMenu* getFileMenu() { return m_pFileMenu; }
PlotFileDocument* GetDocument()
{ return dynamic_cast<PlotFileDocument*>(wxView::GetDocument()); }
virtual ~PlotFileCanvas();
virtual void OnDraw(wxDC& dc);
+ virtual wxSize GetBestSize() const;
void setView (PlotFileView* pView)
{ m_pView = pView; }
public:
TextFileCanvas (TextFileView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, long style);
~TextFileCanvas ();
+ virtual wxSize GetBestSize() const;
};