コード例 #1
0
ファイル: GuiFacade.cs プロジェクト: worstward/rlviewer
        private void loaderWorker_AggregateFiles(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            if (_aggregator != null)
            {
                _aggregator.Report += (s, pe) => ProgressReporter(pe.Percent);
                _aggregator.CancelJob += (s, ce) => ce.Cancel = _aggregator.Cancelled;
                _aggregator.ReportName += (s, tne) =>
                    ThreadHelper.ThreadSafeUpdateToolStrip<ToolStripStatusLabel>(_form.StatusLabel, lbl => { lbl.Text = tne.Name; });
            }

            _cancellableAction = _aggregator;

            var aggregatorParams = (Behaviors.FilesAggregator.AggregatorParams)e.Argument;

            try
            {
                _aggregator.Aggregate(aggregatorParams.AggregateFileName, aggregatorParams.SourceFilesNames);
            }
            catch (OperationCanceledException)
            {
                e.Cancel = true;
                ClearWorkerData(
                    () =>
                    {
                        if (File.Exists(aggregatorParams.AggregateFileName))
                        {
                            File.Delete(aggregatorParams.AggregateFileName);
                        }
                    });
            }
            e.Result = aggregatorParams.AggregateFileName;
        }
コード例 #2
0
ファイル: GuiFacade.cs プロジェクト: worstward/rlviewer
        private void loaderWorker_MirrorImage(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            if (_mirrorer != null)
            {
                _mirrorer.Report += (s, pe) => ProgressReporter(pe.Percent);
                _mirrorer.CancelJob += (s, ce) => ce.Cancel = _mirrorer.Cancelled;
                _mirrorer.ReportName += (s, tne) =>
                    ThreadHelper.ThreadSafeUpdateToolStrip<ToolStripStatusLabel>(_form.StatusLabel, lbl => { lbl.Text = tne.Name; });
            }

            _cancellableAction = _mirrorer;


            var destinationPath = (string)e.Argument;

            try
            {
                _mirrorer.MirrorImage(destinationPath);
            }
            catch (OperationCanceledException)
            {
                e.Cancel = true;
                ClearWorkerData(
                    () =>
                    {
                        if (File.Exists(destinationPath))
                        {
                            File.Delete(destinationPath);
                        }
                    });
            }

            e.Result = destinationPath;
        }
コード例 #3
0
ファイル: GuiFacade.cs プロジェクト: worstward/rlviewer
        private void loaderWorker_CreateTiles(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            _creator = TileCreatorFactory.GetFactory(_file).Create(_file as RlViewer.Files.LocatorFile, _settings.TileOutputAlgorithm);

            ((WorkerEventController)_creator).Report += (s, pe) => ProgressReporter(pe.Percent);
            ((WorkerEventController)_creator).CancelJob += (s, ce) => ce.Cancel = ((WorkerEventController)_creator).Cancelled;
            ((WorkerEventController)_creator).ReportName += (s, tne) =>
                ThreadHelper.ThreadSafeUpdateToolStrip<ToolStripStatusLabel>(_form.StatusLabel, lbl => { lbl.Text = tne.Name; });

            _cancellableAction = ((WorkerEventController)_creator);

            try
            {
                e.Result = _creator.GetTiles(_file.Properties.FilePath, _settings.ForceTileGeneration, _settings.AllowViewWhileLoading);
            }
            catch (OperationCanceledException)
            {
                e.Cancel = true;
            }
            catch (AggregateException aggrex)
            {
                if (aggrex.InnerException.GetType() == typeof(OperationCanceledException))
                {
                    e.Cancel = true;
                }
            }
        }
コード例 #4
0
ファイル: GuiFacade.cs プロジェクト: worstward/rlviewer
        private void loaderWorker_GenerateReport(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            if (_reporter != null)
            {
                _reporter.Report += (s, pe) => ProgressReporter(pe.Percent);
                _reporter.CancelJob += (s, ce) => ce.Cancel = _reporter.Cancelled;
                _reporter.ReportName += (s, tne) =>
                    ThreadHelper.ThreadSafeUpdateToolStrip<ToolStripStatusLabel>(_form.StatusLabel, lbl => { lbl.Text = tne.Name; });
            }

            _cancellableAction = _reporter;

            var reportArgs = (object[])e.Argument;
            var reportFileName = (string)reportArgs[0];
            var reporterSettings = (Behaviors.ReportGenerator.ReporterSettings)reportArgs[1];


            try
            {
                _reporter.GenerateReport(reportFileName, reporterSettings);
            }
            catch (OperationCanceledException)
            {
                e.Cancel = true;
            }
            e.Result = reportFileName;
        }
コード例 #5
0
ファイル: GuiFacade.cs プロジェクト: worstward/rlviewer
        private void loaderWorker_InitFile(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            try
            {
                _properties = new Files.FileProperties((string)e.Argument);
                _header = Factories.Header.Abstract.HeaderFactory.GetFactory(_properties).Create(_properties.FilePath);

                _navi = Factories.NavigationContainer.Abstract.NavigationContainerFactory.GetFactory(_properties).Create(_properties, _header);

                _navi.Report += (s, pe) => ProgressReporter(pe.Percent);
                _navi.CancelJob += (s, ce) => ce.Cancel = _navi.Cancelled;
                _navi.ReportName += (s, tne) => ThreadHelper.ThreadSafeUpdateToolStrip<ToolStripStatusLabel>(_form.StatusLabel, lbl => { lbl.Text = tne.Name; });

                _cancellableAction = _navi;
                _navi.GetNavigation();
            }
            catch (OperationCanceledException)
            {
                e.Cancel = true;
                return;
            }

            _file = FileFactory.GetFactory(_properties).Create(_properties, _header, _navi);

            _ruler = new Behaviors.Ruler.RulerProxy(_file);
            _saver = SaverFactory.GetFactory(_properties).Create(_file);
            _searcher = Factories.NavigationSearcher.Abstract.PointFinderFactory.GetFactory(_file.Properties).Create(_file);
            _analyzer = new Behaviors.Analyzing.SampleAnalyzer();
            _pointSelector = new Behaviors.PointSelector.PointSelector();
            _areaSelector = new Behaviors.AreaSelector.AreaSelector(_file);
            _areaAligningWrapper = new Behaviors.AreaSelector.AreaSelectorsAlignerContainer();

            if (_pointSharer != null)
            {
                _pointSharer.DataReceived -= (s, gde) => CrossAppDataReceivedCallback(s, gde);
                _pointSharer.Dispose();
            }

            _pointSharer = Factories.PointSharer.Abstract.PointSharerFactory.GetFactory(_file.Properties).Create(_file,
                 new Behaviors.CrossAppCommunication.UdpExchange(_settings.MulticastEp, Behaviors.CrossAppCommunication.CommunicationType.Multicast),
                 System.Diagnostics.Process.GetCurrentProcess().Id);

            _pointSharer.DataReceived += (s, gde) => CrossAppDataReceivedCallback(s, gde);
        }
コード例 #6
0
ファイル: GuiFacade.cs プロジェクト: worstward/rlviewer
        private void loaderWorker_AlignImage(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            var fileName = (string)e.Argument;

            _aligner.Report += (s, pe) => ProgressReporter(pe.Percent);
            _aligner.CancelJob += (s, ce) => ce.Cancel = _aligner.Cancelled;
            _aligner.ReportName += (s, tne) => ThreadHelper.ThreadSafeUpdateToolStrip<ToolStripStatusLabel>(_form.StatusLabel, lbl => { lbl.Text = tne.Name; });

            _cancellableAction = _aligner;

            var resamplingArea = GeometryHelper.GetArea(_pointSelector, _settings.AligningAreaBorderSize);

            byte[] resampledImage = null;

            try
            {
                resampledImage = _aligner.Resample(fileName, resamplingArea);
            }
            catch (OperationCanceledException)
            {
                e.Cancel = true;
            }

            if (resampledImage != null)
            {
                _saver.SaveAsAligned(fileName, resamplingArea, resampledImage, _pointSelector.Count(),
                      (int)_settings.RangeCompressionCoef, (int)_settings.AzimuthCompressionCoef);
            }

            e.Result = fileName;
        }
コード例 #7
0
ファイル: GuiFacade.cs プロジェクト: worstward/rlviewer
        private void loaderWorker_SaveFile(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            Behaviors.Saving.SaverParams parameters;

            try
            {
                parameters = (Behaviors.Saving.SaverParams)e.Argument;
            }
            catch (InvalidCastException)
            {
                Logging.Logger.Log(Logging.SeverityGrades.Internal, "Invalid saver params");
                throw;
            }

            _saver = SaverFactory.GetFactory(_file.Properties).Create(_file);

            _saver.Report += (s, pe) => ProgressReporter(pe.Percent);
            _saver.CancelJob += (s, ce) => ce.Cancel = _saver.Cancelled;
            _saver.ReportName += (s, tne) => ThreadHelper.ThreadSafeUpdateToolStrip<ToolStripStatusLabel>(_form.StatusLabel, lbl => { lbl.Text = tne.Name; });

            float maxSampleValue = 0;



            try
            {
                if (parameters.OutputType != Behaviors.TileCreator.TileOutputType.Linear)
                {
                    _cancellableAction = ((WorkerEventController)_creator);
                    maxSampleValue = _creator.MaxValue;
                }
                _cancellableAction = _saver;

                _saver.Save(parameters, _creator.NormalizationFactor, maxSampleValue);
            }
            catch (OperationCanceledException)
            {
                e.Cancel = true;
            }

            if (_saver.Cancelled)
            {
                ClearWorkerData(() => File.Delete(parameters.Path));
            }

            e.Result = parameters.Path;
        }
コード例 #8
0
ファイル: GuiFacade.cs プロジェクト: worstward/rlviewer
        private void loaderWorker_NormalizeFile(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            _saver = SaverFactory.GetFactory(_file.Properties).Create(_file);

            _saver.Report += (s, pe) => ProgressReporter(pe.Percent);
            _saver.CancelJob += (s, ce) => ce.Cancel = _saver.Cancelled;
            _saver.ReportName += (s, tne) => ThreadHelper.ThreadSafeUpdateToolStrip<ToolStripStatusLabel>(_form.StatusLabel, lbl => { lbl.Text = tne.Name; });
            _cancellableAction = _saver;

            var fileName = (string)e.Argument;

            try
            {
                var targetPoint = _pointSelector.First();
                var normalizationCoef = targetPoint.Value / targetPoint.Rcs;

                _saver.SaveAsNormalized(fileName, normalizationCoef);
            }
            catch (OperationCanceledException)
            {
                e.Cancel = true;
            }

            if (_saver.Cancelled)
            {
                ClearWorkerData(() => File.Delete(fileName));
            }

            e.Result = fileName;
        }
コード例 #9
0
ファイル: GuiFacade.cs プロジェクト: worstward/rlviewer
        private void loaderWorker_FindPoint(object sender, System.ComponentModel.DoWorkEventArgs e)
        {

            _searcher.Report += (s, pe) => ProgressReporter(pe.Percent);
            _searcher.CancelJob += (s, ce) => ce.Cancel = _searcher.Cancelled;
            _searcher.ReportName += (s, tne) => ThreadHelper.ThreadSafeUpdateToolStrip<ToolStripStatusLabel>(_form.StatusLabel, lbl => { lbl.Text = tne.Name; });

            _cancellableAction = _searcher;

            var searcherParams = (Behaviors.Navigation.NavigationSearcher.SearcherParams)e.Argument;

            try
            {
                if (searcherParams.IsNavigationSearcher)
                {
                    e.Result = _searcher.GetCoordinates(searcherParams.Lat, searcherParams.Lon, searcherParams.Error);
                }
                else
                {
                    e.Result = new Point(searcherParams.X, searcherParams.Y);
                }
            }
            catch (OperationCanceledException)
            {
                e.Cancel = true;
            }
        }