You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/10/31 08:44:05 UTC
svn commit: r1635714 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendMode.java
Author: jahewson
Date: Fri Oct 31 07:44:04 2014
New Revision: 1635714
URL: http://svn.apache.org/r1635714
Log:
PDFBOX-1292: Blend modes were always null!
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendMode.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=1635714&r1=1635713&r2=1635714&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 Fri Oct 31 07:44:04 2014
@@ -30,28 +30,6 @@ import java.util.Map;
*/
public abstract class BlendMode
{
- private static final Map<COSName, BlendMode> BLEND_MODES = createBlendModeMap();
-
- private static Map<COSName, BlendMode> createBlendModeMap()
- {
- Map<COSName, BlendMode> map = new HashMap<COSName, BlendMode>();
- map.put(COSName.NORMAL, BlendMode.NORMAL);
- map.put(COSName.COMPATIBLE, BlendMode.COMPATIBLE);
- map.put(COSName.MULTIPLY, BlendMode.MULTIPLY);
- map.put(COSName.SCREEN, BlendMode.SCREEN);
- map.put(COSName.OVERLAY, BlendMode.OVERLAY);
- map.put(COSName.DARKEN, BlendMode.DARKEN);
- map.put(COSName.LIGHTEN, BlendMode.LIGHTEN);
- map.put(COSName.COLOR_DODGE, BlendMode.COLOR_DODGE);
- map.put(COSName.COLOR_BURN, BlendMode.COLOR_BURN);
- map.put(COSName.HARD_LIGHT, BlendMode.HARD_LIGHT);
- map.put(COSName.SOFT_LIGHT, BlendMode.SOFT_LIGHT);
- map.put(COSName.DIFFERENCE, BlendMode.DIFFERENCE);
- map.put(COSName.EXCLUSION, BlendMode.EXCLUSION);
- // TODO - non-separable blending modes
- return map;
- }
-
/**
* Determines the blend mode from the BM entry in the COS ExtGState.
*
@@ -63,7 +41,7 @@ public abstract class BlendMode
BlendMode result = null;
if (cosBlendMode instanceof COSName)
{
- result = BLEND_MODES.get(cosBlendMode);
+ result = BLEND_MODES.get((COSName)cosBlendMode);
}
else if (cosBlendMode instanceof COSArray)
{
@@ -77,6 +55,7 @@ public abstract class BlendMode
}
}
}
+
if (result != null)
{
return result;
@@ -84,7 +63,7 @@ public abstract class BlendMode
return BlendMode.COMPATIBLE;
}
- public static SeparableBlendMode NORMAL = new SeparableBlendMode()
+ public static final SeparableBlendMode NORMAL = new SeparableBlendMode()
{
public float blendChannel(float srcValue, float dstValue)
{
@@ -92,9 +71,9 @@ public abstract class BlendMode
}
};
- public static SeparableBlendMode COMPATIBLE = NORMAL;
+ public static final SeparableBlendMode COMPATIBLE = NORMAL;
- public static SeparableBlendMode MULTIPLY = new SeparableBlendMode()
+ public static final SeparableBlendMode MULTIPLY = new SeparableBlendMode()
{
public float blendChannel(float srcValue, float dstValue)
{
@@ -102,7 +81,7 @@ public abstract class BlendMode
}
};
- public static SeparableBlendMode SCREEN = new SeparableBlendMode()
+ public static final SeparableBlendMode SCREEN = new SeparableBlendMode()
{
public float blendChannel(float srcValue, float dstValue)
{
@@ -110,7 +89,7 @@ public abstract class BlendMode
}
};
- public static SeparableBlendMode OVERLAY = new SeparableBlendMode()
+ public static final SeparableBlendMode OVERLAY = new SeparableBlendMode()
{
public float blendChannel(float srcValue, float dstValue)
{
@@ -119,7 +98,7 @@ public abstract class BlendMode
}
};
- public static SeparableBlendMode DARKEN = new SeparableBlendMode()
+ public static final SeparableBlendMode DARKEN = new SeparableBlendMode()
{
public float blendChannel(float srcValue, float dstValue)
{
@@ -127,7 +106,7 @@ public abstract class BlendMode
}
};
- public static SeparableBlendMode LIGHTEN = new SeparableBlendMode()
+ public static final SeparableBlendMode LIGHTEN = new SeparableBlendMode()
{
public float blendChannel(float srcValue, float dstValue)
{
@@ -135,7 +114,7 @@ public abstract class BlendMode
}
};
- public static SeparableBlendMode COLOR_DODGE = new SeparableBlendMode()
+ public static final SeparableBlendMode COLOR_DODGE = new SeparableBlendMode()
{
public float blendChannel(float srcValue, float dstValue)
{
@@ -143,7 +122,7 @@ public abstract class BlendMode
}
};
- public static SeparableBlendMode COLOR_BURN = new SeparableBlendMode()
+ public static final SeparableBlendMode COLOR_BURN = new SeparableBlendMode()
{
public float blendChannel(float srcValue, float dstValue)
{
@@ -151,7 +130,7 @@ public abstract class BlendMode
}
};
- public static SeparableBlendMode HARD_LIGHT = new SeparableBlendMode()
+ public static final SeparableBlendMode HARD_LIGHT = new SeparableBlendMode()
{
public float blendChannel(float srcValue, float dstValue)
{
@@ -160,7 +139,7 @@ public abstract class BlendMode
}
};
- public static SeparableBlendMode SOFT_LIGHT = new SeparableBlendMode()
+ public static final SeparableBlendMode SOFT_LIGHT = new SeparableBlendMode()
{
public float blendChannel(float srcValue, float dstValue)
{
@@ -177,7 +156,7 @@ public abstract class BlendMode
}
};
- public static SeparableBlendMode DIFFERENCE = new SeparableBlendMode()
+ public static final SeparableBlendMode DIFFERENCE = new SeparableBlendMode()
{
public float blendChannel(float srcValue, float dstValue)
{
@@ -185,7 +164,7 @@ public abstract class BlendMode
}
};
- public static SeparableBlendMode EXCLUSION = new SeparableBlendMode()
+ public static final SeparableBlendMode EXCLUSION = new SeparableBlendMode()
{
public float blendChannel(float srcValue, float dstValue)
{
@@ -193,6 +172,29 @@ public abstract class BlendMode
}
};
+ // this map *must* come after the declarations above, otherwise its values will be null
+ private static final Map<COSName, BlendMode> BLEND_MODES = createBlendModeMap();
+
+ private static Map<COSName, BlendMode> createBlendModeMap()
+ {
+ Map<COSName, BlendMode> map = new HashMap<COSName, BlendMode>();
+ map.put(COSName.NORMAL, BlendMode.NORMAL);
+ map.put(COSName.COMPATIBLE, BlendMode.COMPATIBLE);
+ map.put(COSName.MULTIPLY, BlendMode.MULTIPLY);
+ map.put(COSName.SCREEN, BlendMode.SCREEN);
+ map.put(COSName.OVERLAY, BlendMode.OVERLAY);
+ map.put(COSName.DARKEN, BlendMode.DARKEN);
+ map.put(COSName.LIGHTEN, BlendMode.LIGHTEN);
+ map.put(COSName.COLOR_DODGE, BlendMode.COLOR_DODGE);
+ map.put(COSName.COLOR_BURN, BlendMode.COLOR_BURN);
+ map.put(COSName.HARD_LIGHT, BlendMode.HARD_LIGHT);
+ map.put(COSName.SOFT_LIGHT, BlendMode.SOFT_LIGHT);
+ map.put(COSName.DIFFERENCE, BlendMode.DIFFERENCE);
+ map.put(COSName.EXCLUSION, BlendMode.EXCLUSION);
+ // TODO - non-separable blending modes
+ return map;
+ }
+
BlendMode()
{
}