- java.lang.Object
-
- ij.gui.Roi
-
- ij.gui.Line
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,java.lang.Iterable<java.awt.Point>
- Direct Known Subclasses:
Arrow
public class Line extends Roi
This class represents a straight line selection.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Line.PointIterator
Dedicated point iterator for thin lines.
-
Field Summary
Fields Modifier and Type Field Description protected double
startxd
protected double
startyd
int
x1
double
x1d
protected double
x1R
int
x2
double
x2d
protected double
x2R
int
y1
double
y1d
protected double
y1R
int
y2
double
y2d
protected double
y2R
-
Fields inherited from class ij.gui.Roi
ANGLE, asp_bk, aspect, cachedMask, center, clipboard, clipHeight, clipWidth, clipX, clipY, COMPOSITE, constrain, CONSTRUCTING, defaultColor, defaultFillColor, FERET_ARRAY_POINTOFFSET, FERET_ARRAYSIZE, fillColor, flattenScale, FREELINE, FREEROI, HANDLE_SIZE, handleColor, ic, ignoreClipRect, imp, instanceColor, LINE, lineWidth, mag, MOVING, MOVING_HANDLE, nonScalable, NORMAL, NOT_PASTING, oldHeight, oldWidth, oldX, oldY, onePixelWide, OVAL, overlay, pasteMode, POINT, POLYGON, POLYLINE, previousRoi, RECTANGLE, RESIZING, ROIColor, stroke, strokeColor, TRACED_ROI, type, updateFullWindow, wideLine, xMax, yMax
-
-
Constructor Summary
Constructors Constructor Description Line(double ox1, double oy1, double ox2, double oy2)
Creates a new straight line selection using the specified starting and ending offscreen double coordinates.Line(int ox1, int oy1, int ox2, int oy2)
Creates a new straight line selection using the specified starting and ending offscreen integer coordinates.Line(int ox1, int oy1, int ox2, int oy2, ImagePlus imp)
Deprecated.replaced by Line(int, int, int, int)Line(int sx, int sy, ImagePlus imp)
Starts the process of creating a new user-generated straight line selection.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected int
clipRectMargin()
boolean
contains(int x, int y)
Returns whether the center of pixel (x,y) is contained in the Roi.static Line
create(double x1, double y1, double x2, double y2)
Creates a new straight line selection using the specified starting and ending offscreen coordinates.void
draw(java.awt.Graphics g)
Draws this line on the image.protected void
drawLine(int sx, int sy)
void
drawPixels(ImageProcessor ip)
If the width of this line is less than or equal to one, draws the line.double
getAngle()
Overridden by PolygonRoi (angle between first two points), TextRoi (text angle) and Line (line angle).FloatPolygon
getFloatPoints()
Returns, as a FloatPolygon, the two points that define this line.FloatPolygon
getFloatPolygon()
If the width of this line is less than or equal to one, returns the starting and ending coordinates as a 2-point FloatPolygon, or, if the width is greater than one, returns an outline of the line as a 4-point FloatPolygon.FloatPolygon
getFloatPolygon(double strokeWidth)
Obsoletedouble
getLength()
Returns the length of this line.double[]
getPixels()
Returns the pixel values along this line.java.awt.Polygon
getPoints()
Returns, as a Polygon, the two points that define this line.java.awt.Polygon
getPolygon()
If the width of this line is less than or equal to one, returns the starting and ending coordinates as a 2-point Polygon, or, if the width is greater than one, returns an outline of the line as a 4-point Polygon.double
getRawLength()
Returns the length of this line in pixels.FloatPolygon
getRotationCenter()
static int
getWidth()
Returns the default line width.protected void
grow(int sx, int sy)
protected void
handleMouseDown(int sx, int sy)
protected void
handleMouseUp(int screenX, int screenY)
int
isHandle(int sx, int sy)
Returns a handle number if the specified screen coordinates are inside or near a handle, otherwise returns -1.java.util.Iterator<java.awt.Point>
iterator()
Required by theIterable
interface.protected void
mouseDownInHandle(int handle, int sx, int sy)
void
mouseMoved(java.awt.event.MouseEvent e)
protected void
moveHandle(int sx, int sy)
void
nudgeCorner(int key)
Nudge end point of line by one pixel.void
setLocation(double x, double y)
Sets the x coordinate of the leftmost and y coordinate of the topmost end pointvoid
setLocation(int x, int y)
Set the location of the ROI in image coordinates.void
setStrokeWidth(float width)
Sets the width of the line used to draw this ROI.static void
setWidth(int w)
Sets the default line width.void
showStatus()
int
size()
Returns the number of points in this selection; equivalent to getPolygon().npoints.boolean
subPixelResolution()
Always returns true.-
Methods inherited from class ij.gui.Roi
abortModification, abortPaste, addRoiListener, clone, containsPoint, convertLineToArea, convertToPolygon, copyAttributes, create, drawOverlay, drawPixels, enableSubPixelResolution, endPaste, equals, getAngle, getAntiAlias, getBoundingRect, getBounds, getColor, getContainedFloatPoints, getContainedPoints, getContourCentroid, getConvexHull, getCornerDiameter, getCPosition, getCurrentPasteMode, getDebugInfo, getDefaultFillColor, getDefaultGroup, getDefaultHandleSize, getDefaultStrokeWidth, getDrawOffset, getFeretsDiameter, getFeretValues, getFillColor, getFloatAngle, getFloatBounds, getFloatConvexHull, getFloatHeight, getFloatPolygon, getFloatWidth, getGroup, getGroupName, getGroupNames, getHandleSize, getHashCode, getImage, getImageID, getInterpolatedPolygon, getInterpolatedPolygon, getInterpolatedPolygon, getInverse, getListeners, getMagnification, getMask, getName, getPasteMode, getPosition, getPreviousRoi, getProperties, getProperty, getPropertyCount, getPrototypeOverlay, getRoundRectArcSize, getScaledStroke, getScaleStrokeWidth, getState, getStatistics, getStroke, getStrokeColor, getStrokeWidth, getTPosition, getType, getTypeAsString, getXBase, getYBase, getZPosition, handleMouseDrag, hasHyperStackPosition, isActiveOverlayRoi, isArea, isCursor, isDrawingTool, isInteger, isLine, isLineOrPoint, isVisible, lineCircleIntersection, magnificationForSubPixel, magnificationForSubPixel, mouseDragged, mouseReleased, notifyListeners, nudge, offScreenX, offScreenXD, offScreenY, offScreenYD, removeRoiListener, resetDefaultHandleSize, saveGroupNames, screenX, screenXD, screenY, screenYD, setAntiAlias, setBounds, setColor, setCornerDiameter, setDefaultColor, setDefaultFillColor, setDefaultGroup, setDefaultStrokeWidth, setDrawOffset, setFillColor, setFlattenScale, setGroup, setGroupName, setGroupNames, setHandleSize, setIgnoreClipRect, setImage, setInstanceColor, setIsCursor, setLineWidth, setName, setNonScalable, setPasteMode, setPosition, setPosition, setPosition, setPreviousRoi, setProperties, setProperty, setPrototypeOverlay, setRenderingHint, setRotationCenter, setRoundRectArcSize, setStroke, setStrokeColor, setStrokeWidth, setUnscalableStrokeWidth, startPaste, temporarilyHide, toFloat, toInt, toInt, toIntR, toString, translate, update, updateClipRect, updateWideLine, useLineSubpixelConvention, xor
-
-
-
-
Field Detail
-
x1
public int x1
-
y1
public int y1
-
x2
public int x2
-
y2
public int y2
-
x1d
public double x1d
-
y1d
public double y1d
-
x2d
public double x2d
-
y2d
public double y2d
-
x1R
protected double x1R
-
y1R
protected double y1R
-
x2R
protected double x2R
-
y2R
protected double y2R
-
startxd
protected double startxd
-
startyd
protected double startyd
-
-
Constructor Detail
-
Line
public Line(int ox1, int oy1, int ox2, int oy2)
Creates a new straight line selection using the specified starting and ending offscreen integer coordinates.
-
Line
public Line(double ox1, double oy1, double ox2, double oy2)
Creates a new straight line selection using the specified starting and ending offscreen double coordinates.
-
Line
public Line(int sx, int sy, ImagePlus imp)
Starts the process of creating a new user-generated straight line selection. 'sx' and 'sy' are screen coordinates that specify the start of the line. The user will determine the end of the line interactively using rubber banding.
-
Line
public Line(int ox1, int oy1, int ox2, int oy2, ImagePlus imp)
Deprecated.replaced by Line(int, int, int, int)
-
-
Method Detail
-
create
public static Line create(double x1, double y1, double x2, double y2)
Creates a new straight line selection using the specified starting and ending offscreen coordinates.
-
mouseMoved
public void mouseMoved(java.awt.event.MouseEvent e)
- Overrides:
mouseMoved
in classRoi
-
handleMouseUp
protected void handleMouseUp(int screenX, int screenY)
- Overrides:
handleMouseUp
in classRoi
-
drawLine
protected void drawLine(int sx, int sy)
-
moveHandle
protected void moveHandle(int sx, int sy)
- Overrides:
moveHandle
in classRoi
-
mouseDownInHandle
protected void mouseDownInHandle(int handle, int sx, int sy)
- Overrides:
mouseDownInHandle
in classRoi
-
draw
public void draw(java.awt.Graphics g)
Draws this line on the image.
-
showStatus
public void showStatus()
- Overrides:
showStatus
in classRoi
-
getAngle
public double getAngle()
Description copied from class:Roi
Overridden by PolygonRoi (angle between first two points), TextRoi (text angle) and Line (line angle).
-
getLength
public double getLength()
Returns the length of this line.
-
getRawLength
public double getRawLength()
Returns the length of this line in pixels.
-
getPixels
public double[] getPixels()
Returns the pixel values along this line. The line roi must have an associated ImagePlus
-
getPoints
public java.awt.Polygon getPoints()
Returns, as a Polygon, the two points that define this line.
-
getFloatPoints
public FloatPolygon getFloatPoints()
Returns, as a FloatPolygon, the two points that define this line.
-
getPolygon
public java.awt.Polygon getPolygon()
If the width of this line is less than or equal to one, returns the starting and ending coordinates as a 2-point Polygon, or, if the width is greater than one, returns an outline of the line as a 4-point Polygon.- Overrides:
getPolygon
in classRoi
- See Also:
getFloatPolygon()
,getPoints()
-
getFloatPolygon
public FloatPolygon getFloatPolygon()
If the width of this line is less than or equal to one, returns the starting and ending coordinates as a 2-point FloatPolygon, or, if the width is greater than one, returns an outline of the line as a 4-point FloatPolygon.- Overrides:
getFloatPolygon
in classRoi
- See Also:
getFloatPoints()
-
getFloatPolygon
public FloatPolygon getFloatPolygon(double strokeWidth)
Obsolete
-
size
public int size()
Returns the number of points in this selection; equivalent to getPolygon().npoints.
-
drawPixels
public void drawPixels(ImageProcessor ip)
If the width of this line is less than or equal to one, draws the line. Otherwise draws the outline of the area of this line- Overrides:
drawPixels
in classRoi
- See Also:
ImageProcessor.setColor(java.awt.Color)
,ImageProcessor.setLineWidth(int)
-
contains
public boolean contains(int x, int y)
Description copied from class:Roi
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.
-
handleMouseDown
protected void handleMouseDown(int sx, int sy)
- Overrides:
handleMouseDown
in classRoi
-
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.
-
getWidth
public static int getWidth()
Returns the default line width. Use getStrokeWidth()to get the width of a Line instance.- See Also:
Roi.getStrokeWidth()
-
setWidth
public static void setWidth(int w)
Sets the default line width. Use setStrokeWidth() to set the width of a Line instance.- See Also:
setStrokeWidth(float)
-
setStrokeWidth
public void setStrokeWidth(float width)
Description copied from class:Roi
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.- Overrides:
setStrokeWidth
in classRoi
- See Also:
Roi.setDefaultStrokeWidth(double)
,Roi.setUnscalableStrokeWidth(double)
,Roi.setStrokeColor(Color)
,ImagePlus.setOverlay(ij.gui.Overlay)
-
clipRectMargin
protected int clipRectMargin()
- Overrides:
clipRectMargin
in classRoi
-
nudgeCorner
public void nudgeCorner(int key)
Nudge end point of line by one pixel.- Overrides:
nudgeCorner
in classRoi
-
subPixelResolution
public boolean subPixelResolution()
Always returns true.- Overrides:
subPixelResolution
in classRoi
-
setLocation
public void setLocation(int x, int y)
Description copied from class:Roi
Set the location of the ROI in image coordinates.- Overrides:
setLocation
in classRoi
-
setLocation
public void setLocation(double x, double y)
Sets the x coordinate of the leftmost and y coordinate of the topmost end point- Overrides:
setLocation
in classRoi
-
getRotationCenter
public FloatPolygon getRotationCenter()
- Overrides:
getRotationCenter
in classRoi
-
iterator
public java.util.Iterator<java.awt.Point> iterator()
Description copied from class:Roi
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>
- Overrides:
iterator
in classRoi
- See Also:
Roi.getContainedPoints()
,Roi.getContainedFloatPoints()
-
-