Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## ij.gui
Class ShapeRoi

    java.lang.Object
      ij.gui.Roi
          ij.gui.ShapeRoi

All Implemented Interfaces:
  java.lang.Cloneable, java.io.Serializable

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

Field Summary

Fields inherited from class ij.gui.Roi
`ANGLE, cachedMask, center, clipboard, clipHeight, clipWidth, clipX, clipY, COMPOSITE, constrain, CONSTRUCTING, FREELINE, FREEROI, HANDLE_SIZE, handleColor, ic, imp, instanceColor, LINE, mag, MOVING, MOVING_HANDLE, name, NORMAL, NOT_PASTING, oldHeight, oldWidth, oldX, oldY, OVAL, pasteMode, POINT, POLYGON, POLYLINE, previousRoi, RECTANGLE, RESIZING, ROIColor, TRACED_ROI, type, updateFullWindow, xMax, yMax`

Constructor Summary
`ShapeRoi(float[] shapeArray)` Constructs a ShapeRoi from an array of variable length path segments.
`ShapeRoi(int x, int y, java.awt.Shape s)` Constructs a ShapeRoi from a Shape.
`ShapeRoi(Roi r)` Constructs a ShapeRoi from an Roi.
`ShapeRoi(java.awt.Shape s)` Constructs a ShapeRoi from a Shape.

Method Summary
`static void` | `addCircle(java.lang.String sx, java.lang.String sy, java.lang.String swidth)`
`ShapeRoi` | `and(ShapeRoi sr)` Unary intersection operator.
`java.lang.Object` | `clone()` Returns a deep copy of this.
`boolean` | `contains(int x, int y)` Checks whether the specified coordinates are inside a on this ROI's shape boundaries.
`void` | `draw(java.awt.Graphics g)` Non-destructively draws the shape of this object on the associated ImagePlus.
`void` | `drawPixels(ImageProcessor ip)` Draws the shape of this object onto the specified ImageProcessor.
`double` | `getFeretsDiameter()` Returns the maximum Feret diameter (i.e., the largest distance between the shape's boundaries).
`double` | `getLength()` Returns the length of this shape (perimeter, if shape is closed).
`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).
`Roi[]` | `getRois()` Converts a Shape into Roi object(s).
`float[]` | `getShapeAsArray()` Retrieves the end points and control points of the path as a float array.
`ShapeRoi` | `not(ShapeRoi sr)` Unary subtraction operator.
`ShapeRoi` | `or(ShapeRoi sr)` Unary union operator.
`Roi` | `shapeToRoi()` Attempts to convert this ShapeRoi into a non-composite Roi.
`static void` | `subtractCircle(java.lang.String sx, java.lang.String sy, java.lang.String swidth)`
`ShapeRoi` | `xor(ShapeRoi sr)` Unary exclusive or operator.

Methods inherited from class ij.gui.Roi
`abortPaste, drawPixels, endPaste, equals, getAngle, getBoundingRect, getBounds, getColor, getCurrentPasteMode, getName, getPasteMode, getPolygon, getState, getType, getTypeAsString, grow, handleMouseDown, handleMouseDrag, handleMouseUp, isArea, isHandle, isLine, isVisible, mouseDownInHandle, moveHandle, nudge, nudgeCorner, setColor, setImage, setInstanceColor, setLocation, setName, setPasteMode, showStatus, startPaste, toString, update, updateClipRect`

Methods inherited from class java.lang.Object
`finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### ShapeRoi

    public ShapeRoi(Roi r)

  Constructs a ShapeRoi from an Roi.

### ShapeRoi

    public ShapeRoi(java.awt.Shape s)

  Constructs a ShapeRoi from a Shape.

### ShapeRoi

    public ShapeRoi(int x,
                    int y,
                    java.awt.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 java.lang.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`

### getFeretsDiameter

    public double getFeretsDiameter()

  Returns the maximum Feret diameter (i.e., the largest distance between the shape's boundaries).
  This method returns the maximum between the width or height of the bounding rectangles of the rotating shape with one degree up to 270 degres, which effectively means the maximum of its projections in R2.

  Overrides:
    `getFeretsDiameter` in class `Roi`

### getLength

    public double getLength()

  Returns the length of this shape (perimeter, if shape is closed).

  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(java.awt.Graphics g)

  Non-destructively draws the shape of this object on the associated ImagePlus.

  Overrides:
    `draw` in class `Roi`

### 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:
    `ImageProcessor.setColor(java.awt.Color)`, `ImageProcessor.setLineWidth(int)`

### 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`

### addCircle

    public static void addCircle(java.lang.String sx,
                                 java.lang.String sy,
                                 java.lang.String swidth)

### subtractCircle

    public static void subtractCircle(java.lang.String sx,
                                      java.lang.String sy,
                                      java.lang.String swidth)

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD