- java.lang.Object
-
- ij.gui.Roi
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,java.lang.Iterable<java.awt.Point>
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 implementsIterable<Point>
and can thus be used to iterate over the contained coordinates. Usage example:Roi roi = ...; for (Point p : roi) { // process p }
Convention for subpixel resolution and zooming in:- Area ROIs: Integer coordinates refer to the top-left corner of the pixel with these coordinates. Thus, pixel (0,0) is enclosed by the rectangle spanned between points (0,0) and (1,1), i.e., a rectangle at (0,0) with width = height = 1 pixel.
- Line and Point Rois: Integer coordinates refer to the center of a pixel. Thus, a line from (0,0) to (1,0) has its start and end points in the center of pixels (0,0) and (1,0), respectively, and drawing the line should affect both pixels. For images dispplayed at high zoom levels, this means that (open) lines and single points are displayed 0.5 pixels further to the right and bottom than the outlines of area ROIs (closed lines) with the same coordinates.
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static int
ANGLE
protected double
asp_bk
protected boolean
aspect
protected ImageProcessor
cachedMask
protected boolean
center
protected ImagePlus
clipboard
protected int
clipHeight
protected int
clipWidth
protected int
clipX
protected int
clipY
static int
COMPOSITE
protected boolean
constrain
static int
CONSTRUCTING
protected static java.awt.Color
defaultColor
protected static java.awt.Color
defaultFillColor
static int
FERET_ARRAY_POINTOFFSET
static int
FERET_ARRAYSIZE
protected java.awt.Color
fillColor
protected double
flattenScale
static int
FREELINE
static int
FREEROI
static int
HANDLE_SIZE
protected java.awt.Color
handleColor
protected ImageCanvas
ic
protected boolean
ignoreClipRect
protected ImagePlus
imp
protected java.awt.Color
instanceColor
static int
LINE
protected static int
lineWidth
protected double
mag
static int
MOVING
static int
MOVING_HANDLE
protected boolean
nonScalable
static int
NORMAL
static int
NOT_PASTING
protected int
oldHeight
protected int
oldWidth
protected int
oldX
protected int
oldY
static java.awt.BasicStroke
onePixelWide
static int
OVAL
protected boolean
overlay
protected static int
pasteMode
static int
POINT
static int
POLYGON
static int
POLYLINE
static Roi
previousRoi
Get using getPreviousRoi() and set using setPreviousRoi()static int
RECTANGLE
static int
RESIZING
protected static java.awt.Color
ROIColor
protected java.awt.BasicStroke
stroke
protected java.awt.Color
strokeColor
static int
TRACED_ROI
protected int
type
protected boolean
updateFullWindow
protected boolean
wideLine
protected int
xMax
protected int
yMax
-
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.static Roi
convertLineToArea(Roi line)
Converts a line selection into an area (polygon or composite) selection.
Author: Michael SchmidRoi
convertToPolygon()
Deprecated.void
copyAttributes(Roi roi2)
Copy the attributes (outline color, fill color, outline width) of 'roi2' to the this selection.static Roi
create(double x, double y, double width, double height)
Creates a rectangular ROI.static Roi
create(double x, double y, double width, double height, int cornerDiameter)
Creates a rounded rectangular ROI.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()
Returns 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()
static int
getDefaultGroup()
Returns the group value assigned to newly created ROIs.static int
getDefaultHandleSize()
Returns the default handle size.static double
getDefaultStrokeWidth()
Returns the default stroke width.boolean
getDrawOffset()
Deprecated.Drawoffset is not used any more.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()
Returns this selection's bounding rectangle (with subpixel accuracy).FloatPolygon
getFloatConvexHull()
Returns the convex hull of this Roi as a FloatPolygon.double
getFloatHeight()
FloatPolygon
getFloatPolygon()
Returns the outline of this selection as a FloatPolygonFloatPolygon
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
getGroup()
Returns the group attribute of this ROI.static java.lang.String
getGroupName(int groupNumber)
Returns the group name associtated with the specified group.static java.lang.String
getGroupNames()
Returns the group names as a comma-delimeted string.int
getHandleSize()
Returns the current handle size.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.static java.util.Vector
getListeners()
protected double
getMagnification()
ImageProcessor
getMask()
Always returns null for rectangular Roi'sjava.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.int
getPosition()
Returns the stack position (image number) of this ROI, or zero if the ROI is not associated with a particular stack image.static Roi
getPreviousRoi()
Returns the Roi saved by setPreviousRoi().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()
boolean
getScaleStrokeWidth()
Returns 'true' if the stroke width is scaled as images are zoomed.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 line width.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 integerboolean
isLine()
Returns 'true' if this is a line selection.boolean
isLineOrPoint()
Return 'true' if this is a line or point selection.boolean
isVisible()
Returns true if this ROI is currently displayed on an image.java.util.Iterator<java.awt.Point>
iterator()
Required by theIterable
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 boolean
magnificationForSubPixel()
Returns whether a roi created interactively should have subpixel resolution, (if the roi type supports it), i.e., whether the magnification is high enoughprotected static boolean
magnificationForSubPixel(double magnification)
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.protected int
offScreenX(int sx)
Converts image canvas screen x coordinates to integer offscreen image pixel coordinates, depending on whether this roi uses the line or area convention for coordinates.protected double
offScreenXD(int sx)
Converts image canvas screen x coordinates to floating-point offscreen image pixel coordinates, depending on whether this roi uses the line or area convention for coordinates.protected int
offScreenY(int sy)
Converts image canvas screen y coordinates to integer offscreen image pixel coordinates, depending on whether this roi uses the line or area convention for coordinates.protected double
offScreenYD(int sy)
Converts image canvas screen y coordinates to floating-point offscreen image pixel coordinates, depending on whether this roi uses the line or area convention for coordinates.static void
removeRoiListener(RoiListener listener)
static void
resetDefaultHandleSize()
static void
saveGroupNames()
protected int
screenX(int ox)
protected int
screenXD(double ox)
Converts an image pixel x (offscreen)coordinate to a screen x coordinate, taking the the line or area convention for coordinates into accountprotected int
screenY(int oy)
protected int
screenYD(double oy)
Converts an image pixel y (offscreen)coordinate to a screen y coordinate, taking the the line or area convention for coordinates into accountvoid
setAntiAlias(boolean antiAlias)
void
setBounds(java.awt.geom.Rectangle2D.Double b)
Sets the bounds of rectangular, oval or text selections.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
setDefaultColor(java.awt.Color color)
Sets the default stroke color.static void
setDefaultFillColor(java.awt.Color color)
static void
setDefaultGroup(int group)
Sets the group value assigned to newly created ROIs, and also sets the default ROI color to the group color.static void
setDefaultStrokeWidth(double width)
Sets the default stroke width.void
setDrawOffset(boolean drawOffset)
Deprecated.This method was previously used to draw lines and polylines shifted by 0.5 pixels top the bottom and right, for better agreement with the position used by ProfilePlot, with the default taken from Prefs.subPixelResolution.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
setGroup(int group)
Sets the group of this Roi, and updates stroke color accordingly.static void
setGroupName(int groupNumber, java.lang.String name)
static void
setGroupNames(java.lang.String names)
Sets the group names from a comma-delimeted string.void
setHandleSize(int size)
Sets the current handle size.void
setIgnoreClipRect(boolean ignoreClipRect)
void
setImage(ImagePlus imp)
Sets the ImagePlus associated with this ROI.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.static void
setPreviousRoi(Roi roi)
Saves 'roi' so it can be restored later using Edit/Selection/Restore Selection.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 strokeWidth)
This is a version of setStrokeWidth() that accepts a double argument.void
setStrokeWidth(float strokeWidth)
Sets the width of the line used to draw this ROI.void
setUnscalableStrokeWidth(double strokeWidth)
Sets the width of the line used to draw this ROI and prevents the width from increasing when the image is zoomed.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()
Deprecatedstatic 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
translate(double dx, double dy)
void
update(boolean add, boolean subtract)
If 'add' is true, adds this selection to the previous one.protected void
updateClipRect()
void
updateWideLine(float width)
protected boolean
useLineSubpixelConvention()
Returns 'true' if this ROI uses for drawing the convention for line and point ROIs, where the coordinates are with respect to the pixel center.static Roi
xor(Roi[] rois)
-
-
-
Field Detail
-
CONSTRUCTING
public static final int CONSTRUCTING
- See Also:
- Constant Field Values
-
MOVING
public static final int MOVING
- See Also:
- Constant Field Values
-
RESIZING
public static final int RESIZING
- See Also:
- Constant Field Values
-
NORMAL
public static final int NORMAL
- See Also:
- Constant Field Values
-
MOVING_HANDLE
public static final int MOVING_HANDLE
- See Also:
- Constant Field Values
-
RECTANGLE
public static final int RECTANGLE
- See Also:
- Constant Field Values
-
OVAL
public static final int OVAL
- See Also:
- Constant Field Values
-
POLYGON
public static final int POLYGON
- See Also:
- Constant Field Values
-
FREEROI
public static final int FREEROI
- See Also:
- Constant Field Values
-
TRACED_ROI
public static final int TRACED_ROI
- See Also:
- Constant Field Values
-
LINE
public static final int LINE
- See Also:
- Constant Field Values
-
POLYLINE
public static final int POLYLINE
- See Also:
- Constant Field Values
-
FREELINE
public static final int FREELINE
- See Also:
- Constant Field Values
-
ANGLE
public static final int ANGLE
- See Also:
- Constant Field Values
-
COMPOSITE
public static final int COMPOSITE
- See Also:
- Constant Field Values
-
POINT
public static final int POINT
- See Also:
- Constant Field Values
-
HANDLE_SIZE
public static final int HANDLE_SIZE
- See Also:
- Constant Field Values
-
NOT_PASTING
public static final int NOT_PASTING
- See Also:
- Constant Field Values
-
FERET_ARRAYSIZE
public static final int FERET_ARRAYSIZE
- See Also:
- Constant Field Values
-
FERET_ARRAY_POINTOFFSET
public static final int FERET_ARRAY_POINTOFFSET
- See Also:
- Constant Field Values
-
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
-
previousRoi
public static Roi previousRoi
Get using getPreviousRoi() and set using setPreviousRoi()
-
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 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
-
defaultColor
protected static java.awt.Color defaultColor
-
-
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. For rectangular rois, also a corner diameter may be specified to make it a rounded rectangle
-
Roi
public Roi(int x, int y, int width, int height, ImagePlus imp)
Deprecated.
-
-
Method Detail
-
create
public static Roi create(double x, double y, double width, double height)
Creates a rectangular ROI.
-
create
public static Roi create(double x, double y, double width, double height, int cornerDiameter)
Creates a rounded rectangular ROI.
-
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.
-
translate
public void translate(double dx, double dy)
-
setImage
public void setImage(ImagePlus imp)
Sets the ImagePlus associated with this ROI.imp
may be null to remove the association to an image.
-
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()
Returns this selection's bounding rectangle.
-
getFloatBounds
public java.awt.geom.Rectangle2D.Double getFloatBounds()
Returns this selection's bounding rectangle (with subpixel accuracy).
-
setBounds
public void setBounds(java.awt.geom.Rectangle2D.Double b)
Sets the bounds of rectangular, oval or text selections. Note that for these types, subpixel resolution is ignored, and the x,y values are rounded down, the width and height values rounded up. Do not use for other ROI types since their width and height are results of a calculation. For translating ROIs, use setLocation.
-
getBoundingRect
public java.awt.Rectangle getBoundingRect()
Deprecated.replaced by getBounds()
-
getPolygon
public java.awt.Polygon getPolygon()
Returns the outline of this selection as a Polygon.
-
getFloatPolygon
public FloatPolygon getFloatPolygon()
Returns the outline of this selection 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()
-
getContainedFloatPoints
public FloatPolygon getContainedFloatPoints()
Returns the coordinates of the pixels inside this ROI as a FloatPolygon.- See Also:
getContainedPoints()
,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 classjava.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)
-
getHandleSize
public int getHandleSize()
Returns the current handle size.
-
setHandleSize
public void setHandleSize(int size)
Sets the current handle size.
-
getDefaultHandleSize
public static int getDefaultHandleSize()
Returns the default handle size.
-
resetDefaultHandleSize
public static void resetDefaultHandleSize()
-
drawPixels
public void drawPixels()
Deprecated.replaced by drawPixels(ImageProcessor)
-
drawPixels
public void drawPixels(ImageProcessor ip)
Draws the selection outline on the specified 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()
-
getDefaultStrokeWidth
public static double getDefaultStrokeWidth()
Returns the default stroke width.
-
setDefaultStrokeWidth
public static void setDefaultStrokeWidth(double width)
Sets the default stroke width.
-
getDefaultGroup
public static int getDefaultGroup()
Returns the group value assigned to newly created ROIs.
-
setDefaultGroup
public static void setDefaultGroup(int group)
Sets the group value assigned to newly created ROIs, and also sets the default ROI color to the group color. Set to zero to not have a default group and to use the default ROI color.- See Also:
setGroup(int)
,getGroup()
,getGroupColor(int)
-
getGroup
public int getGroup()
Returns the group attribute of this ROI.
-
getGroupName
public static java.lang.String getGroupName(int groupNumber)
Returns the group name associtated with the specified group.
-
setGroupName
public static void setGroupName(int groupNumber, java.lang.String name)
-
saveGroupNames
public static void saveGroupNames()
-
getGroupNames
public static java.lang.String getGroupNames()
Returns the group names as a comma-delimeted string.
-
setGroupNames
public static void setGroupNames(java.lang.String names)
Sets the group names from a comma-delimeted string.
-
setGroup
public void setGroup(int group)
Sets the group of this Roi, and updates stroke color accordingly.
-
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()
-
setStrokeColor
public void setStrokeColor(java.awt.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. Set the stroke color after setting the fill color to both fill and outline the ROI.
-
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)
-
setDefaultColor
public static void setDefaultColor(java.awt.Color color)
Sets the default stroke color.
-
setFillColor
public void setFillColor(java.awt.Color color)
Sets the fill color used to display this ROI, or set to null to display it transparently.- See Also:
getFillColor()
,setStrokeColor(java.awt.Color)
-
getFillColor
public java.awt.Color getFillColor()
Returns the fill color used to display this ROI, or null if it is displayed transparently.- See Also:
setFillColor(java.awt.Color)
,getStrokeColor()
-
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 strokeWidth)
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.
-
setStrokeWidth
public void setStrokeWidth(double strokeWidth)
This is a version of setStrokeWidth() that accepts a double argument.
-
setUnscalableStrokeWidth
public void setUnscalableStrokeWidth(double strokeWidth)
Sets the width of the line used to draw this ROI and prevents the width from increasing when the image is zoomed.
-
getStrokeWidth
public float getStrokeWidth()
Returns the line width.
-
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.
-
getScaleStrokeWidth
public boolean getScaleStrokeWidth()
Returns 'true' if the stroke width is scaled as images are zoomed.
-
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.
-
isLineOrPoint
public boolean isLineOrPoint()
Return 'true' if this is a line or point 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
@Deprecated public boolean getDrawOffset()
Deprecated.Drawoffset is not used any more.
-
setDrawOffset
@Deprecated public void setDrawOffset(boolean drawOffset)
Deprecated.This method was previously used to draw lines and polylines shifted by 0.5 pixels top the bottom and right, for better agreement with the position used by ProfilePlot, with the default taken from Prefs.subPixelResolution. Now the shift is independent of this setting and only depends on the ROI type (area or line/point ROI).
-
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 classjava.lang.Object
-
offScreenX
protected int offScreenX(int sx)
Converts image canvas screen x coordinates to integer offscreen image pixel coordinates, depending on whether this roi uses the line or area convention for coordinates.
-
offScreenY
protected int offScreenY(int sy)
Converts image canvas screen y coordinates to integer offscreen image pixel coordinates, depending on whether this roi uses the line or area convention for coordinates.
-
offScreenXD
protected double offScreenXD(int sx)
Converts image canvas screen x coordinates to floating-point offscreen image pixel coordinates, depending on whether this roi uses the line or area convention for coordinates.
-
offScreenYD
protected double offScreenYD(int sy)
Converts image canvas screen y coordinates to floating-point offscreen image pixel coordinates, depending on whether this roi uses the line or area convention for coordinates.
-
useLineSubpixelConvention
protected boolean useLineSubpixelConvention()
Returns 'true' if this ROI uses for drawing the convention for line and point ROIs, where the coordinates are with respect to the pixel center. Returns false for area rois, which have coordinates with respect to the upper left corners of the pixels
-
magnificationForSubPixel
protected boolean magnificationForSubPixel()
Returns whether a roi created interactively should have subpixel resolution, (if the roi type supports it), i.e., whether the magnification is high enough
-
magnificationForSubPixel
protected static boolean magnificationForSubPixel(double magnification)
-
screenXD
protected int screenXD(double ox)
Converts an image pixel x (offscreen)coordinate to a screen x coordinate, taking the the line or area convention for coordinates into account
-
screenYD
protected int screenYD(double oy)
Converts an image pixel y (offscreen)coordinate to a screen y coordinate, taking the the line or area convention for coordinates into account
-
screenX
protected int screenX(int ox)
-
screenY
protected int screenY(int 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 classjava.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()
-
getStatistics
public ImageStatistics getStatistics()
-
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.
-
setPreviousRoi
public static void setPreviousRoi(Roi roi)
Saves 'roi' so it can be restored later using Edit/Selection/Restore Selection.
-
getPreviousRoi
public static Roi getPreviousRoi()
Returns the Roi saved by setPreviousRoi().
-
getContourCentroid
public double[] getContourCentroid()
-
convertToPolygon
public Roi convertToPolygon()
Deprecated.Obsolete, replaced by Roi.convertLineToArea()
-
convertLineToArea
public static Roi convertLineToArea(Roi line)
Converts a line selection into an area (polygon or composite) selection.
Author: Michael Schmid
-
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)
-
getListeners
public static java.util.Vector getListeners()
-
iterator
public java.util.Iterator<java.awt.Point> iterator()
Required by theIterable
interface. Use to iterate over the contained coordinates. Usage example:for (Point p : roi) { // process p }
Author: Wilhelm Burger- Specified by:
iterator
in interfacejava.lang.Iterable<java.awt.Point>
- See Also:
getContainedPoints()
,getContainedFloatPoints()
-
-