+void\r
+ImageFileView::OnInvertValues (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ rIF.invertPixelValues (rIF);\r
+ rIF.labelAdd ("Invert Pixel Values");\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+}\r
+\r
+void\r
+ImageFileView::OnSquare (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ rIF.square (rIF);\r
+ rIF.labelAdd ("Square Pixel Values");\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+}\r
+\r
+void\r
+ImageFileView::OnSquareRoot (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ rIF.sqrt (rIF);\r
+ rIF.labelAdd ("Square-root Pixel Values");\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+}\r
+\r
+void\r
+ImageFileView::OnLog (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ rIF.log (rIF);\r
+ rIF.labelAdd ("Logrithm base-e Pixel Values");\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+}\r
+\r
+void\r
+ImageFileView::OnExp (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ rIF.exp (rIF);\r
+ rIF.labelAdd ("Exponent base-e Pixel Values");\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+}\r
+\r
+void\r
+ImageFileView::OnAdd (wxCommandEvent& event)\r
+{\r
+ std::vector<ImageFileDocument*> vecIF;\r
+ theApp->getCompatibleImages (GetDocument(), vecIF);\r
+ \r
+ if (vecIF.size() == 0) {\r
+ wxMessageBox ("There are no compatible image files open for comparision", "No comparison images");\r
+ } else {\r
+ DialogGetComparisonImage dialogGetCompare (m_frame, "Get Image to Add", vecIF, false);\r
+ \r
+ if (dialogGetCompare.ShowModal() == wxID_OK) {\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument();\r
+ const ImageFile& rRHSIF = pRHSDoc->getImageFile();\r
+ ImageFileDocument* pNewDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));\r
+ if (! pNewDoc) {\r
+ sys_error (ERR_SEVERE, "Unable to create image file");\r
+ return;\r
+ }\r
+ ImageFile& newImage = pNewDoc->getImageFile(); \r
+ newImage.setArraySize (rIF.nx(), rIF.ny());\r
+ rIF.addImages (rRHSIF, newImage);\r
+ std::ostringstream os;\r
+ os << "Add image " << GetDocument()->GetFirstView()->GetFrame()->GetTitle().c_str() << " and " \r
+ << pRHSDoc->GetFirstView()->GetFrame()->GetTitle().c_str();\r
+ wxString s = GetDocument()->GetFirstView()->GetFrame()->GetTitle() + ": ";\r
+ newImage.labelsCopy (rIF, s.c_str());\r
+ s = pRHSDoc->GetFirstView()->GetFrame()->GetTitle() + ": ";\r
+ newImage.labelsCopy (rRHSIF, s.c_str());\r
+ newImage.labelAdd (os.str().c_str());\r
+ *theApp->getLog() << os.str().c_str() << "\n";\r
+ if (theApp->getSetModifyNewDocs())\r
+ pNewDoc->Modify(TRUE);\r
+ pNewDoc->UpdateAllViews(this);\r
+ pNewDoc->GetFirstView()->OnUpdate (this, NULL);\r
+ }\r
+ }\r
+}\r
+\r
+void\r
+ImageFileView::OnSubtract (wxCommandEvent& event)\r
+{\r
+ std::vector<ImageFileDocument*> vecIF;\r
+ theApp->getCompatibleImages (GetDocument(), vecIF);\r
+ \r
+ if (vecIF.size() == 0) {\r
+ wxMessageBox ("There are no compatible image files open for comparision", "No comparison images");\r
+ } else {\r
+ DialogGetComparisonImage dialogGetCompare (m_frame, "Get Image to Subtract", vecIF, false);\r
+ \r
+ if (dialogGetCompare.ShowModal() == wxID_OK) {\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument();\r
+ const ImageFile& rRHSIF = pRHSDoc->getImageFile();\r
+ ImageFileDocument* pNewDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));\r
+ if (! pNewDoc) {\r
+ sys_error (ERR_SEVERE, "Unable to create image file");\r
+ return;\r
+ }\r
+ ImageFile& newImage = pNewDoc->getImageFile(); \r
+ newImage.setArraySize (rIF.nx(), rIF.ny());\r
+ rIF.subtractImages (rRHSIF, newImage);\r
+ std::ostringstream os;\r
+ os << "Subtract image " << GetDocument()->GetFirstView()->GetFrame()->GetTitle().c_str() << " and " \r
+ << pRHSDoc->GetFirstView()->GetFrame()->GetTitle().c_str();\r
+ wxString s = GetDocument()->GetFirstView()->GetFrame()->GetTitle() + ": ";\r
+ newImage.labelsCopy (rIF, s.c_str());\r
+ s = pRHSDoc->GetFirstView()->GetFrame()->GetTitle() + ": ";\r
+ newImage.labelsCopy (rRHSIF, s.c_str());\r
+ newImage.labelAdd (os.str().c_str());\r
+ *theApp->getLog() << os.str().c_str() << "\n";\r
+ if (theApp->getSetModifyNewDocs())\r
+ pNewDoc->Modify(TRUE);\r
+ pNewDoc->UpdateAllViews(this);\r
+ pNewDoc->GetFirstView()->OnUpdate (this, NULL);\r
+ }\r
+ }\r
+}\r
+\r
+void\r
+ImageFileView::OnMultiply (wxCommandEvent& event)\r
+{\r
+ std::vector<ImageFileDocument*> vecIF;\r
+ theApp->getCompatibleImages (GetDocument(), vecIF);\r
+ \r
+ if (vecIF.size() == 0) {\r
+ wxMessageBox ("There are no compatible image files open for comparision", "No comparison images");\r
+ } else {\r
+ DialogGetComparisonImage dialogGetCompare (m_frame, "Get Image to Multiply", vecIF, false);\r
+ \r
+ if (dialogGetCompare.ShowModal() == wxID_OK) {\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument();\r
+ const ImageFile& rRHSIF = pRHSDoc->getImageFile();\r
+ ImageFileDocument* pNewDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));\r
+ if (! pNewDoc) {\r
+ sys_error (ERR_SEVERE, "Unable to create image file");\r
+ return;\r
+ }\r
+ ImageFile& newImage = pNewDoc->getImageFile(); \r
+ newImage.setArraySize (rIF.nx(), rIF.ny());\r
+ rIF.multiplyImages (rRHSIF, newImage);\r
+ std::ostringstream os;\r
+ os << "Multiply image " << GetDocument()->GetFirstView()->GetFrame()->GetTitle().c_str() << " and " \r
+ << pRHSDoc->GetFirstView()->GetFrame()->GetTitle().c_str();\r
+ wxString s = GetDocument()->GetFirstView()->GetFrame()->GetTitle() + ": ";\r
+ newImage.labelsCopy (rIF, s.c_str());\r
+ s = pRHSDoc->GetFirstView()->GetFrame()->GetTitle() + ": ";\r
+ newImage.labelsCopy (rRHSIF, s.c_str());\r
+ newImage.labelAdd (os.str().c_str());\r
+ *theApp->getLog() << os.str().c_str() << "\n";\r
+ if (theApp->getSetModifyNewDocs())\r
+ pNewDoc->Modify(TRUE);\r
+ pNewDoc->UpdateAllViews(this);\r
+ pNewDoc->GetFirstView()->OnUpdate (this, NULL);\r
+ }\r
+ }\r
+}\r
+\r
+void\r
+ImageFileView::OnDivide (wxCommandEvent& event)\r
+{\r
+ std::vector<ImageFileDocument*> vecIF;\r
+ theApp->getCompatibleImages (GetDocument(), vecIF);\r
+ \r
+ if (vecIF.size() == 0) {\r
+ wxMessageBox ("There are no compatible image files open for comparision", "No comparison images");\r
+ } else {\r
+ DialogGetComparisonImage dialogGetCompare (m_frame, "Get Image to Divide", vecIF, false);\r
+ \r
+ if (dialogGetCompare.ShowModal() == wxID_OK) {\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument();\r
+ const ImageFile& rRHSIF = pRHSDoc->getImageFile();\r
+ ImageFileDocument* pNewDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));\r
+ if (! pNewDoc) {\r
+ sys_error (ERR_SEVERE, "Unable to create image file");\r
+ return;\r
+ }\r
+ ImageFile& newImage = pNewDoc->getImageFile(); \r
+ newImage.setArraySize (rIF.nx(), rIF.ny());\r
+ rIF.divideImages (rRHSIF, newImage);\r
+ std::ostringstream os;\r
+ os << "Divide image " << GetDocument()->GetFirstView()->GetFrame()->GetTitle().c_str() << " by " \r
+ << pRHSDoc->GetFirstView()->GetFrame()->GetTitle().c_str();\r
+ wxString s = GetDocument()->GetFirstView()->GetFrame()->GetTitle() + ": ";\r
+ newImage.labelsCopy (rIF, s.c_str());\r
+ s = pRHSDoc->GetFirstView()->GetFrame()->GetTitle() + ": ";\r
+ newImage.labelsCopy (rRHSIF, s.c_str());\r
+ newImage.labelAdd (os.str().c_str());\r
+ *theApp->getLog() << os.str().c_str() << "\n";\r
+ if (theApp->getSetModifyNewDocs())\r
+ pNewDoc->Modify(TRUE);\r
+ pNewDoc->UpdateAllViews(this);\r
+ pNewDoc->GetFirstView()->OnUpdate (this, NULL);\r
+ }\r
+ }\r
+}\r
+\r
+\r
+#ifdef HAVE_FFTW\r
+void\r
+ImageFileView::OnFFT (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ wxProgressDialog dlgProgress (wxString("FFT"), wxString("FFT Progress"), 1, m_frame, wxPD_APP_MODAL);\r
+ rIF.fft (rIF);\r
+ rIF.labelAdd ("FFT Image");\r
+ m_bMinSpecified = false;\r
+ m_bMaxSpecified = false;\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+}\r
+\r
+void\r
+ImageFileView::OnIFFT (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ wxProgressDialog dlgProgress (wxString("IFFT"), wxString("IFFT Progress"), 1, m_frame, wxPD_APP_MODAL);\r
+ rIF.ifft (rIF);\r
+ rIF.labelAdd ("IFFT Image");\r
+ m_bMinSpecified = false;\r
+ m_bMaxSpecified = false;\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+}\r
+#endif\r
+\r
+void\r
+ImageFileView::OnFourier (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ wxProgressDialog dlgProgress (wxString("Fourier"), wxString("Fourier Progress"), 1, m_frame, wxPD_APP_MODAL);\r
+ rIF.fourier (rIF);\r
+ rIF.labelAdd ("Fourier Image");\r
+ m_bMinSpecified = false;\r
+ m_bMaxSpecified = false;\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+}\r
+void\r
+ImageFileView::OnInverseFourier (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ wxProgressDialog dlgProgress (wxString("Inverse Fourier"), wxString("Inverse Fourier Progress"), 1, m_frame, wxPD_APP_MODAL);\r
+ rIF.inverseFourier (rIF);\r
+ rIF.labelAdd ("Inverse Fourier Image");\r
+ m_bMinSpecified = false;\r
+ m_bMaxSpecified = false;\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+}\r
+\r
+void\r
+ImageFileView::OnShuffleNaturalToFourierOrder (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ Fourier::shuffleNaturalToFourierOrder (rIF);\r
+ rIF.labelAdd ("Shuffle Natural To Fourier Order");\r
+ m_bMinSpecified = false;\r
+ m_bMaxSpecified = false;\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+}\r
+\r
+void\r
+ImageFileView::OnShuffleFourierToNaturalOrder (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ Fourier::shuffleFourierToNaturalOrder (rIF);\r
+ rIF.labelAdd ("Shuffle Fourier To Natural Order");\r
+ m_bMinSpecified = false;\r
+ m_bMaxSpecified = false;\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+}\r
+\r
+void\r
+ImageFileView::OnMagnitude (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ if (rIF.isComplex()) {\r
+ rIF.magnitude (rIF);\r
+ rIF.labelAdd ("Magnitude of complex-image");\r
+ m_bMinSpecified = false;\r
+ m_bMaxSpecified = false;\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+ }\r
+}\r
+\r
+void\r
+ImageFileView::OnPhase (wxCommandEvent& event)\r
+{\r
+ ImageFile& rIF = GetDocument()->getImageFile();\r
+ if (rIF.isComplex()) {\r
+ rIF.phase (rIF);\r
+ rIF.labelAdd ("Phase of complex-image");\r
+ m_bMinSpecified = false;\r
+ m_bMaxSpecified = false;\r
+ if (theApp->getSetModifyNewDocs())\r
+ GetDocument()->Modify(TRUE);\r
+ GetDocument()->UpdateAllViews(this);\r
+ }\r
+}\r
+\r
+\r