Package ij.gui

Class Roi

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.lang.Iterable<java.awt.Point>
    Direct Known Subclasses:
    ImageRoi, Line, OvalRoi, PolygonRoi, ShapeRoi, TextRoi

    public class Roi
    extends java.lang.Object
    implements java.lang.Cloneable, java.io.Serializable, java.lang.Iterable<java.awt.Point>
    A rectangular region of interest and superclass for the other ROI classes. This class implements Iterable<Point> and can thus be used to iterate over the contained coordinates. Usage example:
     Roi roi = ...;
     for (Point p : roi) {
       // process p
     }
     
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      Roi​(double x, double y, double width, double height)
      Creates a rectangular ROI using double arguments.
      Roi​(double x, double y, double width, double height, int cornerDiameter)
      Creates a rounded rectangular ROI using double arguments.
      Roi​(int x, int y, int width, int height)
      Creates a rectangular ROI.
      Roi​(int x, int y, int width, int height, int cornerDiameter)
      Creates a new rounded rectangular ROI.
      Roi​(int x, int y, int width, int height, ImagePlus imp)
      Deprecated. 
      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​(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​(java.awt.Rectangle r)
      Creates a new rectangular Roi.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      void abortModification​(ImagePlus imp)
      Aborts constructing or modifying the roi (called by the ImageJ class on escape)
      void abortPaste()  
      static void addRoiListener​(RoiListener listener)  
      protected int clipRectMargin()  
      java.lang.Object clone()
      Returns a copy of this roi.
      boolean contains​(int x, int y)
      Returns whether the center of pixel (x,y) is contained in the Roi.
      boolean containsPoint​(double x, double y)
      Returns whether coordinate (x,y) is contained in the Roi.
      Roi convertToPolygon()
      Converts this line selection into an area selection.
      void copyAttributes​(Roi roi2)
      Copy the attributes (outline color, fill color, outline width) of 'roi2' to the this selection.
      void draw​(java.awt.Graphics g)  
      void drawOverlay​(java.awt.Graphics g)  
      void drawPixels()
      Deprecated.
      replaced by drawPixels(ImageProcessor)
      void drawPixels​(ImageProcessor ip)
      Draws the selection outline on the specified ImageProcessor.
      void enableSubPixelResolution()  
      void endPaste()  
      boolean equals​(java.lang.Object obj)
      Checks whether two rectangles are equal.
      double getAngle()
      Overridden by PolygonRoi (angle between first two points), TextRoi (text angle) and Line (line angle).
      double getAngle​(int x1, int y1, int x2, int y2)
      Returns the angle in degrees between the specified line and a horizontal line.
      boolean getAntiAlias()  
      java.awt.Rectangle getBoundingRect()
      Deprecated.
      replaced by getBounds()
      java.awt.Rectangle getBounds()
      Return this selection's bounding rectangle.
      static java.awt.Color getColor()
      Returns the default (global) color used for drawing ROI outlines.
      FloatPolygon getContainedFloatPoints()
      Returns the coordinates of the pixels inside this ROI as a FloatPolygon.
      java.awt.Point[] getContainedPoints()
      Returns the coordinates of the pixels inside this ROI as an array of Points.
      double[] getContourCentroid()  
      java.awt.Polygon getConvexHull()
      Returns the convex hull of this Roi as a Polygon with integer coordinates by rounding the floating-point values.
      int getCornerDiameter()
      Returns the rounded rectangle corner diameter (pixels).
      int getCPosition()
      Returns the channel position of this ROI, or zero if this ROI is not associated with a particular channel.
      static int getCurrentPasteMode()
      Returns the current paste transfer mode.
      java.lang.String getDebugInfo()  
      static java.awt.Color getDefaultFillColor()  
      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..
      double getFeretsDiameter()
      Returns Feret's diameter, the greatest distance between any two points along the ROI boundary.
      double[] getFeretValues()
      Returns an array with the following values:
      [0] "Feret" (maximum caliper width)
      [1] "FeretAngle" (angle of diameter with maximum caliper width, between 0 and 180 deg)
      [2] "MinFeret" (minimum caliper width)
      [3][4] , "FeretX" and "FeretY", the X and Y coordinates of the starting point (leftmost point) of the maximum-caliper-width diameter.
      java.awt.Color getFillColor()
      Returns the fill color used to display this ROI, or null if it is displayed transparently.
      double getFloatAngle​(double x1, double y1, double x2, double y2)
      Returns the angle in degrees between the specified line and a horizontal line.
      java.awt.geom.Rectangle2D.Double getFloatBounds()
      Return this selection's bounding rectangle.
      FloatPolygon getFloatConvexHull()
      Returns the convex hull of this Roi as a FloatPolygon.
      double getFloatHeight()  
      FloatPolygon getFloatPolygon()
      Returns the outline (in image pixel coordinates) as a FloatPolygon
      FloatPolygon getFloatPolygon​(java.lang.String options)
      Returns the outline in image pixel coordinates, where options may include "close" to add a point to close the outline if this is an area roi and the outline is not closed yet.
      double getFloatWidth()  
      int getHashCode()
      Returns a hashcode for this Roi that typically changes if it is moved, even though it is still the same object.
      ImagePlus getImage()
      Returns the ImagePlus associated with this ROI, or null.
      int getImageID()
      Returns the ID of the image associated with this ROI.
      FloatPolygon getInterpolatedPolygon()
      Returns, as a FloatPolygon, an interpolated version of this selection that has points spaced 1.0 pixel apart.
      FloatPolygon getInterpolatedPolygon​(double interval, boolean smooth)
      Returns, as a FloatPolygon, an interpolated version of this selection with points spaced 'interval' pixels apart.
      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.
      Roi getInverse​(ImagePlus imp)
      Returns the inverted roi, or null if this is not an area roi or cannot be converted to a ShapeRoi.
      double getLength()
      Returns the perimeter length.
      protected double getMagnification()  
      ImageProcessor getMask()
      Always returns null for rectangular Roi's
      java.lang.String getName()
      Returns the name of this ROI, or null.
      int getPasteMode()
      Returns the current paste transfer mode, or NOT_PASTING (-1) if no paste operation is in progress.
      java.awt.Polygon getPolygon()
      Returns the outline of this selection as a Polygon, or null if this is a straight line selection.
      int getPosition()
      Returns the stack position (image number) of this ROI, or zero if the ROI is not associated with a particular stack image.
      java.lang.String getProperties()  
      java.lang.String getProperty​(java.lang.String property)  
      int getPropertyCount()  
      Overlay getPrototypeOverlay()  
      FloatPolygon getRotationCenter()  
      int getRoundRectArcSize()
      Obsolete; replaced by getCornerDiameter().
      protected java.awt.BasicStroke getScaledStroke()  
      int getState()  
      ImageStatistics getStatistics()  
      java.awt.BasicStroke getStroke()
      Returns the Stroke used to draw this ROI, or null if no Stroke is used.
      java.awt.Color getStrokeColor()
      Returns the the color used to draw the ROI outline or null if the default color is being used.
      float getStrokeWidth()
      Returns the lineWidth.
      int getTPosition()
      Returns the frame position of this ROI, or zero if this ROI is not associated with a particular frame.
      int getType()  
      java.lang.String getTypeAsString()
      Convenience method that converts Roi type to a human-readable form.
      double getXBase()  
      double getYBase()  
      int getZPosition()
      Returns the slice position of this ROI, or zero if this ROI is not associated with a particular slice.
      protected void grow​(int sx, int sy)  
      protected void handleMouseDown​(int sx, int sy)  
      protected void handleMouseDrag​(int sx, int sy, int flags)  
      protected void handleMouseUp​(int screenX, int screenY)  
      boolean hasHyperStackPosition()
      Returns 'true' if setPosition(C,Z,T) has been called.
      boolean isActiveOverlayRoi()
      Returns 'true' if this ROI is displayed and is also in an overlay.
      boolean isArea()
      Returns 'true' if this is an area selection.
      boolean isCursor()  
      boolean isDrawingTool()
      Returns 'true' if this is an ROI primarily used from drawing (e.g., TextRoi or Arrow).
      int isHandle​(int sx, int sy)
      Returns a handle number if the specified screen coordinates are inside or near a handle, otherwise returns -1.
      static boolean isInteger​(double x)
      Returns whether a number is an integer
      boolean isLine()
      Returns 'true' if this is a line selection.
      boolean isVisible()
      Returns true if this ROI is currently displayed on an image.
      java.util.Iterator<java.awt.Point> iterator()
      Required by the Iterable interface.
      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.
      protected void mouseDownInHandle​(int handle, int sx, int sy)  
      void mouseDragged​(java.awt.event.MouseEvent e)  
      void mouseMoved​(java.awt.event.MouseEvent e)  
      void mouseReleased​(java.awt.event.MouseEvent e)  
      protected void moveHandle​(int sx, int sy)  
      void notifyListeners​(int id)  
      void nudge​(int key)
      Nudge ROI one pixel on arrow key press.
      void nudgeCorner​(int key)
      Nudge lower right corner of rectangular and oval ROIs by one pixel based on arrow key press.
      static void removeRoiListener​(RoiListener listener)  
      protected int screenX​(int ox)  
      protected int screenXD​(double ox)  
      protected int screenY​(int oy)  
      protected int screenYD​(double oy)  
      void setAntiAlias​(boolean antiAlias)  
      static void setColor​(java.awt.Color c)
      Sets the default (global) color used for ROI outlines.
      void setCornerDiameter​(int cornerDiameter)
      Sets the rounded rectangle corner diameter (pixels).
      static void setDefaultFillColor​(java.awt.Color color)  
      void setDrawOffset​(boolean drawOffset)  
      void setFillColor​(java.awt.Color color)
      Sets the fill color used to display this ROI, or set to null to display it transparently.
      void setFlattenScale​(double scale)  
      void setIgnoreClipRect​(boolean ignoreClipRect)  
      void setImage​(ImagePlus imp)  
      void setInstanceColor​(java.awt.Color c)
      Deprecated.
      replaced by setStrokeColor()
      void setIsCursor​(boolean isCursor)  
      void setLineWidth​(int width)
      Deprecated.
      replaced by setStrokeWidth(int)
      void setLocation​(double x, double y)
      Set the location of the ROI in image coordinates.
      void setLocation​(int x, int y)
      Set the location of the ROI in image coordinates.
      void setName​(java.lang.String name)
      Sets the name of this ROI.
      void setNonScalable​(boolean nonScalable)
      Set 'nonScalable' true to have TextRois in a display list drawn at a fixed location and size.
      static void setPasteMode​(int transferMode)
      Sets the Paste transfer mode.
      void setPosition​(int n)
      Sets the stack position (image number) of this ROI.
      void setPosition​(int channel, int slice, int frame)
      Sets the hyperstack position of this ROI.
      void setPosition​(ImagePlus imp)
      Sets the position of this ROI based on the stack position of the specified image.
      void setProperties​(java.lang.String properties)  
      void setProperty​(java.lang.String key, java.lang.String value)  
      void setPrototypeOverlay​(Overlay overlay)  
      protected void setRenderingHint​(java.awt.Graphics2D g2d)  
      void setRotationCenter​(double x, double y)  
      void setRoundRectArcSize​(int cornerDiameter)
      Obsolete; replaced by setCornerDiameter().
      void setStroke​(java.awt.BasicStroke stroke)
      Sets the Stroke used to draw this ROI.
      void setStrokeColor​(java.awt.Color c)
      Sets the color used by this ROI to draw its outline.
      void setStrokeWidth​(double width)
      This is a version of setStrokeWidth() that accepts a double argument.
      void setStrokeWidth​(float width)
      Sets the width of the line used to draw this ROI.
      void showStatus()  
      int size()
      Returns the number of points in this selection; equivalent to getFloatPolygon().npoints.
      void startPaste​(ImagePlus clipboard)  
      boolean subPixelResolution()
      Returns true if this is a slection that supports sub-pixel resolution.
      void temporarilyHide()
      Deprecated
      static float[] toFloat​(int[] arr)
      Converts an int array to a float array.
      static int[] toInt​(float[] arr)
      Converts a float array to an int array using truncation.
      static int[] toInt​(float[] arr, int[] arr2, int size)  
      static int[] toIntR​(float[] arr)
      Converts a float array to an int array using rounding.
      java.lang.String toString()  
      void update​(boolean add, boolean subtract)
      If 'add' is true, adds this selection to the previous one.
      protected void updateClipRect()  
      void updateWideLine​(float width)  
      • Methods inherited from class java.lang.Object

        finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.lang.Iterable

        forEach, spliterator
    • Field Detail

      • FERET_ARRAY_POINTOFFSET

        public static final int FERET_ARRAY_POINTOFFSET
        See Also:
        Constant Field Values
      • previousRoi

        public static Roi previousRoi
      • onePixelWide

        public static final java.awt.BasicStroke onePixelWide
      • ROIColor

        protected static java.awt.Color ROIColor
      • pasteMode

        protected static int pasteMode
      • lineWidth

        protected static int lineWidth
      • defaultFillColor

        protected static java.awt.Color defaultFillColor
      • type

        protected int type
      • xMax

        protected int xMax
      • yMax

        protected int yMax
      • 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
      • 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
      • handleColor

        protected java.awt.Color handleColor
      • strokeColor

        protected java.awt.Color strokeColor
      • instanceColor

        protected java.awt.Color instanceColor
      • fillColor

        protected java.awt.Color fillColor
      • stroke

        protected java.awt.BasicStroke stroke
      • nonScalable

        protected boolean nonScalable
      • overlay

        protected boolean overlay
      • wideLine

        protected boolean wideLine
      • ignoreClipRect

        protected boolean ignoreClipRect
      • flattenScale

        protected double flattenScale
    • Constructor Detail

      • 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​(java.awt.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 Detail

      • 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()
        Returns an array with the following values:
        [0] "Feret" (maximum caliper width)
        [1] "FeretAngle" (angle of diameter with maximum caliper width, between 0 and 180 deg)
        [2] "MinFeret" (minimum caliper width)
        [3][4] , "FeretX" and "FeretY", the X and Y coordinates of the starting point (leftmost point) of the maximum-caliper-width diameter.
        [5-7] reserved
        All these values and point coordinates are in calibrated image coordinates.

        The following array elements are end points of the maximum and minimum caliper diameter, in unscaled image pixel coordinates:
        [8][9] "FeretX1", "FeretY1"; unscaled versions of "FeretX" and "FeretY" (subclasses may use any end of the diameter, not necessarily the left one)
        [10][11] "FeretX2", "FeretY2", end point of the maxium-caliper-width diameter. Both of these points are vertices of the convex hull.
        The final four array elements are the starting and end points of the minimum caliper width,
        [12],[13] "MinFeretX", "MinFeretY", and
        [14],[15] "MinFeretX2", "MinFeretY2". These two pooints are not sorted by x, but the first point point (MinFeretX, MinFeretY) is guaranteed to be a vertex of the convex hull, while second point (MinFeretX2, MinFeretY2) usually is not a vertex point but at a boundary line of the convex hull.

      • getConvexHull

        public java.awt.Polygon getConvexHull()
        Returns the convex hull of this Roi as a Polygon with integer coordinates by rounding the floating-point values. Coordinates of the convex hull are image pixel coordinates.
      • getFloatConvexHull

        public FloatPolygon getFloatConvexHull()
        Returns the convex hull of this Roi as a FloatPolygon. Coordinates of the convex hull are image pixel coordinates.
      • getBounds

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

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

        public java.awt.Rectangle getBoundingRect()
        Deprecated.
        replaced by getBounds()
      • getFloatPolygon

        public FloatPolygon getFloatPolygon()
        Returns the outline (in image pixel coordinates) as a FloatPolygon
      • getFloatPolygon

        public FloatPolygon getFloatPolygon​(java.lang.String options)
        Returns the outline in image pixel coordinates, where options may include "close" to add a point to close the outline if this is an area roi and the outline is not closed yet. (For ShapeRois, "separate" inserts NaN values between subpaths).
      • 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
      • getContainedPoints

        public java.awt.Point[] getContainedPoints()
        Returns the coordinates of the pixels inside this ROI as an array of Points.
        See Also:
        getContainedFloatPoints(), iterator()
      • 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
         Returns an array of 0, 2 or 4 coordinates (for 0, 1, or 2 intersection
         points). If two intersection points are returned, they are listed in travel
         direction A->B
         
      • clone

        public java.lang.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 java.lang.Object
      • abortModification

        public void abortModification​(ImagePlus imp)
        Aborts constructing or modifying the roi (called by the ImageJ class on escape)
      • 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​(java.awt.Graphics g)
      • drawOverlay

        public void drawOverlay​(java.awt.Graphics g)
      • drawPixels

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

        public boolean contains​(int x,
                                int y)
        Returns whether the center of pixel (x,y) is contained in the Roi. The position of a pixel center determines whether a pixel is selected. Points exactly at the left (right) border are considered outside (inside); points exactly on horizontal borders are considered outside (inside) at the border with the lower (higher) y. This convention is opposite to that of the java.awt.Shape class.
      • containsPoint

        public boolean containsPoint​(double x,
                                     double y)
        Returns whether coordinate (x,y) is contained in the Roi. Note that the coordinate (0,0) is the top-left corner of pixel (0,0). Use contains(int, int) to determine whether a given pixel is contained in the Roi.
      • getInverse

        public Roi getInverse​(ImagePlus imp)
        Returns the inverted roi, or null if this is not an area roi or cannot be converted to a ShapeRoi. If imp is not given, assumes a rectangle of size 2e9*2e9 for the boundary.
      • 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

        public 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​(java.awt.Color c)
        Sets the default (global) color used for ROI outlines.
        See Also:
        getColor(), setStrokeColor(Color)
      • getColor

        public static java.awt.Color getColor()
        Returns the default (global) color used for drawing ROI outlines.
        See Also:
        setColor(Color), getStrokeColor()
      • getStrokeColor

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

        public static void setDefaultFillColor​(java.awt.Color color)
      • getDefaultFillColor

        public static java.awt.Color getDefaultFillColor()
      • setAntiAlias

        public void setAntiAlias​(boolean antiAlias)
      • getAntiAlias

        public boolean getAntiAlias()
      • setRenderingHint

        protected void setRenderingHint​(java.awt.Graphics2D g2d)
      • 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​(java.awt.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:
        setStrokeColor(Color), ImagePlus.setOverlay(ij.gui.Overlay)
      • 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​(java.awt.BasicStroke stroke)
        Sets the Stroke used to draw this ROI.
      • getStroke

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

        protected java.awt.BasicStroke getScaledStroke()
      • getName

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

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

        public static void setPasteMode​(int transferMode)
        Sets the Paste transfer mode.
        See Also:
        Blitter
      • 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:
        Overlay
      • 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:
        Overlay
      • 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:
        Overlay
      • hasHyperStackPosition

        public boolean hasHyperStackPosition()
        Returns 'true' if setPosition(C,Z,T) has been called.
      • setPosition

        public void setPosition​(ImagePlus imp)
        Sets the position of this ROI based on the stack position of the specified image.
      • 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:
        Blitter
      • 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 java.lang.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​(java.lang.Object obj)
        Checks whether two rectangles are equal.
        Overrides:
        equals in class java.lang.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.
      • isInteger

        public static boolean isInteger​(double x)
        Returns whether a number is an integer
      • setProperty

        public void setProperty​(java.lang.String key,
                                java.lang.String value)
      • getProperty

        public java.lang.String getProperty​(java.lang.String property)
      • setProperties

        public void setProperties​(java.lang.String properties)
      • getProperties

        public java.lang.String getProperties()
      • getPropertyCount

        public int getPropertyCount()
      • toString

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

        public void temporarilyHide()
        Deprecated
      • mouseDragged

        public void mouseDragged​(java.awt.event.MouseEvent e)
      • mouseMoved

        public void mouseMoved​(java.awt.event.MouseEvent e)
      • mouseReleased

        public void mouseReleased​(java.awt.event.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 java.lang.String getDebugInfo()
      • getRotationCenter

        public FloatPolygon getRotationCenter()
      • setRotationCenter

        public void setRotationCenter​(double x,
                                      double y)
      • size

        public int size()
        Returns the number of points in this selection; equivalent to getFloatPolygon().npoints.
      • getContourCentroid

        public double[] getContourCentroid()
      • convertToPolygon

        public Roi convertToPolygon()
        Converts this line selection into an area selection.
      • 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.
      • setFlattenScale

        public void setFlattenScale​(double scale)
      • notifyListeners

        public void notifyListeners​(int id)
      • addRoiListener

        public static void addRoiListener​(RoiListener listener)
      • removeRoiListener

        public static void removeRoiListener​(RoiListener listener)
      • iterator

        public java.util.Iterator<java.awt.Point> iterator()
        Required by the Iterable interface. Use to iterate over the contained coordinates. Usage example:
         for (Point p : roi) {
           // process p
         }
         
        Author: Wilhelm Burger
        Specified by:
        iterator in interface java.lang.Iterable<java.awt.Point>
        See Also:
        getContainedPoints(), getContainedFloatPoints()