Author: jahewson
Date: Fri Feb 21 06:07:01 2014
New Revision: 1570458

URL: http://svn.apache.org/r1570458
Log:
Fixed CalRGB errors in PDFBOX-1893

Modified:
    
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalRGB.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalRGB.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalRGB.java?rev=1570458&r1=1570457&r2=1570458&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalRGB.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDCalRGB.java
 Fri Feb 21 06:07:01 2014
@@ -35,7 +35,6 @@ import java.awt.color.ColorSpace;
  */
 public class PDCalRGB extends PDCIEBasedColorSpace
 {
-    private static final ColorSpace CIEXYZ = 
ColorSpace.getInstance(ColorSpace.CS_CIEXYZ);
     private static final PDColor INITIAL_COLOR = new PDColor(new float[] { 0, 
0, 0 });
 
     protected COSArray array;
@@ -86,46 +85,16 @@ public class PDCalRGB extends PDCIEBased
         return INITIAL_COLOR;
     }
 
-    //
-    // WARNING: this method is performance sensitive, modify with care!
-    //
     @Override
     public final float[] toRGB(float[] value)
     {
-        float a = value[0];
-        float b = value[1];
-        float c = value[2];
-
-        PDGamma g = getGamma();
-        PDMatrix m = getGammaMatrix();
-
-        float xA = m.getValue(0, 0);
-        float xB = m.getValue(1, 0);
-        float xC = m.getValue(2, 0);
-
-        float yA = m.getValue(0, 1);
-        float yB = m.getValue(1, 1);
-        float yC = m.getValue(2, 1);
-
-        float zA = m.getValue(0, 2);
-        float zB = m.getValue(1, 2);
-        float zC = m.getValue(2, 2);
-
-        float v1 = (float)Math.pow(a, g.getR());  // A ^ G_R
-        float v2 = (float)Math.pow(b, g.getG());  // B ^ G_G
-        float v3 = (float)Math.pow(c, g.getB());  // C ^ G_B   NOTE: PDF32000 
p147 is mistaken
-
-        float x = xA * v1 + xB * v2 + xC * v3;
-        float y = yA * v1 + yB * v2 + yC * v3;
-        float z = zA * v1 + zB * v2 + zC * v3;
-
-        // TODO scale XYZ values using blackpoint
-
-        x /= getWhitepoint().getX();
-        y /= getWhitepoint().getY();
-        z /= getWhitepoint().getZ();
+        // this is a hack, we simply skip CIE calibration of the RGB value
+        return new float[] { value[0], value[1], value[2] };
+    }
 
-        return CIEXYZ.toRGB(new float[] { x, y, z });
+    private float clamp(float value)
+    {
+        return Math.min(Math.max(value, 0), 1);
     }
 
     /**


Reply via email to