Browse Source

Fix IccClut test setup and calculator guards

pull/1567/head
James Jackson-South 1 year ago
parent
commit
5b374dad36
  1. 6
      src/ImageSharp/ColorProfiles/Icc/Calculators/ClutCalculator.cs
  2. 74
      tests/ImageSharp.Tests/TestDataIcc/Conversion/IccConversionDataClut.cs

6
src/ImageSharp/ColorProfiles/Icc/Calculators/ClutCalculator.cs

@ -40,8 +40,8 @@ internal class ClutCalculator : IVector4Calculator
public ClutCalculator(IccClut clut)
{
Guard.NotNull(clut, nameof(clut));
Guard.MustBeGreaterThan(clut.InputChannelCount, 1, nameof(clut.InputChannelCount));
Guard.MustBeGreaterThan(clut.OutputChannelCount, 1, nameof(clut.OutputChannelCount));
Guard.MustBeGreaterThan(clut.InputChannelCount, 0, nameof(clut.InputChannelCount));
Guard.MustBeGreaterThan(clut.OutputChannelCount, 0, nameof(clut.OutputChannelCount));
this.inputCount = clut.InputChannelCount;
this.outputCount = clut.OutputChannelCount;
@ -72,7 +72,7 @@ internal class ClutCalculator : IVector4Calculator
public unsafe Vector4 Calculate(Vector4 value)
{
Vector4 result = value;
Vector4 result = default;
switch (this.inputCount)
{
case 1:

74
tests/ImageSharp.Tests/TestDataIcc/Conversion/IccConversionDataClut.cs

@ -9,8 +9,7 @@ namespace SixLabors.ImageSharp.Tests.TestDataIcc.Conversion;
public class IccConversionDataClut
{
internal static IccClut Clut3x2 = new(
new[]
{
[
0.1f, 0.1f,
0.2f, 0.2f,
0.3f, 0.3f,
@ -46,14 +45,13 @@ public class IccConversionDataClut
0.18f, 0.18f,
0.28f, 0.28f,
0.38f, 0.38f,
},
new byte[] { 3, 3, 3 },
],
[3, 3, 3],
IccClutDataType.Float,
outputChannelCount: 3);
outputChannelCount: 2);
internal static IccClut Clut3x1 = new(
new[]
{
[
0.10f,
0.20f,
0.30f,
@ -89,14 +87,13 @@ public class IccConversionDataClut
0.18f,
0.28f,
0.38f,
},
new byte[] { 3, 3, 3 },
],
[3, 3, 3],
IccClutDataType.Float,
outputChannelCount: 3);
outputChannelCount: 1);
internal static IccClut Clut2x2 = new(
new[]
{
[
0.1f, 0.9f,
0.2f, 0.8f,
0.3f, 0.7f,
@ -108,14 +105,13 @@ public class IccConversionDataClut
0.7f, 0.3f,
0.8f, 0.2f,
0.9f, 0.1f,
},
new byte[] { 3, 3 },
],
[3, 3],
IccClutDataType.Float,
outputChannelCount: 3);
outputChannelCount: 2);
internal static IccClut Clut2x1 = new(
new[]
{
[
0.1f,
0.2f,
0.3f,
@ -127,42 +123,40 @@ public class IccConversionDataClut
0.7f,
0.8f,
0.9f,
},
new byte[] { 3, 3 },
],
[3, 3],
IccClutDataType.Float,
outputChannelCount: 3);
outputChannelCount: 1);
internal static IccClut Clut1x2 = new(
new[]
{
[
0f, 0.5f,
0.25f, 0.75f,
0.5f, 1f,
},
new byte[] { 3 },
],
[3],
IccClutDataType.Float,
outputChannelCount: 3);
outputChannelCount: 2);
internal static IccClut Clut1x1 = new(
new[]
{
[
0f,
0.5f,
1f,
},
new byte[] { 3 },
],
[3],
IccClutDataType.Float,
outputChannelCount: 3);
outputChannelCount: 1);
public static object[][] ClutConversionTestData =
{
new object[] { Clut3x2, new Vector4(0.75f, 0.75f, 0.75f, 0), new Vector4(0.31f, 0.31f, 0, 0) },
new object[] { Clut3x1, new Vector4(0.2f, 0.6f, 0.8f, 0), new Vector4(0.276f, 0, 0, 0) },
new object[] { Clut3x1, new Vector4(0.75f, 0.75f, 0.75f, 0), new Vector4(0.31f, 0, 0, 0) },
new object[] { Clut2x2, new Vector4(0.2f, 0.6f, 0, 0), new Vector4(0.46f, 0.54f, 0, 0) },
new object[] { Clut2x2, new Vector4(0.25f, 0.75f, 0, 0), new Vector4(0.4f, 0.6f, 0, 0) },
new object[] { Clut2x1, new Vector4(0.25f, 0.75f, 0, 0), new Vector4(0.4f, 0, 0, 0) },
new object[] { Clut1x2, new Vector4(0.25f, 0, 0, 0), new Vector4(0.125f, 0.625f, 0, 0) },
new object[] { Clut1x1, new Vector4(0.25f, 0, 0, 0), new Vector4(0.25f, 0, 0, 0) },
};
[
[Clut3x2, new Vector4(0.75f, 0.75f, 0.75f, 0), new Vector4(0.31f, 0.31f, 0, 0)],
[Clut3x1, new Vector4(0.2f, 0.6f, 0.8f, 0), new Vector4(0.276f, 0, 0, 0)],
[Clut3x1, new Vector4(0.75f, 0.75f, 0.75f, 0), new Vector4(0.31f, 0, 0, 0)],
[Clut2x2, new Vector4(0.2f, 0.6f, 0, 0), new Vector4(0.46f, 0.54f, 0, 0)],
[Clut2x2, new Vector4(0.25f, 0.75f, 0, 0), new Vector4(0.4f, 0.6f, 0, 0)],
[Clut2x1, new Vector4(0.25f, 0.75f, 0, 0), new Vector4(0.4f, 0, 0, 0)],
[Clut1x2, new Vector4(0.25f, 0, 0, 0), new Vector4(0.125f, 0.625f, 0, 0)],
[Clut1x1, new Vector4(0.25f, 0, 0, 0), new Vector4(0.25f, 0, 0, 0)],
];
}

Loading…
Cancel
Save