コード例 #1
0
        /// <inheritdoc cref="TransformHistogramEventArgs"/>
        public async Task OnEventHandler(object publisher, TransformHistogramEventArgs e)
        {
            try
            {
                var distribution = View.Dropdown;

                var copy = await _locker.LockOperationAsync(
                    () => new Bitmap(ViewModel.Source)
                    ).ConfigureAwait(true);

                copy.Tag = distribution.ToString();

                Aggregator.PublishFromAll(publisher,
                                          new AttachBlockToRendererEventArgs(
                                              block: new PipelineBlock(copy)
                                              .Add <Bitmap, Bitmap>(
                                                  (bmp) => _provider.Transform(bmp, distribution, e.Parameters))
                                              .Add <Bitmap>(
                                                  (bmp) => View.AddToQualityMeasureContainer(bmp))
                                              .Add <Bitmap>(
                                                  (bmp) => View.EnableQualityQueue(true))
                                              )
                                          );
            }
            catch (Exception ex)
            {
                View.Tooltip(Errors.TransformHistogram);
            }
        }
コード例 #2
0
        /// <inheritdoc cref="ApplyColorMatrixEventArgs"/>
        public async Task OnEventHandler(object publisher, ApplyColorMatrixEventArgs e)
        {
            try
            {
                var filter = View.Dropdown;

                if (filter != ClrMatrix.Unknown)
                {
                    var copy = await _locker.LockOperationAsync(
                        () => new Bitmap(ViewModel.Source)
                        ).ConfigureAwait(true);

                    Aggregator.PublishFromAll(publisher,
                                              new AttachBlockToRendererEventArgs(
                                                  block: new PipelineBlock(copy)
                                                  .Add <Bitmap, Bitmap>(
                                                      (bmp) => _provider.Apply(bmp, filter))
                                                  )
                                              );
                }
            }
            catch (Exception ex)
            {
                View.Tooltip(Errors.ApplyColorMatrix);
            }
        }
コード例 #3
0
        /// <inheritdoc cref="ApplyTransformationEventArgs"/>
        public async Task OnEventHandler(object publisher, ApplyTransformationEventArgs e)
        {
            try
            {
                var(xStr, yStr) = e.Parameters;

                var x = Convert.ToDouble(xStr);
                var y = Convert.ToDouble(yStr);

                var copy = await _locker.LockOperationAsync(
                    () => new Bitmap(ViewModel.Source)
                    ).ConfigureAwait(true);

                var transformation = View.Dropdown;

                Aggregator.PublishFromAll(publisher,
                                          new AttachBlockToRendererEventArgs(
                                              block: new PipelineBlock(copy)
                                              .Add <Bitmap, Bitmap>(
                                                  (bmp) => _provider.Apply(bmp, x, y, transformation))
                                              )
                                          );
            }
            catch (Exception ex)
            {
                View.Tooltip(Errors.ApplyTransformation);
            }
        }
コード例 #4
0
        /// <inheritdoc cref="ApplyRgbFilterEventArgs"/>
        public async Task OnEventHandler(object publisher, ApplyRgbFilterEventArgs e)
        {
            try
            {
                var filter = View.Dropdown;

                if (filter != RgbFltr.Unknown)
                {
                    var color = View.GetSelectedChannels();

                    var copy = await _locker.LockOperationAsync(
                        () => new Bitmap(ViewModel.Source)
                        ).ConfigureAwait(true);

                    Aggregator.PublishFromAll(publisher,
                                              new AttachBlockToRendererEventArgs(
                                                  block: new PipelineBlock(copy)
                                                  .Add <Bitmap, Bitmap>(
                                                      (bmp) => _factory.Get(color).Filter(bmp))
                                                  .Add <Bitmap, Bitmap>(
                                                      (bmp) => _factory.Get(filter).Filter(bmp))
                                                  )
                                              );
                }
            }
            catch (Exception ex)
            {
                View.Tooltip(Errors.ApplyRgbFilter);
            }
        }
コード例 #5
0
 private async Task <Bitmap> GetImageCopy(ImageContainer container)
 => await _operation.LockOperationAsync(
     () => new Bitmap(View.GetImageCopy(container))
     ).ConfigureAwait(true);