71efce20081a48f79fc7bc5ce942fce6825697c4
[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.8 2000/08/31 08:38:58 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 public:
106     ProjectionFileView(void);
107     virtual ~ProjectionFileView(void);
108
109     bool OnCreate(wxDocument *doc, long flags);
110     void OnDraw(wxDC* dc);
111     void OnUpdate(wxView *sender, wxObject *hint = NULL);
112     bool OnClose (bool deleteWindow = true);
113     void OnProperties (wxCommandEvent& event);
114     void OnReconstruct (wxCommandEvent& event);
115
116     ProjectionFileDocument* GetDocument(void) 
117         { return dynamic_cast<ProjectionFileDocument*>(wxView::GetDocument()); }
118     DECLARE_EVENT_TABLE()
119 };
120
121 class ProjectionFileCanvas: public wxScrolledWindow
122 {
123 public:
124     ProjectionFileView* m_pView;
125     
126     ProjectionFileCanvas (ProjectionFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
127     virtual void OnDraw(wxDC& dc);
128 };
129
130
131 class PhantomCanvas;
132 class PhantomView : public wxView
133 {
134     DECLARE_DYNAMIC_CLASS(PhantomView)
135
136 private:
137     PhantomCanvas *CreateCanvas(wxView *view, wxFrame *parent);
138     wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
139
140     PhantomCanvas *m_canvas;
141     wxFrame *m_frame;
142
143 public:
144     PhantomView(void);
145     virtual ~PhantomView(void);
146
147     bool OnCreate(wxDocument *doc, long flags);
148     void OnUpdate(wxView *sender, wxObject *hint = NULL);
149     bool OnClose (bool deleteWindow = true);
150     void OnDraw(wxDC* dc);
151     void OnProperties (wxCommandEvent& event);
152     void OnRasterize (wxCommandEvent& event);
153     void OnProjections (wxCommandEvent& event);
154
155     PhantomDocument* GetDocument(void) 
156         { return dynamic_cast<PhantomDocument*>(wxView::GetDocument()); }
157
158     DECLARE_EVENT_TABLE()
159 };
160
161 class PhantomCanvas: public wxScrolledWindow
162 {
163 public:
164     PhantomView* m_pView;
165     
166     PhantomCanvas (PhantomView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
167
168     virtual void OnDraw(wxDC& dc);
169
170 };
171
172
173 #endif
174