Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

vuSimpleFVRDialog.cpp

Go to the documentation of this file.
00001 #include "vuSimpleFVRDialog.h"
00002 
00003 #include <iostream>
00004 #include "../vuUtilityWindow.h"
00005 #include "../wxUtilities/vuBasicUtility.h"
00006 
00007 #define WINDOW_TITLE "Simple FVR"
00008 
00009 enum {
00010   idCANVAS,
00011   idLOAD,
00012   idCLOSE,
00013   idEQUALSIZE,
00014   idMETHOD,
00015 
00016   idIMAGESCALE,
00017   idIMAGEBIAS,
00018   idAUTOSCALEANDBIAS,
00019   idFITSCALEANDBIAS
00020 };
00021 
00022 //****************************************************************************
00023 //************************* The vuSimpleFVRDialog event table ****************
00024 //****************************************************************************
00025 
00026 BEGIN_EVENT_TABLE(vuSimpleFVRDialog, vuBasicSubViewer)
00027   EVT_BUTTON(idLOAD,        vuSimpleFVRDialog::OnButtonLoadFile)
00028   EVT_BUTTON(idCLOSE,       vuSimpleFVRDialog::OnButtonCloseFile)
00029   EVT_BUTTON(idEQUALSIZE,   vuSimpleFVRDialog::OnButtonEqualSize)
00030   EVT_CHOICE(idMETHOD,      vuSimpleFVRDialog::OnChoiceMethod)
00031 
00032   EVT_BUTTON(idFITSCALEANDBIAS,    vuSimpleFVRDialog::OnButtonFitScaleAndBias)
00033   EVT_COMMAND_SCROLL(idIMAGESCALE, vuSimpleFVRDialog::OnSliderImageScale)
00034   EVT_COMMAND_SCROLL(idIMAGEBIAS,  vuSimpleFVRDialog::OnSliderImageScale)
00035   EVT_CHECKBOX(idAUTOSCALEANDBIAS, vuSimpleFVRDialog::OnCheckboxAutoScaleAndBias)
00036 END_EVENT_TABLE()
00037 
00038 //****************************************************************************
00039 //************************* The constructor **********************************
00040 //****************************************************************************
00041 
00042 vuSimpleFVRDialog::vuSimpleFVRDialog(wxWindow *parent)
00043     : vuBasicSubViewer(parent, WINDOW_TITLE)
00044 {
00045   m_FVR           = NULL;
00046   m_FourierFilter = NULL;
00047   m_Camera        = NULL;
00048   m_Canvas        = new vuSimpleFVRCanvas(this, idCANVAS);
00049   m_Canvas->SetSize(200,200);
00050 }
00051 
00052 vuSimpleFVRDialog::~vuSimpleFVRDialog()
00053 {
00054   m_Canvas->setFVR(NULL);
00055   CHECKNDELETE(m_FVR);
00056 
00057   m_Canvas          = NULL;
00058   m_FourierFilter   = NULL;
00059   m_Camera          = NULL;
00060   m_BUTTONcloseFile = NULL;
00061 
00062   m_CHECKBOXautoScaleAndBias = NULL;
00063   m_BUTTONfitScaleAndBias    = NULL;
00064   m_SLIDERimageScale         = NULL;
00065   m_SLIDERimageBias          = NULL;
00066 }
00067 
00068 vuBasicSubViewerCanvas *vuSimpleFVRDialog::getCanvas()
00069 {
00070   return m_Canvas;
00071 }
00072 
00073 void vuSimpleFVRDialog::addLeftRight(wxSizer *sizer, wxWindow *control)
00074 {
00075   wxStaticBox      *borderBox   = NULL;
00076   wxStaticBoxSizer *borderSizer = NULL;
00077   wxFlexGridSizer  *flexGrid     = NULL;
00078 
00079   // --- file section ------------------------------------------------------
00080   borderBox   = new wxStaticBox(control, -1, "File", wxDefaultPosition,
00081                                 wxSize(-1,-1),wxCAPTION);
00082   borderSizer = new wxStaticBoxSizer(borderBox, wxVERTICAL);
00083   flexGrid    = new wxFlexGridSizer(2,5,5);
00084 
00085   flexGrid->Add(new wxButton(control, idLOAD, "load",
00086                              wxDefaultPosition,
00087                              wxSize(80,18)), 0, wxALIGN_CENTER);
00088   m_BUTTONcloseFile = new wxButton(control, idCLOSE, "close",
00089                                    wxDefaultPosition, wxSize(80,18));
00090   m_BUTTONcloseFile->Disable();
00091   flexGrid->Add(m_BUTTONcloseFile, 0, wxALIGN_CENTER);
00092 
00093   borderSizer->Add(flexGrid);
00094   sizer->Add(borderSizer,0,wxEXPAND,5);
00095   sizer->Add(0,10);
00096 
00097   // --- scale and bias interface -------------------------------------------
00098 
00099   borderBox   = new wxStaticBox(control, -1, "Scale and Bias");
00100   borderSizer = new wxStaticBoxSizer(borderBox, wxVERTICAL);
00101 
00102   flexGrid = new wxFlexGridSizer(2,5,5);
00103 
00104   // image scale factor
00105   {
00106     m_SLIDERimageScale =
00107       new wxSlider(control, idIMAGESCALE, 0, 0, 10000,
00108                    wxDefaultPosition,  wxSize(130,20), wxSL_HORIZONTAL, 
00109                    wxDefaultValidator, "imageScaleSlider");
00110     m_SLIDERimageScale->SetValue(2550);
00111   }
00112 
00113   // image bias
00114   {
00115     m_SLIDERimageBias =
00116       new wxSlider(control, idIMAGEBIAS, 0, -1280, 1270,
00117                    wxDefaultPosition,  wxSize(130,20), wxSL_HORIZONTAL, 
00118                    wxDefaultValidator, "imageBiasSlider");
00119   }
00120 
00121   flexGrid->Add(80,1);
00122   flexGrid->Add(0, 1);
00123 
00124   flexGrid->Add(new wxStaticText(control,-1,"Scale:"),0,wxALIGN_RIGHT);
00125   flexGrid->Add(m_SLIDERimageScale,0,wxALL|wxALIGN_LEFT,1);
00126 
00127   flexGrid->Add(new wxStaticText(control,-1,"Bias:"),0,wxALIGN_RIGHT);
00128   flexGrid->Add(m_SLIDERimageBias,0,wxALL|wxALIGN_LEFT,1);
00129 
00130   m_BUTTONfitScaleAndBias =
00131     new wxButton(control, idFITSCALEANDBIAS, "fit",
00132                  wxDefaultPosition, wxSize(130,16));
00133   
00134   flexGrid->Add(new wxStaticText(control,-1,"Fit:"),0,wxALIGN_RIGHT);
00135   flexGrid->Add(m_BUTTONfitScaleAndBias, 0, wxALL|wxALIGN_LEFT,1);
00136 
00137   flexGrid->Add(new wxStaticText(control,-1,"Auto:"),0,wxALIGN_RIGHT);
00138   m_CHECKBOXautoScaleAndBias =
00139     new wxCheckBox(control, idAUTOSCALEANDBIAS, "",
00140                    wxDefaultPosition, wxSize(15,15));
00141   flexGrid->Add(m_CHECKBOXautoScaleAndBias);
00142 
00143   flexGrid->Add(0,3);
00144   flexGrid->Add(0,3);
00145 
00146   borderSizer->Add(flexGrid);
00147 
00148   sizer->Add(borderSizer);
00149   sizer->Add(0,10);
00150 
00151   // --- view section -------------------------------------------------------
00152   borderBox   = new wxStaticBox(control, -1, "view", wxDefaultPosition,
00153                                 wxSize(-1,-1),wxCAPTION);
00154   borderSizer = new wxStaticBoxSizer(borderBox, wxVERTICAL);
00155   flexGrid    = new wxFlexGridSizer(2,5,5);
00156 
00157   flexGrid->Add(80,5);
00158   flexGrid->Add(0,5);
00159   flexGrid->Add(new wxStaticText(control, -1, "Views:"), 0, wxALIGN_RIGHT);
00160   flexGrid->Add(new wxButton(control, idEQUALSIZE, "equal size"));
00161   flexGrid->Add(80,5);
00162   flexGrid->Add(0,5);
00163 
00164   borderSizer->Add(flexGrid);
00165 
00166   // comparison method
00167   {
00168     m_CHOICEmethod = 
00169       new wxChoice(control, idMETHOD, wxDefaultPosition, wxSize(130,20),
00170                    0, NULL, wxCAPTION, wxDefaultValidator, "Method");
00171 
00172     m_CHOICEmethod->Append("Spatial");
00173     m_CHOICEmethod->Append("Spatial Delta");
00174     m_CHOICEmethod->Append("Freq. Ampl.");
00175     m_CHOICEmethod->Append("Freq. Ampl. Delta");
00176     m_CHOICEmethod->Append("Freq. Phase");
00177     m_CHOICEmethod->Append("Freq. Phase Delta");
00178     m_CHOICEmethod->Append("Freq. Real");
00179     m_CHOICEmethod->Append("Freq. Real Delta");
00180     m_CHOICEmethod->Append("Freq. Imag.");
00181     m_CHOICEmethod->Append("Freq. Imag. Delta");
00182 
00183     m_CHOICEmethod->SetSelection(0);
00184   }
00185 
00186   borderSizer->Add(m_CHOICEmethod);
00187   sizer->Add(borderSizer,0,wxEXPAND,5);
00188   sizer->Add(0,10);
00189 }
00190 
00192 void vuSimpleFVRDialog::setFourierVolume(vuFourierVolume1 *volume)
00193 {
00194   m_Canvas->setFourierVolume(volume);
00195 }
00196 
00197 void vuSimpleFVRDialog::setFourierFilter(vuFourierFilter *filter)
00198 {
00199   m_FourierFilter = filter;
00200   if (m_FVR) m_FVR->setFilter(filter);
00201 }
00202 
00203 void vuSimpleFVRDialog::setCamera(vuCamera *camera)
00204 {
00205   m_Camera = camera;
00206   if (m_FVR) m_FVR->setCamera(camera);
00207 }
00208 
00209 bool vuSimpleFVRDialog::Show(bool flag)
00210 {
00211   if (flag) {
00212     m_Canvas->setFVR(m_FVR);
00213   }
00214   else
00215     m_Canvas->setFVR(NULL);
00216 
00217   return vuBasicSubViewer::Show(flag);
00218 }
00219 
00220 void vuSimpleFVRDialog::OnButtonLoadFile(wxCommandEvent& event)
00221 {
00222   //open load dialog, ...
00223   wxFileDialog fd(this,"Choose a frequency volume file","","","*.fvr",wxOPEN);
00224 
00225   if(fd.ShowModal() == wxID_OK) {
00226     vuString fileName = fd.GetPath().c_str();
00227 
00228     m_Canvas->setFVR(NULL);
00229     CHECKNDELETE(m_FVR);
00230 
00231     m_FVR = new vu1112119();
00232     m_FVR->setWrap(3);
00233 
00234     if (m_Camera == NULL) {
00235       cerr << "vuSimpleFVRDialog.OnButtonLoadFile(): no camera set" << endl;
00236       return;
00237     }
00238     if (m_FourierFilter == NULL) {
00239       cerr << "vuSimpleFVRDialog.OnButtonLoadFile(): no fourierFilter set";
00240       cerr << endl;
00241       return;
00242     }
00243 
00244     cerr << "loading " << fileName.getLastPathComponent()<<"...";
00245     if (m_FVR->readFourierFromFile(fileName)) {
00246       m_FVR->setFilter(m_FourierFilter);
00247       m_FVR->setCamera(m_Camera);
00248       cerr << "vuSimpleFVRDialog::OnButtonLoadFile: not implemented properly" << endl;
00249       //      m_FVR->setScale((float)1/10);
00250       m_FVR->glResize(m_Canvas->getWidth(), m_Canvas->getHeight());
00251       m_Canvas->setFVR(m_FVR);
00252 
00253       // updating the window title
00254       {
00255         m_BUTTONcloseFile->Enable(true);
00256         wxString title = WINDOW_TITLE;
00257         title += " - ";
00258         title += fileName.getLastPathComponent().c_str();
00259         title += " [";
00260         title += vuString(m_FVR->getXSize()).c_str();
00261         title += "x";
00262         title += vuString(m_FVR->getYSize()).c_str();
00263         title += "x";
00264         title += vuString(m_FVR->getZSize()).c_str();
00265         title += "]";
00266         SetTitle(title);
00267       }
00268       cerr << " done." << endl;
00269     }
00270     else
00271       cerr << " COULD NOT LOAD FILE!" <<  endl;
00272 
00273     m_Canvas->redraw();
00274   }
00275 }
00276 
00277 void vuSimpleFVRDialog::OnButtonCloseFile(wxCommandEvent& event)
00278 {
00279   CHECKNDELETE(m_FVR);
00280   m_BUTTONcloseFile->Disable();
00281   m_Canvas->setFVR(NULL);
00282   SetTitle(WINDOW_TITLE);
00283   m_Canvas->redraw();
00284 }
00285 
00286 void vuSimpleFVRDialog::OnButtonEqualSize(wxCommandEvent& event)
00287 {
00288   makeCanvasSizeEqual();
00289 }
00290 
00291 
00292 void vuSimpleFVRDialog::OnChoiceMethod(wxCommandEvent& event)
00293 {
00294   m_Canvas->setRenderMethod(m_CHOICEmethod->GetSelection());
00295   m_Canvas->redraw();
00296 }
00297 
00298 void vuSimpleFVRDialog::OnButtonFitScaleAndBias(wxCommandEvent& event)
00299 {
00300   //m_ShouldFitScaleAndBias = true;
00301   m_Canvas->redraw();
00302 }
00303 
00304 void vuSimpleFVRDialog::OnCheckboxAutoScaleAndBias(wxCommandEvent& event)
00305 {
00306   if (m_CHECKBOXautoScaleAndBias->GetValue()) {
00307     m_SLIDERimageScale->Disable();
00308     m_SLIDERimageBias->Disable();
00309     m_BUTTONfitScaleAndBias->Disable();
00310   }
00311   else {
00312     m_SLIDERimageScale->Enable();
00313     m_SLIDERimageBias->Enable();
00314     m_BUTTONfitScaleAndBias->Enable(true);
00315   }
00316   m_Canvas->redraw();
00317 }
00318 
00319 void vuSimpleFVRDialog::OnSliderImageScale(wxScrollEvent& event)
00320 {
00321   m_Canvas->setImageScale((float)m_SLIDERimageScale->GetValue()/10);
00322   m_Canvas->redraw();
00323 }

Generated on Wed Dec 15 21:20:36 2004 for vuVolume by  doxygen 1.3.9.1