Skip to content

Commit 878e52d

Browse files
committed
Corrected the ToString method of MagickColor for CMYK.
1 parent af84ead commit 878e52d

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

src/Magick.NET/Colors/MagickColor.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,14 @@ public string ToShortString()
478478
public override string ToString()
479479
{
480480
if (IsCmyk)
481-
return string.Format(CultureInfo.InvariantCulture, "cmyka({0},{1},{2},{3},{4:0.0###})", R, G, B, K, (double)A / Quantum.Max);
481+
{
482+
var r = Quantum.ScaleToByte(R);
483+
var g = Quantum.ScaleToByte(G);
484+
var b = Quantum.ScaleToByte(B);
485+
var k = Quantum.ScaleToByte(K);
486+
487+
return string.Format(CultureInfo.InvariantCulture, "cmyka({0},{1},{2},{3},{4:0.0###})", r, g, b, k, (double)A / Quantum.Max);
488+
}
482489
#if Q8
483490
return string.Format(CultureInfo.InvariantCulture, "#{0:X2}{1:X2}{2:X2}{3:X2}", R, G, B, A);
484491
#elif Q16 || Q16HDRI

tests/Magick.NET.Tests/Colors/MagickColorTests/TheToStringMethod.cs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@
44
using ImageMagick;
55
using Xunit;
66

7+
#if Q8
8+
using QuantumType = System.Byte;
9+
#elif Q16
10+
using QuantumType = System.UInt16;
11+
#elif Q16HDRI
12+
using QuantumType = System.Single;
13+
#else
14+
#error Not implemented!
15+
#endif
16+
717
namespace Magick.NET.Tests
818
{
919
public partial class MagickColorTests
@@ -24,17 +34,11 @@ public void ShouldReturnTheCorrectString()
2434
[Fact]
2535
public void ShouldReturnTheCorrectStringForCmykColor()
2636
{
27-
#if Q8
28-
var color = new MagickColor(0, Quantum.Max, 0, 0, (System.Byte)(Quantum.Max / 3));
29-
#elif Q16
30-
var color = new MagickColor(0, Quantum.Max, 0, 0, (System.UInt16)(Quantum.Max / 3));
31-
#else
32-
var color = new MagickColor(0, Quantum.Max, 0, 0, (System.Single)(Quantum.Max / 3));
33-
#endif
34-
Assert.Equal("cmyka(0," + Quantum.Max + ",0,0,0.3333)", color.ToString());
37+
var color = new MagickColor(0, Quantum.Max, 0, 0, (QuantumType)(Quantum.Max / 3));
38+
Assert.Equal("cmyka(0,255,0,0,0.3333)", color.ToString());
3539

3640
color = new MagickColor(0, Quantum.Max, 0, 0, Quantum.Max);
37-
Assert.Equal("cmyka(0," + Quantum.Max + ",0,0,1.0)", color.ToString());
41+
Assert.Equal("cmyka(0,255,0,0,1.0)", color.ToString());
3842
}
3943
}
4044
}

0 commit comments

Comments
 (0)