mirror of https://github.com/SixLabors/ImageSharp
1 changed files with 168 additions and 0 deletions
@ -0,0 +1,168 @@ |
|||||
|
// <copyright file="PixelAccessorTests.cs" company="James Jackson-South">
|
||||
|
// Copyright (c) James Jackson-South and contributors.
|
||||
|
// Licensed under the Apache License, Version 2.0.
|
||||
|
// </copyright>
|
||||
|
|
||||
|
namespace ImageSharp.Tests |
||||
|
{ |
||||
|
using Xunit; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Tests the <see cref="PixelAccessor"/> class.
|
||||
|
/// </summary>
|
||||
|
public class PixelAccessorTests |
||||
|
{ |
||||
|
[Fact] |
||||
|
public void CopyFromZYX() |
||||
|
{ |
||||
|
CopyFromZYX(new Image<Color, uint>(1, 1)); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void CopyFromZYXOptimized() |
||||
|
{ |
||||
|
CopyFromZYX(new Image(1, 1)); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void CopyFromZYXW() |
||||
|
{ |
||||
|
CopyFromZYXW(new Image<Color, uint>(1, 1)); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void CopyFromZYXWOptimized() |
||||
|
{ |
||||
|
CopyFromZYXW(new Image(1, 1)); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void CopyToZYX() |
||||
|
{ |
||||
|
CopyToZYX(new Image<Color, uint>(1, 1)); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void CopyToZYXOptimized() |
||||
|
{ |
||||
|
CopyToZYX(new Image(1, 1)); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void CopyToZYXW() |
||||
|
{ |
||||
|
CopyToZYXW(new Image<Color, uint>(1, 1)); |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public void CopyToZYXWOptimized() |
||||
|
{ |
||||
|
CopyToZYXW(new Image(1, 1)); |
||||
|
} |
||||
|
|
||||
|
private static void CopyFromZYX<TColor, TPacked>(Image<TColor, TPacked> image) |
||||
|
where TColor : struct, IPackedPixel<TPacked> |
||||
|
where TPacked : struct |
||||
|
{ |
||||
|
using (PixelAccessor<TColor, TPacked> pixels = image.Lock()) |
||||
|
{ |
||||
|
byte red = 1; |
||||
|
byte green = 2; |
||||
|
byte blue = 3; |
||||
|
byte alpha = 255; |
||||
|
|
||||
|
using (PixelRow<TColor, TPacked> row = new PixelRow<TColor, TPacked>(1, ComponentOrder.ZYX)) |
||||
|
{ |
||||
|
row.Bytes[0] = blue; |
||||
|
row.Bytes[1] = green; |
||||
|
row.Bytes[2] = red; |
||||
|
|
||||
|
pixels.CopyFrom(row, 0); |
||||
|
|
||||
|
Color color = (Color) (object) pixels[0, 0]; |
||||
|
Assert.Equal(red, color.R); |
||||
|
Assert.Equal(green, color.G); |
||||
|
Assert.Equal(blue, color.B); |
||||
|
Assert.Equal(alpha, color.A); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private static void CopyFromZYXW<TColor, TPacked>(Image<TColor, TPacked> image) |
||||
|
where TColor : struct, IPackedPixel<TPacked> |
||||
|
where TPacked : struct |
||||
|
{ |
||||
|
using (PixelAccessor<TColor, TPacked> pixels = image.Lock()) |
||||
|
{ |
||||
|
byte red = 1; |
||||
|
byte green = 2; |
||||
|
byte blue = 3; |
||||
|
byte alpha = 4; |
||||
|
|
||||
|
using (PixelRow<TColor, TPacked> row = new PixelRow<TColor, TPacked>(1, ComponentOrder.ZYXW)) |
||||
|
{ |
||||
|
row.Bytes[0] = blue; |
||||
|
row.Bytes[1] = green; |
||||
|
row.Bytes[2] = red; |
||||
|
row.Bytes[3] = alpha; |
||||
|
|
||||
|
pixels.CopyFrom(row, 0); |
||||
|
|
||||
|
Color color = (Color) (object) pixels[0, 0]; |
||||
|
Assert.Equal(red, color.R); |
||||
|
Assert.Equal(green, color.G); |
||||
|
Assert.Equal(blue, color.B); |
||||
|
Assert.Equal(alpha, color.A); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private static void CopyToZYX<TColor, TPacked>(Image<TColor, TPacked> image) |
||||
|
where TColor : struct, IPackedPixel<TPacked> |
||||
|
where TPacked : struct |
||||
|
{ |
||||
|
using (PixelAccessor<TColor, TPacked> pixels = image.Lock()) |
||||
|
{ |
||||
|
byte red = 1; |
||||
|
byte green = 2; |
||||
|
byte blue = 3; |
||||
|
|
||||
|
using (PixelRow<TColor, TPacked> row = new PixelRow<TColor, TPacked>(1, ComponentOrder.ZYX)) |
||||
|
{ |
||||
|
pixels[0, 0] = (TColor) (object) new Color(red, green, blue); |
||||
|
|
||||
|
pixels.CopyTo(row, 0); |
||||
|
|
||||
|
Assert.Equal(blue, row.Bytes[0]); |
||||
|
Assert.Equal(green, row.Bytes[1]); |
||||
|
Assert.Equal(red, row.Bytes[2]); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private static void CopyToZYXW<TColor, TPacked>(Image<TColor, TPacked> image) |
||||
|
where TColor : struct, IPackedPixel<TPacked> |
||||
|
where TPacked : struct |
||||
|
{ |
||||
|
using (PixelAccessor<TColor, TPacked> pixels = image.Lock()) |
||||
|
{ |
||||
|
byte red = 1; |
||||
|
byte green = 2; |
||||
|
byte blue = 3; |
||||
|
byte alpha = 4; |
||||
|
|
||||
|
using (PixelRow<TColor, TPacked> row = new PixelRow<TColor, TPacked>(1, ComponentOrder.ZYXW)) |
||||
|
{ |
||||
|
pixels[0, 0] = (TColor) (object) new Color(red, green, blue, alpha); |
||||
|
|
||||
|
pixels.CopyTo(row, 0); |
||||
|
|
||||
|
Assert.Equal(blue, row.Bytes[0]); |
||||
|
Assert.Equal(green, row.Bytes[1]); |
||||
|
Assert.Equal(red, row.Bytes[2]); |
||||
|
Assert.Equal(alpha, row.Bytes[3]); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue