Author: lehmi
Date: Sun May  4 12:10:36 2025
New Revision: 1925398

URL: http://svn.apache.org/viewvc?rev=1925398&view=rev
Log:
PDFBOX-5998: avoid unnecessary map lookups based on a proposal by Axel Howind

Modified:
    
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java
    
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/VerticalOriginTable.java
    
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElement.java
    
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
    
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java
    
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java

Modified: 
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java?rev=1925398&r1=1925397&r2=1925398&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java
 (original)
+++ 
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/cff/CFFCIDFont.java
 Sun May  4 12:10:36 2025
@@ -177,8 +177,8 @@ public class CFFCIDFont extends CFFFont
         {
             return 1000;
         }
-        Map<String, Object> privDict = 
this.privateDictionaries.get(fdArrayIndex);
-        return privDict.containsKey("defaultWidthX") ? 
((Number)privDict.get("defaultWidthX")).intValue() : 1000;
+        Object privDictValue = 
this.privateDictionaries.get(fdArrayIndex).get("defaultWidthX");
+        return privDictValue instanceof Number ? ((Number) 
privDictValue).intValue() : 1000;
     }
 
     /**
@@ -193,8 +193,8 @@ public class CFFCIDFont extends CFFFont
         {
             return 0;
         }
-        Map<String, Object> privDict = 
this.privateDictionaries.get(fdArrayIndex);
-        return privDict.containsKey("nominalWidthX") ? 
((Number)privDict.get("nominalWidthX")).intValue() : 0;
+        Object privDictValue = 
this.privateDictionaries.get(fdArrayIndex).get("nominalWidthX");
+        return privDictValue instanceof Number ? ((Number) 
privDictValue).intValue() : 0;
     }
 
     /**

Modified: 
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/VerticalOriginTable.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/VerticalOriginTable.java?rev=1925398&r1=1925397&r2=1925398&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/VerticalOriginTable.java
 (original)
+++ 
pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/VerticalOriginTable.java
 Sun May  4 12:10:36 2025
@@ -91,13 +91,7 @@ public class VerticalOriginTable extends
      */
     public int getOriginY(int gid)
     {
-        if (origins.containsKey(gid))
-        {
-            return origins.get(gid);
-        }
-        else
-        {
-            return defaultVertOriginY;
-        }
+        Integer originY = origins.get(gid);
+        return originY != null ? originY : defaultVertOriginY;
     }
 }

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElement.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElement.java?rev=1925398&r1=1925397&r2=1925398&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElement.java
 (original)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureElement.java
 Sun May  4 12:10:36 2025
@@ -611,14 +611,10 @@ public class PDStructureElement extends
     public String getStandardStructureType()
     {
         String type = this.getStructureType();
-        Map<String,Object> roleMap = getRoleMap();
-        if (roleMap.containsKey(type))
+        Object mappedValue = getRoleMap().get(type);
+        if (mappedValue instanceof String)
         {
-            Object mappedValue = getRoleMap().get(type);
-            if (mappedValue instanceof String)
-            {
-                type = (String)mappedValue;
-            }
+            type = (String) mappedValue;
         }
         return type;
     }

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java?rev=1925398&r1=1925397&r2=1925398&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
 (original)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
 Sun May  4 12:10:36 2025
@@ -69,10 +69,7 @@ public class PDTrueTypeFont extends PDSi
         Map<Integer, String> codeToName = 
MacOSRomanEncoding.INSTANCE.getCodeToNameMap();
         for (Map.Entry<Integer, String> entry : codeToName.entrySet())
         {
-            if (!INVERTED_MACOS_ROMAN.containsKey(entry.getValue()))
-            {
-                INVERTED_MACOS_ROMAN.put(entry.getValue(), entry.getKey());
-            }
+            INVERTED_MACOS_ROMAN.putIfAbsent(entry.getValue(), entry.getKey());
         }
     }
 
@@ -169,7 +166,7 @@ public class PDTrueTypeFont extends PDSi
     private CmapSubtable cmapWinSymbol = null;
     private CmapSubtable cmapMacRoman = null;
     private boolean cmapInitialized = false;
-    private Map<Integer, Integer> gidToCode; // for embedding
+    private final Map<Integer, Integer> gidToCode = new HashMap<Integer, 
Integer>(); // for embedding
 
     private final TrueTypeFont ttf;
     private final boolean isEmbedded;
@@ -444,19 +441,14 @@ public class PDTrueTypeFont extends PDSi
      */
     protected Map<Integer, Integer> getGIDToCode() throws IOException
     {
-        if (gidToCode != null)
+        if (!gidToCode.isEmpty())
         {
             return gidToCode;
         }
-
-        gidToCode = new HashMap<Integer, Integer>();
         for (int code = 0; code <= 255; code++)
         {
             int gid = codeToGID(code);
-            if (!gidToCode.containsKey(gid))
-            {
-                gidToCode.put(gid, code);
-            }
+            gidToCode.putIfAbsent(gid, code);
         }
         return gidToCode;
     }

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java?rev=1925398&r1=1925397&r2=1925398&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java
 (original)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/encoding/GlyphList.java
 Sun May  4 12:10:36 2025
@@ -156,12 +156,6 @@ public final class GlyphList
                     String name = parts[0];
                     String[] unicodeList = parts[1].split(" ");
 
-                    if (nameToUnicode.containsKey(name))
-                    {
-                        LOG.warn("duplicate value for " + name + " -> " + 
parts[1] + " " +
-                                 nameToUnicode.get(name));
-                    }
-
                     int[] codePoints = new int[unicodeList.length];
                     int index = 0;
                     for (String hex : unicodeList)
@@ -171,8 +165,12 @@ public final class GlyphList
                     String string = new String(codePoints, 0 , 
codePoints.length);
 
                     // forward mapping
-                    nameToUnicode.put(name, string);
-
+                    String oldMapping = nameToUnicode.put(name, string);
+                    if (oldMapping != null)
+                    {
+                        LOG.warn("duplicate value for " + name + " -> " + 
parts[1] + " "
+                                + nameToUnicode.get(name));
+                    }
                     // reverse mapping
                     // PDFBOX-3884: take the various standard encodings as 
canonical, 
                     // e.g. tilde over ilde
@@ -182,10 +180,14 @@ public final class GlyphList
                           MacExpertEncoding.INSTANCE.contains(name) ||
                           SymbolEncoding.INSTANCE.contains(name) ||
                           ZapfDingbatsEncoding.INSTANCE.contains(name);
-                    if (!unicodeToName.containsKey(string) || forceOverride)
+                    if (forceOverride)
                     {
                         unicodeToName.put(string, name);
                     }
+                    else
+                    {
+                        unicodeToName.putIfAbsent(string, name);
+                    }
                 }
             }
         }

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java?rev=1925398&r1=1925397&r2=1925398&view=diff
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java
 (original)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java
 Sun May  4 12:10:36 2025
@@ -585,11 +585,8 @@ public class PDExtendedGraphicsState imp
      */
     public PDSoftMask getSoftMask()
     {
-        if (!dict.containsKey(COSName.SMASK))
-        {
-            return null;
-        }
-        return PDSoftMask.create(dict.getDictionaryObject(COSName.SMASK));
+        COSBase smask = dict.getDictionaryObject(COSName.SMASK);
+        return smask == null ? null : PDSoftMask.create(smask);
     }
 
     /**


Reply via email to