X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fviews.h;h=9f57f5588ffa74bce8a213fd6814c1fcd9e18a2d;hb=dd8faeb9c2a1633c96ca31bce81e338a591fab71;hp=4463689350a0c146bef7d14e18f8881c4317a3dc;hpb=0eb095f799dd4222e6eb9b1db9e8c6f2831a1540;p=ctsim.git diff --git a/src/views.h b/src/views.h index 4463689..9f57f55 100644 --- a/src/views.h +++ b/src/views.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: views.h,v 1.24 2001/01/03 22:00:46 kevin Exp $ +** $Id: views.h,v 1.29 2001/01/26 00:45:24 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 @@ -39,14 +39,15 @@ class ImageFileCanvas; class ImageFileView : public wxView { +private: DECLARE_DYNAMIC_CLASS(ImageFileView) - wxMemoryDC m_memoryDC; + wxMemoryDC m_memoryDC; wxBitmap m_bitmap; -private: ImageFileCanvas *CreateCanvas(wxView *view, wxFrame *parent); wxFrame *CreateChildFrame(wxDocument *doc, wxView *view); + wxMenu* m_pFileMenu; ImageFileCanvas *m_canvas; wxFrame *m_frame; @@ -57,11 +58,23 @@ private: double m_dAutoScaleFactor; int m_iDefaultExportFormatID; - + + wxWindow* getFrameForChild() +#if CTSIM_MDI + { return theApp->getMainFrame()->GetClientWindow(); } +#else + { return m_frame; } +#endif + public: ImageFileView(void); virtual ~ImageFileView(void); - + void canvasClosed() + { m_canvas = NULL; m_frame = NULL; } + + wxMenu* getFileMenu() + { return m_pFileMenu; } + bool OnCreate(wxDocument *doc, long flags); void OnDraw(wxDC* dc); void OnUpdate(wxView *sender, wxObject *hint = NULL); @@ -87,9 +100,13 @@ public: void OnShuffleNaturalToFourierOrder (wxCommandEvent& event); void OnShuffleFourierToNaturalOrder (wxCommandEvent& event); -#ifdef HAVE_FFTW +#ifdef HAVE_FFT void OnFFT (wxCommandEvent& event); void OnIFFT (wxCommandEvent& event); + void OnFFTRows (wxCommandEvent& event); + void OnIFFTRows (wxCommandEvent& event); + void OnFFTCols (wxCommandEvent& event); + void OnIFFTCols (wxCommandEvent& event); #endif void OnMagnitude (wxCommandEvent& event); @@ -97,8 +114,13 @@ public: void OnScaleAuto (wxCommandEvent& event); void OnScaleMinMax (wxCommandEvent& event); + void OnScaleFull (wxCommandEvent& event); void OnPlotRow (wxCommandEvent& event); void OnPlotCol (wxCommandEvent& event); +#if HAVE_FFT + void OnPlotFFTRow (wxCommandEvent& event); + void OnPlotFFTCol (wxCommandEvent& event); +#endif void OnPlotHistogram (wxCommandEvent& event); void OnCompareRow (wxCommandEvent& event); void OnCompareCol (wxCommandEvent& event); @@ -118,16 +140,22 @@ private: int m_xCursor; int m_yCursor; - -public: ImageFileView* m_pView; +public: ImageFileCanvas (ImageFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); + virtual ~ImageFileCanvas(); + virtual void OnDraw(wxDC& dc); void OnMouseEvent(wxMouseEvent& event); void DrawRubberBandCursor (wxDC& dc, int x, int y); bool GetCurrentCursor (int& x, int& y); - + + virtual wxSize GetBestSize() const; + void setView(ImageFileView* pView) + { m_pView = pView; } + + DECLARE_EVENT_TABLE() }; @@ -146,6 +174,7 @@ private: ProjectionFileCanvas *m_canvas; wxFrame *m_frame; + wxMenu* m_pFileMenu; int m_iDefaultNX; int m_iDefaultNY; @@ -159,9 +188,23 @@ private: int m_iDefaultBackprojector; int m_iDefaultTrace; + int m_iDefaultPolarNX; + int m_iDefaultPolarNY; + int m_iDefaultPolarInterpolation; + int m_iDefaultPolarZeropad; + + wxWindow* getFrameForChild() +#if CTSIM_MDI + { return theApp->getMainFrame()->GetClientWindow(); } +#else + { return m_frame; } +#endif + public: ProjectionFileView(void); virtual ~ProjectionFileView(void); + void canvasClosed() + { m_canvas = NULL; m_frame = NULL; } bool OnCreate(wxDocument *doc, long flags); void OnDraw(wxDC* dc); @@ -173,9 +216,10 @@ public: void OnConvertPolar (wxCommandEvent& event); void OnConvertFFTPolar (wxCommandEvent& event); - wxFrame* getFrame () - { return m_frame; } + wxFrame* getFrame () { return m_frame; } + wxMenu* getFileMenu() { return m_pFileMenu; } + ProjectionFileDocument* GetDocument(void) { return dynamic_cast(wxView::GetDocument()); } DECLARE_EVENT_TABLE() @@ -183,25 +227,33 @@ public: class ProjectionFileCanvas: public wxScrolledWindow { -public: +private: ProjectionFileView* m_pView; - + +public: ProjectionFileCanvas (ProjectionFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); + virtual ~ProjectionFileCanvas() ; + + virtual wxSize GetBestSize() const; virtual void OnDraw(wxDC& dc); + void setView(ProjectionFileView* pView) + { m_pView = pView; } }; class PhantomCanvas; class PhantomView : public wxView { +private: DECLARE_DYNAMIC_CLASS(PhantomView) + DECLARE_EVENT_TABLE() -private: PhantomCanvas *CreateCanvas(wxView *view, wxFrame *parent); wxFrame *CreateChildFrame(wxDocument *doc, wxView *view); PhantomCanvas *m_canvas; wxFrame *m_frame; + wxMenu* m_pFileMenu; int m_iDefaultNDet; int m_iDefaultNView; @@ -212,9 +264,22 @@ private: double m_dDefaultFocalLength; double m_dDefaultFieldOfView; + int m_iDefaultRasterNX; + int m_iDefaultRasterNY; + int m_iDefaultRasterNSamples; + + wxWindow* getFrameForChild() +#if CTSIM_MDI + { return theApp->getMainFrame()->GetClientWindow(); } +#else + { return m_frame; } +#endif + public: PhantomView(void); virtual ~PhantomView(void); + void canvasClosed() + { m_canvas = NULL; m_frame = NULL; } bool OnCreate(wxDocument *doc, long flags); void OnUpdate(wxView *sender, wxObject *hint = NULL); @@ -227,15 +292,20 @@ public: PhantomDocument* GetDocument(void) { return dynamic_cast(wxView::GetDocument()); } - DECLARE_EVENT_TABLE() + wxMenu* getFileMenu() { return m_pFileMenu; } }; class PhantomCanvas: public wxScrolledWindow { -public: +private: PhantomView* m_pView; - + +public: PhantomCanvas (PhantomView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); + virtual ~PhantomCanvas(); + + void setView(PhantomView* pView) + { m_pView = pView; } virtual void OnDraw(wxDC& dc); }; @@ -250,6 +320,7 @@ private: PlotFileCanvas *m_canvas; wxFrame *m_frame; + wxMenu* m_pFileMenu; EZPlot* m_pEZPlot; bool m_bMinSpecified; @@ -258,21 +329,33 @@ private: double m_dMaxPixel; double m_dAutoScaleFactor; + wxWindow* getFrameForChild() +#if CTSIM_MDI + { return theApp->getMainFrame()->GetClientWindow(); } +#else + { return m_frame; } +#endif + public: PlotFileView(void); virtual ~PlotFileView(void); + void canvasClosed() + { m_canvas = NULL; m_frame = NULL; } 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); + void OnScaleAuto (wxCommandEvent& event); + void OnScaleFull (wxCommandEvent& event); wxFrame* getFrame () { return m_frame; } + wxMenu* getFileMenu() { return m_pFileMenu; } PlotFileDocument* GetDocument(void) { return dynamic_cast(wxView::GetDocument()); } @@ -281,11 +364,57 @@ public: class PlotFileCanvas: public wxScrolledWindow { -public: +private: PlotFileView* m_pView; +public: PlotFileCanvas (PlotFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); + virtual ~PlotFileCanvas(); + virtual void OnDraw(wxDC& dc); + + void setView (PlotFileView* pView) + { m_pView = pView; } +}; + + +class TextEditCanvas; +class TextEditView: public wxView +{ +private: + DECLARE_DYNAMIC_CLASS(TextEditView) + + wxFrame *m_pFrame; + wxMenu* m_pFileMenu; + TextEditCanvas *m_pCanvas; + +public: + TextEditView() + : wxView() , m_pFrame(0), m_pCanvas(0) + {} + ~TextEditView(); + void canvasClosed() + { m_pFrame = NULL; } + + wxFrame *CreateChildFrame(wxDocument *doc, wxView *view); + + bool OnCreate (wxDocument *doc, long flags); + void OnDraw (wxDC *dc); + void OnUpdate (wxView *sender, wxObject *hint = (wxObject *) NULL); + bool OnClose (bool deleteWindow = TRUE); + + TextEditCanvas* getTextCtrl() { return m_pCanvas; } + + wxMenu* getFileMenu() { return m_pFileMenu; } +}; + +class TextEditCanvas: public wxTextCtrl +{ + TextEditView *m_pView; + +public: + TextEditCanvas (TextEditView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, long style); + ~TextEditCanvas (); };