Browse Source

Move the rest of the transforms

af/merge-core
James Jackson-South 10 years ago
parent
commit
f82e528004
  1. 56
      src/ImageSharp/Filters/Processors/Transforms/FlipProcessor.cs
  2. 0
      src/ImageSharp/Filters/Processors/Transforms/Matrix3x2Processor.cs
  3. 0
      src/ImageSharp/Filters/Processors/Transforms/RotateProcessor.cs
  4. 0
      src/ImageSharp/Filters/Processors/Transforms/SkewProcessor.cs
  5. 2
      src/ImageSharp/Filters/Transforms/AutoOrient.cs
  6. 2
      src/ImageSharp/Filters/Transforms/Flip.cs
  7. 0
      src/ImageSharp/Filters/Transforms/Options/AnchorPosition.cs
  8. 0
      src/ImageSharp/Filters/Transforms/Options/FlipType.cs
  9. 0
      src/ImageSharp/Filters/Transforms/Options/Orientation.cs
  10. 0
      src/ImageSharp/Filters/Transforms/Options/ResizeHelper.cs
  11. 0
      src/ImageSharp/Filters/Transforms/Options/ResizeMode.cs
  12. 0
      src/ImageSharp/Filters/Transforms/Options/ResizeOptions.cs
  13. 0
      src/ImageSharp/Filters/Transforms/Options/RotateType.cs
  14. 0
      src/ImageSharp/Filters/Transforms/Pad.cs
  15. 0
      src/ImageSharp/Filters/Transforms/Resamplers/BicubicResampler.cs
  16. 0
      src/ImageSharp/Filters/Transforms/Resamplers/BoxResampler.cs
  17. 0
      src/ImageSharp/Filters/Transforms/Resamplers/CatmullRomResampler.cs
  18. 0
      src/ImageSharp/Filters/Transforms/Resamplers/HermiteResampler.cs
  19. 0
      src/ImageSharp/Filters/Transforms/Resamplers/IResampler.cs
  20. 0
      src/ImageSharp/Filters/Transforms/Resamplers/Lanczos2Resampler.cs
  21. 0
      src/ImageSharp/Filters/Transforms/Resamplers/Lanczos3Resampler.cs
  22. 0
      src/ImageSharp/Filters/Transforms/Resamplers/Lanczos5Resampler.cs
  23. 0
      src/ImageSharp/Filters/Transforms/Resamplers/Lanczos8Resampler.cs
  24. 0
      src/ImageSharp/Filters/Transforms/Resamplers/MitchellNetravaliResampler.cs
  25. 0
      src/ImageSharp/Filters/Transforms/Resamplers/NearestNeighborResampler.cs
  26. 0
      src/ImageSharp/Filters/Transforms/Resamplers/RobidouxResampler.cs
  27. 0
      src/ImageSharp/Filters/Transforms/Resamplers/RobidouxSharpResampler.cs
  28. 0
      src/ImageSharp/Filters/Transforms/Resamplers/SplineResampler.cs
  29. 0
      src/ImageSharp/Filters/Transforms/Resamplers/TriangleResampler.cs
  30. 0
      src/ImageSharp/Filters/Transforms/Resamplers/WelchResampler.cs
  31. 0
      src/ImageSharp/Filters/Transforms/Rotate.cs
  32. 0
      src/ImageSharp/Filters/Transforms/RotateFlip.cs
  33. 0
      src/ImageSharp/Filters/Transforms/Skew.cs

56
src/ImageSharp/Samplers/Processors/Transforms/FlipProcessor.cs → src/ImageSharp/Filters/Processors/Transforms/FlipProcessor.cs

@ -13,7 +13,7 @@ namespace ImageSharp.Processors
/// </summary>
/// <typeparam name="TColor">The pixel format.</typeparam>
/// <typeparam name="TPacked">The packed format. <example>uint, long, float.</example></typeparam>
public class FlipProcessor<TColor, TPacked> : ImageSamplingProcessor<TColor, TPacked>
public class FlipProcessor<TColor, TPacked> : ImageFilteringProcessor<TColor, TPacked>
where TColor : struct, IPackedPixel<TPacked>
where TPacked : struct
{
@ -32,18 +32,16 @@ namespace ImageSharp.Processors
public FlipType FlipType { get; }
/// <inheritdoc/>
public override void Apply(ImageBase<TColor, TPacked> target, ImageBase<TColor, TPacked> source, Rectangle targetRectangle, Rectangle sourceRectangle, int startY, int endY)
protected override void Apply(ImageBase<TColor, TPacked> source, Rectangle sourceRectangle, int startY, int endY)
{
target.ClonePixels(target.Width, target.Height, source.Pixels);
switch (this.FlipType)
{
// No default needed as we have already set the pixels.
case FlipType.Vertical:
this.FlipX(target);
this.FlipX(source);
break;
case FlipType.Horizontal:
this.FlipY(target);
this.FlipY(source);
break;
}
}
@ -52,17 +50,17 @@ namespace ImageSharp.Processors
/// Swaps the image at the X-axis, which goes horizontally through the middle
/// at half the height of the image.
/// </summary>
/// <param name="target">Target image to apply the process to.</param>
private void FlipX(ImageBase<TColor, TPacked> target)
/// <param name="source">The source image to apply the process to.</param>
private void FlipX(ImageBase<TColor, TPacked> source)
{
int width = target.Width;
int height = target.Height;
int halfHeight = (int)Math.Ceiling(target.Height * .5F);
Image<TColor, TPacked> temp = new Image<TColor, TPacked>(width, height);
temp.ClonePixels(width, height, target.Pixels);
int width = source.Width;
int height = source.Height;
int halfHeight = (int)Math.Ceiling(source.Height * .5F);
TColor[] target = new TColor[width * height];
using (PixelAccessor<TColor, TPacked> targetPixels = target.Lock())
using (PixelAccessor<TColor, TPacked> tempPixels = temp.Lock())
using (PixelAccessor<TColor, TPacked> sourcePixels = source.Lock())
using (PixelAccessor<TColor, TPacked> targetPixels = target.Lock<TColor, TPacked>(width, height))
{
Parallel.For(
0,
@ -73,28 +71,30 @@ namespace ImageSharp.Processors
for (int x = 0; x < width; x++)
{
int newY = height - y - 1;
targetPixels[x, y] = tempPixels[x, newY];
targetPixels[x, newY] = tempPixels[x, y];
targetPixels[x, y] = sourcePixels[x, newY];
targetPixels[x, newY] = sourcePixels[x, y];
}
});
}
source.SetPixels(width, height, target);
}
/// <summary>
/// Swaps the image at the Y-axis, which goes vertically through the middle
/// at half of the width of the image.
/// </summary>
/// <param name="target">Target image to apply the process to.</param>
private void FlipY(ImageBase<TColor, TPacked> target)
/// <param name="source">The source image to apply the process to.</param>
private void FlipY(ImageBase<TColor, TPacked> source)
{
int width = target.Width;
int height = target.Height;
int width = source.Width;
int height = source.Height;
int halfWidth = (int)Math.Ceiling(width * .5F);
Image<TColor, TPacked> temp = new Image<TColor, TPacked>(width, height);
temp.ClonePixels(width, height, target.Pixels);
using (PixelAccessor<TColor, TPacked> targetPixels = target.Lock())
using (PixelAccessor<TColor, TPacked> tempPixels = temp.Lock())
TColor[] target = new TColor[width * height];
using (PixelAccessor<TColor, TPacked> sourcePixels = source.Lock())
using (PixelAccessor<TColor, TPacked> targetPixels = target.Lock<TColor, TPacked>(width, height))
{
Parallel.For(
0,
@ -105,11 +105,13 @@ namespace ImageSharp.Processors
for (int x = 0; x < halfWidth; x++)
{
int newX = width - x - 1;
targetPixels[x, y] = tempPixels[newX, y];
targetPixels[newX, y] = tempPixels[x, y];
targetPixels[x, y] = sourcePixels[newX, y];
targetPixels[newX, y] = sourcePixels[x, y];
}
});
}
source.SetPixels(width, height, target);
}
}
}

0
src/ImageSharp/Samplers/Processors/Transforms/Matrix3x2Processor.cs → src/ImageSharp/Filters/Processors/Transforms/Matrix3x2Processor.cs

0
src/ImageSharp/Samplers/Processors/Transforms/RotateProcessor.cs → src/ImageSharp/Filters/Processors/Transforms/RotateProcessor.cs

0
src/ImageSharp/Samplers/Processors/Transforms/SkewProcessor.cs → src/ImageSharp/Filters/Processors/Transforms/SkewProcessor.cs

2
src/ImageSharp/Samplers/Transforms/AutoOrient.cs → src/ImageSharp/Filters/Transforms/AutoOrient.cs

@ -11,7 +11,7 @@ namespace ImageSharp
public static partial class ImageExtensions
{
/// <summary>
/// Adjusts an image so that its orientation is suitable for viewing.
/// Adjusts an image so that its orientation is suitable for viewing. Adjustments are based on EXIF metadata embedded in the image.
/// </summary>
/// <typeparam name="TColor">The pixel format.</typeparam>
/// <typeparam name="TPacked">The packed format. <example>uint, long, float.</example></typeparam>

2
src/ImageSharp/Samplers/Transforms/Flip.cs → src/ImageSharp/Filters/Transforms/Flip.cs

@ -25,7 +25,7 @@ namespace ImageSharp
where TPacked : struct
{
FlipProcessor<TColor, TPacked> processor = new FlipProcessor<TColor, TPacked>(flipType);
return source.Process(source.Width, source.Height, source.Bounds, source.Bounds, processor);
return source.Process(source.Bounds, processor);
}
}
}

0
src/ImageSharp/Samplers/Transforms/Options/AnchorPosition.cs → src/ImageSharp/Filters/Transforms/Options/AnchorPosition.cs

0
src/ImageSharp/Samplers/Transforms/Options/FlipType.cs → src/ImageSharp/Filters/Transforms/Options/FlipType.cs

0
src/ImageSharp/Samplers/Transforms/Options/Orientation.cs → src/ImageSharp/Filters/Transforms/Options/Orientation.cs

0
src/ImageSharp/Samplers/Transforms/Options/ResizeHelper.cs → src/ImageSharp/Filters/Transforms/Options/ResizeHelper.cs

0
src/ImageSharp/Samplers/Transforms/Options/ResizeMode.cs → src/ImageSharp/Filters/Transforms/Options/ResizeMode.cs

0
src/ImageSharp/Samplers/Transforms/Options/ResizeOptions.cs → src/ImageSharp/Filters/Transforms/Options/ResizeOptions.cs

0
src/ImageSharp/Samplers/Transforms/Options/RotateType.cs → src/ImageSharp/Filters/Transforms/Options/RotateType.cs

0
src/ImageSharp/Samplers/Transforms/Pad.cs → src/ImageSharp/Filters/Transforms/Pad.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/BicubicResampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/BicubicResampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/BoxResampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/BoxResampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/CatmullRomResampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/CatmullRomResampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/HermiteResampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/HermiteResampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/IResampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/IResampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/Lanczos2Resampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/Lanczos2Resampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/Lanczos3Resampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/Lanczos3Resampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/Lanczos5Resampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/Lanczos5Resampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/Lanczos8Resampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/Lanczos8Resampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/MitchellNetravaliResampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/MitchellNetravaliResampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/NearestNeighborResampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/NearestNeighborResampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/RobidouxResampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/RobidouxResampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/RobidouxSharpResampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/RobidouxSharpResampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/SplineResampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/SplineResampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/TriangleResampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/TriangleResampler.cs

0
src/ImageSharp/Samplers/Transforms/Resamplers/WelchResampler.cs → src/ImageSharp/Filters/Transforms/Resamplers/WelchResampler.cs

0
src/ImageSharp/Samplers/Transforms/Rotate.cs → src/ImageSharp/Filters/Transforms/Rotate.cs

0
src/ImageSharp/Samplers/Transforms/RotateFlip.cs → src/ImageSharp/Filters/Transforms/RotateFlip.cs

0
src/ImageSharp/Samplers/Transforms/Skew.cs → src/ImageSharp/Filters/Transforms/Skew.cs

Loading…
Cancel
Save