Пример #1
0
        // 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);
        }
Пример #2
0
        // 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);
        }