/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
private async Task <Bitmap> GetImageCopy(ImageContainer container) => await _operation.LockOperationAsync( () => new Bitmap(View.GetImageCopy(container)) ).ConfigureAwait(true);