Browse Source

Begin ToString() formatting.

pull/664/head
James Jackson-South 8 years ago
parent
commit
2bc0c17f41
  1. 5
      src/ImageSharp/ColorSpaces/CieLab.cs
  2. 10
      src/ImageSharp/ColorSpaces/CieLch.cs
  3. 5
      src/ImageSharp/ColorSpaces/CieLchuv.cs
  4. 5
      src/ImageSharp/ColorSpaces/CieLuv.cs
  5. 15
      src/ImageSharp/ColorSpaces/CieXyChromaticityCoordinates.cs
  6. 10
      src/ImageSharp/ColorSpaces/CieXyy.cs
  7. 16
      src/ImageSharp/ColorSpaces/CieXyz.cs
  8. 5
      src/ImageSharp/ColorSpaces/Cmyk.cs
  9. 1
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLuv.cs
  10. 5
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyy.cs
  11. 5
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Cmyk.cs
  12. 5
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsl.cs
  13. 5
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsv.cs
  14. 5
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Lms.cs
  15. 5
      src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.YCbCr.cs
  16. 5
      src/ImageSharp/ColorSpaces/Conversion/VonKriesChromaticAdaptation.cs
  17. 5
      src/ImageSharp/ColorSpaces/Hsl.cs
  18. 8
      src/ImageSharp/ColorSpaces/Hsv.cs
  19. 6
      src/ImageSharp/ColorSpaces/HunterLab.cs
  20. 5
      src/ImageSharp/ColorSpaces/LinearRgb.cs
  21. 5
      src/ImageSharp/ColorSpaces/Lms.cs
  22. 15
      src/ImageSharp/ColorSpaces/Rgb.cs
  23. 5
      src/ImageSharp/ColorSpaces/YCbCr.cs
  24. 90
      src/ImageSharp/PixelFormats/Rgba32.cs
  25. 65
      tests/ImageSharp.Tests/Colorspaces/Conversion/StringRepresentationTests.cs
  26. 16
      tests/ImageSharp.Tests/Formats/GeneralFormatTests.cs
  27. BIN
      tests/Images/Input/Png/splash.png

5
src/ImageSharp/ColorSpaces/CieLab.cs

@ -129,10 +129,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"CieLab [ L={this.L:#0.##}, A={this.A:#0.##}, B={this.B:#0.##}]";
}
public override string ToString() => $"CieLab({this.L:#0.##}, {this.A:#0.##}, {this.B:#0.##})";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is CieLab other && this.Equals(other);

10
src/ImageSharp/ColorSpaces/CieLch.cs

@ -105,10 +105,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// True if the current left is equal to the <paramref name="right"/> parameter; otherwise, false.
/// </returns>
[MethodImpl(InliningOptions.ShortMethod)]
public static bool operator ==(CieLch left, CieLch right)
{
return left.Equals(right);
}
public static bool operator ==(CieLch left, CieLch right) => left.Equals(right);
/// <summary>
/// Compares two <see cref="CieLch"/> objects for inequality
@ -131,10 +128,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"CieLch [ L={this.L:#0.##}, C={this.C:#0.##}, H={this.H:#0.##}]";
}
public override string ToString() => $"CieLch [ L={this.L:#0.##}, C={this.C:#0.##}, H={this.H:#0.##}]";
/// <inheritdoc/>
[MethodImpl(InliningOptions.ShortMethod)]

5
src/ImageSharp/ColorSpaces/CieLchuv.cs

@ -127,10 +127,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"CieLchuv [ L={this.L:#0.##}, C={this.C:#0.##}, H={this.H:#0.##}";
}
public override string ToString() => $"CieLchuv [ L={this.L:#0.##}, C={this.C:#0.##}, H={this.H:#0.##}";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is CieLchuv other && this.Equals(other);

5
src/ImageSharp/ColorSpaces/CieLuv.cs

@ -130,10 +130,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"CieLuv [ L={this.L:#0.##}, U={this.U:#0.##}, V={this.V:#0.##} ]";
}
public override string ToString() => $"CieLuv [ L={this.L:#0.##}, U={this.U:#0.##}, V={this.V:#0.##} ]";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is CieLuv other && this.Equals(other);

15
src/ImageSharp/ColorSpaces/CieXyChromaticityCoordinates.cs

@ -49,10 +49,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// True if the current left is equal to the <paramref name="right"/> parameter; otherwise, false.
/// </returns>
[MethodImpl(InliningOptions.ShortMethod)]
public static bool operator ==(CieXyChromaticityCoordinates left, CieXyChromaticityCoordinates right)
{
return left.Equals(right);
}
public static bool operator ==(CieXyChromaticityCoordinates left, CieXyChromaticityCoordinates right) => left.Equals(right);
/// <summary>
/// Compares two <see cref="CieXyChromaticityCoordinates"/> objects for inequality
@ -63,20 +60,14 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// True if the current left is unequal to the <paramref name="right"/> parameter; otherwise, false.
/// </returns>
[MethodImpl(InliningOptions.ShortMethod)]
public static bool operator !=(CieXyChromaticityCoordinates left, CieXyChromaticityCoordinates right)
{
return !left.Equals(right);
}
public static bool operator !=(CieXyChromaticityCoordinates left, CieXyChromaticityCoordinates right) => !left.Equals(right);
/// <inheritdoc />
[MethodImpl(InliningOptions.ShortMethod)]
public override int GetHashCode() => HashHelpers.Combine(this.X.GetHashCode(), this.Y.GetHashCode());
/// <inheritdoc/>
public override string ToString()
{
return $"CieXyChromaticityCoordinates [ X={this.X:#0.##}, Y={this.Y:#0.##}]";
}
public override string ToString() => $"CieXyChromaticityCoordinates [ X={this.X:#0.##}, Y={this.Y:#0.##}]";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is CieXyChromaticityCoordinates other && this.Equals(other);

10
src/ImageSharp/ColorSpaces/CieXyy.cs

@ -91,16 +91,10 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"CieXyy [ X={this.X:#0.##}, Y={this.Y:#0.##}, Yl={this.Yl:#0.##} ]";
}
public override string ToString() => $"CieXyy [ X={this.X:#0.##}, Y={this.Y:#0.##}, Yl={this.Yl:#0.##} ]";
/// <inheritdoc/>
public override bool Equals(object obj)
{
return obj is CieXyy other && this.Equals(other);
}
public override bool Equals(object obj) => obj is CieXyy other && this.Equals(other);
/// <inheritdoc/>
[MethodImpl(InliningOptions.ShortMethod)]

16
src/ImageSharp/ColorSpaces/CieXyz.cs

@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
using System.ComponentModel;
using System.Numerics;
using System.Runtime.CompilerServices;
@ -70,10 +69,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// True if the current left is equal to the <paramref name="right"/> parameter; otherwise, false.
/// </returns>
[MethodImpl(InliningOptions.ShortMethod)]
public static bool operator ==(CieXyz left, CieXyz right)
{
return left.Equals(right);
}
public static bool operator ==(CieXyz left, CieXyz right) => left.Equals(right);
/// <summary>
/// Compares two <see cref="CieXyz"/> objects for inequality.
@ -84,10 +80,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// True if the current left is unequal to the <paramref name="right"/> parameter; otherwise, false.
/// </returns>
[MethodImpl(InliningOptions.ShortMethod)]
public static bool operator !=(CieXyz left, CieXyz right)
{
return !left.Equals(right);
}
public static bool operator !=(CieXyz left, CieXyz right) => !left.Equals(right);
/// <summary>
/// Returns a new <see cref="Vector3"/> representing this instance.
@ -105,10 +98,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"CieXyz [ X={this.X:#0.##}, Y={this.Y:#0.##}, Z={this.Z:#0.##} ]";
}
public override string ToString() => $"CieXyz [ X={this.X:#0.##}, Y={this.Y:#0.##}, Z={this.Z:#0.##} ]";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is CieXyz other && this.Equals(other);

5
src/ImageSharp/ColorSpaces/Cmyk.cs

@ -96,10 +96,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"Cmyk [ C={this.C:#0.##}, M={this.M:#0.##}, Y={this.Y:#0.##}, K={this.K:#0.##}]";
}
public override string ToString() => $"Cmyk [ C={this.C:#0.##}, M={this.M:#0.##}, Y={this.Y:#0.##}, K={this.K:#0.##}]";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is Cmyk other && this.Equals(other);

1
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieLuv.cs

@ -4,7 +4,6 @@
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using SixLabors.ImageSharp.ColorSpaces;
using SixLabors.ImageSharp.ColorSpaces.Conversion.Implementation;
namespace SixLabors.ImageSharp.ColorSpaces.Conversion

5
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.CieXyy.cs

@ -152,10 +152,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// </summary>
/// <param name="color">The color to convert.</param>
/// <returns>The <see cref="CieXyy"/></returns>
public CieXyy ToCieXyy(in CieXyz color)
{
return CieXyzAndCieXyyConverter.Convert(color);
}
public CieXyy ToCieXyy(in CieXyz color) => CieXyzAndCieXyyConverter.Convert(color);
/// <summary>
/// Performs the bulk conversion from <see cref="CieXyz"/> into <see cref="CieXyy"/>

5
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Cmyk.cs

@ -383,10 +383,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// </summary>
/// <param name="color">The color to convert.</param>
/// <returns>The <see cref="Cmyk"/></returns>
public Cmyk ToCmyk(in Rgb color)
{
return CmykAndRgbConverter.Convert(color);
}
public Cmyk ToCmyk(in Rgb color) => CmykAndRgbConverter.Convert(color);
/// <summary>
/// Performs the bulk conversion from <see cref="Rgb"/> into <see cref="Cmyk"/>

5
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsl.cs

@ -383,10 +383,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// </summary>
/// <param name="color">The color to convert.</param>
/// <returns>The <see cref="Hsl"/></returns>
public Hsl ToHsl(in Rgb color)
{
return HslAndRgbConverter.Convert(color);
}
public Hsl ToHsl(in Rgb color) => HslAndRgbConverter.Convert(color);
/// <summary>
/// Performs the bulk conversion from <see cref="Rgb"/> into <see cref="Hsl"/>

5
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Hsv.cs

@ -383,10 +383,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// </summary>
/// <param name="color">The color to convert.</param>
/// <returns>The <see cref="Hsv"/></returns>
public Hsv ToHsv(in Rgb color)
{
return HsvAndRgbConverter.Convert(color);
}
public Hsv ToHsv(in Rgb color) => HsvAndRgbConverter.Convert(color);
/// <summary>
/// Performs the bulk conversion from <see cref="Rgb"/> into <see cref="Hsv"/>

5
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.Lms.cs

@ -177,10 +177,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// </summary>
/// <param name="color">The color to convert.</param>
/// <returns>The <see cref="Lms"/></returns>
public Lms ToLms(in CieXyz color)
{
return this.cieXyzAndLmsConverter.Convert(color);
}
public Lms ToLms(in CieXyz color) => this.cieXyzAndLmsConverter.Convert(color);
/// <summary>
/// Performs the bulk conversion from <see cref="CieXyz"/> into <see cref="Lms"/>

5
src/ImageSharp/ColorSpaces/Conversion/ColorSpaceConverter.YCbCr.cs

@ -383,10 +383,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// </summary>
/// <param name="color">The color to convert.</param>
/// <returns>The <see cref="YCbCr"/></returns>
public YCbCr ToYCbCr(in Rgb color)
{
return YCbCrAndRgbConverter.Convert(color);
}
public YCbCr ToYCbCr(in Rgb color) => YCbCrAndRgbConverter.Convert(color);
/// <summary>
/// Performs the bulk conversion from <see cref="Rgb"/> into <see cref="YCbCr"/>

5
src/ImageSharp/ColorSpaces/Conversion/VonKriesChromaticAdaptation.cs

@ -41,10 +41,7 @@ namespace SixLabors.ImageSharp.ColorSpaces.Conversion
/// Initializes a new instance of the <see cref="VonKriesChromaticAdaptation"/> class.
/// </summary>
/// <param name="converter">The color converter</param>
internal VonKriesChromaticAdaptation(CieXyzAndLmsConverter converter)
{
this.converter = converter;
}
internal VonKriesChromaticAdaptation(CieXyzAndLmsConverter converter) => this.converter = converter;
/// <inheritdoc/>
public CieXyz Transform(in CieXyz sourceColor, in CieXyz sourceWhitePoint, in CieXyz targetWhitePoint)

5
src/ImageSharp/ColorSpaces/Hsl.cs

@ -94,10 +94,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"Hsl [ H={this.H:#0.##}, S={this.S:#0.##}, L={this.L:#0.##} ]";
}
public override string ToString() => $"Hsl [ H={this.H:#0.##}, S={this.S:#0.##}, L={this.L:#0.##} ]";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is Hsl other && this.Equals(other);

8
src/ImageSharp/ColorSpaces/Hsv.cs

@ -2,12 +2,9 @@
// Licensed under the Apache License, Version 2.0.
using System;
using System.ComponentModel;
using System.Numerics;
using System.Runtime.CompilerServices;
using SixLabors.ImageSharp.PixelFormats;
namespace SixLabors.ImageSharp.ColorSpaces
{
/// <summary>
@ -95,10 +92,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"Hsv [ H={this.H:#0.##}, S={this.S:#0.##}, V={this.V:#0.##} ]";
}
public override string ToString() => $"Hsv [ H={this.H:#0.##}, S={this.S:#0.##}, V={this.V:#0.##} ]";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is Hsv other && this.Equals(other);

6
src/ImageSharp/ColorSpaces/HunterLab.cs

@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0.
using System;
using System.ComponentModel;
using System.Numerics;
using System.Runtime.CompilerServices;
@ -127,10 +126,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"HunterLab [ L={this.L:#0.##}, A={this.A:#0.##}, B={this.B:#0.##}]";
}
public override string ToString() => $"HunterLab [ L={this.L:#0.##}, A={this.A:#0.##}, B={this.B:#0.##}]";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is HunterLab other && this.Equals(other);

5
src/ImageSharp/ColorSpaces/LinearRgb.cs

@ -131,10 +131,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"LinearRgb [ R={this.R:#0.##}, G={this.G:#0.##}, B={this.B:#0.##} ]";
}
public override string ToString() => $"LinearRgb [ R={this.R:#0.##}, G={this.G:#0.##}, B={this.B:#0.##} ]";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is LinearRgb other && this.Equals(other);

5
src/ImageSharp/ColorSpaces/Lms.cs

@ -97,10 +97,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"Lms [ L={this.L:#0.##}, M={this.M:#0.##}, S={this.S:#0.##} ]";
}
public override string ToString() => $"Lms [ L={this.L:#0.##}, M={this.M:#0.##}, S={this.S:#0.##} ]";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is Lms other && this.Equals(other);

15
src/ImageSharp/ColorSpaces/Rgb.cs

@ -104,10 +104,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// <param name="color">The instance of <see cref="Rgba32"/> to convert.</param>
/// <returns>An instance of <see cref="Rgb"/>.</returns>
[MethodImpl(InliningOptions.ShortMethod)]
public static implicit operator Rgb(Rgb24 color)
{
return new Rgb(color.R / 255F, color.G / 255F, color.B / 255F);
}
public static implicit operator Rgb(Rgb24 color) => new Rgb(color.R / 255F, color.G / 255F, color.B / 255F);
/// <summary>
/// Allows the implicit conversion of an instance of <see cref="Rgba32"/> to a
@ -116,10 +113,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
/// <param name="color">The instance of <see cref="Rgba32"/> to convert.</param>
/// <returns>An instance of <see cref="Rgb"/>.</returns>
[MethodImpl(InliningOptions.ShortMethod)]
public static implicit operator Rgb(Rgba32 color)
{
return new Rgb(color.R / 255F, color.G / 255F, color.B / 255F);
}
public static implicit operator Rgb(Rgba32 color) => new Rgb(color.R / 255F, color.G / 255F, color.B / 255F);
/// <summary>
/// Compares two <see cref="Rgb"/> objects for equality.
@ -163,10 +157,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"Rgb [ R={this.R:#0.##}, G={this.G:#0.##}, B={this.B:#0.##} ]";
}
public override string ToString() => $"Rgb [ R={this.R:#0.##}, G={this.G:#0.##}, B={this.B:#0.##} ]";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is Rgb other && this.Equals(other);

5
src/ImageSharp/ColorSpaces/YCbCr.cs

@ -93,10 +93,7 @@ namespace SixLabors.ImageSharp.ColorSpaces
}
/// <inheritdoc/>
public override string ToString()
{
return $"YCbCr [ Y={this.Y}, Cb={this.Cb}, Cr={this.Cr} ]";
}
public override string ToString() => $"YCbCr [ Y={this.Y}, Cb={this.Cb}, Cr={this.Cr} ]";
/// <inheritdoc/>
public override bool Equals(object obj) => obj is YCbCr other && this.Equals(other);

90
src/ImageSharp/PixelFormats/Rgba32.cs

@ -111,10 +111,7 @@ namespace SixLabors.ImageSharp.PixelFormats
/// <param name="a">The alpha component.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Rgba32(float r, float g, float b, float a = 1)
: this()
{
this.Pack(r, g, b, a);
}
: this() => this.Pack(r, g, b, a);
/// <summary>
/// Initializes a new instance of the <see cref="Rgba32"/> struct.
@ -124,10 +121,7 @@ namespace SixLabors.ImageSharp.PixelFormats
/// </param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Rgba32(Vector3 vector)
: this()
{
this.Pack(ref vector);
}
: this() => this.Pack(ref vector);
/// <summary>
/// Initializes a new instance of the <see cref="Rgba32"/> struct.
@ -137,10 +131,7 @@ namespace SixLabors.ImageSharp.PixelFormats
/// </param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Rgba32(Vector4 vector)
: this()
{
this = PackNew(ref vector);
}
: this() => this = PackNew(ref vector);
/// <summary>
/// Initializes a new instance of the <see cref="Rgba32"/> struct.
@ -150,10 +141,7 @@ namespace SixLabors.ImageSharp.PixelFormats
/// </param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Rgba32(uint packed)
: this()
{
this.Rgba = packed;
}
: this() => this.Rgba = packed;
/// <summary>
/// Gets or sets the packed representation of the Rgba32 struct.
@ -230,10 +218,7 @@ namespace SixLabors.ImageSharp.PixelFormats
/// True if the <paramref name="left"/> parameter is equal to the <paramref name="right"/> parameter; otherwise, false.
/// </returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator ==(Rgba32 left, Rgba32 right)
{
return left.Rgba == right.Rgba;
}
public static bool operator ==(Rgba32 left, Rgba32 right) => left.Rgba == right.Rgba;
/// <summary>
/// Compares two <see cref="Rgba32"/> objects for equality.
@ -244,10 +229,7 @@ namespace SixLabors.ImageSharp.PixelFormats
/// True if the <paramref name="left"/> parameter is not equal to the <paramref name="right"/> parameter; otherwise, false.
/// </returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator !=(Rgba32 left, Rgba32 right)
{
return left.Rgba != right.Rgba;
}
public static bool operator !=(Rgba32 left, Rgba32 right) => left.Rgba != right.Rgba;
/// <summary>
/// Creates a new instance of the <see cref="Rgba32"/> struct.
@ -259,20 +241,14 @@ namespace SixLabors.ImageSharp.PixelFormats
/// <returns>
/// The <see cref="Rgba32"/>.
/// </returns>
public static Rgba32 FromHex(string hex)
{
return ColorBuilder<Rgba32>.FromHex(hex);
}
public static Rgba32 FromHex(string hex) => ColorBuilder<Rgba32>.FromHex(hex);
/// <inheritdoc />
public PixelOperations<Rgba32> CreatePixelOperations() => new PixelOperations();
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromRgba32(Rgba32 source)
{
this = source;
}
public void PackFromRgba32(Rgba32 source) => this = source;
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@ -306,17 +282,11 @@ namespace SixLabors.ImageSharp.PixelFormats
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void ToRgb24(ref Rgb24 dest)
{
dest = Unsafe.As<Rgba32, Rgb24>(ref this);
}
public void ToRgb24(ref Rgb24 dest) => dest = Unsafe.As<Rgba32, Rgb24>(ref this);
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void ToRgba32(ref Rgba32 dest)
{
dest = this;
}
public void ToRgba32(ref Rgba32 dest) => dest = this;
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@ -349,31 +319,19 @@ namespace SixLabors.ImageSharp.PixelFormats
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromScaledVector4(Vector4 vector)
{
this.PackFromVector4(vector);
}
public void PackFromScaledVector4(Vector4 vector) => this.PackFromVector4(vector);
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToScaledVector4()
{
return this.ToVector4();
}
public Vector4 ToScaledVector4() => this.ToVector4();
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PackFromVector4(Vector4 vector)
{
this.Pack(ref vector);
}
public void PackFromVector4(Vector4 vector) => this.Pack(ref vector);
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
return new Vector4(this.R, this.G, this.B, this.A) / MaxBytes;
}
public Vector4 ToVector4() => new Vector4(this.R, this.G, this.B, this.A) / MaxBytes;
/// <summary>
/// Gets the value of this struct as <see cref="Bgra32"/>.
@ -428,23 +386,14 @@ namespace SixLabors.ImageSharp.PixelFormats
public void ToRgba64(ref Rgba64 dest) => dest.PackFromScaledVector4(this.ToScaledVector4());
/// <inheritdoc/>
public override bool Equals(object obj)
{
return obj is Rgba32 rgba32 && this.Equals(rgba32);
}
public override bool Equals(object obj) => obj is Rgba32 rgba32 && this.Equals(rgba32);
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(Rgba32 other)
{
return this.Rgba == other.Rgba;
}
public bool Equals(Rgba32 other) => this.Rgba == other.Rgba;
/// <inheritdoc/>
public override string ToString()
{
return $"({this.R},{this.G},{this.B},{this.A})";
}
public override string ToString() => $"({this.R},{this.G},{this.B},{this.A})";
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@ -455,10 +404,7 @@ namespace SixLabors.ImageSharp.PixelFormats
/// </summary>
/// <returns>A <see cref="Vector4"/> of values in [0, 255] </returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal Vector4 ToByteScaledVector4()
{
return new Vector4(this.R, this.G, this.B, this.A);
}
internal Vector4 ToByteScaledVector4() => new Vector4(this.R, this.G, this.B, this.A);
/// <summary>
/// Packs a <see cref="Vector4"/> into a color returning a new instance as a result.

65
tests/ImageSharp.Tests/Colorspaces/Conversion/StringRepresentationTests.cs

@ -0,0 +1,65 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System.Numerics;
using SixLabors.ImageSharp.ColorSpaces;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Colorspaces.Conversion
{
public class StringRepresentationTests
{
private static readonly Vector3 one = new Vector3(1);
private static readonly Vector3 zero = new Vector3(0);
private static readonly Vector3 random = new Vector3(42.4F, 94.5F, 83.4F);
public static readonly TheoryData<object, string> TestData = new TheoryData<object, string>
{
{ new CieLab(zero), "CieLab(0,0,0)" },
{ new CieLch(zero), "CieLch(0,0,0)" },
{ new CieLchuv(zero), "CieLchuv(0,0,0)" },
{ new CieLuv(zero), "CieLuv(0,0,0)" },
{ new CieXyz(zero), "CieXyz(0,0,0)" },
{ new CieXyy(zero), "CieXyy(0,0,0)" },
{ new HunterLab(zero), "HunterLab(0,0,0)" },
{ new Lms(zero), "Lms(0,0,0)" },
{ new LinearRgb(zero), "LinearRgb(0,0,0)" },
{ new Rgb(zero), "Rgb(0,0,0)" },
{ new Hsl(zero), "Hsl(0,0,0)" },
{ new Hsv(zero), "Hsv(0,0,0)" },
{ new YCbCr(zero), "YCbCr(0,0,0)" },
{ new CieLab(one), "CieLab(1,1,1)" },
{ new CieLch(one), "CieLch(1,1,1)" },
{ new CieLchuv(one), "CieLchuv(1,1,1)" },
{ new CieLuv(one), "CieLuv(1,1,1)" },
{ new CieXyz(one), "CieXyz(1,1,1)" },
{ new CieXyy(one), "CieXyy(1,1,1)" },
{ new HunterLab(one), "HunterLab(1,1,1)" },
{ new Lms(one), "Lms(1,1,1)" },
{ new LinearRgb(one), "LinearRgb(1,1,1)" },
{ new Rgb(one), "Rgb(1,1,1)" },
{ new Hsl(one), "Hsl(1,1,1)" },
{ new Hsv(one), "Hsv(1,1,1)" },
{ new YCbCr(one), "YCbCr(1,1,1)" },
{ new CieLab(random), "CieLab(42.4,94.5,83.4)" },
{ new CieLch(random), "CieLch(42.4,94.5,83.4)" },
{ new CieLchuv(random), "CieLchuv(42.4,94.5,83.4)" },
{ new CieLuv(random), "CieLuv(42.4,94.5,83.4)" },
{ new CieXyz(random), "CieXyz(42.4,94.5,83.4)" },
{ new CieXyy(random), "CieXyy(42.4,94.5,83.4)" },
{ new HunterLab(random), "HunterLab(42.4,94.5,83.4)" },
{ new Lms(random), "Lms(42.4,94.5,83.4)" },
{ new LinearRgb(random), "LinearRgb(1,1,1)" }, // clamping to 1 is expected
{ new Rgb(random), "Rgb(1,1,1)" }, // clamping to 1 is expected
{ new Hsl(random), "Hsl(42.4,1,1)" }, // clamping to 1 is expected
{ new Hsv(random), "Hsv(42.4,1,1)" }, // clamping to 1 is expected
{ new YCbCr(random), "YCbCr(42.4,94.5,83.4)" },
};
[Theory]
[MemberData(nameof(TestData))]
public void StringRepresentationsAreCorrect(object color, string text) => Assert.Equal(text, color.ToString());
}
}

16
tests/ImageSharp.Tests/Formats/GeneralFormatTests.cs

@ -14,10 +14,9 @@ namespace SixLabors.ImageSharp.Tests
{
using System;
using System.Reflection;
using SixLabors.Memory;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Processors.Quantization;
using SixLabors.Memory;
public class GeneralFormatTests : FileTestBase
{
@ -58,7 +57,8 @@ namespace SixLabors.ImageSharp.Tests
{
using (Image<Rgba32> image = file.CreateImage())
{
image.Save($"{path}/{file.FileName}");
var encoder = new PngEncoder { Quantizer = new WuQuantizer(KnownDiffusers.JarvisJudiceNinke, 256), ColorType = PngColorType.Palette };
image.Save($"{path}/{file.FileName}.png", encoder);
}
}
}
@ -135,15 +135,15 @@ namespace SixLabors.ImageSharp.Tests
foreach (TestFile file in Files)
{
byte[] serialized;
using (Image<Rgba32> image = Image.Load(file.Bytes, out IImageFormat mimeType))
using (MemoryStream memoryStream = new MemoryStream())
using (var image = Image.Load(file.Bytes, out IImageFormat mimeType))
using (var memoryStream = new MemoryStream())
{
image.Save(memoryStream, mimeType);
memoryStream.Flush();
serialized = memoryStream.ToArray();
}
using (Image<Rgba32> image2 = Image.Load<Rgba32>(serialized))
using (var image2 = Image.Load<Rgba32>(serialized))
{
image2.Save($"{path}/{file.FileName}");
}
@ -169,14 +169,14 @@ namespace SixLabors.ImageSharp.Tests
[InlineData(10, 100, "jpg")]
public void CanIdentifyImageLoadedFromBytes(int width, int height, string format)
{
using (Image<Rgba32> image = Image.LoadPixelData(new Rgba32[width * height], width, height))
using (var image = Image.LoadPixelData(new Rgba32[width * height], width, height))
{
using (var memoryStream = new MemoryStream())
{
image.Save(memoryStream, GetEncoder(format));
memoryStream.Position = 0;
var imageInfo = Image.Identify(memoryStream);
IImageInfo imageInfo = Image.Identify(memoryStream);
Assert.Equal(imageInfo.Width, width);
Assert.Equal(imageInfo.Height, height);

BIN
tests/Images/Input/Png/splash.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Loading…
Cancel
Save