+private:
+ DECLARE_DYNAMIC_CLASS(PhantomView)
+ DECLARE_EVENT_TABLE()
+
+ 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;
+ int m_iDefaultNSample;
+ int m_iDefaultGeometry;
+ int m_iDefaultTrace;
+ double m_dDefaultRotation;
+ 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);
+ 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()); }
+
+ wxMenu* getFileMenu() { return m_pFileMenu; }
+};
+
+class PhantomCanvas: public wxScrolledWindow
+{
+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);
+};
+
+class PlotFileCanvas;
+class PlotFileView : public wxView
+{
+ DECLARE_DYNAMIC_CLASS(PlotFileView)
+
+private:
+ PlotFileCanvas *CreateCanvas(wxView *view, wxFrame *parent);
+ wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
+
+ PlotFileCanvas *m_canvas;
+ wxFrame *m_frame;
+ wxMenu* m_pFileMenu;
+ EZPlot* m_pEZPlot;
+
+ bool m_bMinSpecified;
+ bool m_bMaxSpecified;
+ double m_dMinPixel;
+ 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 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<PlotFileDocument*>(wxView::GetDocument()); }
+
+ DECLARE_EVENT_TABLE()
+};