r354: Added Projection Polar conversions
[ctsim.git] / src / ctsim.h
index db4d7c354ff623614b1af03de06992d9275b6f88..e1055babb1c7872eec19c942ea61c90ca201ab21 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: ctsim.h,v 1.1 2000/07/13 07:01:59 kevin Exp $
+**  $Id: ctsim.h,v 1.21 2001/01/04 21:28:41 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
 #ifndef __CTSIMH__
 #define __CTSIMH__
 
-#include "wx/docview.h"
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifdef HAVE_DMALLOC
+#include <dmalloc.h>
+#endif
 
-class wxDocManager;
-class MainFrame;
-class CTSimApp: public wxApp
-{
-public:
-    CTSimApp(void);
-    bool OnInit(void);
-    int OnExit(void);
-    MainFrame* getMainFrame(void) const
-      { return m_pFrame; }
+class wxMenu;
+class wxDocument;
 
-protected:
-    wxDocManager* m_docManager;
-    MainFrame* m_pFrame;
-};
+class ImageFileDocument;
 
-DECLARE_APP(CTSimApp)
+#include <vector>
+
+
+#include "wx/docview.h"
 
-// Define a new frame
+
+// Define a new frame for main window
 class MainFrame: public wxDocParentFrame
 {
     DECLARE_CLASS(MainFrame)
+private:
+    wxTextCtrl* m_pLog;
+    wxMenu* m_pWindowMenu;
+
+    enum { MAX_WINDOW_MENUITEMS = 20 };
+    wxMenuItem* m_apWindowMenuItems[MAX_WINDOW_MENUITEMS];
+    wxDocument* m_apWindowMenuData[MAX_WINDOW_MENUITEMS];
+
+
+    int m_iDefaultPhantomID;
+    int m_iDefaultFilterID;
+    int m_iDefaultFilterDomainID;
+    unsigned int m_iDefaultFilterXSize;    
+    unsigned int m_iDefaultFilterYSize;
+    double m_dDefaultFilterParam;
+    double m_dDefaultFilterBandwidth;
+    double m_dDefaultFilterInputScale;
+    double m_dDefaultFilterOutputScale;
+
 
 public:
     MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long type);
     
     void OnAbout (wxCommandEvent& event);
+    void OnHelpContents (wxCommandEvent& event);
+    void OnCreatePhantom (wxCommandEvent& event);
+
+    void OnCreateFilter (wxCommandEvent& event);
     void OnExit (wxCommandEvent& event);
 
+    void OnUpdateUI (wxUpdateUIEvent& event);
+
+    wxTextCtrl* getLog() 
+       { return m_pLog; }
+
+    void OnWindowMenu0 (wxCommandEvent& event);
+    void OnWindowMenu1 (wxCommandEvent& event);
+    void OnWindowMenu2 (wxCommandEvent& event);
+    void OnWindowMenu3 (wxCommandEvent& event);
+    void OnWindowMenu4 (wxCommandEvent& event);
+    void OnWindowMenu5 (wxCommandEvent& event);
+    void OnWindowMenu6 (wxCommandEvent& event);
+    void OnWindowMenu7 (wxCommandEvent& event);
+    void OnWindowMenu8 (wxCommandEvent& event);
+    void OnWindowMenu9 (wxCommandEvent& event);
+    void OnWindowMenu10 (wxCommandEvent& event);
+    void OnWindowMenu11 (wxCommandEvent& event);
+    void OnWindowMenu12 (wxCommandEvent& event);
+    void OnWindowMenu13 (wxCommandEvent& event);
+    void OnWindowMenu14 (wxCommandEvent& event);
+    void OnWindowMenu15 (wxCommandEvent& event);
+    void OnWindowMenu16 (wxCommandEvent& event);
+    void OnWindowMenu17 (wxCommandEvent& event);
+    void OnWindowMenu18 (wxCommandEvent& event);
+    void OnWindowMenu19 (wxCommandEvent& event);
+
+    void DoWindowMenu (int iMenuPosition, wxCommandEvent& event);
+
     DECLARE_EVENT_TABLE()
 };
 
-extern MainFrame *GetMainFrame(void);
+
+class wxDocManager;
+class CTSimApp: public wxApp
+{
+public:
+    CTSimApp();
+    bool OnInit();
+    int OnExit();
+    MainFrame* getMainFrame() const
+      { return m_pFrame; }
+    wxTextCtrl* getLog()
+      { return m_pFrame->getLog(); }
+    wxDocManager* getDocManager() 
+       { return m_docManager; }
+
+    wxString getUntitledFilename();
+
+
+    void getCompatibleImages (const ImageFileDocument* pIFDoc, std::vector<ImageFileDocument*>& vecIF);
+
+
+
+    bool getSetModifyNewDocs() const
+
+    { return true; }
+
+
+private:
+    wxDocManager* m_docManager;
+    MainFrame* m_pFrame;
+
+    void usage (const char* program);
+
+    static struct option ctsimOptions[];
+
+    enum { O_HELP, O_VERSION };
+};
+
+DECLARE_APP(CTSimApp)
+
+extern class CTSimApp* theApp;
 
 
 enum {
-    MAINMENU_HELP_ABOUT = 500,
-    MAINMENU_FILE_EXIT,
-    IFMENU_FILE_PROPERTIES,
-    PJMENU_FILE_PROPERTIES,
-    PJMENU_FILE_RECONSTRUCT,
+  MAINMENU_HELP_ABOUT = 500,
+  MAINMENU_HELP_CONTENTS,
+  MAINMENU_FILE_CREATE_PHANTOM,
+
+  MAINMENU_FILE_CREATE_FILTER,
+  MAINMENU_FILE_EXIT,
+
+  IFMENU_FILE_PROPERTIES,
+
+  PJMENU_FILE_PROPERTIES,
+  PJMENU_RECONSTRUCT_FBP,
+  PJMENU_RECONSTRUCT_FOURIER,
+  PJMENU_CONVERT_POLAR,
+  PJMENU_CONVERT_FFT_POLAR,
+
+  IFMENU_FILE_EXPORT,
+
+       IFMENU_PLOT_ROW,
+       IFMENU_PLOT_COL,
+  IFMENU_PLOT_HISTOGRAM,
+
+  IFMENU_VIEW_SCALE_AUTO,
+  IFMENU_VIEW_SCALE_MINMAX,
+  IFMENU_VIEW_SCALE_FULL,
+
+       IFMENU_COMPARE_IMAGES,
+       IFMENU_COMPARE_ROW,
+       IFMENU_COMPARE_COL,
+  IFMENU_IMAGE_SCALESIZE,
+  IFMENU_IMAGE_ADD,
+  IFMENU_IMAGE_SUBTRACT,
+  IFMENU_IMAGE_MULTIPLY,
+  IFMENU_IMAGE_DIVIDE,
+
+  IFMENU_FILTER_INVERTVALUES,
+  IFMENU_FILTER_SQRT,
+  IFMENU_FILTER_SQUARE,
+  IFMENU_FILTER_LOG,
+  IFMENU_FILTER_EXP,
+  IFMENU_FILTER_FOURIER,
+  IFMENU_FILTER_INVERSE_FOURIER,
+  IFMENU_FILTER_FFT,
+  IFMENU_FILTER_IFFT,
+  IFMENU_FILTER_MAGNITUDE,
+  IFMENU_FILTER_PHASE,
+  IFMENU_FILTER_SHUFFLENATURALTOFOURIERORDER,
+  IFMENU_FILTER_SHUFFLEFOURIERTONATURALORDER,
+
+  PHMMENU_FILE_PROPERTIES,
+  PHMMENU_PROCESS_RASTERIZE,
+  PHMMENU_PROCESS_PROJECTIONS,
+
+       PLOTMENU_VIEW_SCALE_MINMAX,
+       PLOTMENU_VIEW_SCALE_AUTO,
+       PLOTMENU_VIEW_SCALE_FULL,
+  MAINMENU_WINDOW_BASE,
 };
 
 #endif