ij.gui
Class PolygonRoi

java.lang.Object
  extended by ij.gui.Roi
      extended by ij.gui.PolygonRoi
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
EllipseRoi, FreehandRoi, PointRoi

public class PolygonRoi
extends Roi

This class represents a polygon region of interest or polyline of interest.

See Also:
Serialized Form

Field Summary
protected  int maxPoints
           
protected  int nPoints
           
protected  int splinePoints
           
protected  int[] xp
           
protected  int[] xp2
           
protected  float[] xpf
           
protected  float[] xSpline
           
protected  int[] yp
           
protected  int[] yp2
           
protected  float[] ypf
           
protected  float[] ySpline
           
 
Fields inherited from class ij.gui.Roi
ANGLE, asp_bk, aspect, cachedMask, center, clipboard, clipHeight, clipWidth, clipX, clipY, COMPOSITE, constrain, CONSTRUCTING, defaultFillColor, fillColor, 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
PolygonRoi(float[] xPoints, float[] yPoints, int nPoints, int type)
          Creates a new polygon or polyline ROI from float x and y arrays.
PolygonRoi(FloatPolygon p, int type)
          Creates a new polygon or polyline ROI from a FloatPolygon.
PolygonRoi(int[] xPoints, int[] yPoints, int nPoints, ImagePlus imp, int type)
          Deprecated.  
PolygonRoi(int[] xPoints, int[] yPoints, int nPoints, int type)
          Creates a new polygon or polyline ROI from x and y coordinate arrays.
PolygonRoi(int sx, int sy, ImagePlus imp)
          Starts the process of creating a new user-generated polygon or polyline ROI.
PolygonRoi(java.awt.Polygon p, int type)
          Creates a new polygon or polyline ROI from a Polygon.
PolygonRoi(java.lang.String filename, java.lang.String name)
           
 
Method Summary
protected  void addOffset()
           
protected  int clipRectMargin()
           
 java.lang.Object clone()
          Returns a copy of this PolygonRoi.
 boolean contains(int x, int y)
           
 void deleteHandle(double ox, double oy)
           
 void draw(java.awt.Graphics g)
           
 void drawPixels(ImageProcessor ip)
          Draws the selection outline on the specified ImageProcessor.
 void enableSubPixelResolution()
           
 void exitConstructingMode()
           
 void fitSpline()
           
 void fitSpline(int evaluationPoints)
           
 void fitSplineForStraightening()
           
 double getAngle()
          Returns the angle in degrees between the first two segments of this polyline.
 java.awt.Polygon getConvexHull()
          Uses the gift wrap algorithm to find the convex hull and returns it as a Polygon.
 java.lang.String getDebugInfo()
           
 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..
 FloatPolygon getFloatPolygon()
          Returns this polygon or polyline as float arrays.
 FloatPolygon getInterpolatedPolygon(double interval, boolean smooth)
          Returns, as a FloatPolygon, an interpolated version of this selection with points spaced 'interval' pixels apart.
 double getLength()
          Returns the perimeter (for ROIs) or length (for lines).
 ImageProcessor getMask()
          Override Roi.nudge() to support splines.
 int getNCoordinates()
          Returns the number of XY coordinates.
 java.awt.Polygon getNonSplineCoordinates()
           
 FloatPolygon getNonSplineFloatPolygon()
           
 java.awt.Polygon getPolygon()
          Returns this PolygonRoi as a Polygon.
 double getUncalibratedLength()
           
 int[] getXCoordinates()
          Obsolete; replaced by either getPolygon() or getFloatPolygon().
 int[] getYCoordinates()
          Obsolete; replaced by either getPolygon() or getFloatPolygon().
protected  void grow(int sx, int sy)
           
protected  void handleMouseUp(int sx, int sy)
          With segmented selections, ignore first mouse up and finalize when user double-clicks, control-clicks or clicks in start box.
 int isHandle(int sx, int sy)
          Returns a handle number if the specified screen coordinates are inside or near a handle, otherwise returns -1.
 boolean isSplineFit()
          Returns 'true' if this selection has been fitted with a spline.
protected  void mouseDownInHandle(int handle, int sx, int sy)
           
 void mouseMoved(java.awt.event.MouseEvent e)
           
protected  void moveHandle(int sx, int sy)
           
 void removeSplineFit()
           
 PolygonRoi rescale(double fromBinSize, double toBinSize)
           
 void setDrawOffset(boolean drawOffset)
           
 void setLocation(double x, double y)
          Set the location of the ROI in image coordinates.
 boolean subPixelResolution()
          Returns true if this is a slection that supports sub-pixel resolution.
protected  void updatePolygon()
           
 
Methods inherited from class ij.gui.Roi
abortPaste, copyAttributes, drawOverlay, drawPixels, endPaste, equals, getAngle, getBoundingRect, getBounds, getColor, getCornerDiameter, getCPosition, getCurrentPasteMode, getDefaultFillColor, getFeretsDiameter, getFeretValues, getFillColor, getFloatAngle, getFloatBounds, getFloatHeight, getFloatWidth, getHashCode, getImage, getImageID, getInterpolatedPolygon, getInterpolatedPolygon, getMagnification, getName, getPasteMode, getPosition, getProperties, getProperty, getPropertyCount, getPrototypeOverlay, getRoundRectArcSize, getScaledStroke, getState, getStroke, getStrokeColor, getStrokeWidth, getTPosition, getType, getTypeAsString, getXBase, getYBase, getZPosition, handleMouseDown, handleMouseDrag, isActiveOverlayRoi, isArea, isDrawingTool, isLine, isVisible, mouseDragged, mouseReleased, nudge, nudgeCorner, screenX, screenXD, screenY, screenYD, setColor, setCornerDiameter, setDefaultFillColor, setFillColor, setIgnoreClipRect, setImage, setInstanceColor, setLineWidth, setLocation, setName, setNonScalable, setPasteMode, setPosition, setPosition, setProperties, setProperty, setPrototypeOverlay, setRoundRectArcSize, setStroke, setStrokeColor, setStrokeWidth, setStrokeWidth, showStatus, startPaste, temporarilyHide, toFloat, toInt, toInt, toIntR, toString, update, updateClipRect, updateWideLine
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

maxPoints

protected int maxPoints

xp

protected int[] xp

yp

protected int[] yp

xpf

protected float[] xpf

ypf

protected float[] ypf

xp2

protected int[] xp2

yp2

protected int[] yp2

nPoints

protected int nPoints

xSpline

protected float[] xSpline

ySpline

protected float[] ySpline

splinePoints

protected int splinePoints
Constructor Detail

PolygonRoi

public PolygonRoi(int[] xPoints,
                  int[] yPoints,
                  int nPoints,
                  int type)
Creates a new polygon or polyline ROI from x and y coordinate arrays. Type must be Roi.POLYGON, Roi.FREEROI, Roi.TRACED_ROI, Roi.POLYLINE, Roi.FREELINE or Roi.ANGLE.


PolygonRoi

public PolygonRoi(float[] xPoints,
                  float[] yPoints,
                  int nPoints,
                  int type)
Creates a new polygon or polyline ROI from float x and y arrays. Type must be Roi.POLYGON, Roi.FREEROI, Roi.POLYLINE, Roi.FREELINE or Roi.ANGLE.


PolygonRoi

public PolygonRoi(java.lang.String filename,
                  java.lang.String name)

PolygonRoi

public PolygonRoi(java.awt.Polygon p,
                  int type)
Creates a new polygon or polyline ROI from a Polygon. Type must be Roi.POLYGON, Roi.FREEROI, Roi.TRACED_ROI, Roi.POLYLINE, Roi.FREELINE or Roi.ANGLE.


PolygonRoi

public PolygonRoi(FloatPolygon p,
                  int type)
Creates a new polygon or polyline ROI from a FloatPolygon. Type must be Roi.POLYGON, Roi.FREEROI, Roi.TRACED_ROI, Roi.POLYLINE, Roi.FREELINE or Roi.ANGLE.


PolygonRoi

public PolygonRoi(int[] xPoints,
                  int[] yPoints,
                  int nPoints,
                  ImagePlus imp,
                  int type)
Deprecated. 


PolygonRoi

public PolygonRoi(int sx,
                  int sy,
                  ImagePlus imp)
Starts the process of creating a new user-generated polygon or polyline ROI.

Method Detail

rescale

public PolygonRoi rescale(double fromBinSize,
                          double toBinSize)
Overrides:
rescale in class Roi

draw

public void draw(java.awt.Graphics g)
Overrides:
draw in class Roi

drawPixels

public void drawPixels(ImageProcessor ip)
Description copied from class: Roi
Draws the selection outline on the specified ImageProcessor.

Overrides:
drawPixels in class Roi
See Also:
ImageProcessor.setColor(java.awt.Color), ImageProcessor.setLineWidth(int)

grow

protected void grow(int sx,
                    int sy)
Overrides:
grow in class Roi

updatePolygon

protected void updatePolygon()

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent e)
Overrides:
mouseMoved in class Roi

exitConstructingMode

public void exitConstructingMode()

moveHandle

protected void moveHandle(int sx,
                          int sy)
Overrides:
moveHandle in class Roi

mouseDownInHandle

protected void mouseDownInHandle(int handle,
                                 int sx,
                                 int sy)
Overrides:
mouseDownInHandle in class Roi

deleteHandle

public void deleteHandle(double ox,
                         double oy)

fitSpline

public void fitSpline(int evaluationPoints)

fitSpline

public void fitSpline()

removeSplineFit

public void removeSplineFit()

isSplineFit

public boolean isSplineFit()
Returns 'true' if this selection has been fitted with a spline.


fitSplineForStraightening

public void fitSplineForStraightening()

getUncalibratedLength

public double getUncalibratedLength()

handleMouseUp

protected void handleMouseUp(int sx,
                             int sy)
With segmented selections, ignore first mouse up and finalize when user double-clicks, control-clicks or clicks in start box.

Overrides:
handleMouseUp in class Roi

addOffset

protected void addOffset()

contains

public boolean contains(int x,
                        int y)
Overrides:
contains in class Roi

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.

Overrides:
isHandle in class Roi

getMask

public ImageProcessor getMask()
Override Roi.nudge() to support splines.

Overrides:
getMask in class Roi

getLength

public double getLength()
Returns the perimeter (for ROIs) or length (for lines).

Overrides:
getLength in class Roi

getAngle

public double getAngle()
Returns the angle in degrees between the first two segments of this polyline.


getNCoordinates

public int getNCoordinates()
Returns the number of XY coordinates.


getXCoordinates

public int[] getXCoordinates()
Obsolete; replaced by either getPolygon() or getFloatPolygon().


getYCoordinates

public int[] getYCoordinates()
Obsolete; replaced by either getPolygon() or getFloatPolygon().


getNonSplineCoordinates

public java.awt.Polygon getNonSplineCoordinates()

getNonSplineFloatPolygon

public FloatPolygon getNonSplineFloatPolygon()

getPolygon

public java.awt.Polygon getPolygon()
Returns this PolygonRoi as a Polygon.

Overrides:
getPolygon in class Roi
See Also:
ImageProcessor.setRoi(java.awt.Rectangle), ImageProcessor.drawPolygon(java.awt.Polygon), ImageProcessor.fillPolygon(java.awt.Polygon)

getFloatPolygon

public FloatPolygon getFloatPolygon()
Returns this polygon or polyline as float arrays.

Overrides:
getFloatPolygon in class Roi

subPixelResolution

public boolean subPixelResolution()
Description copied from class: Roi
Returns true if this is a slection that supports sub-pixel resolution.

Overrides:
subPixelResolution in class Roi

getConvexHull

public java.awt.Polygon getConvexHull()
Uses the gift wrap algorithm to find the convex hull and returns it as a Polygon.

Overrides:
getConvexHull in class Roi

getInterpolatedPolygon

public FloatPolygon getInterpolatedPolygon(double interval,
                                           boolean smooth)
Description copied from class: Roi
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.

Overrides:
getInterpolatedPolygon in class Roi

clipRectMargin

protected int clipRectMargin()
Overrides:
clipRectMargin in class Roi

clone

public java.lang.Object clone()
Returns a copy of this PolygonRoi.

Overrides:
clone in class Roi

getDrawOffset

public boolean getDrawOffset()
Description copied from class: Roi
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..

Overrides:
getDrawOffset in class Roi

setDrawOffset

public void setDrawOffset(boolean drawOffset)
Overrides:
setDrawOffset in class Roi

setLocation

public void setLocation(double x,
                        double y)
Description copied from class: Roi
Set the location of the ROI in image coordinates.

Overrides:
setLocation in class Roi

enableSubPixelResolution

public void enableSubPixelResolution()
Overrides:
enableSubPixelResolution in class Roi

getDebugInfo

public java.lang.String getDebugInfo()
Overrides:
getDebugInfo in class Roi