r189: *** empty log message ***
[ctsim.git] / src / views.h
1 /*****************************************************************************
2 ** FILE IDENTIFICATION
3 **
4 **   Name:          view.h
5 **   Purpose:       Header file for View & Canvas routines of CTSim program
6 **   Programmer:    Kevin Rosenberg
7 **   Date Started:  July 2000
8 **
9 **  This is part of the CTSim program
10 **  Copyright (C) 1983-2000 Kevin Rosenberg
11 **
12 **  $Id: views.h,v 1.10 2000/09/04 09:06:46 kevin Exp $
13 **
14 **  This program is free software; you can redistribute it and/or modify
15 **  it under the terms of the GNU General Public License (version 2) as
16 **  published by the Free Software Foundation.
17 **
18 **  This program is distributed in the hope that it will be useful,
19 **  but WITHOUT ANY WARRANTY; without even the implied warranty of
20 **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 **  GNU General Public License for more details.
22 **
23 **  You should have received a copy of the GNU General Public License
24 **  along with this program; if not, write to the Free Software
25 **  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
26 ******************************************************************************/
27
28 #ifdef __GNUG__
29 // #pragma interface
30 #endif
31
32 #ifndef __VIEWSH__
33 #define __VIEWSH__
34
35 #include "wx/wx.h"
36 #include "docs.h"
37 #include "imagefile.h"
38
39 class ImageFileCanvas;
40 class ImageFileView : public wxView
41 {
42     DECLARE_DYNAMIC_CLASS(ImageFileView)
43
44     wxMemoryDC m_memoryDC;
45     wxBitmap m_bitmap;
46
47 private:
48     ImageFileCanvas *CreateCanvas(wxView *view, wxFrame *parent);
49     wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
50
51     ImageFileCanvas *m_canvas;
52     wxFrame *m_frame;
53     bool m_bMinSpecified;
54     bool m_bMaxSpecified;
55     double m_dMinPixel;
56     double m_dMaxPixel;
57     double m_dAutoScaleFactor;
58
59 public:
60     ImageFileView(void);
61     virtual ~ImageFileView(void);
62
63     bool OnCreate(wxDocument *doc, long flags);
64     void OnDraw(wxDC* dc);
65     void OnUpdate(wxView *sender, wxObject *hint = NULL);
66     bool OnClose (bool deleteWindow = true);
67     void OnProperties (wxCommandEvent& event);
68     void OnScaleAuto (wxCommandEvent& event);
69     void OnScaleMinMax (wxCommandEvent& event);
70
71     ImageFileDocument* GetDocument(void) 
72         { return dynamic_cast<ImageFileDocument*>(wxView::GetDocument()); }
73
74     DECLARE_EVENT_TABLE()
75 };
76
77 class ImageFileCanvas: public wxScrolledWindow
78 {
79 public:
80     ImageFileView* m_pView;
81     
82     ImageFileCanvas (ImageFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
83     virtual void OnDraw(wxDC& dc);
84     void OnMouseEvent(wxMouseEvent& event);
85
86     DECLARE_EVENT_TABLE()
87 };
88
89
90 class ProjectionFileCanvas;
91 class ProjectionFileView : public wxView
92 {
93     DECLARE_DYNAMIC_CLASS(ProjectionFileView)
94
95     wxMemoryDC m_memoryDC;
96     wxBitmap m_bitmap;
97
98 private:
99     ProjectionFileCanvas *CreateCanvas(wxView *view, wxFrame *parent);
100     wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
101
102     ProjectionFileCanvas *m_canvas;
103     wxFrame *m_frame;
104
105     int m_iDefaultNX;
106     int m_iDefaultNY;
107     int m_iDefaultFilter;
108     int m_iDefaultFilterMethod;
109     double m_dDefaultFilterParam;
110     int m_iDefaultFilterGeneration;
111     int m_iDefaultZeropad;
112     int m_iDefaultInterpolation;
113     int m_iDefaultInterpParam;
114     int m_iDefaultBackprojector;
115     int m_iDefaultTrace;
116
117 public:
118     ProjectionFileView(void);
119     virtual ~ProjectionFileView(void);
120
121     bool OnCreate(wxDocument *doc, long flags);
122     void OnDraw(wxDC* dc);
123     void OnUpdate(wxView *sender, wxObject *hint = NULL);
124     bool OnClose (bool deleteWindow = true);
125     void OnProperties (wxCommandEvent& event);
126     void OnReconstruct (wxCommandEvent& event);
127
128     ProjectionFileDocument* GetDocument(void) 
129         { return dynamic_cast<ProjectionFileDocument*>(wxView::GetDocument()); }
130     DECLARE_EVENT_TABLE()
131 };
132
133 class ProjectionFileCanvas: public wxScrolledWindow
134 {
135 public:
136     ProjectionFileView* m_pView;
137     
138     ProjectionFileCanvas (ProjectionFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
139     virtual void OnDraw(wxDC& dc);
140 };
141
142
143 class PhantomCanvas;
144 class PhantomView : public wxView
145 {
146     DECLARE_DYNAMIC_CLASS(PhantomView)
147
148 private:
149     PhantomCanvas *CreateCanvas(wxView *view, wxFrame *parent);
150     wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
151
152     PhantomCanvas *m_canvas;
153     wxFrame *m_frame;
154
155     int m_iDefaultNDet;
156     int m_iDefaultNView;
157     int m_iDefaultNSample;
158     int m_iDefaultGeometry;
159     int m_iDefaultTrace;
160     double m_dDefaultRotation;
161     double m_dDefaultFocalLength;
162     double m_dDefaultFieldOfView;
163
164 public:
165     PhantomView(void);
166     virtual ~PhantomView(void);
167
168     bool OnCreate(wxDocument *doc, long flags);
169     void OnUpdate(wxView *sender, wxObject *hint = NULL);
170     bool OnClose (bool deleteWindow = true);
171     void OnDraw(wxDC* dc);
172     void OnProperties (wxCommandEvent& event);
173     void OnRasterize (wxCommandEvent& event);
174     void OnProjections (wxCommandEvent& event);
175
176     PhantomDocument* GetDocument(void) 
177         { return dynamic_cast<PhantomDocument*>(wxView::GetDocument()); }
178
179     DECLARE_EVENT_TABLE()
180 };
181
182 class PhantomCanvas: public wxScrolledWindow
183 {
184 public:
185     PhantomView* m_pView;
186     
187     PhantomCanvas (PhantomView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
188
189     virtual void OnDraw(wxDC& dc);
190
191 };
192
193
194 #endif
195