|
Constructor Summary |
RMPath()
Creates an empty path. |
|
Method Summary |
RMPath |
appendOval(RMRect aRect,
float startAngle,
float sweep,
boolean connect)
Adds elements describing an oval in the given rect to this path. |
RMPath |
appendPath(RMPath aPath)
Adds the elements from the given path to this path. |
RMPath |
appendRect(RMRect aRect)
Adds elements describing the perimeter of the given rect to this path. |
java.awt.geom.GeneralPath |
awt()
Returns an AWT compatible version of RMPath. |
java.lang.Object |
clone()
Standard clone implementation. |
void |
closePath()
Adds a Close element to the given path. |
void |
curveTo(double cp1x,
double cp1y,
double cp2x,
double cp2y,
double px,
double py)
Adds a CurveTo element to the path for the given point and control points. |
void |
curveTo(RMPoint cp1,
RMPoint cp2,
RMPoint p)
Adds a CurveTo element to the path for the given point and control points. |
boolean |
equals(java.lang.Object anObj)
Standard equals implementation. |
static RMPath |
fromAwt(java.awt.Shape aShape)
Returns a new path from an AWT shape. |
java.lang.Object |
fromXML(com.ribs.RXArchiver anArchiver,
com.ribs.RXElement anElement)
XML unarchival. |
RMRect |
getBounds()
Returns the bounds for the path. |
RMRect |
getBounds(RMRect inRect,
boolean skipConsecutiveMoveTos)
Returns the bounds for the path with an option to ignore orphaned (consecutive) moveTos. |
float |
getDistance(RMPoint aPoint)
Returns shortest distance from any point in path to given point. |
float |
getDistanceSigned(RMPoint aPoint)
Returns shortest distance from any point in path to given point (negative means inside the path). |
byte |
getElement(int anIndex)
Returns the element type at the given index. |
byte |
getElement(int anIndex,
RMPoint[] points)
Returns the element type at the given index and its associated points (returned in the given point array). |
byte |
getElement(int anIndex,
RMPoint[] points,
RMRect inRect)
Returns the element type at the given index and its associated points (returned in the given point array). |
int |
getElementCount()
Returns the number of elements in this path. |
int |
getElementIndexForPointIndex(int index)
Returns the element index for the given point index. |
byte |
getElementLast()
Returns the last element. |
RMPoint |
getElementLastMoveTo(int anIndex)
Returns the x/y of the last move-to point prior to the given element. |
RMPoint |
getElementLastPoint(int anIndex)
Returns the x/y starting point for the given element. |
int |
getElementPointIndex(int index)
Returns the point index for a given element. |
float |
getHeight()
Returns the height of the path. |
com.reportmill.graphics.RMHitInfo |
getHitInfo(com.reportmill.graphics.RMBezier aBezier,
boolean findFirstHit)
Returns the hit info for the given bezier curve against this path. |
com.reportmill.graphics.RMHitInfo |
getHitInfo(com.reportmill.graphics.RMLine aLine,
boolean findFirstHit)
Returns the hit info for the given line against this path. |
RMPath |
getPathFlattened()
Returns a path with only moveto, lineto. |
RMPath |
getPathInRect(RMRect aRect)
Returns a copy of the path scaled to exactly fit in the given rect. |
RMPath |
getPathWithFlattendCubics()
Returns a copy of the path with cubics demoted to one or more quadratics. |
RMPoint |
getPoint(int anIndex)
Returns the point at the given index. |
int |
getPointCount()
Returns the number of points in the path. |
RMPoint |
getPointLast()
Returns the last point in the path. |
java.util.Vector |
getPoints()
Returns the points list used to store points internally. |
float |
getWidth()
Returns the width of the path. |
byte |
getWindingRule()
Returns the winding rule which describes how inner path perimeters are filled and clipped. |
float |
getX()
Returns the X of the path. |
float |
getY()
Returns the Y of the path. |
int |
handleAtPointForBounds(RMPoint aPoint,
RMRect aRect)
Returns the handle index for a given point against this path scaled to the given rect. |
boolean |
hasCubics()
Returns whether the path has any cubic curves in it. |
boolean |
hasCurves()
Returns whether path has any curve segments (QuadTo, CurveTo). |
java.lang.Object |
initWithArchiver(com.reportmill.base.RMArchiver anArchiver)
Legacy archival. |
boolean |
isHitBy(com.reportmill.graphics.RMLine aLine)
Returns whether path is hit by a line. |
boolean |
isHitBy(RMPath aPath,
float lineWidth)
Returns whether path drawn with given linewidth is hit by given path. |
boolean |
isHitBy(RMPoint aPoint,
float lineWidth)
Returns whether path is hit by point for a path linewidth. |
boolean |
isHitBy(RMRect aRect,
float lineWidth)
Returns whether path drawn with given linewidth is hit by given rect. |
boolean |
isPointInside(RMPoint p1)
Returns whether the given point is inside the path. |
void |
lineTo(double px,
double py)
Adds a LineTo element to the path for the given point. |
void |
lineTo(RMPoint p)
Adds a LineTo element to the path for the given point. |
void |
moveTo(double px,
double py)
Adds a MoveTo element to the path for the given point. |
void |
moveTo(RMPoint p)
Adds a MoveTo element to the path for the given point. |
RMPoint |
pointInPathCoordsFromPoint(RMPoint aPoint,
RMRect aRect)
Returns the given point converted to path coords for given path bounds. |
void |
quadraticCurveTo(RMPoint cp1,
RMPoint cp2,
RMPoint aPoint)
This is effectively a curveTo but does it internally with one or more approximated quadratics. |
void |
quadTo(double cpx,
double cpy,
double px,
double py)
Adds a QuadTo element to the path for the given point and control point. |
void |
quadTo(RMPoint cp,
RMPoint p)
Adds a QuadTo element to the path for the given point and control point. |
void |
relativeCurveTo(RMPoint cp1,
RMPoint cp2,
RMPoint aPoint)
Adds a CurveTo element to the path for the given point offset from the path's current point. |
void |
relativeLineTo(RMPoint aPoint)
Adds a LineTo element to the path for the given point offset from the path's current point. |
void |
relativeMoveTo(RMPoint aPoint)
Adds a MoveTo element to the path for the given point offset from the path's current point. |
void |
removeLastElement()
Removes the last element from the path. |
void |
reset()
Resets the current path with no elements or points. |
void |
setBounds(RMRect bounds)
Sets the bounds that the path is relative to. |
void |
setPoint(int index,
RMPoint point)
Sets the path point at the given index to the given point. |
void |
setWindingRule(byte windingRule)
Sets the winding rule which describes how inner path perimeters are filled and clipped. |
void |
structuredSetPoint(int index,
RMPoint point)
|
com.ribs.RXElement |
toXML(com.ribs.RXArchiver anArchiver)
XML archival. |
void |
transformBy(com.reportmill.graphics.RMTransform aTransform)
Transforms the points in the path by the given transform. |
| Methods inherited from class com.reportmill.base.RMObject |
copy, didChange, didUndo, getAnimAttribute, getClassNameShort, undoClone, undoCopy, undoEquals |
| Methods inherited from class java.lang.Object |
getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
LineCapButt
public static final byte LineCapButt
- See Also:
- Constant Field Values
LineCapRound
public static final byte LineCapRound
- See Also:
- Constant Field Values
LineCapProjectingSquare
public static final byte LineCapProjectingSquare
- See Also:
- Constant Field Values
LineJoinMiter
public static final byte LineJoinMiter
- See Also:
- Constant Field Values
LineJoinRound
public static final byte LineJoinRound
- See Also:
- Constant Field Values
LineJoinBevel
public static final byte LineJoinBevel
- See Also:
- Constant Field Values
WIND_NON_ZERO
public static final byte WIND_NON_ZERO
- See Also:
- Constant Field Values
WIND_EVEN_ODD
public static final byte WIND_EVEN_ODD
- See Also:
- Constant Field Values
MOVE_TO
public static final byte MOVE_TO
- See Also:
- Constant Field Values
LINE_TO
public static final byte LINE_TO
- See Also:
- Constant Field Values
QUAD_TO
public static final byte QUAD_TO
- See Also:
- Constant Field Values
CURVE_TO
public static final byte CURVE_TO
- See Also:
- Constant Field Values
CLOSE
public static final byte CLOSE
- See Also:
- Constant Field Values
unitRectPath
public static final RMPath unitRectPath
RMPath
public RMPath()
- Creates an empty path.
moveTo
public void moveTo(RMPoint p)
- Adds a MoveTo element to the path for the given point.
moveTo
public void moveTo(double px,
double py)
- Adds a MoveTo element to the path for the given point.
lineTo
public void lineTo(RMPoint p)
- Adds a LineTo element to the path for the given point.
lineTo
public void lineTo(double px,
double py)
- Adds a LineTo element to the path for the given point.
quadTo
public void quadTo(RMPoint cp,
RMPoint p)
- Adds a QuadTo element to the path for the given point and control point.
quadTo
public void quadTo(double cpx,
double cpy,
double px,
double py)
- Adds a QuadTo element to the path for the given point and control point.
curveTo
public void curveTo(RMPoint cp1,
RMPoint cp2,
RMPoint p)
- Adds a CurveTo element to the path for the given point and control points.
curveTo
public void curveTo(double cp1x,
double cp1y,
double cp2x,
double cp2y,
double px,
double py)
- Adds a CurveTo element to the path for the given point and control points.
closePath
public void closePath()
- Adds a Close element to the given path.
reset
public void reset()
- Resets the current path with no elements or points.
relativeMoveTo
public void relativeMoveTo(RMPoint aPoint)
- Adds a MoveTo element to the path for the given point offset from the path's current point.
relativeLineTo
public void relativeLineTo(RMPoint aPoint)
- Adds a LineTo element to the path for the given point offset from the path's current point.
relativeCurveTo
public void relativeCurveTo(RMPoint cp1,
RMPoint cp2,
RMPoint aPoint)
- Adds a CurveTo element to the path for the given point offset from the path's current point.
getWindingRule
public byte getWindingRule()
- Returns the winding rule which describes how inner path perimeters are filled and clipped.
setWindingRule
public void setWindingRule(byte windingRule)
- Sets the winding rule which describes how inner path perimeters are filled and clipped.
getX
public float getX()
- Returns the X of the path.
getY
public float getY()
- Returns the Y of the path.
getWidth
public float getWidth()
- Returns the width of the path.
getHeight
public float getHeight()
- Returns the height of the path.
getBounds
public RMRect getBounds()
- Returns the bounds for the path.
getBounds
public RMRect getBounds(RMRect inRect,
boolean skipConsecutiveMoveTos)
- Returns the bounds for the path with an option to ignore orphaned (consecutive) moveTos.
setBounds
public void setBounds(RMRect bounds)
- Sets the bounds that the path is relative to.
getElement
public byte getElement(int anIndex)
- Returns the element type at the given index.
getElement
public byte getElement(int anIndex,
RMPoint[] points)
- Returns the element type at the given index and its associated points (returned in the given point array).
getElement
public byte getElement(int anIndex,
RMPoint[] points,
RMRect inRect)
- Returns the element type at the given index and its associated points (returned in the given point array).
getElementCount
public int getElementCount()
- Returns the number of elements in this path.
getElementLast
public byte getElementLast()
- Returns the last element.
getPoint
public RMPoint getPoint(int anIndex)
- Returns the point at the given index.
getPointCount
public int getPointCount()
- Returns the number of points in the path.
getPointLast
public RMPoint getPointLast()
- Returns the last point in the path.
getPoints
public java.util.Vector getPoints()
- Returns the points list used to store points internally.
getElementPointIndex
public int getElementPointIndex(int index)
- Returns the point index for a given element.
getElementIndexForPointIndex
public int getElementIndexForPointIndex(int index)
- Returns the element index for the given point index.
getElementLastPoint
public RMPoint getElementLastPoint(int anIndex)
- Returns the x/y starting point for the given element.
getElementLastMoveTo
public RMPoint getElementLastMoveTo(int anIndex)
- Returns the x/y of the last move-to point prior to the given element.
getPathInRect
public RMPath getPathInRect(RMRect aRect)
- Returns a copy of the path scaled to exactly fit in the given rect.
hasCurves
public boolean hasCurves()
- Returns whether path has any curve segments (QuadTo, CurveTo).
hasCubics
public boolean hasCubics()
- Returns whether the path has any cubic curves in it.
getPathFlattened
public RMPath getPathFlattened()
- Returns a path with only moveto, lineto.
getPathWithFlattendCubics
public RMPath getPathWithFlattendCubics()
- Returns a copy of the path with cubics demoted to one or more quadratics.
equals
public boolean equals(java.lang.Object anObj)
- Standard equals implementation.
clone
public java.lang.Object clone()
- Standard clone implementation.
isHitBy
public boolean isHitBy(RMPoint aPoint,
float lineWidth)
- Returns whether path is hit by point for a path linewidth.
isHitBy
public boolean isHitBy(com.reportmill.graphics.RMLine aLine)
- Returns whether path is hit by a line.
isHitBy
public boolean isHitBy(RMRect aRect,
float lineWidth)
- Returns whether path drawn with given linewidth is hit by given rect.
isHitBy
public boolean isHitBy(RMPath aPath,
float lineWidth)
- Returns whether path drawn with given linewidth is hit by given path.
isPointInside
public boolean isPointInside(RMPoint p1)
- Returns whether the given point is inside the path.
getDistance
public float getDistance(RMPoint aPoint)
- Returns shortest distance from any point in path to given point.
getDistanceSigned
public float getDistanceSigned(RMPoint aPoint)
- Returns shortest distance from any point in path to given point (negative means inside the path).
getHitInfo
public com.reportmill.graphics.RMHitInfo getHitInfo(com.reportmill.graphics.RMLine aLine,
boolean findFirstHit)
- Returns the hit info for the given line against this path.
getHitInfo
public com.reportmill.graphics.RMHitInfo getHitInfo(com.reportmill.graphics.RMBezier aBezier,
boolean findFirstHit)
- Returns the hit info for the given bezier curve against this path.
handleAtPointForBounds
public int handleAtPointForBounds(RMPoint aPoint,
RMRect aRect)
- Returns the handle index for a given point against this path scaled to the given rect.
pointInPathCoordsFromPoint
public RMPoint pointInPathCoordsFromPoint(RMPoint aPoint,
RMRect aRect)
- Returns the given point converted to path coords for given path bounds.
removeLastElement
public void removeLastElement()
- Removes the last element from the path.
setPoint
public void setPoint(int index,
RMPoint point)
- Sets the path point at the given index to the given point.
transformBy
public void transformBy(com.reportmill.graphics.RMTransform aTransform)
- Transforms the points in the path by the given transform.
appendPath
public RMPath appendPath(RMPath aPath)
- Adds the elements from the given path to this path.
appendRect
public RMPath appendRect(RMRect aRect)
- Adds elements describing the perimeter of the given rect to this path.
appendOval
public RMPath appendOval(RMRect aRect,
float startAngle,
float sweep,
boolean connect)
- Adds elements describing an oval in the given rect to this path.
quadraticCurveTo
public void quadraticCurveTo(RMPoint cp1,
RMPoint cp2,
RMPoint aPoint)
- This is effectively a curveTo but does it internally with one or more approximated quadratics.
I found a C++ version of this on http://homepages.tig.com.au/~dkl/swf/ - Jeff Martin.
It illustrates how to approximate 4-point cubic Beziers with 3-point quadratic Beziers. PostScript (and most apps)
use cubics, Flash uses quadratics.
structuredSetPoint
public void structuredSetPoint(int index,
RMPoint point)
awt
public java.awt.geom.GeneralPath awt()
- Returns an AWT compatible version of RMPath.
fromAwt
public static RMPath fromAwt(java.awt.Shape aShape)
- Returns a new path from an AWT shape.
toXML
public com.ribs.RXElement toXML(com.ribs.RXArchiver anArchiver)
- XML archival.
fromXML
public java.lang.Object fromXML(com.ribs.RXArchiver anArchiver,
com.ribs.RXElement anElement)
- XML unarchival.
initWithArchiver
public java.lang.Object initWithArchiver(com.reportmill.base.RMArchiver anArchiver)
- Legacy archival.