r326: FFTW additions, filter image generation
[ctsim.git] / src / ctsim.h
1 /*****************************************************************************
2 ** FILE IDENTIFICATION
3 **
4 **   Name:          ctsim.cpp
5 **   Purpose:       Top-level routines for 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: ctsim.h,v 1.16 2001/01/01 10:14:34 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 #ifndef __CTSIMH__
29 #define __CTSIMH__
30
31 #ifdef HAVE_CONFIG_H
32 #include "config.h"
33 #endif
34 #ifdef HAVE_DMALLOC
35 #include <dmalloc.h>
36 #endif
37
38 class wxMenu;
39 class wxDocument;\r
40 class ImageFileDocument;\r
41 #include <vector>\r
42
43 #include "wx/docview.h"\r
44
45 // Define a new frame for main window
46 class MainFrame: public wxDocParentFrame
47 {
48     DECLARE_CLASS(MainFrame)
49 private:
50     wxTextCtrl* m_pLog;
51     wxMenu* m_pWindowMenu;
52
53     enum { MAX_WINDOW_MENUITEMS = 20 };
54     wxMenuItem* m_apWindowMenuItems[MAX_WINDOW_MENUITEMS];
55     wxDocument* m_apWindowMenuData[MAX_WINDOW_MENUITEMS];
56
57 public:
58     MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long type);
59     
60     void OnAbout (wxCommandEvent& event);
61     void OnHelpContents (wxCommandEvent& event);
62     void OnCreatePhantom (wxCommandEvent& event);\r
63     void OnCreateFilter (wxCommandEvent& event);
64     void OnExit (wxCommandEvent& event);
65
66     void OnUpdateUI (wxUpdateUIEvent& event);
67
68     wxTextCtrl* getLog() 
69         { return m_pLog; }
70
71     void OnWindowMenu0 (wxCommandEvent& event);
72     void OnWindowMenu1 (wxCommandEvent& event);
73     void OnWindowMenu2 (wxCommandEvent& event);
74     void OnWindowMenu3 (wxCommandEvent& event);
75     void OnWindowMenu4 (wxCommandEvent& event);
76     void OnWindowMenu5 (wxCommandEvent& event);
77     void OnWindowMenu6 (wxCommandEvent& event);
78     void OnWindowMenu7 (wxCommandEvent& event);
79     void OnWindowMenu8 (wxCommandEvent& event);
80     void OnWindowMenu9 (wxCommandEvent& event);
81     void OnWindowMenu10 (wxCommandEvent& event);
82     void OnWindowMenu11 (wxCommandEvent& event);
83     void OnWindowMenu12 (wxCommandEvent& event);
84     void OnWindowMenu13 (wxCommandEvent& event);
85     void OnWindowMenu14 (wxCommandEvent& event);
86     void OnWindowMenu15 (wxCommandEvent& event);
87     void OnWindowMenu16 (wxCommandEvent& event);
88     void OnWindowMenu17 (wxCommandEvent& event);
89     void OnWindowMenu18 (wxCommandEvent& event);
90     void OnWindowMenu19 (wxCommandEvent& event);
91
92     void DoWindowMenu (int iMenuPosition, wxCommandEvent& event);
93
94     DECLARE_EVENT_TABLE()
95 };
96
97
98 class wxDocManager;
99 class CTSimApp: public wxApp
100 {
101 public:
102     CTSimApp();
103     bool OnInit();
104     int OnExit();
105     MainFrame* getMainFrame() const
106       { return m_pFrame; }
107     wxTextCtrl* getLog()
108       { return m_pFrame->getLog(); }
109     wxDocManager* getDocManager() 
110         { return m_docManager; }
111
112     wxString getUntitledFilename();
113 \r
114     void getCompatibleImages (const ImageFileDocument* pIFDoc, std::vector<ImageFileDocument*>& vecIF);\r
115 \r
116     bool getSetModifyNewDocs() const\r
117     { return false; }\r
118
119 private:
120     wxDocManager* m_docManager;
121     MainFrame* m_pFrame;
122
123     void usage (const char* program);
124
125     static struct option ctsimOptions[];
126
127     enum { O_HELP, O_VERSION };
128 };
129
130 DECLARE_APP(CTSimApp)
131
132 extern class CTSimApp* theApp;
133
134
135 enum {
136     MAINMENU_HELP_ABOUT = 500,
137     MAINMENU_HELP_CONTENTS,
138     MAINMENU_FILE_CREATE_PHANTOM,\r
139     MAINMENU_FILE_CREATE_FILTER,
140     MAINMENU_FILE_EXIT,
141     IFMENU_FILE_PROPERTIES,
142     PJMENU_FILE_PROPERTIES,
143     PHMMENU_FILE_PROPERTIES,
144     PJMENU_PROCESS_RECONSTRUCT,\r
145         IFMENU_PLOT_ROW,\r
146         IFMENU_PLOT_COL,
147     IFMENU_VIEW_SCALE_AUTO,
148     IFMENU_VIEW_SCALE_MINMAX,\r
149         IFMENU_COMPARE_IMAGES,\r
150         IFMENU_COMPARE_ROW,\r
151         IFMENU_COMPARE_COL,\r
152   IFMENU_PROCESS_INVERTVALUES,\r
153   IFMENU_PROCESS_SQRT,\r
154   IFMENU_PROCESS_SQUARE,\r
155   IFMENU_PROCESS_LOG,\r
156   IFMENU_PROCESS_EXP,\r
157   IFMENU_PROCESS_FOURIER,\r
158   IFMENU_PROCESS_INVERSE_FOURIER,\r
159   IFMENU_PROCESS_FFT,\r
160   IFMENU_PROCESS_IFFT,\r
161   IFMENU_PROCESS_MAGNITUDE,\r
162   IFMENU_PROCESS_PHASE,\r
163     PHMMENU_PROCESS_RASTERIZE,
164     PHMMENU_PROCESS_PROJECTIONS,\r
165         PLOTMENU_VIEW_SCALE_MINMAX,\r
166         PLOTMENU_VIEW_SCALE_AUTO,
167     MAINMENU_WINDOW_BASE,
168 };
169
170 #endif