From c11751e6c53bc40e18db0475f0bfb035c13c07ac Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Fri, 15 Jul 2016 19:30:39 +1000 Subject: [PATCH] No need for second type param Former-commit-id: 19180d2962371ebdbe77b1e08a1867b8630abf43 Former-commit-id: 84da094533206cb0c1a859a438fe6a937af9fa77 Former-commit-id: 3094f56fbf68569748a6b31f3874cf716ed673b6 --- src/ImageProcessorCore/Bootstrapper.cs | 2 +- src/ImageProcessorCore/Formats/Bmp/BmpDecoder.cs | 2 +- src/ImageProcessorCore/Formats/Bmp/BmpDecoderCore.cs | 10 +++++----- src/ImageProcessorCore/Formats/Bmp/BmpEncoder.cs | 2 +- src/ImageProcessorCore/Formats/Bmp/BmpEncoderCore.cs | 8 ++++---- src/ImageProcessorCore/Formats/IImageDecoder.cs | 2 +- src/ImageProcessorCore/Formats/IImageEncoder.cs | 2 +- src/ImageProcessorCore/Image/IImageBase.cs | 2 +- src/ImageProcessorCore/Image/IImageFrame.cs | 2 +- src/ImageProcessorCore/Image/IImageProcessor.cs | 4 ++-- src/ImageProcessorCore/Image/Image.cs | 2 +- src/ImageProcessorCore/Image/ImageBase.cs | 2 +- src/ImageProcessorCore/Image/ImageExtensions.cs | 10 +++++----- src/ImageProcessorCore/Image/ImageFrame.cs | 2 +- src/ImageProcessorCore/ImageProcessor.cs | 10 +++++----- src/ImageProcessorCore/PackedVector/Bgra32.cs | 2 +- src/ImageProcessorCore/PackedVector/IPackedVector.cs | 3 +-- .../PixelAccessor/IPixelAccessor.cs | 9 +++++++-- .../Samplers/Options/ResizeHelper.cs | 12 ++++++------ src/ImageProcessorCore/Samplers/Resize.cs | 10 +++++----- 20 files changed, 51 insertions(+), 47 deletions(-) diff --git a/src/ImageProcessorCore/Bootstrapper.cs b/src/ImageProcessorCore/Bootstrapper.cs index 98537c46a..a61111992 100644 --- a/src/ImageProcessorCore/Bootstrapper.cs +++ b/src/ImageProcessorCore/Bootstrapper.cs @@ -74,7 +74,7 @@ namespace ImageProcessorCore /// The image /// The public IPixelAccessor GetPixelAccessor(IImageBase image) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { Type packed = typeof(T); diff --git a/src/ImageProcessorCore/Formats/Bmp/BmpDecoder.cs b/src/ImageProcessorCore/Formats/Bmp/BmpDecoder.cs index f55fa28ed..916bddce7 100644 --- a/src/ImageProcessorCore/Formats/Bmp/BmpDecoder.cs +++ b/src/ImageProcessorCore/Formats/Bmp/BmpDecoder.cs @@ -75,7 +75,7 @@ namespace ImageProcessorCore.Formats /// The to decode to. /// The containing image data. public void Decode(Image image, Stream stream) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { new BmpDecoderCore().Decode(image, stream); diff --git a/src/ImageProcessorCore/Formats/Bmp/BmpDecoderCore.cs b/src/ImageProcessorCore/Formats/Bmp/BmpDecoderCore.cs index 03bbe6396..ee52c4ebf 100644 --- a/src/ImageProcessorCore/Formats/Bmp/BmpDecoderCore.cs +++ b/src/ImageProcessorCore/Formats/Bmp/BmpDecoderCore.cs @@ -60,7 +60,7 @@ namespace ImageProcessorCore.Formats /// is null. /// public void Decode(Image image, Stream stream) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { this.currentStream = stream; @@ -195,7 +195,7 @@ namespace ImageProcessorCore.Formats /// The number of bits per pixel. /// Whether the bitmap is inverted. private void ReadRgbPalette(T[] imageData, byte[] colors, int width, int height, int bits, bool inverted) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { // Pixels per byte (bits per pixel) @@ -256,7 +256,7 @@ namespace ImageProcessorCore.Formats /// The height of the bitmap. /// Whether the bitmap is inverted. private void ReadRgb16(T[] imageData, int width, int height, bool inverted) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { // We divide here as we will store the colors in our floating point format. @@ -305,7 +305,7 @@ namespace ImageProcessorCore.Formats /// The height of the bitmap. /// Whether the bitmap is inverted. private void ReadRgb24(T[] imageData, int width, int height, bool inverted) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { int alignment; @@ -344,7 +344,7 @@ namespace ImageProcessorCore.Formats /// The height of the bitmap. /// Whether the bitmap is inverted. private void ReadRgb32(T[] imageData, int width, int height, bool inverted) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { int alignment; diff --git a/src/ImageProcessorCore/Formats/Bmp/BmpEncoder.cs b/src/ImageProcessorCore/Formats/Bmp/BmpEncoder.cs index b7fbdd12a..07ada9c05 100644 --- a/src/ImageProcessorCore/Formats/Bmp/BmpEncoder.cs +++ b/src/ImageProcessorCore/Formats/Bmp/BmpEncoder.cs @@ -44,7 +44,7 @@ namespace ImageProcessorCore.Formats /// public void Encode(ImageBase image, Stream stream) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { BmpEncoderCore encoder = new BmpEncoderCore(); diff --git a/src/ImageProcessorCore/Formats/Bmp/BmpEncoderCore.cs b/src/ImageProcessorCore/Formats/Bmp/BmpEncoderCore.cs index de67b9fe4..cc26ea700 100644 --- a/src/ImageProcessorCore/Formats/Bmp/BmpEncoderCore.cs +++ b/src/ImageProcessorCore/Formats/Bmp/BmpEncoderCore.cs @@ -29,7 +29,7 @@ namespace ImageProcessorCore.Formats /// The to encode the image data to. /// The public void Encode(ImageBase image, Stream stream, BmpBitsPerPixel bitsPerPixel) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { Guard.NotNull(image, nameof(image)); @@ -129,7 +129,7 @@ namespace ImageProcessorCore.Formats /// The containing pixel data. /// private void WriteImage(EndianBinaryWriter writer, ImageBase image) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { // TODO: Add more compression formats. @@ -162,7 +162,7 @@ namespace ImageProcessorCore.Formats /// The containing pixel data. /// The amount to pad each row by. private void Write32bit(EndianBinaryWriter writer, IPixelAccessor pixels, int amount) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { for (int y = pixels.Height - 1; y >= 0; y--) @@ -189,7 +189,7 @@ namespace ImageProcessorCore.Formats /// The containing pixel data. /// The amount to pad each row by. private void Write24bit(EndianBinaryWriter writer, IPixelAccessor pixels, int amount) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { for (int y = pixels.Height - 1; y >= 0; y--) diff --git a/src/ImageProcessorCore/Formats/IImageDecoder.cs b/src/ImageProcessorCore/Formats/IImageDecoder.cs index e2e89f2df..09dbcdb1e 100644 --- a/src/ImageProcessorCore/Formats/IImageDecoder.cs +++ b/src/ImageProcessorCore/Formats/IImageDecoder.cs @@ -45,7 +45,7 @@ namespace ImageProcessorCore.Formats /// The to decode to. /// The containing image data. void Decode(Image image, Stream stream) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct; } } diff --git a/src/ImageProcessorCore/Formats/IImageEncoder.cs b/src/ImageProcessorCore/Formats/IImageEncoder.cs index f040619e5..773896863 100644 --- a/src/ImageProcessorCore/Formats/IImageEncoder.cs +++ b/src/ImageProcessorCore/Formats/IImageEncoder.cs @@ -49,7 +49,7 @@ namespace ImageProcessorCore.Formats /// The to encode from. /// The to encode the image data to. void Encode(ImageBase image, Stream stream) - where T : IPackedVector, + where T : IPackedVector, new() where TP : struct; } } diff --git a/src/ImageProcessorCore/Image/IImageBase.cs b/src/ImageProcessorCore/Image/IImageBase.cs index cdee55cd6..a168f91cc 100644 --- a/src/ImageProcessorCore/Image/IImageBase.cs +++ b/src/ImageProcessorCore/Image/IImageBase.cs @@ -13,7 +13,7 @@ namespace ImageProcessorCore /// The pixel format. /// The packed format. long, float. public interface IImageBase : IImageBase - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { /// diff --git a/src/ImageProcessorCore/Image/IImageFrame.cs b/src/ImageProcessorCore/Image/IImageFrame.cs index 4907019e0..6e51a8300 100644 --- a/src/ImageProcessorCore/Image/IImageFrame.cs +++ b/src/ImageProcessorCore/Image/IImageFrame.cs @@ -11,7 +11,7 @@ namespace ImageProcessorCore /// The pixel format. /// The packed format. long, float. public interface IImageFrame : IImageBase - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { } diff --git a/src/ImageProcessorCore/Image/IImageProcessor.cs b/src/ImageProcessorCore/Image/IImageProcessor.cs index b817be724..4241b88c7 100644 --- a/src/ImageProcessorCore/Image/IImageProcessor.cs +++ b/src/ImageProcessorCore/Image/IImageProcessor.cs @@ -47,7 +47,7 @@ namespace ImageProcessorCore.Processors /// doesnt fit the dimension of the image. /// void Apply(ImageBase target, ImageBase source, Rectangle sourceRectangle) - where T : IPackedVector, + where T : IPackedVector, new() where TP : struct; /// @@ -72,7 +72,7 @@ namespace ImageProcessorCore.Processors /// the result of image process as new image. /// void Apply(ImageBase target, ImageBase source, int width, int height, Rectangle targetRectangle, Rectangle sourceRectangle) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct; } } diff --git a/src/ImageProcessorCore/Image/Image.cs b/src/ImageProcessorCore/Image/Image.cs index 8156b17e6..2c7ceeab1 100644 --- a/src/ImageProcessorCore/Image/Image.cs +++ b/src/ImageProcessorCore/Image/Image.cs @@ -20,7 +20,7 @@ namespace ImageProcessorCore /// The pixel format. /// The packed format. long, float. public class Image : ImageBase - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { /// diff --git a/src/ImageProcessorCore/Image/ImageBase.cs b/src/ImageProcessorCore/Image/ImageBase.cs index 6cd0ca615..2ec1538b7 100644 --- a/src/ImageProcessorCore/Image/ImageBase.cs +++ b/src/ImageProcessorCore/Image/ImageBase.cs @@ -14,7 +14,7 @@ namespace ImageProcessorCore /// The pixel format. /// The packed format. long, float. public abstract class ImageBase : IImageBase - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { /// diff --git a/src/ImageProcessorCore/Image/ImageExtensions.cs b/src/ImageProcessorCore/Image/ImageExtensions.cs index 087edd655..67b126318 100644 --- a/src/ImageProcessorCore/Image/ImageExtensions.cs +++ b/src/ImageProcessorCore/Image/ImageExtensions.cs @@ -63,7 +63,7 @@ namespace ImageProcessorCore /// The processor to apply to the image. /// The . public static Image Process(this Image source, IImageProcessor processor) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { return Process(source, source.Bounds, processor); @@ -82,7 +82,7 @@ namespace ImageProcessorCore /// The processors to apply to the image. /// The . public static Image Process(this Image source, Rectangle sourceRectangle, IImageProcessor processor) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { return PerformAction(source, true, (sourceImage, targetImage) => processor.Apply(targetImage, sourceImage, sourceRectangle)); @@ -102,7 +102,7 @@ namespace ImageProcessorCore /// The processor to apply to the image. /// The . public static Image Process(this Image source, int width, int height, IImageSampler sampler) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { return Process(source, width, height, source.Bounds, default(Rectangle), sampler); @@ -129,7 +129,7 @@ namespace ImageProcessorCore /// The processor to apply to the image. /// The . public static Image Process(this Image source, int width, int height, Rectangle sourceRectangle, Rectangle targetRectangle, IImageSampler sampler) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { return PerformAction(source, false, (sourceImage, targetImage) => sampler.Apply(targetImage, sourceImage, width, height, targetRectangle, sourceRectangle)); @@ -145,7 +145,7 @@ namespace ImageProcessorCore /// The to perform against the image. /// The . private static Image PerformAction(Image source, bool clone, Action, ImageBase> action) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { Image transformedImage = clone diff --git a/src/ImageProcessorCore/Image/ImageFrame.cs b/src/ImageProcessorCore/Image/ImageFrame.cs index 0cf3ef1e0..4afb12a94 100644 --- a/src/ImageProcessorCore/Image/ImageFrame.cs +++ b/src/ImageProcessorCore/Image/ImageFrame.cs @@ -11,7 +11,7 @@ namespace ImageProcessorCore /// The pixel format. /// The packed format. long, float. public class ImageFrame : ImageBase - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { /// diff --git a/src/ImageProcessorCore/ImageProcessor.cs b/src/ImageProcessorCore/ImageProcessor.cs index 84c5647c4..c7c0f4e1b 100644 --- a/src/ImageProcessorCore/ImageProcessor.cs +++ b/src/ImageProcessorCore/ImageProcessor.cs @@ -28,7 +28,7 @@ namespace ImageProcessorCore.Processors /// public void Apply(ImageBase target, ImageBase source, Rectangle sourceRectangle) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { try @@ -51,7 +51,7 @@ namespace ImageProcessorCore.Processors /// public void Apply(ImageBase target, ImageBase source, int width, int height, Rectangle targetRectangle = default(Rectangle), Rectangle sourceRectangle = default(Rectangle)) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { try @@ -100,7 +100,7 @@ namespace ImageProcessorCore.Processors /// The structure that specifies the portion of the image object to draw. /// protected virtual void OnApply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { } @@ -127,7 +127,7 @@ namespace ImageProcessorCore.Processors /// the result of image process as new image. /// protected abstract void Apply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle, int startY, int endY) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct; /// @@ -145,7 +145,7 @@ namespace ImageProcessorCore.Processors /// The structure that specifies the portion of the image object to draw. /// protected virtual void AfterApply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { } diff --git a/src/ImageProcessorCore/PackedVector/Bgra32.cs b/src/ImageProcessorCore/PackedVector/Bgra32.cs index e519a8742..73ff87d9f 100644 --- a/src/ImageProcessorCore/PackedVector/Bgra32.cs +++ b/src/ImageProcessorCore/PackedVector/Bgra32.cs @@ -13,7 +13,7 @@ namespace ImageProcessorCore /// Packed vector type containing four 8-bit unsigned normalized values ranging from 0 to 255. /// [StructLayout(LayoutKind.Explicit)] - public struct Bgra32 : IPackedVector, IEquatable + public struct Bgra32 : IPackedVector, IEquatable { /// /// Gets or sets the blue component. diff --git a/src/ImageProcessorCore/PackedVector/IPackedVector.cs b/src/ImageProcessorCore/PackedVector/IPackedVector.cs index a528559ef..a32870b2e 100644 --- a/src/ImageProcessorCore/PackedVector/IPackedVector.cs +++ b/src/ImageProcessorCore/PackedVector/IPackedVector.cs @@ -11,9 +11,8 @@ namespace ImageProcessorCore /// An interface that converts packed vector types to and from values, /// allowing multiple encodings to be manipulated in a generic way. /// - /// The pixel format. /// The packed format. long, float. - public interface IPackedVector : IPackedVector + public interface IPackedVector : IPackedVector where TP : struct { /// diff --git a/src/ImageProcessorCore/PixelAccessor/IPixelAccessor.cs b/src/ImageProcessorCore/PixelAccessor/IPixelAccessor.cs index 20830e4a8..15cd3268b 100644 --- a/src/ImageProcessorCore/PixelAccessor/IPixelAccessor.cs +++ b/src/ImageProcessorCore/PixelAccessor/IPixelAccessor.cs @@ -6,12 +6,14 @@ namespace ImageProcessorCore { using System; - + /// /// Encapsulates properties to provides per-pixel access to an images pixels. /// + /// The pixel format. + /// The packed format. long, float. public interface IPixelAccessor : IPixelAccessor - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { /// @@ -33,6 +35,9 @@ namespace ImageProcessorCore } } + /// + /// Encapsulates properties to provides per-pixel access to an images pixels. + /// public interface IPixelAccessor : IDisposable { /// diff --git a/src/ImageProcessorCore/Samplers/Options/ResizeHelper.cs b/src/ImageProcessorCore/Samplers/Options/ResizeHelper.cs index 181b8b5e1..e99bfbbf0 100644 --- a/src/ImageProcessorCore/Samplers/Options/ResizeHelper.cs +++ b/src/ImageProcessorCore/Samplers/Options/ResizeHelper.cs @@ -24,7 +24,7 @@ namespace ImageProcessorCore /// The . /// public static Rectangle CalculateTargetLocationAndBounds(ImageBase source, ResizeOptions options) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { switch (options.Mode) @@ -56,7 +56,7 @@ namespace ImageProcessorCore /// The . /// private static Rectangle CalculateCropRectangle(ImageBase source, ResizeOptions options) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { int width = options.Size.Width; @@ -176,7 +176,7 @@ namespace ImageProcessorCore /// The . /// private static Rectangle CalculatePadRectangle(ImageBase source, ResizeOptions options) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { int width = options.Size.Width; @@ -258,7 +258,7 @@ namespace ImageProcessorCore /// The . /// private static Rectangle CalculateBoxPadRectangle(ImageBase source, ResizeOptions options) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { int width = options.Size.Width; @@ -346,7 +346,7 @@ namespace ImageProcessorCore /// The . /// private static Rectangle CalculateMaxRectangle(ImageBase source, ResizeOptions options) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { int width = options.Size.Width; @@ -388,7 +388,7 @@ namespace ImageProcessorCore /// The . /// private static Rectangle CalculateMinRectangle(ImageBase source, ResizeOptions options) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { int width = options.Size.Width; diff --git a/src/ImageProcessorCore/Samplers/Resize.cs b/src/ImageProcessorCore/Samplers/Resize.cs index 6eec422db..7a08e95bf 100644 --- a/src/ImageProcessorCore/Samplers/Resize.cs +++ b/src/ImageProcessorCore/Samplers/Resize.cs @@ -22,7 +22,7 @@ namespace ImageProcessorCore /// The /// Passing zero for one of height or width within the resize options will automatically preserve the aspect ratio of the original image public static Image Resize(this Image source, ResizeOptions options, ProgressEventHandler progressHandler = null) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { // Ensure size is populated across both dimensions. @@ -52,7 +52,7 @@ namespace ImageProcessorCore /// The /// Passing zero for one of height or width will automatically preserve the aspect ratio of the original image public static Image Resize(this Image source, int width, int height, ProgressEventHandler progressHandler = null) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { return Resize(source, width, height, new BicubicResampler(), false, progressHandler); @@ -70,7 +70,7 @@ namespace ImageProcessorCore /// The /// Passing zero for one of height or width will automatically preserve the aspect ratio of the original image public static Image Resize(this Image source, int width, int height, bool compand, ProgressEventHandler progressHandler = null) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { return Resize(source, width, height, new BicubicResampler(), compand, progressHandler); @@ -89,7 +89,7 @@ namespace ImageProcessorCore /// The /// Passing zero for one of height or width will automatically preserve the aspect ratio of the original image public static Image Resize(this Image source, int width, int height, IResampler sampler, bool compand, ProgressEventHandler progressHandler = null) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { return Resize(source, width, height, sampler, source.Bounds, new Rectangle(0, 0, width, height), compand, progressHandler); @@ -115,7 +115,7 @@ namespace ImageProcessorCore /// The /// Passing zero for one of height or width will automatically preserve the aspect ratio of the original image public static Image Resize(this Image source, int width, int height, IResampler sampler, Rectangle sourceRectangle, Rectangle targetRectangle, bool compand = false, ProgressEventHandler progressHandler = null) - where T : IPackedVector, new() + where T : IPackedVector, new() where TP : struct { if (width == 0 && height > 0)