You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2017/08/14 15:58:04 UTC

svn commit: r1805014 - in /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color: PDDeviceRGB.java PDICCBased.java

Author: tilman
Date: Mon Aug 14 15:58:04 2017
New Revision: 1805014

URL: http://svn.apache.org/viewvc?rev=1805014&view=rev
Log:
PDFBOX-3897: avoid sRGB self-conversion

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceRGB.java
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceRGB.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceRGB.java?rev=1805014&r1=1805013&r2=1805014&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceRGB.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceRGB.java Mon Aug 14 15:58:04 2017
@@ -100,8 +100,7 @@ public final class PDDeviceRGB extends P
     @Override
     public float[] toRGB(float[] value)
     {
-        init();
-        return awtColorSpace.toRGB(value);
+        return value;
     }
 
     @Override

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java?rev=1805014&r1=1805013&r2=1805014&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java Mon Aug 14 15:58:04 2017
@@ -63,6 +63,7 @@ public final class PDICCBased extends PD
     private PDColorSpace alternateColorSpace;
     private ICC_ColorSpace awtColorSpace;
     private PDColor initialColor;
+    private boolean isRGB = false;
 
     /**
      * Creates a new ICC color space with an empty stream.
@@ -131,6 +132,7 @@ public final class PDICCBased extends PD
                 profile = ICC_Profile.getInstance(input);
                 if (is_sRGB(profile))
                 {
+                    isRGB = true;
                     awtColorSpace = (ICC_ColorSpace) ColorSpace.getInstance(ColorSpace.CS_sRGB);
                     iccProfile = awtColorSpace.getProfile();
                 }
@@ -166,6 +168,10 @@ public final class PDICCBased extends PD
                 // fall back to alternateColorSpace color space
                 awtColorSpace = null;
                 alternateColorSpace = getAlternateColorSpace();
+                if (alternateColorSpace.equals(PDDeviceRGB.INSTANCE))
+                {
+                    isRGB = true;
+                }
                 LOG.error("Can't read embedded ICC profile (" + e.getLocalizedMessage() + "), using alternate color space: " + alternateColorSpace.getName());
                 initialColor = alternateColorSpace.getInitialColor();
             }
@@ -194,6 +200,10 @@ public final class PDICCBased extends PD
     @Override
     public float[] toRGB(float[] value) throws IOException
     {
+        if (isRGB)
+        {
+            return value;
+        }
         if (awtColorSpace != null)
         {
             // WARNING: toRGB is very slow when used with LUT-based ICC profiles