You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by da...@apache.org on 2012/01/08 07:44:50 UTC

svn commit: r1228802 - in /commons/proper/sanselan/trunk/src: main/java/org/apache/commons/sanselan/color/ColorConversions.java test/java/org/apache/commons/sanselan/color/ColorConversionsTest.java

Author: damjan
Date: Sun Jan  8 06:44:49 2012
New Revision: 1228802

URL: http://svn.apache.org/viewvc?rev=1228802&view=rev
Log:
Deleted a test that's wrong by design.

The Adobe and Ghostscript formulas for converting
CMYK to RGB are fundamentally designed to give
different outputs, it is meaningless to test
them against each other and expect the same results.


Modified:
    commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/color/ColorConversions.java
    commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/color/ColorConversionsTest.java

Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/color/ColorConversions.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/color/ColorConversions.java?rev=1228802&r1=1228801&r2=1228802&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/color/ColorConversions.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/color/ColorConversions.java Sun Jan  8 06:44:49 2012
@@ -209,6 +209,12 @@ public abstract class ColorConversions
 
     public static final int convertCMYtoRGB(ColorCmy cmy)
     {
+        // From Ghostscript's gdevcdj.c: 
+        // *   Ghostscript:    R = (1.0 - C) * (1.0 - K)
+        // *   Adobe:          R = 1.0 - min(1.0, C + K)
+        // and similarly for G and B.
+        // This is Ghostscript's formula with K = 0.
+        
         //        CMY values = 0 ÷ 1
         //        RGB values = 0 ÷ 255
 
@@ -516,7 +522,7 @@ public abstract class ColorConversions
         return convertRGBtoRGB(R, G, B);
     }
 
-    public static final int convertCMYKtoRGB_old(int sc, int sm, int sy, int sk)
+    public static final int convertCMYKtoRGB_Adobe(int sc, int sm, int sy, int sk)
     //    throws ImageReadException, IOException
     {
         int red = 255 - (sc + sk);

Modified: commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/color/ColorConversionsTest.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/color/ColorConversionsTest.java?rev=1228802&r1=1228801&r2=1228802&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/color/ColorConversionsTest.java (original)
+++ commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/color/ColorConversionsTest.java Sun Jan  8 06:44:49 2012
@@ -35,26 +35,6 @@ public class ColorConversionsTest extend
             0xff7f7f7f,
     };
 
-    public void testCMYKtoRGB() throws Exception
-    {
-        for (int C = 0; C <= 256; C += 64)
-        {
-            for (int M = 0; M <= 256; M += 64)
-            {
-                for (int Y = 0; Y <= 256; Y += 64)
-                {
-                    for (int K = 0; K <= 256; K += 64)
-                    {
-                        int rgb1 = ColorConversions.convertCMYKtoRGB(Math.min(255, C), Math.min(255, M), Math.min(255, Y), Math.min(255, K));
-                        int rgb2 = ColorConversions.convertCMYKtoRGB_old(Math.min(255, C), Math.min(255, M), Math.min(255, Y), Math.min(255, K));
-                        
-                        assertEquals(new ColorCmyk(C, M, Y, K).toString(), Integer.toHexString(rgb1).toUpperCase(), Integer.toHexString(rgb2).toUpperCase());
-                    }
-                }
-            }
-        }
-    }
-
     public void testRGBtoCMYK() throws Exception
     {
         for (int i = 0; i < SAMPLE_RGBS.length; i++)



Re: svn commit: r1228802 - in /commons/proper/sanselan/trunk/src: main/java/org/apache/commons/sanselan/color/ColorConversions.java test/java/org/apache/commons/sanselan/color/ColorConversionsTest.java

Posted by Matt Benson <gu...@gmail.com>.
Thanks for getting this straightened out, Damjan!

Matt

On Sun, Jan 8, 2012 at 12:44 AM,  <da...@apache.org> wrote:
> Author: damjan
> Date: Sun Jan  8 06:44:49 2012
> New Revision: 1228802
>
> URL: http://svn.apache.org/viewvc?rev=1228802&view=rev
> Log:
> Deleted a test that's wrong by design.
>
> The Adobe and Ghostscript formulas for converting
> CMYK to RGB are fundamentally designed to give
> different outputs, it is meaningless to test
> them against each other and expect the same results.
>
>
> Modified:
>    commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/color/ColorConversions.java
>    commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/color/ColorConversionsTest.java
>
> Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/color/ColorConversions.java
> URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/color/ColorConversions.java?rev=1228802&r1=1228801&r2=1228802&view=diff
> ==============================================================================
> --- commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/color/ColorConversions.java (original)
> +++ commons/proper/sanselan/trunk/src/main/java/org/apache/commons/sanselan/color/ColorConversions.java Sun Jan  8 06:44:49 2012
> @@ -209,6 +209,12 @@ public abstract class ColorConversions
>
>     public static final int convertCMYtoRGB(ColorCmy cmy)
>     {
> +        // From Ghostscript's gdevcdj.c:
> +        // *   Ghostscript:    R = (1.0 - C) * (1.0 - K)
> +        // *   Adobe:          R = 1.0 - min(1.0, C + K)
> +        // and similarly for G and B.
> +        // This is Ghostscript's formula with K = 0.
> +
>         //        CMY values = 0 ÷ 1
>         //        RGB values = 0 ÷ 255
>
> @@ -516,7 +522,7 @@ public abstract class ColorConversions
>         return convertRGBtoRGB(R, G, B);
>     }
>
> -    public static final int convertCMYKtoRGB_old(int sc, int sm, int sy, int sk)
> +    public static final int convertCMYKtoRGB_Adobe(int sc, int sm, int sy, int sk)
>     //    throws ImageReadException, IOException
>     {
>         int red = 255 - (sc + sk);
>
> Modified: commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/color/ColorConversionsTest.java
> URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/color/ColorConversionsTest.java?rev=1228802&r1=1228801&r2=1228802&view=diff
> ==============================================================================
> --- commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/color/ColorConversionsTest.java (original)
> +++ commons/proper/sanselan/trunk/src/test/java/org/apache/commons/sanselan/color/ColorConversionsTest.java Sun Jan  8 06:44:49 2012
> @@ -35,26 +35,6 @@ public class ColorConversionsTest extend
>             0xff7f7f7f,
>     };
>
> -    public void testCMYKtoRGB() throws Exception
> -    {
> -        for (int C = 0; C <= 256; C += 64)
> -        {
> -            for (int M = 0; M <= 256; M += 64)
> -            {
> -                for (int Y = 0; Y <= 256; Y += 64)
> -                {
> -                    for (int K = 0; K <= 256; K += 64)
> -                    {
> -                        int rgb1 = ColorConversions.convertCMYKtoRGB(Math.min(255, C), Math.min(255, M), Math.min(255, Y), Math.min(255, K));
> -                        int rgb2 = ColorConversions.convertCMYKtoRGB_old(Math.min(255, C), Math.min(255, M), Math.min(255, Y), Math.min(255, K));
> -
> -                        assertEquals(new ColorCmyk(C, M, Y, K).toString(), Integer.toHexString(rgb1).toUpperCase(), Integer.toHexString(rgb2).toUpperCase());
> -                    }
> -                }
> -            }
> -        }
> -    }
> -
>     public void testRGBtoCMYK() throws Exception
>     {
>         for (int i = 0; i < SAMPLE_RGBS.length; i++)
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org