Package ij.gui

Class Roi

java.lang.Object
ij.gui.Roi
All Implemented Interfaces:
Serializable, Cloneable
Direct Known Subclasses:
ImageRoi, Line, OvalRoi, PolygonRoi, ShapeRoi, TextRoi

public class Roi extends Object implements Cloneable, Serializable
A rectangular region of interest and superclass for the other ROI classes.
See Also:
  • Field Details

    • CONSTRUCTING

      public static final int CONSTRUCTING
      See Also:
    • MOVING

      public static final int MOVING
      See Also:
    • RESIZING

      public static final int RESIZING
      See Also:
    • NORMAL

      public static final int NORMAL
      See Also:
    • MOVING_HANDLE

      public static final int MOVING_HANDLE
      See Also:
    • RECTANGLE

      public static final int RECTANGLE
      See Also:
    • OVAL

      public static final int OVAL
      See Also:
    • POLYGON

      public static final int POLYGON
      See Also:
    • FREEROI

      public static final int FREEROI
      See Also:
    • TRACED_ROI

      public static final int TRACED_ROI
      See Also:
    • LINE

      public static final int LINE
      See Also:
    • POLYLINE

      public static final int POLYLINE
      See Also:
    • FREELINE

      public static final int FREELINE
      See Also:
    • ANGLE

      public static final int ANGLE
      See Also:
    • COMPOSITE

      public static final int COMPOSITE
      See Also:
    • POINT

      public static final int POINT
      See Also:
    • HANDLE_SIZE

      public static final int HANDLE_SIZE
      See Also:
    • NOT_PASTING

      public static final int NOT_PASTING
      See Also:
    • previousRoi

      public static Roi previousRoi
    • onePixelWide

      public static final BasicStroke onePixelWide
    • ROIColor

      protected static Color ROIColor
    • pasteMode

      protected static int pasteMode
    • lineWidth

      protected static int lineWidth
    • defaultFillColor

      protected static Color defaultFillColor
    • type

      protected int type
    • xMax

      protected int xMax
    • yMax

      protected int yMax
    • imp

      protected ImagePlus imp
    • ic

      protected ImageCanvas ic
    • oldX

      protected int oldX
    • oldY

      protected int oldY
    • oldWidth

      protected int oldWidth
    • oldHeight

      protected int oldHeight
    • clipX

      protected int clipX
    • clipY

      protected int clipY
    • clipWidth

      protected int clipWidth
    • clipHeight

      protected int clipHeight
    • clipboard

      protected ImagePlus clipboard
    • constrain

      protected boolean constrain
    • center

      protected boolean center
    • aspect

      protected boolean aspect
    • updateFullWindow

      protected boolean updateFullWindow
    • mag

      protected double mag
    • asp_bk

      protected double asp_bk
    • cachedMask

      protected ImageProcessor cachedMask
    • handleColor

      protected Color handleColor
    • strokeColor

      protected Color strokeColor
    • instanceColor

      protected Color instanceColor
    • fillColor

      protected Color fillColor
    • stroke

      protected BasicStroke stroke
    • nonScalable

      protected boolean nonScalable
    • overlay

      protected boolean overlay
    • wideLine

      protected boolean wideLine
    • ignoreClipRect

      protected boolean ignoreClipRect
  • Constructor Details

    • Roi

      public Roi(int x, int y, int width, int height)
      Creates a rectangular ROI.
    • Roi

      public Roi(double x, double y, double width, double height)
      Creates a rectangular ROI using double arguments.
    • Roi

      public Roi(int x, int y, int width, int height, int cornerDiameter)
      Creates a new rounded rectangular ROI.
    • Roi

      public Roi(double x, double y, double width, double height, int cornerDiameter)
      Creates a rounded rectangular ROI using double arguments.
    • Roi

      public Roi(Rectangle r)
      Creates a new rectangular Roi.
    • Roi

      public Roi(int sx, int sy, ImagePlus imp)
      Starts the process of creating a user-defined rectangular Roi, where sx and sy are the starting screen coordinates.
    • Roi

      public Roi(int sx, int sy, ImagePlus imp, int cornerDiameter)
      Starts the process of creating a user-defined rectangular Roi, where sx and sy are the starting screen coordinates.
    • Roi

      public Roi(int x, int y, int width, int height, ImagePlus imp)
      Deprecated.
  • Method Details

    • setLocation

      public void setLocation(int x, int y)
      Set the location of the ROI in image coordinates.
    • setLocation

      public void setLocation(double x, double y)
      Set the location of the ROI in image coordinates.
    • setImage

      public void setImage(ImagePlus imp)
    • getImage

      public ImagePlus getImage()
      Returns the ImagePlus associated with this ROI, or null.
    • getImageID

      public int getImageID()
      Returns the ID of the image associated with this ROI.
    • getType

      public int getType()
    • getState

      public int getState()
    • getLength

      public double getLength()
      Returns the perimeter length.
    • getFeretsDiameter

      public double getFeretsDiameter()
      Returns Feret's diameter, the greatest distance between any two points along the ROI boundary.
    • getFeretValues

      public double[] getFeretValues()
      Caculates "Feret" (maximum caliper width), "FeretAngle" and "MinFeret" (minimum caliper width), "FeretX" and "FeretY".
    • getConvexHull

      public Polygon getConvexHull()
    • getBounds

      public Rectangle getBounds()
      Return this selection's bounding rectangle.
    • getFloatBounds

      public Rectangle2D.Double getFloatBounds()
      Return this selection's bounding rectangle.
    • getBoundingRect

      public Rectangle getBoundingRect()
      Deprecated.
      replaced by getBounds()
    • getPolygon

      public Polygon getPolygon()
      Returns the outline of this selection as a Polygon, or null if this is a straight line selection.
      See Also:
    • getFloatPolygon

      public FloatPolygon getFloatPolygon()
    • getInterpolatedPolygon

      public FloatPolygon getInterpolatedPolygon()
      Returns, as a FloatPolygon, an interpolated version of this selection that has points spaced 1.0 pixel apart.
    • getInterpolatedPolygon

      public FloatPolygon getInterpolatedPolygon(double interval, boolean smooth)
      Returns, as a FloatPolygon, an interpolated version of this selection with points spaced 'interval' pixels apart. If 'smooth' is true, traced and freehand selections are first smoothed using a 3 point running average.
    • getInterpolatedPolygon

      protected FloatPolygon getInterpolatedPolygon(FloatPolygon p, double interval, boolean smooth)
      Returns, as a FloatPolygon, an interpolated version of this selection with points spaced abs('interval') pixels apart. If 'smooth' is true, traced and freehand selections are first smoothed using a 3 point running average. If 'interval' is negative, the program is allowed to decrease abs('interval') so that the last segment will hit the end point
    • lineCircleIntersection

      public static double[] lineCircleIntersection(double ax, double ay, double bx, double by, double cx, double cy, double rad, boolean ignoreOutside)
       Calculates intersections of a line segment with a circle
       Author N.Vischer
       ax, ay, bx, by: points A and B of line segment
       cx, cy, rad: Circle center and radius.
       ignoreOutside: if true, ignores intersections outside the line segment A-B
    • clone

      public Object clone()
      Returns a copy of this roi. See Thinking is Java by Bruce Eckel (www.eckelobjects.com) for a good description of object cloning.
      Overrides:
      clone in class Object
    • grow

      protected void grow(int sx, int sy)
    • moveHandle

      protected void moveHandle(int sx, int sy)
    • nudge

      public void nudge(int key)
      Nudge ROI one pixel on arrow key press.
    • nudgeCorner

      public void nudgeCorner(int key)
      Nudge lower right corner of rectangular and oval ROIs by one pixel based on arrow key press.
    • updateClipRect

      protected void updateClipRect()
    • clipRectMargin

      protected int clipRectMargin()
    • handleMouseDrag

      protected void handleMouseDrag(int sx, int sy, int flags)
    • draw

      public void draw(Graphics g)
    • drawOverlay

      public void drawOverlay(Graphics g)
    • drawPixels

      public void drawPixels()
      Deprecated.
      replaced by drawPixels(ImageProcessor)
    • drawPixels

      public void drawPixels(ImageProcessor ip)
      Draws the selection outline on the specified ImageProcessor.
      See Also:
    • contains

      public boolean contains(int x, int y)
    • isHandle

      public int isHandle(int sx, int sy)
      Returns a handle number if the specified screen coordinates are inside or near a handle, otherwise returns -1.
    • mouseDownInHandle

      protected void mouseDownInHandle(int handle, int sx, int sy)
    • handleMouseDown

      protected void handleMouseDown(int sx, int sy)
    • handleMouseUp

      protected void handleMouseUp(int screenX, int screenY)
    • update

      public void update(boolean add, boolean subtract)
      If 'add' is true, adds this selection to the previous one. If 'subtract' is true, subtracts it from the previous selection. Called by the IJ.doWand() method, and the makeRectangle(), makeOval(), makePolygon() and makeSelection() macro functions.
    • showStatus

      protected void showStatus()
    • getMask

      public ImageProcessor getMask()
      Always returns null for rectangular Roi's
    • startPaste

      public void startPaste(ImagePlus clipboard)
    • endPaste

      public void endPaste()
    • abortPaste

      public void abortPaste()
    • getAngle

      public double getAngle(int x1, int y1, int x2, int y2)
      Returns the angle in degrees between the specified line and a horizontal line.
    • getFloatAngle

      public double getFloatAngle(double x1, double y1, double x2, double y2)
      Returns the angle in degrees between the specified line and a horizontal line.
    • setColor

      public static void setColor(Color c)
      Sets the default (global) color used for ROI outlines.
      See Also:
    • getColor

      public static Color getColor()
      Returns the default (global) color used for drawing ROI outlines.
      See Also:
    • setStrokeColor

      public void setStrokeColor(Color c)
      Sets the color used by this ROI to draw its outline. This color, if not null, overrides the global color set by the static setColor() method.
      See Also:
    • getStrokeColor

      public Color getStrokeColor()
      Returns the the color used to draw the ROI outline or null if the default color is being used.
      See Also:
    • setFillColor

      public void setFillColor(Color color)
      Sets the fill color used to display this ROI, or set to null to display it transparently.
      See Also:
    • getFillColor

      public Color getFillColor()
      Returns the fill color used to display this ROI, or null if it is displayed transparently.
      See Also:
    • setDefaultFillColor

      public static void setDefaultFillColor(Color color)
    • getDefaultFillColor

      public static Color getDefaultFillColor()
    • copyAttributes

      public void copyAttributes(Roi roi2)
      Copy the attributes (outline color, fill color, outline width) of 'roi2' to the this selection.
    • setInstanceColor

      public void setInstanceColor(Color c)
      Deprecated.
      replaced by setStrokeColor()
    • setLineWidth

      public void setLineWidth(int width)
      Deprecated.
      replaced by setStrokeWidth(int)
    • updateWideLine

      public void updateWideLine(float width)
    • setNonScalable

      public void setNonScalable(boolean nonScalable)
      Set 'nonScalable' true to have TextRois in a display list drawn at a fixed location and size.
    • setStrokeWidth

      public void setStrokeWidth(float width)
      Sets the width of the line used to draw this ROI. Set the width to 0.0 and the ROI will be drawn using a a 1 pixel stroke width regardless of the magnification.
      See Also:
    • setStrokeWidth

      public void setStrokeWidth(double width)
      This is a version of setStrokeWidth() that accepts a double argument.
    • getStrokeWidth

      public float getStrokeWidth()
      Returns the lineWidth.
    • setStroke

      public void setStroke(BasicStroke stroke)
      Sets the Stroke used to draw this ROI.
    • getStroke

      public BasicStroke getStroke()
      Returns the Stroke used to draw this ROI, or null if no Stroke is used.
    • getScaledStroke

      protected BasicStroke getScaledStroke()
    • getName

      public String getName()
      Returns the name of this ROI, or null.
    • setName

      public void setName(String name)
      Sets the name of this ROI.
    • setPasteMode

      public static void setPasteMode(int transferMode)
      Sets the Paste transfer mode.
      See Also:
    • setCornerDiameter

      public void setCornerDiameter(int cornerDiameter)
      Sets the rounded rectangle corner diameter (pixels).
    • getCornerDiameter

      public int getCornerDiameter()
      Returns the rounded rectangle corner diameter (pixels).
    • setRoundRectArcSize

      public void setRoundRectArcSize(int cornerDiameter)
      Obsolete; replaced by setCornerDiameter().
    • getRoundRectArcSize

      public int getRoundRectArcSize()
      Obsolete; replaced by getCornerDiameter().
    • setPosition

      public void setPosition(int n)
      Sets the stack position (image number) of this ROI. In an overlay, this ROI is only displayed when the stack is at the specified position. Set to zero to have the ROI displayed on all images in the stack.
      See Also:
    • getPosition

      public int getPosition()
      Returns the stack position (image number) of this ROI, or zero if the ROI is not associated with a particular stack image.
      See Also:
    • setPosition

      public void setPosition(int channel, int slice, int frame)
      Sets the hyperstack position of this ROI. In an overlay, this ROI is only displayed when the hyperstack is at the specified position.
      See Also:
    • getCPosition

      public final int getCPosition()
      Returns the channel position of this ROI, or zero if this ROI is not associated with a particular channel.
    • getZPosition

      public final int getZPosition()
      Returns the slice position of this ROI, or zero if this ROI is not associated with a particular slice.
    • getTPosition

      public final int getTPosition()
      Returns the frame position of this ROI, or zero if this ROI is not associated with a particular frame.
    • setPrototypeOverlay

      public void setPrototypeOverlay(Overlay overlay)
    • getPrototypeOverlay

      public Overlay getPrototypeOverlay()
    • getPasteMode

      public int getPasteMode()
      Returns the current paste transfer mode, or NOT_PASTING (-1) if no paste operation is in progress.
      See Also:
    • getCurrentPasteMode

      public static int getCurrentPasteMode()
      Returns the current paste transfer mode.
    • isArea

      public boolean isArea()
      Returns 'true' if this is an area selection.
    • isLine

      public boolean isLine()
      Returns 'true' if this is a line selection.
    • isDrawingTool

      public boolean isDrawingTool()
      Returns 'true' if this is an ROI primarily used from drawing (e.g., TextRoi or Arrow).
    • getMagnification

      protected double getMagnification()
    • getTypeAsString

      public String getTypeAsString()
      Convenience method that converts Roi type to a human-readable form.
    • isVisible

      public boolean isVisible()
      Returns true if this ROI is currently displayed on an image.
    • subPixelResolution

      public boolean subPixelResolution()
      Returns true if this is a slection that supports sub-pixel resolution.
    • getDrawOffset

      public boolean getDrawOffset()
      Returns true if this is a PolygonRoi that supports sub-pixel resolution and polygons are drawn on zoomed images offset down and to the right by 0.5 pixels..
    • setDrawOffset

      public void setDrawOffset(boolean drawOffset)
    • setIgnoreClipRect

      public void setIgnoreClipRect(boolean ignoreClipRect)
    • isActiveOverlayRoi

      public final boolean isActiveOverlayRoi()
      Returns 'true' if this ROI is displayed and is also in an overlay.
    • equals

      public boolean equals(Object obj)
      Checks whether two rectangles are equal.
      Overrides:
      equals in class Object
    • screenX

      protected int screenX(int ox)
    • screenY

      protected int screenY(int oy)
    • screenXD

      protected int screenXD(double ox)
    • screenYD

      protected int screenYD(double oy)
    • toInt

      public static int[] toInt(float[] arr)
      Converts a float array to an int array using truncation.
    • toInt

      public static int[] toInt(float[] arr, int[] arr2, int size)
    • toIntR

      public static int[] toIntR(float[] arr)
      Converts a float array to an int array using rounding.
    • toFloat

      public static float[] toFloat(int[] arr)
      Converts an int array to a float array.
    • setProperty

      public void setProperty(String key, String value)
    • getProperty

      public String getProperty(String property)
    • setProperties

      public void setProperties(String properties)
    • getProperties

      public String getProperties()
    • getPropertyCount

      public int getPropertyCount()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • temporarilyHide

      public void temporarilyHide()
      Deprecated
    • mouseDragged

      public void mouseDragged(MouseEvent e)
    • mouseMoved

      public void mouseMoved(MouseEvent e)
    • mouseReleased

      public void mouseReleased(MouseEvent e)
    • getXBase

      public double getXBase()
    • getYBase

      public double getYBase()
    • getFloatWidth

      public double getFloatWidth()
    • getFloatHeight

      public double getFloatHeight()
    • getAngle

      public double getAngle()
      Overridden by PolygonRoi (angle between first two points), TextRoi (text angle) and Line (line angle).
    • enableSubPixelResolution

      public void enableSubPixelResolution()
    • setIsCursor

      public void setIsCursor(boolean isCursor)
    • isCursor

      public boolean isCursor()
    • getDebugInfo

      public String getDebugInfo()
    • getStatistics

      public ImageStatistics getStatistics()
    • getRotationCenter

      public FloatPolygon getRotationCenter()
    • setRotationCenter

      public void setRotationCenter(double x, double y)
    • getContourCentroid

      public double[] getContourCentroid()
    • getHashCode

      public int getHashCode()
      Returns a hashcode for this Roi that typically changes if it is moved, even though it is still the same object.
    • notifyListeners

      public void notifyListeners(int id)
    • addRoiListener

      public static void addRoiListener(RoiListener listener)
    • removeRoiListener

      public static void removeRoiListener(RoiListener listener)