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 2018/01/29 19:19:25 UTC
svn commit: r1822562 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics:
blend/BlendMode.java state/PDExtendedGraphicsState.java
Author: tilman
Date: Mon Jan 29 19:19:25 2018
New Revision: 1822562
URL: http://svn.apache.org/viewvc?rev=1822562&view=rev
Log:
PDFBOX-3353: make it possible to set BlendMode without using getCOSObject()
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendMode.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendMode.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendMode.java?rev=1822562&r1=1822561&r2=1822562&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendMode.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendMode.java Mon Jan 29 19:19:25 2018
@@ -62,6 +62,17 @@ public abstract class BlendMode
}
return BlendMode.COMPATIBLE;
}
+
+ /**
+ * Determines the blend mode name from the BM object.
+ *
+ * @param bm Blend mode.
+ * @return name of blend mode.
+ */
+ public static COSName getCOSName(BlendMode bm)
+ {
+ return BLEND_MODE_NAMES.get(bm);
+ }
public static final SeparableBlendMode NORMAL = new SeparableBlendMode()
{
@@ -184,8 +195,9 @@ public abstract class BlendMode
}
};
- // this map *must* come after the declarations above, otherwise its values will be null
+ // these maps *must* come after the declarations above, otherwise its values will be null
private static final Map<COSName, BlendMode> BLEND_MODES = createBlendModeMap();
+ private static final Map<BlendMode, COSName> BLEND_MODE_NAMES = createBlendModeNamesMap();
private static Map<COSName, BlendMode> createBlendModeMap()
{
@@ -208,6 +220,26 @@ public abstract class BlendMode
return map;
}
+ private static Map<BlendMode, COSName> createBlendModeNamesMap()
+ {
+ Map<BlendMode, COSName> map = new HashMap<>(13);
+ map.put(BlendMode.NORMAL, COSName.NORMAL);
+ map.put(BlendMode.COMPATIBLE, COSName.COMPATIBLE);
+ map.put(BlendMode.MULTIPLY, COSName.MULTIPLY);
+ map.put(BlendMode.SCREEN, COSName.SCREEN);
+ map.put(BlendMode.OVERLAY, COSName.OVERLAY);
+ map.put(BlendMode.DARKEN, COSName.DARKEN);
+ map.put(BlendMode.LIGHTEN, COSName.LIGHTEN);
+ map.put(BlendMode.COLOR_DODGE, COSName.COLOR_DODGE);
+ map.put(BlendMode.COLOR_BURN, COSName.COLOR_BURN);
+ map.put(BlendMode.HARD_LIGHT, COSName.HARD_LIGHT);
+ map.put(BlendMode.SOFT_LIGHT, COSName.SOFT_LIGHT);
+ map.put(BlendMode.DIFFERENCE, COSName.DIFFERENCE);
+ map.put(BlendMode.EXCLUSION, COSName.EXCLUSION);
+ // TODO - non-separable blending modes
+ return map;
+ }
+
BlendMode()
{
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java?rev=1822562&r1=1822561&r2=1822562&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDExtendedGraphicsState.java Mon Jan 29 19:19:25 2018
@@ -545,6 +545,16 @@ public class PDExtendedGraphicsState imp
{
return BlendMode.getInstance(dict.getDictionaryObject(COSName.BM));
}
+
+ /**
+ * Set the blending mode.
+ *
+ * @param bm
+ */
+ public void setBlendMode(BlendMode bm)
+ {
+ dict.setItem(COSName.BM, BlendMode.getCOSName(bm));
+ }
/**
* Returns the soft mask stored in the COS dictionary