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

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

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

Loading…
Cancel
Save