|
|
@ -437,35 +437,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private static void Validate( |
|
|
|
|
|
JpegColorSpace colorSpace, |
|
|
|
|
|
in JpegColorConverter.ComponentValues original, |
|
|
|
|
|
Vector4[] result, |
|
|
|
|
|
int i) |
|
|
|
|
|
{ |
|
|
|
|
|
switch (colorSpace) |
|
|
|
|
|
{ |
|
|
|
|
|
case JpegColorSpace.Grayscale: |
|
|
|
|
|
ValidateGrayScale(original, result, i); |
|
|
|
|
|
break; |
|
|
|
|
|
case JpegColorSpace.Ycck: |
|
|
|
|
|
ValidateCyyK(original, result, i); |
|
|
|
|
|
break; |
|
|
|
|
|
case JpegColorSpace.Cmyk: |
|
|
|
|
|
ValidateCmyk(original, result, i); |
|
|
|
|
|
break; |
|
|
|
|
|
case JpegColorSpace.RGB: |
|
|
|
|
|
ValidateRgb(original, result, i); |
|
|
|
|
|
break; |
|
|
|
|
|
case JpegColorSpace.YCbCr: |
|
|
|
|
|
ValidateYCbCr(original, result, i); |
|
|
|
|
|
break; |
|
|
|
|
|
default: |
|
|
|
|
|
Assert.True(false, $"Colorspace {colorSpace} not supported!"); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static void Validate( |
|
|
private static void Validate( |
|
|
JpegColorSpace colorSpace, |
|
|
JpegColorSpace colorSpace, |
|
|
in JpegColorConverter.ComponentValues original, |
|
|
in JpegColorConverter.ComponentValues original, |
|
|
@ -495,21 +466,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private static void ValidateYCbCr(in JpegColorConverter.ComponentValues values, Vector4[] result, int i) |
|
|
|
|
|
{ |
|
|
|
|
|
float y = values.Component0[i]; |
|
|
|
|
|
float cb = values.Component1[i]; |
|
|
|
|
|
float cr = values.Component2[i]; |
|
|
|
|
|
var ycbcr = new YCbCr(y, cb, cr); |
|
|
|
|
|
|
|
|
|
|
|
Vector4 rgba = result[i]; |
|
|
|
|
|
var actual = new Rgb(rgba.X, rgba.Y, rgba.Z); |
|
|
|
|
|
var expected = ColorSpaceConverter.ToRgb(ycbcr); |
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
|
|
|
Assert.Equal(1, rgba.W); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static void ValidateYCbCr(in JpegColorConverter.ComponentValues values, in JpegColorConverter.ComponentValues result, int i) |
|
|
private static void ValidateYCbCr(in JpegColorConverter.ComponentValues values, in JpegColorConverter.ComponentValues result, int i) |
|
|
{ |
|
|
{ |
|
|
float y = values.Component0[i]; |
|
|
float y = values.Component0[i]; |
|
|
@ -523,33 +479,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg |
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private static void ValidateCyyK(in JpegColorConverter.ComponentValues values, Vector4[] result, int i) |
|
|
|
|
|
{ |
|
|
|
|
|
var v = new Vector4(0, 0, 0, 1F); |
|
|
|
|
|
var scale = new Vector4(1 / 255F, 1 / 255F, 1 / 255F, 1F); |
|
|
|
|
|
|
|
|
|
|
|
float y = values.Component0[i]; |
|
|
|
|
|
float cb = values.Component1[i] - 128F; |
|
|
|
|
|
float cr = values.Component2[i] - 128F; |
|
|
|
|
|
float k = values.Component3[i] / 255F; |
|
|
|
|
|
|
|
|
|
|
|
v.X = (255F - (float)Math.Round(y + (1.402F * cr), MidpointRounding.AwayFromZero)) * k; |
|
|
|
|
|
v.Y = (255F - (float)Math.Round( |
|
|
|
|
|
y - (0.344136F * cb) - (0.714136F * cr), |
|
|
|
|
|
MidpointRounding.AwayFromZero)) * k; |
|
|
|
|
|
v.Z = (255F - (float)Math.Round(y + (1.772F * cb), MidpointRounding.AwayFromZero)) * k; |
|
|
|
|
|
v.W = 1F; |
|
|
|
|
|
|
|
|
|
|
|
v *= scale; |
|
|
|
|
|
|
|
|
|
|
|
Vector4 rgba = result[i]; |
|
|
|
|
|
var actual = new Rgb(rgba.X, rgba.Y, rgba.Z); |
|
|
|
|
|
var expected = new Rgb(v.X, v.Y, v.Z); |
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
|
|
|
Assert.Equal(1, rgba.W); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static void ValidateCyyK(in JpegColorConverter.ComponentValues values, in JpegColorConverter.ComponentValues result, int i) |
|
|
private static void ValidateCyyK(in JpegColorConverter.ComponentValues values, in JpegColorConverter.ComponentValues result, int i) |
|
|
{ |
|
|
{ |
|
|
var v = new Vector4(0, 0, 0, 1F); |
|
|
var v = new Vector4(0, 0, 0, 1F); |
|
|
@ -575,19 +504,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg |
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private static void ValidateRgb(in JpegColorConverter.ComponentValues values, Vector4[] result, int i) |
|
|
|
|
|
{ |
|
|
|
|
|
float r = values.Component0[i]; |
|
|
|
|
|
float g = values.Component1[i]; |
|
|
|
|
|
float b = values.Component2[i]; |
|
|
|
|
|
Vector4 rgba = result[i]; |
|
|
|
|
|
var actual = new Rgb(rgba.X, rgba.Y, rgba.Z); |
|
|
|
|
|
var expected = new Rgb(r / 255F, g / 255F, b / 255F); |
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
|
|
|
Assert.Equal(1, rgba.W); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static void ValidateRgb(in JpegColorConverter.ComponentValues values, in JpegColorConverter.ComponentValues result, int i) |
|
|
private static void ValidateRgb(in JpegColorConverter.ComponentValues values, in JpegColorConverter.ComponentValues result, int i) |
|
|
{ |
|
|
{ |
|
|
float r = values.Component0[i]; |
|
|
float r = values.Component0[i]; |
|
|
@ -600,17 +516,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg |
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private static void ValidateGrayScale(in JpegColorConverter.ComponentValues values, Vector4[] result, int i) |
|
|
|
|
|
{ |
|
|
|
|
|
float y = values.Component0[i]; |
|
|
|
|
|
Vector4 rgba = result[i]; |
|
|
|
|
|
var actual = new Rgb(rgba.X, rgba.Y, rgba.Z); |
|
|
|
|
|
var expected = new Rgb(y / 255F, y / 255F, y / 255F); |
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
|
|
|
Assert.Equal(1, rgba.W); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static void ValidateGrayScale(in JpegColorConverter.ComponentValues values, in JpegColorConverter.ComponentValues result, int i) |
|
|
private static void ValidateGrayScale(in JpegColorConverter.ComponentValues values, in JpegColorConverter.ComponentValues result, int i) |
|
|
{ |
|
|
{ |
|
|
float y = values.Component0[i]; |
|
|
float y = values.Component0[i]; |
|
|
@ -620,31 +525,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg |
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private static void ValidateCmyk(in JpegColorConverter.ComponentValues values, Vector4[] result, int i) |
|
|
|
|
|
{ |
|
|
|
|
|
var v = new Vector4(0, 0, 0, 1F); |
|
|
|
|
|
var scale = new Vector4(1 / 255F, 1 / 255F, 1 / 255F, 1F); |
|
|
|
|
|
|
|
|
|
|
|
float c = values.Component0[i]; |
|
|
|
|
|
float m = values.Component1[i]; |
|
|
|
|
|
float y = values.Component2[i]; |
|
|
|
|
|
float k = values.Component3[i] / 255F; |
|
|
|
|
|
|
|
|
|
|
|
v.X = c * k; |
|
|
|
|
|
v.Y = m * k; |
|
|
|
|
|
v.Z = y * k; |
|
|
|
|
|
v.W = 1F; |
|
|
|
|
|
|
|
|
|
|
|
v *= scale; |
|
|
|
|
|
|
|
|
|
|
|
Vector4 rgba = result[i]; |
|
|
|
|
|
var actual = new Rgb(rgba.X, rgba.Y, rgba.Z); |
|
|
|
|
|
var expected = new Rgb(v.X, v.Y, v.Z); |
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expected, actual, ColorSpaceComparer); |
|
|
|
|
|
Assert.Equal(1, rgba.W); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static void ValidateCmyk(in JpegColorConverter.ComponentValues values, in JpegColorConverter.ComponentValues result, int i) |
|
|
private static void ValidateCmyk(in JpegColorConverter.ComponentValues values, in JpegColorConverter.ComponentValues result, int i) |
|
|
{ |
|
|
{ |
|
|
var v = new Vector4(0, 0, 0, 1F); |
|
|
var v = new Vector4(0, 0, 0, 1F); |
|
|
|