Browse Source

refactor some of the PixelOperations. Ready to T4 the rest

af/merge-core
Anton Firszov 9 years ago
parent
commit
898b925844
  1. 4
      src/ImageSharp/Formats/Png/PngDecoderCore.cs
  2. 2
      src/ImageSharp/Formats/Png/PngEncoderCore.cs
  3. 6
      src/ImageSharp/Image/PixelAccessor{TPixel}.cs
  4. 54
      src/ImageSharp/PixelFormats/PixelOperations{TPixel}.cs
  5. 32
      src/ImageSharp/PixelFormats/Rgba32.PixelOperations.cs
  6. 2
      src/ImageSharp/Quantizers/PaletteQuantizer{TPixel}.cs
  7. 4
      src/Shared/stylecop.json
  8. 4
      tests/ImageSharp.Benchmarks/Color/Bulk/PackFromXyzw.cs
  9. 4
      tests/ImageSharp.Benchmarks/Color/Bulk/ToXyz.cs
  10. 202
      tests/ImageSharp.Tests/MetaData/Profiles/ICC/DataReader/IccDataReader.TagDataEntryTests.cs
  11. 6
      tests/ImageSharp.Tests/PixelFormats/PixelOperationsTests.cs

4
src/ImageSharp/Formats/Png/PngDecoderCore.cs

@ -603,13 +603,13 @@ namespace ImageSharp.Formats
case PngColorType.Rgb:
PixelOperations<TPixel>.Instance.PackFromXyzBytes(scanlineBuffer, rowSpan, this.header.Width);
PixelOperations<TPixel>.Instance.PackFromRgb24Bytes(scanlineBuffer, rowSpan, this.header.Width);
break;
case PngColorType.RgbWithAlpha:
PixelOperations<TPixel>.Instance.PackFromXyzwBytes(scanlineBuffer, rowSpan, this.header.Width);
PixelOperations<TPixel>.Instance.PackFromRgba32Bytes(scanlineBuffer, rowSpan, this.header.Width);
break;
}

2
src/ImageSharp/Formats/Png/PngEncoderCore.cs

@ -342,7 +342,7 @@ namespace ImageSharp.Formats
}
else
{
PixelOperations<TPixel>.Instance.ToXyzBytes(rowSpan, this.rawScanline, this.width);
PixelOperations<TPixel>.Instance.ToRgb24Bytes(rowSpan, this.rawScanline, this.width);
}
}

6
src/ImageSharp/Image/PixelAccessor{TPixel}.cs

@ -315,7 +315,7 @@ namespace ImageSharp
Span<byte> source = area.GetRowSpan(y);
Span<TPixel> destination = this.GetRowSpan(targetX, targetY + y);
Operations.PackFromXyzBytes(source, destination, width);
Operations.PackFromRgb24Bytes(source, destination, width);
}
}
@ -334,7 +334,7 @@ namespace ImageSharp
{
Span<byte> source = area.GetRowSpan(y);
Span<TPixel> destination = this.GetRowSpan(targetX, targetY + y);
Operations.PackFromXyzwBytes(source, destination, width);
Operations.PackFromRgba32Bytes(source, destination, width);
}
}
@ -391,7 +391,7 @@ namespace ImageSharp
{
Span<TPixel> source = this.GetRowSpan(sourceX, sourceY + y);
Span<byte> destination = area.GetRowSpan(y);
Operations.ToXyzBytes(source, destination, width);
Operations.ToRgb24Bytes(source, destination, width);
}
}

54
src/ImageSharp/PixelFormats/PixelOperations{TPixel}.cs

@ -65,18 +65,13 @@ namespace ImageSharp.PixelFormats
dp = sp.ToVector4();
}
}
/// <summary>
/// Bulk version of <see cref="IPixel.PackFromRgba32(Rgba32)"/> that converts data in <see cref="ComponentOrder.Xyz"/>.
/// Converts 'count' elements in 'source` span of <see cref="Rgb24"/> data to a span of <typeparamref name="TPixel"/>-s.
/// </summary>
/// <param name="sourceBytes">The <see cref="Span{T}"/> to the source bytes.</param>
/// <param name="destColors">The <see cref="Span{T}"/> to the destination colors.</param>
/// <param name="source">The source span of <see cref="Rgb24"/> data.</param>
/// <param name="destPixels">The <see cref="Span{T}"/> to the destination pixels.</param>
/// <param name="count">The number of pixels to convert.</param>
internal virtual void PackFromXyzBytes(Span<byte> sourceBytes, Span<TPixel> destColors, int count)
{
this.PackFromRgb24(sourceBytes.NonPortableCast<byte, Rgb24>(), destColors, count);
}
internal virtual void PackFromRgb24(Span<Rgb24> source, Span<TPixel> destPixels, int count)
{
Guard.MustBeSizedAtLeast(source, count, nameof(source));
@ -96,32 +91,53 @@ namespace ImageSharp.PixelFormats
}
/// <summary>
/// Bulk version of <see cref="PixelConversionExtensions.ToXyzBytes{TPixel}(TPixel, Span{byte}, int)"/>.
/// A version of <see cref="PackFromBgr24(Span{Bgr24}, Span{TPixel}, int)"/> that expects a byte span to be converted to
/// Bulk version of <see cref="IPixel.PackFromRgba32(Rgba32)"/>
/// that converts bytes expected in R->G->B order compatible to <see cref="Rgb24"/> layout.
/// </summary>
/// <param name="sourceColors">The <see cref="Span{T}"/> to the source colors.</param>
/// <param name="destBytes">The <see cref="Span{T}"/> to the destination bytes.</param>
/// <param name="sourceBytes">The <see cref="Span{T}"/> to the source bytes.</param>
/// <param name="destPixels">The <see cref="Span{T}"/> to the destination pixels.</param>
/// <param name="count">The number of pixels to convert.</param>
internal virtual void ToXyzBytes(Span<TPixel> sourceColors, Span<byte> destBytes, int count)
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal void PackFromRgb24Bytes(Span<byte> sourceBytes, Span<TPixel> destPixels, int count)
{
Guard.MustBeSizedAtLeast(sourceColors, count, nameof(sourceColors));
Guard.MustBeSizedAtLeast(destBytes, count * 3, nameof(destBytes));
this.PackFromRgb24(sourceBytes.NonPortableCast<byte, Rgb24>(), destPixels, count);
}
ref TPixel sourceRef = ref sourceColors.DangerousGetPinnableReference();
internal virtual void ToRgb24(Span<TPixel> sourcePixels, Span<Rgb24> dest, int count)
{
Guard.MustBeSizedAtLeast(sourcePixels, count, nameof(sourcePixels));
Guard.MustBeSizedAtLeast(dest, count, nameof(dest));
ref TPixel sourceBaseRef = ref sourcePixels.DangerousGetPinnableReference();
ref Rgb24 destBaseRef = ref dest.DangerousGetPinnableReference();
for (int i = 0; i < count; i++)
{
ref TPixel sp = ref Unsafe.Add(ref sourceRef, i);
sp.ToXyzBytes(destBytes, i * 3);
ref TPixel sp = ref Unsafe.Add(ref sourceBaseRef, i);
ref Rgb24 dp = ref Unsafe.Add(ref destBaseRef, i);
sp.ToRgb24(ref dp);
}
}
/// <summary>
/// Bulk version of <see cref="PixelConversionExtensions.ToRgb24Bytes{TPixel}(TPixel, Span{byte}, int)"/>.
/// </summary>
/// <param name="sourceColors">The <see cref="Span{T}"/> to the source colors.</param>
/// <param name="destBytes">The <see cref="Span{T}"/> to the destination bytes.</param>
/// <param name="count">The number of pixels to convert.</param>
internal void ToRgb24Bytes(Span<TPixel> sourceColors, Span<byte> destBytes, int count)
{
this.ToRgb24(sourceColors, destBytes.NonPortableCast<byte, Rgb24>(), count);
}
/// <summary>
/// Bulk version of <see cref="IPixel.PackFromRgba32(Rgba32)"/> that converts data in <see cref="ComponentOrder.Xyzw"/>.
/// </summary>
/// <param name="sourceBytes">The <see cref="Span{T}"/> to the source bytes.</param>
/// <param name="destColors">The <see cref="Span{T}"/> to the destination colors.</param>
/// <param name="count">The number of pixels to convert.</param>
internal virtual void PackFromXyzwBytes(Span<byte> sourceBytes, Span<TPixel> destColors, int count)
internal virtual void PackFromRgba32Bytes(Span<byte> sourceBytes, Span<TPixel> destColors, int count)
{
this.PackFromRgba32(sourceBytes.NonPortableCast<byte, Rgba32>(), destColors, count);
}

32
src/ImageSharp/PixelFormats/Rgba32.PixelOperations.cs

@ -120,45 +120,43 @@ namespace ImageSharp
}
}
/// <inheritdoc />
internal override void PackFromXyzBytes(Span<byte> sourceBytes, Span<Rgba32> destColors, int count)
internal override void PackFromRgb24(Span<Rgb24> source, Span<Rgba32> destPixels, int count)
{
Guard.MustBeSizedAtLeast(sourceBytes, count * 3, nameof(sourceBytes));
Guard.MustBeSizedAtLeast(destColors, count, nameof(destColors));
Guard.MustBeSizedAtLeast(source, count, nameof(source));
Guard.MustBeSizedAtLeast(destPixels, count, nameof(destPixels));
ref RGB24 sourceRef = ref Unsafe.As<byte, RGB24>(ref sourceBytes.DangerousGetPinnableReference());
ref Rgba32 destRef = ref destColors.DangerousGetPinnableReference();
ref Rgb24 sourceRef = ref source.DangerousGetPinnableReference();
ref Rgba32 destRef = ref destPixels.DangerousGetPinnableReference();
for (int i = 0; i < count; i++)
{
ref RGB24 sp = ref Unsafe.Add(ref sourceRef, i);
ref Rgb24 sp = ref Unsafe.Add(ref sourceRef, i);
ref Rgba32 dp = ref Unsafe.Add(ref destRef, i);
Unsafe.As<Rgba32, RGB24>(ref dp) = sp;
Unsafe.As<Rgba32, Rgb24>(ref dp) = sp;
dp.A = 255;
}
}
/// <inheritdoc />
internal override void ToXyzBytes(Span<Rgba32> sourceColors, Span<byte> destBytes, int count)
internal override void ToRgb24(Span<Rgba32> sourcePixels, Span<Rgb24> dest, int count)
{
Guard.MustBeSizedAtLeast(sourceColors, count, nameof(sourceColors));
Guard.MustBeSizedAtLeast(destBytes, count * 3, nameof(destBytes));
Guard.MustBeSizedAtLeast(sourcePixels, count, nameof(sourcePixels));
Guard.MustBeSizedAtLeast(dest, count, nameof(dest));
ref Rgba32 sourceRef = ref sourceColors.DangerousGetPinnableReference();
ref RGB24 destRef = ref Unsafe.As<byte, RGB24>(ref destBytes.DangerousGetPinnableReference());
ref Rgba32 sourceRef = ref sourcePixels.DangerousGetPinnableReference();
ref Rgb24 destRef = ref dest.DangerousGetPinnableReference();
for (int i = 0; i < count; i++)
{
ref Rgba32 sp = ref Unsafe.Add(ref sourceRef, i);
ref RGB24 dp = ref Unsafe.Add(ref destRef, i);
ref Rgb24 dp = ref Unsafe.Add(ref destRef, i);
dp = Unsafe.As<Rgba32, RGB24>(ref sp);
dp = Unsafe.As<Rgba32, Rgb24>(ref sp);
}
}
/// <inheritdoc />
internal override unsafe void PackFromXyzwBytes(Span<byte> sourceBytes, Span<Rgba32> destColors, int count)
internal override unsafe void PackFromRgba32Bytes(Span<byte> sourceBytes, Span<Rgba32> destColors, int count)
{
Guard.MustBeSizedAtLeast(sourceBytes, count * 4, nameof(sourceBytes));
Guard.MustBeSizedAtLeast(destColors, count, nameof(destColors));

2
src/ImageSharp/Quantizers/PaletteQuantizer{TPixel}.cs

@ -45,7 +45,7 @@ namespace ImageSharp.Quantizers
Span<byte> constantsBytes = constants.AsSpan().NonPortableCast<Rgba32, byte>();
PixelOperations<TPixel>.Instance.PackFromXyzwBytes(constantsBytes, safe, constants.Length);
PixelOperations<TPixel>.Instance.PackFromRgba32Bytes(constantsBytes, safe, constants.Length);
this.colors = safe;
}
else

4
src/Shared/stylecop.json

@ -3,9 +3,9 @@
"settings": {
"documentationRules": {
"companyName": "James Jackson-South",
"copyrightText": "Copyright (c) James Jackson-South and contributors.\nLicensed under the Apache License, Version 2.0.",
"copyrightText": "Copyright (c) James Jackson-South and contributors.\nLicensed under the Apache License, Version 2.0."
,
"documentInterfaces": false,
"documentInternalElements": false,
"documentExposedElements": false,
"documentPrivateElements": false,

4
tests/ImageSharp.Benchmarks/Color/Bulk/PackFromXyzw.cs

@ -48,13 +48,13 @@ namespace ImageSharp.Benchmarks.Color.Bulk
[Benchmark]
public void CommonBulk()
{
new PixelOperations<TPixel>().PackFromXyzwBytes(this.source, this.destination, this.Count);
new PixelOperations<TPixel>().PackFromRgba32Bytes(this.source, this.destination, this.Count);
}
[Benchmark]
public void OptimizedBulk()
{
PixelOperations<TPixel>.Instance.PackFromXyzwBytes(this.source, this.destination, this.Count);
PixelOperations<TPixel>.Instance.PackFromRgba32Bytes(this.source, this.destination, this.Count);
}
}

4
tests/ImageSharp.Benchmarks/Color/Bulk/ToXyz.cs

@ -46,13 +46,13 @@ namespace ImageSharp.Benchmarks.Color.Bulk
[Benchmark]
public void CommonBulk()
{
new PixelOperations<TPixel>().ToXyzBytes(this.source, this.destination, this.Count);
new PixelOperations<TPixel>().ToRgb24Bytes(this.source, this.destination, this.Count);
}
[Benchmark]
public void OptimizedBulk()
{
PixelOperations<TPixel>.Instance.ToXyzBytes(this.source, this.destination, this.Count);
PixelOperations<TPixel>.Instance.ToRgb24Bytes(this.source, this.destination, this.Count);
}
}

202
tests/ImageSharp.Tests/MetaData/Profiles/ICC/DataReader/IccDataReader.TagDataEntryTests.cs

@ -10,10 +10,12 @@ namespace ImageSharp.Tests.Icc
public class IccDataReaderTagDataEntryTests
{
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.UnknownTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.UnknownTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadUnknownTagDataEntry(byte[] data, IccUnknownTagDataEntry expected, uint size)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccUnknownTagDataEntry output = reader.ReadUnknownTagDataEntry(size);
@ -21,10 +23,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.ChromaticityTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.ChromaticityTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadChromaticityTagDataEntry(byte[] data, IccChromaticityTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccChromaticityTagDataEntry output = reader.ReadChromaticityTagDataEntry();
@ -32,10 +36,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.ColorantOrderTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.ColorantOrderTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadColorantOrderTagDataEntry(byte[] data, IccColorantOrderTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccColorantOrderTagDataEntry output = reader.ReadColorantOrderTagDataEntry();
@ -43,10 +49,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.ColorantTableTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.ColorantTableTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadColorantTableTagDataEntry(byte[] data, IccColorantTableTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccColorantTableTagDataEntry output = reader.ReadColorantTableTagDataEntry();
@ -54,10 +62,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.CurveTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.CurveTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadCurveTagDataEntry(byte[] data, IccCurveTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccCurveTagDataEntry output = reader.ReadCurveTagDataEntry();
@ -65,10 +75,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.DataTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.DataTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadDataTagDataEntry(byte[] data, IccDataTagDataEntry expected, uint size)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccDataTagDataEntry output = reader.ReadDataTagDataEntry(size);
@ -76,10 +88,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.DateTimeTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.DateTimeTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadDateTimeTagDataEntry(byte[] data, IccDateTimeTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccDateTimeTagDataEntry output = reader.ReadDateTimeTagDataEntry();
@ -87,10 +101,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.Lut16TagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.Lut16TagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadLut16TagDataEntry(byte[] data, IccLut16TagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccLut16TagDataEntry output = reader.ReadLut16TagDataEntry();
@ -98,10 +114,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.Lut8TagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.Lut8TagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadLut8TagDataEntry(byte[] data, IccLut8TagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccLut8TagDataEntry output = reader.ReadLut8TagDataEntry();
@ -109,10 +127,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.LutAToBTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.LutAToBTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadLutAToBTagDataEntry(byte[] data, IccLutAToBTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccLutAToBTagDataEntry output = reader.ReadLutAtoBTagDataEntry();
@ -120,10 +140,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.LutBToATagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.LutBToATagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadLutBToATagDataEntry(byte[] data, IccLutBToATagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccLutBToATagDataEntry output = reader.ReadLutBtoATagDataEntry();
@ -131,10 +153,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.MeasurementTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.MeasurementTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadMeasurementTagDataEntry(byte[] data, IccMeasurementTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccMeasurementTagDataEntry output = reader.ReadMeasurementTagDataEntry();
@ -142,10 +166,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.MultiLocalizedUnicodeTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.MultiLocalizedUnicodeTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadMultiLocalizedUnicodeTagDataEntry(byte[] data, IccMultiLocalizedUnicodeTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccMultiLocalizedUnicodeTagDataEntry output = reader.ReadMultiLocalizedUnicodeTagDataEntry();
@ -153,10 +179,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.MultiProcessElementsTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.MultiProcessElementsTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadMultiProcessElementsTagDataEntry(byte[] data, IccMultiProcessElementsTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccMultiProcessElementsTagDataEntry output = reader.ReadMultiProcessElementsTagDataEntry();
@ -164,10 +192,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.NamedColor2TagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.NamedColor2TagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadNamedColor2TagDataEntry(byte[] data, IccNamedColor2TagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccNamedColor2TagDataEntry output = reader.ReadNamedColor2TagDataEntry();
@ -175,10 +205,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.ParametricCurveTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.ParametricCurveTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadParametricCurveTagDataEntry(byte[] data, IccParametricCurveTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccParametricCurveTagDataEntry output = reader.ReadParametricCurveTagDataEntry();
@ -186,10 +218,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.ProfileSequenceDescTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.ProfileSequenceDescTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadProfileSequenceDescTagDataEntry(byte[] data, IccProfileSequenceDescTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccProfileSequenceDescTagDataEntry output = reader.ReadProfileSequenceDescTagDataEntry();
@ -197,10 +231,14 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.ProfileSequenceIdentifierTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadProfileSequenceIdentifierTagDataEntry(byte[] data, IccProfileSequenceIdentifierTagDataEntry expected)
[MemberData(
nameof(IccTestDataTagDataEntry.ProfileSequenceIdentifierTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadProfileSequenceIdentifierTagDataEntry(
byte[] data,
IccProfileSequenceIdentifierTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccProfileSequenceIdentifierTagDataEntry output = reader.ReadProfileSequenceIdentifierTagDataEntry();
@ -208,10 +246,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.ResponseCurveSet16TagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.ResponseCurveSet16TagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadResponseCurveSet16TagDataEntry(byte[] data, IccResponseCurveSet16TagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccResponseCurveSet16TagDataEntry output = reader.ReadResponseCurveSet16TagDataEntry();
@ -219,10 +259,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.Fix16ArrayTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.Fix16ArrayTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadFix16ArrayTagDataEntry(byte[] data, IccFix16ArrayTagDataEntry expected, uint size)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccFix16ArrayTagDataEntry output = reader.ReadFix16ArrayTagDataEntry(size);
@ -230,10 +272,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.SignatureTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.SignatureTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadSignatureTagDataEntry(byte[] data, IccSignatureTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccSignatureTagDataEntry output = reader.ReadSignatureTagDataEntry();
@ -241,10 +285,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.TextTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.TextTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadTextTagDataEntry(byte[] data, IccTextTagDataEntry expected, uint size)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccTextTagDataEntry output = reader.ReadTextTagDataEntry(size);
@ -252,10 +298,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.UFix16ArrayTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.UFix16ArrayTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadUFix16ArrayTagDataEntry(byte[] data, IccUFix16ArrayTagDataEntry expected, uint size)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccUFix16ArrayTagDataEntry output = reader.ReadUFix16ArrayTagDataEntry(size);
@ -263,10 +311,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.UInt16ArrayTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.UInt16ArrayTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadUInt16ArrayTagDataEntry(byte[] data, IccUInt16ArrayTagDataEntry expected, uint size)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccUInt16ArrayTagDataEntry output = reader.ReadUInt16ArrayTagDataEntry(size);
@ -274,10 +324,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.UInt32ArrayTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.UInt32ArrayTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadUInt32ArrayTagDataEntry(byte[] data, IccUInt32ArrayTagDataEntry expected, uint size)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccUInt32ArrayTagDataEntry output = reader.ReadUInt32ArrayTagDataEntry(size);
@ -285,10 +337,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.UInt64ArrayTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.UInt64ArrayTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadUInt64ArrayTagDataEntry(byte[] data, IccUInt64ArrayTagDataEntry expected, uint size)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccUInt64ArrayTagDataEntry output = reader.ReadUInt64ArrayTagDataEntry(size);
@ -296,10 +350,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.UInt8ArrayTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.UInt8ArrayTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadUInt8ArrayTagDataEntry(byte[] data, IccUInt8ArrayTagDataEntry expected, uint size)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccUInt8ArrayTagDataEntry output = reader.ReadUInt8ArrayTagDataEntry(size);
@ -307,10 +363,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.ViewingConditionsTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.ViewingConditionsTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadViewingConditionsTagDataEntry(byte[] data, IccViewingConditionsTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccViewingConditionsTagDataEntry output = reader.ReadViewingConditionsTagDataEntry();
@ -318,10 +376,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.XYZTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.XYZTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadXyzTagDataEntry(byte[] data, IccXyzTagDataEntry expected, uint size)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccXyzTagDataEntry output = reader.ReadXyzTagDataEntry(size);
@ -329,10 +389,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.TextDescriptionTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.TextDescriptionTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadTextDescriptionTagDataEntry(byte[] data, IccTextDescriptionTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccTextDescriptionTagDataEntry output = reader.ReadTextDescriptionTagDataEntry();
@ -340,10 +402,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.CrdInfoTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.CrdInfoTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadCrdInfoTagDataEntry(byte[] data, IccCrdInfoTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccCrdInfoTagDataEntry output = reader.ReadCrdInfoTagDataEntry();
@ -351,10 +415,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.ScreeningTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.ScreeningTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadScreeningTagDataEntry(byte[] data, IccScreeningTagDataEntry expected)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccScreeningTagDataEntry output = reader.ReadScreeningTagDataEntry();
@ -362,10 +428,12 @@ namespace ImageSharp.Tests.Icc
}
[Theory]
[MemberData(nameof(IccTestDataTagDataEntry.UcrBgTagDataEntryTestData), MemberType = typeof(IccTestDataTagDataEntry))]
[MemberData(
nameof(IccTestDataTagDataEntry.UcrBgTagDataEntryTestData),
MemberType = typeof(IccTestDataTagDataEntry))]
internal void ReadUcrBgTagDataEntry(byte[] data, IccUcrBgTagDataEntry expected, uint size)
{
IccDataReader reader = CreateReader(data);
IccDataReader reader = this.CreateReader(data);
IccUcrBgTagDataEntry output = reader.ReadUcrBgTagDataEntry(size);

6
tests/ImageSharp.Tests/PixelFormats/PixelOperationsTests.cs

@ -165,7 +165,7 @@ namespace ImageSharp.Tests.PixelFormats
TestOperation(
source,
expected,
(s, d) => Operations.PackFromXyzBytes(s, d, count)
(s, d) => Operations.PackFromRgb24Bytes(s, d, count)
);
}
@ -185,7 +185,7 @@ namespace ImageSharp.Tests.PixelFormats
TestOperation(
source,
expected,
(s, d) => Operations.ToXyzBytes(s, d, count)
(s, d) => Operations.ToRgb24Bytes(s, d, count)
);
}
@ -206,7 +206,7 @@ namespace ImageSharp.Tests.PixelFormats
TestOperation(
source,
expected,
(s, d) => Operations.PackFromXyzwBytes(s, d, count)
(s, d) => Operations.PackFromRgba32Bytes(s, d, count)
);
}

Loading…
Cancel
Save