Browse Source

making filters public

pull/904/head
Anton Firszov 7 years ago
parent
commit
c198ad544d
  1. 2
      src/ImageSharp/Processing/Processors/Filters/AchromatomalyProcessor.cs
  2. 2
      src/ImageSharp/Processing/Processors/Filters/AchromatopsiaProcessor.cs
  3. 4
      src/ImageSharp/Processing/Processors/Filters/BlackWhiteProcessor.cs
  4. 2
      src/ImageSharp/Processing/Processors/Filters/BrightnessProcessor.cs
  5. 4
      src/ImageSharp/Processing/Processors/Filters/ContrastProcessor.cs
  6. 2
      src/ImageSharp/Processing/Processors/Filters/DeuteranomalyProcessor.cs
  7. 2
      src/ImageSharp/Processing/Processors/Filters/DeuteranopiaProcessor.cs
  8. 4
      src/ImageSharp/Processing/Processors/Filters/FilterProcessor.cs
  9. 2
      src/ImageSharp/Processing/Processors/Filters/GrayscaleBt601Processor.cs
  10. 2
      src/ImageSharp/Processing/Processors/Filters/GrayscaleBt709Processor.cs
  11. 2
      src/ImageSharp/Processing/Processors/Filters/HueProcessor.cs
  12. 2
      src/ImageSharp/Processing/Processors/Filters/InvertProcessor.cs
  13. 2
      src/ImageSharp/Processing/Processors/Filters/KodachromeProcessor.cs
  14. 3
      src/ImageSharp/Processing/Processors/Filters/LomographProcessor.cs
  15. 4
      src/ImageSharp/Processing/Processors/Filters/LomographProcessor{TPixel}.cs
  16. 4
      src/ImageSharp/Processing/Processors/Filters/OpacityProcessor.cs
  17. 6
      src/ImageSharp/Processing/Processors/Filters/PolaroidProcessor{TPixel}.cs
  18. 2
      src/ImageSharp/Processing/Processors/Filters/ProtanomalyProcessor.cs
  19. 2
      src/ImageSharp/Processing/Processors/Filters/ProtanopiaProcessor.cs
  20. 2
      src/ImageSharp/Processing/Processors/Filters/SaturateProcessor.cs
  21. 2
      src/ImageSharp/Processing/Processors/Filters/SepiaProcessor.cs
  22. 2
      src/ImageSharp/Processing/Processors/Filters/TritanomalyProcessor.cs
  23. 2
      src/ImageSharp/Processing/Processors/Filters/TritanopiaProcessor.cs
  24. 56
      src/ImageSharp/Processing/Processors/IImageProcessor.cs
  25. 31
      src/ImageSharp/Processing/Processors/IImageProcessor{TPixel}.cs
  26. 37
      src/ImageSharp/Processing/Processors/ImageProcessorExtensions.cs

2
src/ImageSharp/Processing/Processors/Filters/AchromatomalyProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Converts the colors of the image recreating Achromatomaly (Color desensitivity) color blindness.
/// </summary>
internal class AchromatomalyProcessor : FilterProcessor
public class AchromatomalyProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="AchromatomalyProcessor"/> class.

2
src/ImageSharp/Processing/Processors/Filters/AchromatopsiaProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Converts the colors of the image recreating Achromatopsia (Monochrome) color blindness.
/// </summary>
internal class AchromatopsiaProcessor : FilterProcessor
public class AchromatopsiaProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="AchromatopsiaProcessor"/> class.

4
src/ImageSharp/Processing/Processors/Filters/BlackWhiteProcessor.cs

@ -6,9 +6,9 @@ using SixLabors.ImageSharp.PixelFormats;
namespace SixLabors.ImageSharp.Processing.Processors.Filters
{
/// <summary>
/// Applies a black and white filter matrix to the image
/// Applies a black and white filter matrix to the image.
/// </summary>
internal class BlackWhiteProcessor : FilterProcessor
public class BlackWhiteProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="BlackWhiteProcessor"/> class.

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

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Applies a brightness filter matrix using the given amount.
/// </summary>
internal class BrightnessProcessor : FilterProcessor
public class BrightnessProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="BrightnessProcessor"/> class.

4
src/ImageSharp/Processing/Processors/Filters/ContrastProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Applies a contrast filter matrix using the given amount.
/// </summary>
internal class ContrastProcessor : FilterProcessor
public class ContrastProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="ContrastProcessor"/> class.
@ -25,7 +25,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
}
/// <summary>
/// Gets the proportion of the conversion
/// Gets the proportion of the conversion.
/// </summary>
public float Amount { get; }
}

2
src/ImageSharp/Processing/Processors/Filters/DeuteranomalyProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Converts the colors of the image recreating Deuteranomaly (Green-Weak) color blindness.
/// </summary>
internal class DeuteranomalyProcessor : FilterProcessor
public class DeuteranomalyProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="DeuteranomalyProcessor"/> class.

2
src/ImageSharp/Processing/Processors/Filters/DeuteranopiaProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Converts the colors of the image recreating Deuteranopia (Green-Blind) color blindness.
/// </summary>
internal class DeuteranopiaProcessor : FilterProcessor
public class DeuteranopiaProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="DeuteranopiaProcessor"/> class.

4
src/ImageSharp/Processing/Processors/Filters/FilterProcessor.cs

@ -1,4 +1,4 @@
// Copyright (c) Six Labors and contributors.
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.PixelFormats;
@ -7,7 +7,7 @@ using SixLabors.ImageSharp.Primitives;
namespace SixLabors.ImageSharp.Processing.Processors.Filters
{
/// <summary>
/// Provides methods that accept a <see cref="ColorMatrix"/> matrix to apply free-form filters to images.
/// Defines a free-form color filter by a <see cref="ColorMatrix"/>.
/// </summary>
public class FilterProcessor : IImageProcessor
{

2
src/ImageSharp/Processing/Processors/Filters/GrayscaleBt601Processor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Applies a grayscale filter matrix using the given amount and the formula as specified by ITU-R Recommendation BT.601
/// </summary>
internal class GrayscaleBt601Processor : FilterProcessor
public class GrayscaleBt601Processor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="GrayscaleBt601Processor"/> class.

2
src/ImageSharp/Processing/Processors/Filters/GrayscaleBt709Processor.cs

@ -9,7 +9,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Applies a grayscale filter matrix using the given amount and the formula as specified by ITU-R Recommendation BT.709
/// </summary>
internal class GrayscaleBt709Processor : FilterProcessor
public class GrayscaleBt709Processor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="GrayscaleBt709Processor"/> class.

2
src/ImageSharp/Processing/Processors/Filters/HueProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Applies a hue filter matrix using the given angle of rotation in degrees
/// </summary>
internal class HueProcessor : FilterProcessor
public class HueProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="HueProcessor"/> class.

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

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Applies a filter matrix that inverts the colors of an image
/// </summary>
internal class InvertProcessor : FilterProcessor
public class InvertProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="InvertProcessor"/> class.

2
src/ImageSharp/Processing/Processors/Filters/KodachromeProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Applies a filter matrix recreating an old Kodachrome camera effect matrix to the image
/// </summary>
internal class KodachromeProcessor : FilterProcessor
public class KodachromeProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="KodachromeProcessor"/> class.

3
src/ImageSharp/Processing/Processors/Filters/LomographProcessor.cs

@ -6,7 +6,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Converts the colors of the image recreating an old Lomograph effect.
/// </summary>
internal class LomographProcessor : FilterProcessor
public class LomographProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="LomographProcessor" /> class.
@ -16,6 +16,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
{
}
/// <inheritdoc />
public override IImageProcessor<TPixel> CreatePixelSpecificProcessor<TPixel>() =>
new LomographProcessor<TPixel>(this);
}

4
src/ImageSharp/Processing/Processors/Filters/LomographProcessor{TPixel}.cs

@ -15,6 +15,10 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
{
private static readonly TPixel VeryDarkGreen = ColorBuilder<TPixel>.FromRGBA(0, 10, 0, 255);
/// <summary>
/// Initializes a new instance of the <see cref="LomographProcessor{TPixel}"/> class.
/// </summary>
/// <param name="definition">The <see cref="LomographProcessor"/> defining the parameters.</param>
public LomographProcessor(LomographProcessor definition)
: base(definition)
{

4
src/ImageSharp/Processing/Processors/Filters/OpacityProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Applies an opacity filter matrix using the given amount.
/// </summary>
internal class OpacityProcessor : FilterProcessor
public class OpacityProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="OpacityProcessor"/> class.
@ -21,7 +21,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
}
/// <summary>
/// Gets the proportion of the conversion
/// Gets the proportion of the conversion.
/// </summary>
public float Amount { get; }
}

6
src/ImageSharp/Processing/Processors/Filters/PolaroidProcessor{TPixel}.cs

@ -16,7 +16,11 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
private static readonly TPixel VeryDarkOrange = ColorBuilder<TPixel>.FromRGB(102, 34, 0);
private static readonly TPixel LightOrange = ColorBuilder<TPixel>.FromRGBA(255, 153, 102, 128);
public PolaroidProcessor(FilterProcessor definition)
/// <summary>
/// Initializes a new instance of the <see cref="PolaroidProcessor{TPixel}"/> class.
/// </summary>
/// <param name="definition">The <see cref="PolaroidProcessor"/> defining the parameters.</param>
public PolaroidProcessor(PolaroidProcessor definition)
: base(definition)
{
}

2
src/ImageSharp/Processing/Processors/Filters/ProtanomalyProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Converts the colors of the image recreating Protanomaly (Red-Weak) color blindness.
/// </summary>
internal class ProtanomalyProcessor : FilterProcessor
public class ProtanomalyProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="ProtanomalyProcessor"/> class.

2
src/ImageSharp/Processing/Processors/Filters/ProtanopiaProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Converts the colors of the image recreating Protanopia (Red-Blind) color blindness.
/// </summary>
internal class ProtanopiaProcessor : FilterProcessor
public class ProtanopiaProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="ProtanopiaProcessor"/> class.

2
src/ImageSharp/Processing/Processors/Filters/SaturateProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Applies a saturation filter matrix using the given amount.
/// </summary>
internal class SaturateProcessor : FilterProcessor
public class SaturateProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="SaturateProcessor"/> class.

2
src/ImageSharp/Processing/Processors/Filters/SepiaProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Applies a sepia filter matrix using the given amount.
/// </summary>
internal class SepiaProcessor : FilterProcessor
public class SepiaProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="SepiaProcessor"/> class.

2
src/ImageSharp/Processing/Processors/Filters/TritanomalyProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Converts the colors of the image recreating Tritanomaly (Blue-Weak) color blindness.
/// </summary>
internal class TritanomalyProcessor : FilterProcessor
public class TritanomalyProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="TritanomalyProcessor"/> class.

2
src/ImageSharp/Processing/Processors/Filters/TritanopiaProcessor.cs

@ -8,7 +8,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Filters
/// <summary>
/// Converts the colors of the image recreating Tritanopia (Blue-Blind) color blindness.
/// </summary>
internal class TritanopiaProcessor : FilterProcessor
public class TritanopiaProcessor : FilterProcessor
{
/// <summary>
/// Initializes a new instance of the <see cref="TritanopiaProcessor"/> class.

56
src/ImageSharp/Processing/Processors/IImageProcessor.cs

@ -2,12 +2,14 @@
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Processing.Processors
{
/// <summary>
/// Defines an algorithm to alter the pixels of an image.
/// Non-generic <see cref="IImageProcessor"/> implementations are responsible for:
/// 1. Encapsulating the parameters of the algorithm.
/// 2. Creating the generic <see cref="IImageProcessor{TPixel}"/> instance to execute the algorithm.
/// </summary>
public interface IImageProcessor
{
@ -20,56 +22,4 @@ namespace SixLabors.ImageSharp.Processing.Processors
IImageProcessor<TPixel> CreatePixelSpecificProcessor<TPixel>()
where TPixel : struct, IPixel<TPixel>;
}
/// <summary>
/// Implements an algorithm to alter the pixels of an image.
/// </summary>
/// <typeparam name="TPixel">The pixel format.</typeparam>
public interface IImageProcessor<TPixel>
where TPixel : struct, IPixel<TPixel>
{
/// <summary>
/// Applies the process to the specified portion of the specified <see cref="ImageFrame{TPixel}"/>.
/// </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>
/// <exception cref="System.ArgumentNullException">
/// <paramref name="source"/> is null.
/// </exception>
/// <exception cref="System.ArgumentException">
/// <paramref name="sourceRectangle"/> doesn't fit the dimension of the image.
/// </exception>
void Apply(Image<TPixel> source, Rectangle sourceRectangle);
}
internal static class ImageProcessorExtensions
{
public static void Apply(this IImageProcessor processor, Image source, Rectangle sourceRectangle)
{
var visitor = new ApplyVisitor(processor, sourceRectangle);
source.AcceptVisitor(visitor);
}
private class ApplyVisitor : IImageVisitor
{
private readonly IImageProcessor processor;
private readonly Rectangle sourceRectangle;
public ApplyVisitor(IImageProcessor processor, Rectangle sourceRectangle)
{
this.processor = processor;
this.sourceRectangle = sourceRectangle;
}
public void Visit<TPixel>(Image<TPixel> image)
where TPixel : struct, IPixel<TPixel>
{
var processorImpl = this.processor.CreatePixelSpecificProcessor<TPixel>();
processorImpl.Apply(image, this.sourceRectangle);
}
}
}
}

31
src/ImageSharp/Processing/Processors/IImageProcessor{TPixel}.cs

@ -0,0 +1,31 @@
// // Copyright (c) Six Labors and contributors.
// // Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Processing.Processors
{
/// <summary>
/// Implements an algorithm to alter the pixels of an image.
/// </summary>
/// <typeparam name="TPixel">The pixel format.</typeparam>
public interface IImageProcessor<TPixel>
where TPixel : struct, IPixel<TPixel>
{
/// <summary>
/// Applies the process to the specified portion of the specified <see cref="ImageFrame{TPixel}"/>.
/// </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>
/// <exception cref="System.ArgumentNullException">
/// <paramref name="source"/> is null.
/// </exception>
/// <exception cref="System.ArgumentException">
/// <paramref name="sourceRectangle"/> doesn't fit the dimension of the image.
/// </exception>
void Apply(Image<TPixel> source, Rectangle sourceRectangle);
}
}

37
src/ImageSharp/Processing/Processors/ImageProcessorExtensions.cs

@ -0,0 +1,37 @@
// // Copyright (c) Six Labors and contributors.
// // Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Processing.Processors
{
internal static class ImageProcessorExtensions
{
public static void Apply(this IImageProcessor processor, Image source, Rectangle sourceRectangle)
{
var visitor = new ApplyVisitor(processor, sourceRectangle);
source.AcceptVisitor(visitor);
}
private class ApplyVisitor : IImageVisitor
{
private readonly IImageProcessor processor;
private readonly Rectangle sourceRectangle;
public ApplyVisitor(IImageProcessor processor, Rectangle sourceRectangle)
{
this.processor = processor;
this.sourceRectangle = sourceRectangle;
}
public void Visit<TPixel>(Image<TPixel> image)
where TPixel : struct, IPixel<TPixel>
{
var processorImpl = this.processor.CreatePixelSpecificProcessor<TPixel>();
processorImpl.Apply(image, this.sourceRectangle);
}
}
}
}
Loading…
Cancel
Save