mirror of https://github.com/SixLabors/ImageSharp
Browse Source
Merge IImageFilteringProcessor with IImageProcessor to simplify encapsulation and allow easy setting of parallel optionspull/68/head
38 changed files with 121 additions and 156 deletions
@ -1,36 +0,0 @@ |
|||||
// <copyright file="IImageFilteringProcessor.cs" company="James Jackson-South">
|
|
||||
// Copyright (c) James Jackson-South and contributors.
|
|
||||
// Licensed under the Apache License, Version 2.0.
|
|
||||
// </copyright>
|
|
||||
|
|
||||
namespace ImageSharp.Processors |
|
||||
{ |
|
||||
using System; |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// Encapsulates methods to alter the pixels of an image. The processor operates on the original source pixels.
|
|
||||
/// </summary>
|
|
||||
/// <typeparam name="TColor">The pixel format.</typeparam>
|
|
||||
public interface IImageFilteringProcessor<TColor> : IImageProcessor |
|
||||
where TColor : struct, IPackedPixel, IEquatable<TColor> |
|
||||
{ |
|
||||
/// <summary>
|
|
||||
/// Applies the process to the specified portion of the specified <see cref="ImageBase{TColor}"/>.
|
|
||||
/// </summary>
|
|
||||
/// <param name="source">The source image. Cannot be null.</param>
|
|
||||
/// <param name="sourceRectangle">
|
|
||||
/// The <see cref="Rectangle"/> structure that specifies the portion of the image object to draw.
|
|
||||
/// </param>
|
|
||||
/// <remarks>
|
|
||||
/// The method keeps the source image unchanged and returns the
|
|
||||
/// the result of image processing filter as new image.
|
|
||||
/// </remarks>
|
|
||||
/// <exception cref="System.ArgumentNullException">
|
|
||||
/// <paramref name="source"/> is null.
|
|
||||
/// </exception>
|
|
||||
/// <exception cref="System.ArgumentException">
|
|
||||
/// <paramref name="sourceRectangle"/> doesnt fit the dimension of the image.
|
|
||||
/// </exception>
|
|
||||
void Apply(ImageBase<TColor> source, Rectangle sourceRectangle); |
|
||||
} |
|
||||
} |
|
||||
@ -1,66 +0,0 @@ |
|||||
// <copyright file="ImageFilteringProcessor.cs" company="James Jackson-South">
|
|
||||
// Copyright (c) James Jackson-South and contributors.
|
|
||||
// Licensed under the Apache License, Version 2.0.
|
|
||||
// </copyright>
|
|
||||
|
|
||||
namespace ImageSharp.Processors |
|
||||
{ |
|
||||
using System; |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// Encapsulates methods to alter the pixels of an image. The processor operates on the original source pixels.
|
|
||||
/// </summary>
|
|
||||
/// <typeparam name="TColor">The pixel format.</typeparam>
|
|
||||
public abstract class ImageFilteringProcessor<TColor> : ImageProcessor<TColor>, IImageFilteringProcessor<TColor> |
|
||||
where TColor : struct, IPackedPixel, IEquatable<TColor> |
|
||||
{ |
|
||||
/// <inheritdoc/>
|
|
||||
public void Apply(ImageBase<TColor> source, Rectangle sourceRectangle) |
|
||||
{ |
|
||||
try |
|
||||
{ |
|
||||
this.BeforeApply(source, sourceRectangle); |
|
||||
|
|
||||
this.OnApply(source, sourceRectangle); |
|
||||
|
|
||||
this.AfterApply(source, sourceRectangle); |
|
||||
} |
|
||||
catch (Exception ex) |
|
||||
{ |
|
||||
throw new ImageProcessingException($"An error occured when processing the image using {this.GetType().Name}. See the inner exception for more detail.", ex); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// This method is called before the process is applied to prepare the processor.
|
|
||||
/// </summary>
|
|
||||
/// <param name="source">The source image. Cannot be null.</param>
|
|
||||
/// <param name="sourceRectangle">
|
|
||||
/// The <see cref="Rectangle"/> structure that specifies the portion of the image object to draw.
|
|
||||
/// </param>
|
|
||||
protected virtual void BeforeApply(ImageBase<TColor> source, Rectangle sourceRectangle) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// Applies the process to the specified portion of the specified <see cref="ImageBase{TColor}"/> at the specified location
|
|
||||
/// and with the specified size.
|
|
||||
/// </summary>
|
|
||||
/// <param name="source">The source image. Cannot be null.</param>
|
|
||||
/// <param name="sourceRectangle">
|
|
||||
/// The <see cref="Rectangle"/> structure that specifies the portion of the image object to draw.
|
|
||||
/// </param>
|
|
||||
protected abstract void OnApply(ImageBase<TColor> source, Rectangle sourceRectangle); |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// This method is called after the process is applied to prepare the processor.
|
|
||||
/// </summary>
|
|
||||
/// <param name="source">The source image. Cannot be null.</param>
|
|
||||
/// <param name="sourceRectangle">
|
|
||||
/// The <see cref="Rectangle"/> structure that specifies the portion of the image object to draw.
|
|
||||
/// </param>
|
|
||||
protected virtual void AfterApply(ImageBase<TColor> source, Rectangle sourceRectangle) |
|
||||
{ |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue