mirror of
https://github.com/UglyToad/PdfPig.git
synced 2025-10-15 11:44:51 +08:00
make color types public and add stream based tests to prevent future breaking as observed in #52
This commit is contained in:
@@ -1,11 +1,21 @@
|
||||
namespace UglyToad.PdfPig.Graphics.Colors
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace UglyToad.PdfPig.Graphics.Colors
|
||||
{
|
||||
/// <summary>
|
||||
/// A color with cyan, magenta, yellow and black (K) components.
|
||||
/// </summary>
|
||||
internal class CMYKColor : IColor
|
||||
public class CMYKColor : IColor, IEquatable<CMYKColor>
|
||||
{
|
||||
/// <summary>
|
||||
/// CMYK Black value (0, 0, 0, 1).
|
||||
/// </summary>
|
||||
public static IColor Black { get; } = new CMYKColor(0, 0, 0, 1);
|
||||
|
||||
/// <summary>
|
||||
/// CMYK White value (all 0).
|
||||
/// </summary>
|
||||
public static IColor White { get; } = new CMYKColor(0, 0, 0, 0);
|
||||
|
||||
/// <inheritdoc/>
|
||||
@@ -50,6 +60,43 @@
|
||||
(1 - Y) * (1 - K));
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return Equals(obj as CMYKColor);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public bool Equals(CMYKColor other)
|
||||
{
|
||||
return other != null &&
|
||||
C == other.C &&
|
||||
M == other.M &&
|
||||
Y == other.Y &&
|
||||
K == other.K;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override int GetHashCode()
|
||||
{
|
||||
var hashCode = -492570696;
|
||||
hashCode = hashCode * -1521134295 + C.GetHashCode();
|
||||
hashCode = hashCode * -1521134295 + M.GetHashCode();
|
||||
hashCode = hashCode * -1521134295 + Y.GetHashCode();
|
||||
hashCode = hashCode * -1521134295 + K.GetHashCode();
|
||||
return hashCode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Equals.
|
||||
/// </summary>
|
||||
public static bool operator ==(CMYKColor color1, CMYKColor color2) => EqualityComparer<CMYKColor>.Default.Equals(color1, color2);
|
||||
|
||||
/// <summary>
|
||||
/// Not Equals.
|
||||
/// </summary>
|
||||
public static bool operator !=(CMYKColor color1, CMYKColor color2) => !(color1 == color2);
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string ToString()
|
||||
{
|
||||
|
@@ -1,11 +1,21 @@
|
||||
namespace UglyToad.PdfPig.Graphics.Colors
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace UglyToad.PdfPig.Graphics.Colors
|
||||
{
|
||||
/// <summary>
|
||||
/// A grayscale color with a single gray component.
|
||||
/// </summary>
|
||||
internal class GrayColor : IColor
|
||||
public class GrayColor : IColor, IEquatable<GrayColor>
|
||||
{
|
||||
/// <summary>
|
||||
/// Gray Black value (0).
|
||||
/// </summary>
|
||||
public static GrayColor Black { get; } = new GrayColor(0);
|
||||
|
||||
/// <summary>
|
||||
/// Gray White value (1).
|
||||
/// </summary>
|
||||
public static GrayColor White { get; } = new GrayColor(1);
|
||||
|
||||
/// <inheritdoc/>
|
||||
@@ -30,6 +40,32 @@
|
||||
return (Gray, Gray, Gray);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return Equals(obj as GrayColor);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public bool Equals(GrayColor other)
|
||||
{
|
||||
return other != null &&
|
||||
Gray == other.Gray;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override int GetHashCode() => Gray.GetHashCode();
|
||||
|
||||
/// <summary>
|
||||
/// Equals.
|
||||
/// </summary>
|
||||
public static bool operator ==(GrayColor color1, GrayColor color2) => EqualityComparer<GrayColor>.Default.Equals(color1, color2);
|
||||
|
||||
/// <summary>
|
||||
/// Not Equals.
|
||||
/// </summary>
|
||||
public static bool operator !=(GrayColor color1, GrayColor color2) => !(color1 == color2);
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string ToString()
|
||||
{
|
||||
|
@@ -6,7 +6,7 @@
|
||||
/// <summary>
|
||||
/// A color with red, green and blue components.
|
||||
/// </summary>
|
||||
internal class RGBColor : IColor, IEquatable<RGBColor>
|
||||
public class RGBColor : IColor, IEquatable<RGBColor>
|
||||
{
|
||||
/// <summary>
|
||||
/// RGB Black value (all 0).
|
||||
@@ -78,9 +78,15 @@
|
||||
/// <inheritdoc />
|
||||
public override int GetHashCode() => (R, G, B).GetHashCode();
|
||||
|
||||
/// <summary>
|
||||
/// Equals.
|
||||
/// </summary>
|
||||
public static bool operator ==(RGBColor color1, RGBColor color2) =>
|
||||
EqualityComparer<RGBColor>.Default.Equals(color1, color2);
|
||||
|
||||
/// <summary>
|
||||
/// Not Equals.
|
||||
/// </summary>
|
||||
public static bool operator !=(RGBColor color1, RGBColor color2) => !(color1 == color2);
|
||||
|
||||
/// <inheritdoc />
|
||||
|
Reference in New Issue
Block a user