Package ij.gui

Class ShapeRoi

java.lang.Object
ij.gui.Roi
ij.gui.ShapeRoi
All Implemented Interfaces:
Serializable, Cloneable

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 <c.tigaret@ucl.ac.uk>
See Also:
  • Constructor Details

    • 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 Details

    • 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 </td 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)
    • drawPixels

      public void drawPixels(ImageProcessor ip)
      Draws the shape of this object onto the specified ImageProcessor.
      This method will always draw a flattened version of the actual shape (i.e., all curve segments will be approximated by line segments).
      Overrides:
      drawPixels in class Roi
      See Also:
    • 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
    • getConvexHull

      public Polygon getConvexHull()
      Overrides:
      getConvexHull in class Roi
    • getPolygon

      public Polygon getPolygon()
      Description copied from class: Roi
      Returns the outline of this selection as a Polygon, or null if this is a straight line selection.
      Overrides:
      getPolygon in class Roi
      See Also:
    • getFloatPolygon

      public FloatPolygon getFloatPolygon()
      Overrides:
      getFloatPolygon in class Roi