// Initializes MSec public bool initialize(MainDialog _handle) { // Local parameters TabControl tabCtrl = null; // Copy parameters m_mainDialog = _handle; // Try to load app configuration try { m_xmlDocument = XDocument.Load(APP_CONFIG_FILE); } catch (Exception _ex) { m_xmlDocument = null; MessageBox.Show(_ex.Message, "Error while parsin application configuration!", MessageBoxButtons.OK, MessageBoxIcon.Error); } // Get tab control handle tabCtrl = m_mainDialog.Controls.Find("MainDialog_MainTab", true)[0] as TabControl; // Create views m_viewImageVsImage = new ViewImageVsImage(tabCtrl.TabPages["pageImageVsImage"]); m_viewCrossComparison = new ViewCrossComparison(tabCtrl.TabPages["pageCrossComparison"]); return(true); }
// Updates the control's content with a comparison pair (null to delete content) public void setComparisonPair(ViewCrossComparison _hostView, UnfoldedBindingComparisonPair _pair) { // Local variables Job <Image> .delegate_job func = null; Job <Image> .delegate_job_done funcDone = null; // Set host m_hostView = _hostView; // Lock data lock (m_dataLock) { // Cancel old jobs if (m_jobLoadingSource0 != null) { m_jobLoadingSource0.cancel(); m_jobLoadingSource0 = null; } if (m_jobLoadingSource1 != null) { m_jobLoadingSource1.cancel(); m_jobLoadingSource1 = null; } // Run in GUI thread Utility.invokeInGuiThread(this, delegate { // Delete images if (m_pictureSource0.BackgroundImage != null) { m_pictureSource0.BackgroundImage.Dispose(); m_pictureSource0.BackgroundImage = null; } if (m_pictureSource1.BackgroundImage != null) { m_pictureSource1.BackgroundImage.Dispose(); m_pictureSource1.BackgroundImage = null; } // Reset GUI content if (_pair == null) { m_textSource0.Text = m_textSource1.Text = ""; } else { m_textSource0.Text = m_textSource1.Text = TEXT_LOADING_IMAGE_SOURCE; } }); } // Copy m_pair = _pair; if (m_pair == null) { return; } // Job function func = (JobParameter <Image> _params) => { // Cancelled? if (_params.IsCancellationRequested == true) { _params.dropJob(); } // Create bitmap return((_params.Data[0] as ImageSource).createSystemImage()); }; // Job done function funcDone = (JobParameter <Image> _params) => { // Lock data lock (m_dataLock) { // Cancelled? if (_params.IsCancellationRequested == true) { // Delete image _params.Result.Dispose(); // Drop _params.dropJob(); } // Run in GUI thread Utility.invokeInGuiThread(this, delegate { // Local variables DirectoryInfo dirInfo = new DirectoryInfo((_params.Data[0] as ImageSource).FilePath); // Set image (_params.Data[1] as PictureBox).BackgroundImage = _params.Result; // Set text (_params.Data[2] as TextBox).Text = dirInfo.Parent.Name + "\\" + dirInfo.Name; }); } }; // Create jobs m_jobLoadingSource0 = new Job <Image>(func, funcDone, true, new object[] { _pair.Source0, m_pictureSource0, m_textSource0 }); m_jobLoadingSource1 = new Job <Image>(func, funcDone, true, new object[] { _pair.Source1, m_pictureSource1, m_textSource1 }); // Set timings setTimingsFor(TechniqueID.RADISH, _pair.Binding0, _pair.Binding1); setTimingsFor(TechniqueID.DCT, _pair.Binding0, _pair.Binding1); setTimingsFor(TechniqueID.WAVELET, _pair.Binding0, _pair.Binding1); setTimingsFor(TechniqueID.BMB, _pair.Binding0, _pair.Binding1); }