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 2015/10/02 20:05:46 UTC

svn commit: r1706455 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics: color/PDColorSpace.java image/PDInlineImage.java

Author: tilman
Date: Fri Oct  2 18:05:45 2015
New Revision: 1706455

URL: http://svn.apache.org/viewvc?rev=1706455&view=rev
Log:
PDFBOX-3003: remove double code; remove stuff suggested by Evgeniy Muravitskiy; remove another handling of abbreviated color space names

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDInlineImage.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java?rev=1706455&r1=1706454&r2=1706455&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java Fri Oct  2 18:05:45 2015
@@ -174,9 +174,9 @@ public abstract class PDColorSpace imple
                     return new PDPattern(resources, PDColorSpace.create(array.get(1)));
                 }
             }
-            else if (name == COSName.DEVICECMYK || name == COSName.CMYK ||
-                     name == COSName.DEVICERGB  || name == COSName.RGB ||
-                     name == COSName.DEVICEGRAY || name == COSName.PATTERN)
+            else if (name == COSName.DEVICECMYK ||
+                     name == COSName.DEVICERGB ||
+                     name == COSName.DEVICEGRAY)
             {
                 // not allowed in an array, but we sometimes encounter these regardless
                 return create(name, resources);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDInlineImage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDInlineImage.java?rev=1706455&r1=1706454&r2=1706455&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDInlineImage.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDInlineImage.java Fri Oct  2 18:05:45 2015
@@ -60,6 +60,7 @@ public final class PDInlineImage impleme
      * @param parameters the image parameters
      * @param data the image data
      * @param resources the current resources
+     * @throws IOException if the stream cannot be decoded
      */
     public PDInlineImage(COSDictionary parameters, byte[] data, PDResources resources)
             throws IOException
@@ -132,7 +133,7 @@ public final class PDInlineImage impleme
 
         if (cs != null)
         {
-            return create(cs);
+            return createColorSpace(cs);
         }
         else if (isStencil())
         {
@@ -142,63 +143,52 @@ public final class PDInlineImage impleme
         else
         {
             // an image without a color space is always broken
-            throw new IOException("could not determine color space");
+            throw new IOException("could not determine inline image color space");
         }
     }
     
-    private PDColorSpace create(COSBase cs) throws IOException
+    // deliver the long name of a device colorspace, or the parameter
+    private COSBase toLongName(COSBase cs)
+    {
+        if (COSName.RGB.equals(cs))
+        {
+            return COSName.DEVICERGB;
+        }
+        if (COSName.CMYK.equals(cs))
+        {
+            return COSName.DEVICECMYK;
+        }
+        if (COSName.G.equals(cs))
+        {
+            return COSName.DEVICEGRAY;
+        }
+        return cs;
+    }
+    
+    private PDColorSpace createColorSpace(COSBase cs) throws IOException
     {
         if (cs instanceof COSName)
         {
-            if (COSName.RGB.equals(cs))
-            {
-                return PDColorSpace.create(COSName.DEVICERGB, resources);
-            }
-            else if (COSName.CMYK.equals(cs))
-            {
-                return PDColorSpace.create(COSName.DEVICECMYK, resources);
-            }
-            else if (COSName.G.equals(cs))
-            {
-                return PDColorSpace.create(COSName.DEVICEGRAY, resources);
-            }
-            else
-            {
-                return PDColorSpace.create(cs, resources);
-            }
+            return PDColorSpace.create(toLongName(cs), resources);
         }
-        else if (cs instanceof COSArray && ((COSArray) cs).size() > 1)
+
+        if (cs instanceof COSArray && ((COSArray) cs).size() > 1)
         {
-            COSBase csType = ((COSArray) cs).get(0);
+            COSArray srcArray = (COSArray) cs;
+            COSBase csType = srcArray.get(0);
             if (COSName.I.equals(csType) || COSName.INDEXED.equals(csType))
             {
-                COSArray array = new COSArray();
-                array.addAll((COSArray) cs);
-                array.set(0, COSName.INDEXED);
-                COSBase cs1 = ((COSArray) cs).get(1);
-                if (COSName.RGB.equals(cs1))
-                {
-                    array.set(1, COSName.DEVICERGB);
-                }
-                else if (COSName.CMYK.equals(cs1))
-                {
-                    array.set(1, COSName.DEVICECMYK);
-                }
-                else if (COSName.G.equals(cs1))
-                {
-                    array.set(1, COSName.DEVICEGRAY);
-                }
-                return PDColorSpace.create(array, resources);
-            }
-            else
-            {
-                throw new IOException("Illegal type of color space in inline image: " + csType);
+                COSArray dstArray = new COSArray();
+                dstArray.addAll(srcArray);
+                dstArray.set(0, COSName.INDEXED);
+                dstArray.set(1, toLongName(srcArray.get(1)));
+                return PDColorSpace.create(dstArray, resources);
             }
+
+            throw new IOException("Illegal type of inline image color space: " + csType);
         }
-        else
-        {
-            throw new IOException("Illegal type of object for color space: " + cs);
-        }
+
+        throw new IOException("Illegal type of object for inline image color space: " + cs);
     }
 
     @Override
@@ -386,6 +376,7 @@ public final class PDInlineImage impleme
      *
      * @return The image suffix.
      */
+    @Override
     public String getSuffix()
     {
         // TODO implement me