Browse Source

Remove ParallelOptions from IImageProcessor

af/merge-core
James Jackson-South 9 years ago
parent
commit
5edcbb5b47
  1. 2
      src/ImageSharp.Drawing/Processors/DrawImageProcessor.cs
  2. 2
      src/ImageSharp.Drawing/Processors/FillProcessor.cs
  3. 7
      src/ImageSharp/Image/IImageProcessor.cs
  4. 2
      src/ImageSharp/Processing/Processors/Binarization/BinaryThresholdProcessor.cs
  5. 12
      src/ImageSharp/Processing/Processors/CloningImageProcessor.cs
  6. 2
      src/ImageSharp/Processing/Processors/ColorMatrix/ColorMatrixProcessor.cs
  7. 2
      src/ImageSharp/Processing/Processors/Convolution/Convolution2DProcessor.cs
  8. 15
      src/ImageSharp/Processing/Processors/Convolution/Convolution2PassProcessor.cs
  9. 2
      src/ImageSharp/Processing/Processors/Convolution/ConvolutionProcessor.cs
  10. 2
      src/ImageSharp/Processing/Processors/Convolution/EdgeDetection/EdgeDetectorCompassProcessor.cs
  11. 2
      src/ImageSharp/Processing/Processors/Effects/AlphaProcessor.cs
  12. 2
      src/ImageSharp/Processing/Processors/Effects/BackgroundColorProcessor.cs
  13. 2
      src/ImageSharp/Processing/Processors/Effects/BrightnessProcessor.cs
  14. 2
      src/ImageSharp/Processing/Processors/Effects/ContrastProcessor.cs
  15. 2
      src/ImageSharp/Processing/Processors/Effects/InvertProcessor.cs
  16. 2
      src/ImageSharp/Processing/Processors/Effects/OilPaintingProcessor.cs
  17. 2
      src/ImageSharp/Processing/Processors/Effects/PixelateProcessor.cs
  18. 15
      src/ImageSharp/Processing/Processors/ImageProcessor.cs
  19. 2
      src/ImageSharp/Processing/Processors/Overlays/GlowProcessor.cs
  20. 2
      src/ImageSharp/Processing/Processors/Overlays/VignetteProcessor.cs
  21. 2
      src/ImageSharp/Processing/Processors/Transforms/CropProcessor.cs
  22. 4
      src/ImageSharp/Processing/Processors/Transforms/FlipProcessor.cs
  23. 6
      src/ImageSharp/Processing/Processors/Transforms/ResizeProcessor.cs
  24. 8
      src/ImageSharp/Processing/Processors/Transforms/RotateProcessor.cs
  25. 2
      src/ImageSharp/Processing/Processors/Transforms/SkewProcessor.cs

2
src/ImageSharp.Drawing/Processors/DrawImageProcessor.cs

@ -94,7 +94,7 @@ namespace SixLabors.ImageSharp.Drawing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> background = sourcePixels.GetRowSpan(y).Slice(minX, width);

2
src/ImageSharp.Drawing/Processors/FillProcessor.cs

@ -77,7 +77,7 @@ namespace SixLabors.ImageSharp.Drawing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
int offsetY = y - startY;

7
src/ImageSharp/Image/IImageProcessor.cs

@ -1,8 +1,6 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Threading.Tasks;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
@ -15,11 +13,6 @@ namespace SixLabors.ImageSharp.Processing
public interface IImageProcessor<TPixel>
where TPixel : struct, IPixel<TPixel>
{
/// <summary>
/// Gets or sets the parallel options for processing tasks in parallel.
/// </summary>
ParallelOptions ParallelOptions { get; set; }
/// <summary>
/// Gets or sets a value indicating whether to compress
/// or expand individual pixel colors the value on processing.

2
src/ImageSharp/Processing/Processors/Binarization/BinaryThresholdProcessor.cs

@ -84,7 +84,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> row = source.GetRowSpan(y - startY);

12
src/ImageSharp/Processing/Processors/CloningImageProcessor.cs

@ -2,7 +2,7 @@
// Licensed under the Apache License, Version 2.0.
using System;
using System.Threading.Tasks;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
@ -12,23 +12,15 @@ namespace SixLabors.ImageSharp.Processing
/// Allows the application of processors to images.
/// </summary>
/// <typeparam name="TPixel">The pixel format.</typeparam>
internal abstract class CloningImageProcessor<TPixel> : IImageProcessor<TPixel>, ICloningImageProcessor<TPixel>
internal abstract class CloningImageProcessor<TPixel> : ICloningImageProcessor<TPixel>
where TPixel : struct, IPixel<TPixel>
{
/// <inheritdoc/>
public virtual ParallelOptions ParallelOptions { get; set; }
/// <inheritdoc/>
public virtual bool Compand { get; set; } = false;
/// <inheritdoc/>
public Image<TPixel> CloneAndApply(Image<TPixel> source, Rectangle sourceRectangle)
{
if (this.ParallelOptions == null)
{
this.ParallelOptions = source.Configuration.ParallelOptions;
}
try
{
Image<TPixel> clone = this.CreateDestination(source, sourceRectangle);

2
src/ImageSharp/Processing/Processors/ColorMatrix/ColorMatrixProcessor.cs

@ -55,7 +55,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> row = source.GetRowSpan(y - startY);

2
src/ImageSharp/Processing/Processors/Convolution/Convolution2DProcessor.cs

@ -62,7 +62,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
startY,
endY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> sourceRow = source.GetRowSpan(y);

15
src/ImageSharp/Processing/Processors/Convolution/Convolution2PassProcessor.cs

@ -43,12 +43,13 @@ namespace SixLabors.ImageSharp.Processing.Processors
{
int width = source.Width;
int height = source.Height;
ParallelOptions parallelOptions = source.Configuration.ParallelOptions;
using (var firstPassPixels = new PixelAccessor<TPixel>(width, height))
using (PixelAccessor<TPixel> sourcePixels = source.Lock())
{
this.ApplyConvolution(firstPassPixels, sourcePixels, source.Bounds(), this.KernelX);
this.ApplyConvolution(sourcePixels, firstPassPixels, sourceRectangle, this.KernelY);
this.ApplyConvolution(firstPassPixels, sourcePixels, source.Bounds(), this.KernelX, parallelOptions);
this.ApplyConvolution(sourcePixels, firstPassPixels, sourceRectangle, this.KernelY, parallelOptions);
}
}
@ -62,7 +63,13 @@ namespace SixLabors.ImageSharp.Processing.Processors
/// The <see cref="Rectangle"/> structure that specifies the portion of the image object to draw.
/// </param>
/// <param name="kernel">The kernel operator.</param>
private void ApplyConvolution(PixelAccessor<TPixel> targetPixels, PixelAccessor<TPixel> sourcePixels, Rectangle sourceRectangle, Fast2DArray<float> kernel)
/// <param name="parallelOptions">The parellel options</param>
private void ApplyConvolution(
PixelAccessor<TPixel> targetPixels,
PixelAccessor<TPixel> sourcePixels,
Rectangle sourceRectangle,
Fast2DArray<float> kernel,
ParallelOptions parallelOptions)
{
int kernelHeight = kernel.Height;
int kernelWidth = kernel.Width;
@ -79,7 +86,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
startY,
endY,
this.ParallelOptions,
parallelOptions,
y =>
{
Span<TPixel> targetRow = targetPixels.GetRowSpan(y);

2
src/ImageSharp/Processing/Processors/Convolution/ConvolutionProcessor.cs

@ -51,7 +51,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
startY,
endY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> sourceRow = source.GetRowSpan(y);

2
src/ImageSharp/Processing/Processors/Convolution/EdgeDetection/EdgeDetectorCompassProcessor.cs

@ -123,7 +123,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
int offsetY = y - shiftY;

2
src/ImageSharp/Processing/Processors/Effects/AlphaProcessor.cs

@ -64,7 +64,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> row = source.GetRowSpan(y - startY);

2
src/ImageSharp/Processing/Processors/Effects/BackgroundColorProcessor.cs

@ -79,7 +79,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> destination = source.GetRowSpan(y - startY).Slice(minX - startX, width);

2
src/ImageSharp/Processing/Processors/Effects/BrightnessProcessor.cs

@ -64,7 +64,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> row = source.GetRowSpan(y - startY);

2
src/ImageSharp/Processing/Processors/Effects/ContrastProcessor.cs

@ -66,7 +66,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> row = source.GetRowSpan(y - startY);

2
src/ImageSharp/Processing/Processors/Effects/InvertProcessor.cs

@ -45,7 +45,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> row = source.GetRowSpan(y - startY);

2
src/ImageSharp/Processing/Processors/Effects/OilPaintingProcessor.cs

@ -71,7 +71,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
startY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> sourceRow = source.GetRowSpan(y);

2
src/ImageSharp/Processing/Processors/Effects/PixelateProcessor.cs

@ -71,7 +71,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.ForEach(
range,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
int offsetY = y - startY;

15
src/ImageSharp/Processing/Processors/ImageProcessor.cs

@ -2,7 +2,7 @@
// Licensed under the Apache License, Version 2.0.
using System;
using System.Threading.Tasks;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
@ -15,20 +15,12 @@ namespace SixLabors.ImageSharp.Processing
internal abstract class ImageProcessor<TPixel> : IImageProcessor<TPixel>
where TPixel : struct, IPixel<TPixel>
{
/// <inheritdoc/>
public virtual ParallelOptions ParallelOptions { get; set; }
/// <inheritdoc/>
public virtual bool Compand { get; set; } = false;
/// <inheritdoc/>
public void Apply(Image<TPixel> source, Rectangle sourceRectangle)
{
if (this.ParallelOptions == null)
{
this.ParallelOptions = source.Configuration.ParallelOptions;
}
try
{
this.BeforeImageApply(source, sourceRectangle);
@ -66,11 +58,6 @@ namespace SixLabors.ImageSharp.Processing
/// <param name="sourceRectangle">the target</param>
public void Apply(ImageBase<TPixel> source, Rectangle sourceRectangle)
{
if (this.ParallelOptions == null)
{
this.ParallelOptions = source.Configuration.ParallelOptions;
}
try
{
this.BeforeApply(source, sourceRectangle);

2
src/ImageSharp/Processing/Processors/Overlays/GlowProcessor.cs

@ -91,7 +91,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
using (var amounts = new Buffer<float>(width))

2
src/ImageSharp/Processing/Processors/Overlays/VignetteProcessor.cs

@ -112,7 +112,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
using (var amounts = new Buffer<float>(width))

2
src/ImageSharp/Processing/Processors/Transforms/CropProcessor.cs

@ -48,7 +48,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> sourceRow = source.GetRowSpan(minX, y);

4
src/ImageSharp/Processing/Processors/Transforms/FlipProcessor.cs

@ -61,7 +61,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
0,
halfHeight,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
int newY = height - y - 1;
@ -94,7 +94,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
0,
height,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> sourceRow = source.GetRowSpan(y);

6
src/ImageSharp/Processing/Processors/Transforms/ResizeProcessor.cs

@ -95,7 +95,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
// Y coordinates of source points
@ -124,7 +124,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
0,
sourceRectangle.Bottom,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
// TODO: Without Parallel.For() this buffer object could be reused:
@ -157,7 +157,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
minY,
maxY,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
// Ensure offsets are normalised for cropping and padding.

8
src/ImageSharp/Processing/Processors/Transforms/RotateProcessor.cs

@ -50,7 +50,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
0,
height,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> targetRow = targetPixels.GetRowSpan(y);
@ -135,7 +135,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
0,
height,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
for (int x = 0; x < width; x++)
@ -166,7 +166,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
0,
height,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> sourceRow = source.GetRowSpan(y);
@ -196,7 +196,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
0,
height,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> sourceRow = source.GetRowSpan(y);

2
src/ImageSharp/Processing/Processors/Transforms/SkewProcessor.cs

@ -50,7 +50,7 @@ namespace SixLabors.ImageSharp.Processing.Processors
Parallel.For(
0,
height,
this.ParallelOptions,
source.Configuration.ParallelOptions,
y =>
{
Span<TPixel> targetRow = targetPixels.GetRowSpan(y);

Loading…
Cancel
Save