Package ij.gui

Class ShapeRoi

  • All Implemented Interfaces:
    Serializable, Cloneable, Iterable<Point>

    public class ShapeRoi
    extends Roi
    A subclass of ij.gui.Roi (2D Regions Of Interest) implemented in terms of java.awt.Shape. A ShapeRoi is constructed from a ij.gui.Roi object, or as a result of logical operators (i.e., union, intersection, exclusive or, and subtraction) provided by this class. These operators use the package java.awt.geom as a backend.
    This code is in the public domain.
    Author:
    Cezar M.Tigaret
    See Also:
    Serialized Form
    • Constructor Detail

      • ShapeRoi

        public ShapeRoi​(Roi r)
        Constructs a ShapeRoi from an Roi.
      • ShapeRoi

        public ShapeRoi​(Shape s)
        Constructs a ShapeRoi from a Shape.
      • ShapeRoi

        public ShapeRoi​(int x,
                        int y,
                        Shape s)
        Constructs a ShapeRoi from a Shape.
      • ShapeRoi

        public ShapeRoi​(float[] shapeArray)
        Constructs a ShapeRoi from an array of variable length path segments. Each segment consists of the segment type followed by 0-3 end points and control points. Depending on the type, a segment uses from 1 to 7 elements of the array.
    • Method Detail

      • clone

        public Object clone()
        Returns a deep copy of this.
        Overrides:
        clone in class Roi
      • or

        public ShapeRoi or​(ShapeRoi sr)
        Unary union operator. The caller is set to its union with the argument.
        Returns:
        the union of this and sr
      • and

        public ShapeRoi and​(ShapeRoi sr)
        Unary intersection operator. The caller is set to its intersection with the argument (i.e., the overlapping regions between the operands).
        Returns:
        the overlapping regions between this and sr
      • xor

        public ShapeRoi xor​(ShapeRoi sr)
        Unary exclusive or operator. The caller is set to the non-overlapping regions between the operands.
        Returns:
        the union of the non-overlapping regions of this and sr
      • not

        public ShapeRoi not​(ShapeRoi sr)
        Unary subtraction operator. The caller is set to the result of the operation between the operands.
        Returns:
        this subtracted from sr
      • getRois

        public Roi[] getRois()
        Converts a Shape into Roi object(s).
        This method parses the shape into (possibly more than one) Roi objects and returns them in an array.
        A simple, "regular" path results in a single Roi following these simple rules:
        Shape type Roi class Roi type
        java.awt.geom.Rectangle2D.Double ij.gui.Roi Roi.RECTANGLE
        java.awt.geom.Ellipse2D.Double ij.gui.OvalRoi Roi.OVAL
        java.awt.geom.Line2D.Double ij.gui.Line Roi.LINE
        java.awt.Polygon ij.gui.PolygonRoi Roi.POLYGON


        Each subpath of a java.awt.geom.GeneralPath is converted following these rules:
        Segment
        types
        Number of
        segments
        Closed
        path
        Value of
        forceAngle
        Value of
        forceTrace
        Roi type
        lines only: 0 ShapeRoi.NO_TYPE
        1 ShapeRoi.NO_TYPE
        2 Y ShapeRoi.NO_TYPE
        N Roi.LINE
        3 Y N Roi.POLYGON
        N Y Roi.ANGLE
        N N Roi.POLYLINE
        4 Y Roi.RECTANGLE
        N Roi.POLYLINE
        <= MAXPOLY Y Roi.POLYGON
        N Roi.POLYLINE
        > MAXPOLY Y Y Roi.TRACED_ROI
        N Roi.FREEROI
        N Roi.FREELINE
        anything
        else:
        <= 2 ShapeRoi.NO_TYPE
        > 2 ShapeRoi.SHAPE_ROI
        Returns:
        an array of ij.gui.Roi objects.
      • shapeToRoi

        public Roi shapeToRoi()
        Attempts to convert this ShapeRoi into a non-composite Roi.
        Returns:
        an ij.gui.Roi object or null
      • contains

        public boolean contains​(int x,
                                int y)
        Checks whether the specified coordinates are inside a on this ROI's shape boundaries.
        Overrides:
        contains in class Roi
      • getFeretValues

        public double[] getFeretValues()
        Caculates "Feret" (maximum caliper width) and "MinFeret" (minimum caliper width).
        Overrides:
        getFeretValues in class Roi
      • getLength

        public double getLength()
        Returns the perimeter if this ShapeRoi can be decomposed into simple ROIs, otherwise returns zero.
        Overrides:
        getLength in class Roi
      • getShapeAsArray

        public float[] getShapeAsArray()
        Retrieves the end points and control points of the path as a float array. The array contains a sequence of variable length segments that use from from one to seven elements. The first element of a segment is the type as defined in the PathIterator interface. SEG_MOVETO and SEG_LINETO segments also include two coordinates, SEG_QUADTO segments include four coordinates and SEG_CUBICTO segments include six coordinates.
      • draw

        public void draw​(Graphics g)
        Non-destructively draws the shape of this object on the associated ImagePlus.
        Overrides:
        draw in class Roi
      • drawRoiBrush

        public void drawRoiBrush​(Graphics g)
      • getMask

        public ImageProcessor getMask()
        Returns this ROI's mask pixels as a ByteProcessor with pixels "in" the mask set to white (255) and pixels "outside" the mask set to black (0).
        Overrides:
        getMask in class Roi
      • getShape

        public Shape getShape()
        Returns a reference to the Shape object encapsulated by this ShapeRoi.
      • isHandle

        public int isHandle​(int sx,
                            int sy)
        Always returns -1 since ShapeRois do not have handles.
        Overrides:
        isHandle in class Roi
      • size

        public int size()
        If this ROI consists of a single polygon, retuns the number of vertices, otherwise returns 4.
        Overrides:
        size in class Roi