X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fctsim.cpp;h=172cda95bc88c9bb6a14a556570a2a5dbe5e51fd;hp=8dc7e229b526ab201241350ab6215a2a8c48c260;hb=7ec2cd66921180a624813dff9f8bac76c6b268cc;hpb=bc5a9ca28bc4da3691fb859945d2862f6155835b diff --git a/src/ctsim.cpp b/src/ctsim.cpp index 8dc7e22..172cda9 100644 --- a/src/ctsim.cpp +++ b/src/ctsim.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ctsim.cpp,v 1.22 2000/12/29 20:18:59 kevin Exp $ +** $Id: ctsim.cpp,v 1.23 2001/01/01 10:14:34 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 @@ -61,7 +61,7 @@ #endif #endif -static const char* rcsindent = "$Id: ctsim.cpp,v 1.22 2000/12/29 20:18:59 kevin Exp $"; +static const char* rcsindent = "$Id: ctsim.cpp,v 1.23 2001/01/01 10:14:34 kevin Exp $"; class CTSimApp* theApp = NULL; @@ -185,7 +185,8 @@ IMPLEMENT_CLASS(MainFrame, wxDocParentFrame) BEGIN_EVENT_TABLE(MainFrame, wxDocParentFrame) EVT_MENU(MAINMENU_HELP_ABOUT, MainFrame::OnAbout) EVT_MENU(MAINMENU_HELP_CONTENTS, MainFrame::OnHelpContents) - EVT_MENU(MAINMENU_FILE_CREATE_PHANTOM, MainFrame::OnCreatePhantom) + EVT_MENU(MAINMENU_FILE_CREATE_PHANTOM, MainFrame::OnCreatePhantom) + EVT_MENU(MAINMENU_FILE_CREATE_FILTER, MainFrame::OnCreateFilter) EVT_MENU(MAINMENU_FILE_EXIT, MainFrame::OnExit) EVT_MENU(MAINMENU_WINDOW_BASE, MainFrame::OnWindowMenu0) EVT_MENU(MAINMENU_WINDOW_BASE+1, MainFrame::OnWindowMenu1) @@ -223,7 +224,8 @@ MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const //// Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom..."); + file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom..."); + file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter..."); file_menu->Append(wxID_OPEN, "&Open..."); file_menu->AppendSeparator(); @@ -271,20 +273,49 @@ MainFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) wxMessageBox(msg, "About CTSim", wxOK | wxICON_INFORMATION, this); } -void -MainFrame::OnCreatePhantom(wxCommandEvent& WXUNUSED(event)) -{ - DialogGetPhantom dialogPhantom (this, Phantom::PHM_HERMAN); - int dialogReturn = dialogPhantom.ShowModal(); - if (dialogReturn == wxID_OK) { - wxString selection (dialogPhantom.getPhantom()); - *theApp->getLog() << "Selected phantom " << selection.c_str() << "\n"; - wxString filename = selection + ".phm"; - theApp->getDocManager()->CreateDocument(filename, wxDOC_SILENT); - } - -} - +void +MainFrame::OnCreatePhantom(wxCommandEvent& WXUNUSED(event)) +{ + DialogGetPhantom dialogPhantom (this, Phantom::PHM_HERMAN); + int dialogReturn = dialogPhantom.ShowModal(); + if (dialogReturn == wxID_OK) { + wxString selection (dialogPhantom.getPhantom()); + *theApp->getLog() << "Selected phantom " << selection.c_str() << "\n"; + wxString filename = selection + ".phm"; + theApp->getDocManager()->CreateDocument(filename, wxDOC_SILENT); + } + +} + +void +MainFrame::OnCreateFilter (wxCommandEvent& WXUNUSED(event)) +{ + DialogGetFilterParameters dialogFilter (this, 256, 256, SignalFilter::FILTER_BANDLIMIT, 1., 10., SignalFilter::DOMAIN_SPATIAL); + int dialogReturn = dialogFilter.ShowModal(); + if (dialogReturn == wxID_OK) { + wxString strFilter (dialogFilter.getFilterName()); + wxString strDomain (dialogFilter.getDomainName()); + unsigned int nx = dialogFilter.getXSize(); + unsigned int ny = dialogFilter.getYSize(); + double dBandwidth = dialogFilter.getBandwidth(); + double dFilterParam= dialogFilter.getFilterParam(); + *theApp->getLog() << "Selected filter " << strFilter.c_str() << ", domain " << strDomain.c_str() << ", filterParam " << dFilterParam << ", bandwidth " << dBandwidth << "\n"; + wxString filename = "untitled.if"; + ImageFileDocument* pFilterDoc = dynamic_cast(theApp->getDocManager()->CreateDocument ("untitled.if", wxDOC_SILENT)); + if (! pFilterDoc) { + sys_error (ERR_SEVERE, "Unable to create filter image"); + return; + } + ImageFile& rIF = pFilterDoc->getImageFile(); + rIF.setArraySize (nx, ny); + rIF.filterResponse (strDomain.c_str(), dBandwidth, strFilter.c_str(), dFilterParam); + if (theApp->getSetModifyNewDocs()) + pFilterDoc->Modify (true); + pFilterDoc->UpdateAllViews(); + pFilterDoc->GetFirstView()->OnUpdate (NULL, NULL); + } +} + void CTSimApp::getCompatibleImages (const ImageFileDocument* pIFDoc, std::vector& vecIF) {