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/07/08 18:36:59 UTC

svn commit: r1689917 - /pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java

Author: tilman
Date: Wed Jul  8 16:36:59 2015
New Revision: 1689917

URL: http://svn.apache.org/r1689917
Log:
PDFBOX-2530: improved flag checks, as done by Khyrul Bashar in GSoC2015

Modified:
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java?rev=1689917&r1=1689916&r2=1689917&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java Wed Jul  8 16:36:59 2015
@@ -441,7 +441,7 @@ public class PDFDebugger extends javax.s
                     showPage(selectedNode);
                     return;
                 }
-                if (isFlagNode(selectedNode))
+                if (isFlagNode(selectedNode, path.getParentPath().getLastPathComponent()))
                 {
                     Object parentNode = path.getParentPath().getLastPathComponent();
                     showFlagPane(parentNode, selectedNode);
@@ -521,16 +521,39 @@ public class PDFDebugger extends javax.s
         return false;
     }
 
-    private boolean isFlagNode(Object selectedNode)
+    private boolean isFlagNode(Object selectedNode, Object parentNode)
     {
         if (selectedNode instanceof MapEntry)
         {
-            Object key = ((MapEntry)selectedNode).getKey();
-            return COSName.FLAGS.equals(key) || COSName.F.equals(key) || COSName.FF.equals(key)
+            Object key = ((MapEntry) selectedNode).getKey();
+            return (COSName.FLAGS.equals(key) && isFontDescriptor(parentNode))
+                    || (COSName.F.equals(key) && isAnnot(parentNode)) || COSName.FF.equals(key)
                     || COSName.PANOSE.equals(key);
         }
         return false;
     }
+
+    private boolean isFontDescriptor(Object obj)
+    {
+        Object underneathObject = getUnderneathObject(obj);
+        if (underneathObject instanceof COSDictionary)
+        {
+            return ((COSDictionary) underneathObject).containsKey(COSName.TYPE)
+                && ((COSDictionary) underneathObject).getCOSName(COSName.TYPE).equals(COSName.FONT_DESC);
+        }
+        return false;
+    }
+
+    private boolean isAnnot(Object obj)
+    {
+        Object underneathObject = getUnderneathObject(obj);
+        if (underneathObject instanceof COSDictionary)
+        {
+            return ((COSDictionary) underneathObject).containsKey(COSName.TYPE)
+                && ((COSDictionary) underneathObject).getCOSName(COSName.TYPE).equals(COSName.ANNOT);
+        }
+        return false;
+    }
 
     /**
      * Show a Panel describing color spaces in more detail and interactive way.