r342: Added histogram plotting
[ctsim.git] / src / views.h
index f82d5066c16558f41eb31e4d44e13c356fc24065..e8a1f25379a737706b02348f37c48455a135739a 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: views.h,v 1.9 2000/09/02 05:10:39 kevin Exp $
+**  $Id: views.h,v 1.23 2001/01/02 13:57: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
@@ -56,6 +56,8 @@ private:
     double m_dMaxPixel;
     double m_dAutoScaleFactor;
 
+    int m_iDefaultExportFormatID;
+
 public:
     ImageFileView(void);
     virtual ~ImageFileView(void);
@@ -64,9 +66,45 @@ public:
     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);
+#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()); }
@@ -76,12 +114,19 @@ public:
 
 class ImageFileCanvas: public wxScrolledWindow
 {
+private:
+
+       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()
 };
@@ -102,6 +147,18 @@ private:
     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);
@@ -113,6 +170,9 @@ public:
     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()
@@ -173,9 +233,56 @@ public:
     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)
+
+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;
+
+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()
+};
+
+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);
 };