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 2014/07/12 14:21:34 UTC
svn commit: r1609908 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendComposite.java
Author: tilman
Date: Sat Jul 12 12:21:34 2014
New Revision: 1609908
URL: http://svn.apache.org/r1609908
Log:
PDFBOX-2203: clip alpha to 0..1
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendComposite.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendComposite.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendComposite.java?rev=1609908&r1=1609907&r2=1609908&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendComposite.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/blend/BlendComposite.java Sat Jul 12 12:21:34 2014
@@ -24,6 +24,8 @@ import java.awt.color.ColorSpace;
import java.awt.image.ColorModel;
import java.awt.image.Raster;
import java.awt.image.WritableRaster;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
* AWT composite for blend modes.
@@ -33,15 +35,31 @@ import java.awt.image.WritableRaster;
public final class BlendComposite implements Composite
{
/**
+ * Log instance.
+ */
+ private static final Log LOG = LogFactory.getLog(BlendComposite.class);
+
+ /**
* Creates a blend composite
*
* @param blendMode Desired blend mode
- * @param constantAlpha Constant alpha
+ * @param constantAlpha Constant alpha, must be in the inclusive range
+ * [0.0, 1.0] or it will be clipped.
*/
public static Composite getInstance(BlendMode blendMode, float constantAlpha)
{
if (blendMode == BlendMode.NORMAL)
{
+ if (constantAlpha < 0)
+ {
+ LOG.warn("using 0 instead of incorrect Alpha " + constantAlpha);
+ constantAlpha = 0;
+ }
+ else if (constantAlpha > 1)
+ {
+ LOG.warn("using 1 instead of incorrect Alpha " + constantAlpha);
+ constantAlpha = 1;
+ }
return AlphaComposite.getInstance(AlphaComposite.SRC_OVER, constantAlpha);
}
else
@@ -62,6 +80,7 @@ public final class BlendComposite implem
this.constantAlpha = constantAlpha;
}
+ @Override
public CompositeContext createContext(ColorModel srcColorModel, ColorModel dstColorModel,
RenderingHints hints)
{
@@ -70,9 +89,9 @@ public final class BlendComposite implem
class BlendCompositeContext implements CompositeContext
{
- private ColorModel srcColorModel;
- private ColorModel dstColorModel;
- private RenderingHints hints;
+ private final ColorModel srcColorModel;
+ private final ColorModel dstColorModel;
+ private final RenderingHints hints;
BlendCompositeContext(ColorModel srcColorModel, ColorModel dstColorModel,
RenderingHints hints)
@@ -82,11 +101,13 @@ public final class BlendComposite implem
this.hints = hints;
}
+ @Override
public void dispose()
{
// nothing needed
}
+ @Override
public void compose(Raster src, Raster dstIn, WritableRaster dstOut)
{
int x0 = src.getMinX();