org.apache.batik.ext.awt.image.rendered
Class MorphologyOp

java.lang.Object
  |
  +--org.apache.batik.ext.awt.image.rendered.MorphologyOp
All Implemented Interfaces:
java.awt.image.BufferedImageOp, java.awt.image.RasterOp

public class MorphologyOp
extends java.lang.Object
implements java.awt.image.BufferedImageOp, java.awt.image.RasterOp

This class provides an implementation for the SVG feMorphology filter, as defined in Chapter 15, section 20 of the SVG specification.


Constructor Summary
MorphologyOp(int radiusX, int radiusY, boolean doDilation)
           
 
Method Summary
 java.awt.image.BufferedImage createCompatibleDestImage(java.awt.image.BufferedImage src, java.awt.image.ColorModel destCM)
           
 java.awt.image.WritableRaster createCompatibleDestRaster(java.awt.image.Raster src)
           
 java.awt.image.BufferedImage filter(java.awt.image.BufferedImage src, java.awt.image.BufferedImage dest)
          This implementation of filter does the morphology operation on a premultiplied alpha image.
 java.awt.image.WritableRaster filter(java.awt.image.Raster src, java.awt.image.WritableRaster dest)
          Filters src and writes result into dest.
 java.awt.geom.Rectangle2D getBounds2D(java.awt.image.BufferedImage src)
           
 java.awt.geom.Rectangle2D getBounds2D(java.awt.image.Raster src)
           
 java.awt.geom.Point2D getPoint2D(java.awt.geom.Point2D srcPt, java.awt.geom.Point2D destPt)
           
 java.awt.RenderingHints getRenderingHints()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MorphologyOp

public MorphologyOp(int radiusX,
                    int radiusY,
                    boolean doDilation)
Parameters:
radiusX - defines the radius of filter operation on X-axis. Should not be negative. A value of zero will disable the effect of the operation on X-axis, as described in the SVG specification.
radiusY - defines the radius of filter operation on Y-axis. Should not be negative. A value of zero will disable the effect of the operation on Y-axis, as described in the SVG specification.
doDilation - defines whether to do dilation or erosion operation. Will do dilation when the value is true, erosion when false.
Method Detail

getBounds2D

public java.awt.geom.Rectangle2D getBounds2D(java.awt.image.Raster src)
Specified by:
getBounds2D in interface java.awt.image.RasterOp

getBounds2D

public java.awt.geom.Rectangle2D getBounds2D(java.awt.image.BufferedImage src)
Specified by:
getBounds2D in interface java.awt.image.BufferedImageOp

getPoint2D

public java.awt.geom.Point2D getPoint2D(java.awt.geom.Point2D srcPt,
                                        java.awt.geom.Point2D destPt)
Specified by:
getPoint2D in interface java.awt.image.BufferedImageOp

getRenderingHints

public java.awt.RenderingHints getRenderingHints()
Specified by:
getRenderingHints in interface java.awt.image.BufferedImageOp

createCompatibleDestRaster

public java.awt.image.WritableRaster createCompatibleDestRaster(java.awt.image.Raster src)
Specified by:
createCompatibleDestRaster in interface java.awt.image.RasterOp

createCompatibleDestImage

public java.awt.image.BufferedImage createCompatibleDestImage(java.awt.image.BufferedImage src,
                                                              java.awt.image.ColorModel destCM)
Specified by:
createCompatibleDestImage in interface java.awt.image.BufferedImageOp

filter

public java.awt.image.WritableRaster filter(java.awt.image.Raster src,
                                            java.awt.image.WritableRaster dest)
Filters src and writes result into dest. If dest if null, then a Raster is created. If dest and src refer to the same object, then the source is modified.

The filtering kernel(the operation range for each pixel) is a rectangle of width 2*radiusX+1 and height radiusY+1

Specified by:
filter in interface java.awt.image.RasterOp
Parameters:
src - the Raster to be filtered
dest - stores the filtered image. If null, a destination will be created. src and dest can refer to the same Raster, in which situation the src will be modified.

filter

public java.awt.image.BufferedImage filter(java.awt.image.BufferedImage src,
                                           java.awt.image.BufferedImage dest)
This implementation of filter does the morphology operation on a premultiplied alpha image. This tends to muddy the colors. so something that is supposed to be a mostly transparent bright red may well become a muddy opaque red. Where as I think it should become a bright opaque red. Which is the result you would get if you were using unpremult data.
Specified by:
filter in interface java.awt.image.BufferedImageOp


Copyright © 2002 Apache Software Foundation. All Rights Reserved.