JGraph X 1.4.0.9

## com.mxgraph.util
Class mxCurve

    java.lang.Object
      com.mxgraph.util.mxCurve

    public class mxCurve

extends java.lang.Object

Field Summary
`static java.lang.String` `CORE_CURVE` Defines the key for the central curve index
`protected java.util.Map<java.lang.String,java.lang.Double>` `curveLengths` The curve lengths of the curves
`java.util.List<mxPoint>` `guidePoints` The points this curve is drawn through.
`protected java.util.Map<java.lang.String,double[]>` `intervals` An array of arrays of intervals.
`static java.lang.String` `LABEL_CURVE` Defines the key for the label curve index
`protected double` `labelBuffer` Offset of the label curve from the curve the label curve is based on.
`protected double` `maxXBounds`
`protected double` `maxYBounds`
`protected double` `minXBounds`
`protected double` `minYBounds`
`protected java.util.Map<java.lang.String,mxPoint[]>` `points` A collection of arrays of curve points
`protected boolean` `valid` Whether or not the curve currently holds valid values

Constructor Summary
`mxCurve()`
`mxCurve(java.util.List<mxPoint> points)`

Method Summary
`void` `configureLabelCurve()`
`protected void` `createCoreCurve()` Creates the actual
`protected void` `createLabelCurve()`
`protected mxPoint[]` `getBaseLabelCurve()` Returns the curve the label curve is too be based on
`mxRectangle` `getBounds()`
`double` `getCurveLength(java.lang.String index)`
`mxLine` `getCurveParallel(java.lang.String index, double distance)` Returns a unit vector parallel to the curve at the specified distance along the curve.
`mxPoint[]` `getCurvePoints(java.lang.String index)` Obtains the points that make up the curve for the specified curve index.
`mxPoint[]` `getCurveSection(java.lang.String index, double start, double end)` Returns a section of the curve as an array of points
`java.util.List<mxPoint>` `getGuidePoints()`
`double[]` `getIntervals(java.lang.String index)`
`protected int` `getLowerIndexOfSegment(java.lang.String index, double distance)` Calculates the index of the lower point on the segment that contains the point distance along the
`mxRectangle` `getRelativeFromAbsPoint(mxPoint absPoint, java.lang.String index)` Calculates the position of an absolute in terms relative to this curve.
`protected mxPoint` `intersectRectPerimeterPoint(java.lang.String curveIndex, mxRectangle rect, int indexSeg)` Returns the point at which this curve segment intersects the boundary of the given rectangle, if it does so.
`protected int` `intersectRectPerimeterSeg(java.lang.String index, mxRectangle rect)` Utility method to determine within which segment the specified rectangle intersects the specified curve
`boolean` `intersectsRect(mxRectangle rect)` Returns whether or not the rectangle passed in hits any part of this curve.
`mxPoint` `intersectsRectPerimeter(java.lang.String index, mxRectangle rect)` Returns the point at which this curve intersects the boundary of the given rectangle, if it does so.
`double` `intersectsRectPerimeterDist(java.lang.String index, mxRectangle rect)` Returns the distance from the start of the curve at which this curve intersects the boundary of the given rectangle, if it does so.
`boolean` `isLabelReversed()` Whether or not the label curve starts from the end target and traces to the start of the branch
`protected void` `populateIntervals(java.lang.String index)`
`void` `setLabelBuffer(double buffer)`
`protected void` `updateBounds(double pointX, double pointY)` Updates the total bounds of this curve, increasing any dimensions, if necessary, to fit in the specified point
`void` `updateCurve(java.util.List<mxPoint> newPoints)` Updates the existing curve using the points passed in.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### points

    protected java.util.Map<java.lang.String,mxPoint[]> points

  A collection of arrays of curve points

### minXBounds

    protected double minXBounds

### maxXBounds

    protected double maxXBounds

### minYBounds

    protected double minYBounds

### maxYBounds

    protected double maxYBounds

### intervals

    protected java.util.Map<java.lang.String,double[]> intervals

  An array of arrays of intervals. These intervals define the distance along the edge (0 to 1) that each point lies

### curveLengths

    protected java.util.Map<java.lang.String,java.lang.Double> curveLengths

  The curve lengths of the curves

### CORE_CURVE

    public static java.lang.String CORE_CURVE

  Defines the key for the central curve index

### LABEL_CURVE

    public static java.lang.String LABEL_CURVE

  Defines the key for the label curve index

### labelBuffer

    protected double labelBuffer

  Offset of the label curve from the curve the label curve is based on. If you wish to set this value, do so directly after creation of the curve. The first time the curve is used the label curve will be created with whatever value is contained in this variable. Changes to it after that point will have no effect.

### guidePoints

    public java.util.List<mxPoint> guidePoints

  The points this curve is drawn through. These are typically control points and are at distances from each other that straight lines between them do not describe a smooth curve. This class takes these guiding points and creates a finer set of internal points that visually appears to be a curve when linked by straight lines

### valid

    protected boolean valid

  Whether or not the curve currently holds valid values

Constructor Detail

### mxCurve

    public mxCurve()

### mxCurve

    public mxCurve(java.util.List<mxPoint> points)

Method Detail

### setLabelBuffer

    public void setLabelBuffer(double buffer)

### getBounds

    public mxRectangle getBounds()

### getLowerIndexOfSegment

    protected int getLowerIndexOfSegment(java.lang.String index,
                                         double distance)

  Calculates the index of the lower point on the segment that contains the point distance along the

### getCurveParallel

    public mxLine getCurveParallel(java.lang.String index,
                                   double distance)

  Returns a unit vector parallel to the curve at the specified distance along the curve. To obtain the angle the vector makes with (1,0) perform Math.atan(segVectorY/segVectorX).

  Parameters:
    `index` - the curve index specifying the curve to analyse
    `distance` - the distance from start to end of curve (0.0...1.0)
  Returns:
    a unit vector at the specified point on the curve represented as a line, parallel with the curve

### getCurveSection

    public mxPoint[] getCurveSection(java.lang.String index,
                                     double start,
                                     double end)

  Returns a section of the curve as an array of points

  Parameters:
    `index` - the curve index specifying the curve to analyse
    `start` - the start position of the curve segment (0.0...1.0)
    `end` - the end position of the curve segment (0.0...1.0)
  Returns:
    a sequence of point representing the curve section or null if it cannot be calculated

### intersectsRect

    public boolean intersectsRect(mxRectangle rect)

  Returns whether or not the rectangle passed in hits any part of this curve.

  Parameters:
    `rect` - the rectangle to detect for a hit
  Returns:
    whether or not the rectangle hits this curve

### intersectsRectPerimeter

    public mxPoint intersectsRectPerimeter(java.lang.String index,
                                           mxRectangle rect)

  Returns the point at which this curve intersects the boundary of the given rectangle, if it does so. If it does not intersect, null is returned. If it intersects multiple times, the first intersection from the start end of the curve is returned.

  Parameters:
    `index` - the curve index specifying the curve to analyse
    `rect` - the whose boundary is to be tested for intersection with this curve
  Returns:
    the point at which this curve intersects the boundary of the given rectangle, if it does so. If it does not intersect, null is returned.

### intersectsRectPerimeterDist

    public double intersectsRectPerimeterDist(java.lang.String index,
                                              mxRectangle rect)

  Returns the distance from the start of the curve at which this curve intersects the boundary of the given rectangle, if it does so. If it does not intersect, a negative value is returned. If it intersects multiple times, the first intersection from the start end of the curve is returned.

  Parameters:
    `index` - the curve index specifying the curve to analyse
    `rect` - the whose boundary is to be tested for intersection with this curve
  Returns:
    the distance along the curve from the start at which the intersection occurs

### intersectRectPerimeterSeg

    protected int intersectRectPerimeterSeg(java.lang.String index,
                                            mxRectangle rect)

  Utility method to determine within which segment the specified rectangle intersects the specified curve

  Parameters:
    `index` - the curve index specifying the curve to analyse
    `rect` - the whose boundary is to be tested for intersection with this curve
  Returns:
    the point at which this curve intersects the boundary of the given rectangle, if it does so. If it does not intersect, -1 is returned

### intersectRectPerimeterPoint

    protected mxPoint intersectRectPerimeterPoint(java.lang.String curveIndex,
                                                  mxRectangle rect,
                                                  int indexSeg)

  Returns the point at which this curve segment intersects the boundary of the given rectangle, if it does so. If it does not intersect, null is returned.

  Parameters:
    `curveIndex` - the curve index specifying the curve to analyse
    `rect` - the whose boundary is to be tested for intersection with this curve
    `indexSeg` - the segments on this curve being checked
  Returns:
    the point at which this curve segment intersects the boundary of the given rectangle, if it does so. If it does not intersect, null is returned.

### getRelativeFromAbsPoint

    public mxRectangle getRelativeFromAbsPoint(mxPoint absPoint,
                                               java.lang.String index)

  Calculates the position of an absolute in terms relative to this curve.

  Parameters:
    `absPoint` - the point whose relative point is to calculated
    `index` - the index of the curve whom the relative position is to be calculated from
  Returns:
    an mxRectangle where the x is the distance along the curve (0 to 1), y is the orthogonal offset from the closest segment on the curve and (wdith, height) is an additional cartisian offset applied after the other calculations

### createCoreCurve

    protected void createCoreCurve()

  Creates the actual

### configureLabelCurve

    public void configureLabelCurve()

### isLabelReversed

    public boolean isLabelReversed()

  Whether or not the label curve starts from the end target and traces to the start of the branch

  Returns:
    whether the label curve is reversed

### createLabelCurve

    protected void createLabelCurve()

### getBaseLabelCurve

    protected mxPoint[] getBaseLabelCurve()

  Returns the curve the label curve is too be based on

### populateIntervals

    protected void populateIntervals(java.lang.String index)

### updateCurve

    public void updateCurve(java.util.List<mxPoint> newPoints)

  Updates the existing curve using the points passed in.

  Parameters:
    `newPoints` - the new guide points

### getCurvePoints

    public mxPoint[] getCurvePoints(java.lang.String index)

  Obtains the points that make up the curve for the specified curve index. If that curve, or the core curve that other curves are based on have not yet been created, then they are lazily created

  Parameters:
    `index` - the key specifying the curve
  Returns:
    the points making up that curve

### getIntervals

    public double[] getIntervals(java.lang.String index)

### getCurveLength

    public double getCurveLength(java.lang.String index)

### updateBounds

    protected void updateBounds(double pointX,
                                double pointY)

  Updates the total bounds of this curve, increasing any dimensions, if necessary, to fit in the specified point

### getGuidePoints

    public java.util.List<mxPoint> getGuidePoints()

  Returns:
    the guidePoints

JGraph X 1.4.0.9

Copyright (c) 2010 Gaudenz Alder. All rights reserved.