Class 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

      Constructors 
      Constructor Description
      MorphologyOp​(int radiusX, int radiusY, boolean doDilation)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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
        Specified by:
        getPoint2D in interface java.awt.image.RasterOp
      • getRenderingHints

        public java.awt.RenderingHints getRenderingHints()
        Specified by:
        getRenderingHints in interface java.awt.image.BufferedImageOp
        Specified by:
        getRenderingHints in interface java.awt.image.RasterOp
      • 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