com.kitfox.svg.pathcmd
Class Arc

java.lang.Object
  extended by com.kitfox.svg.pathcmd.PathCommand
      extended by com.kitfox.svg.pathcmd.Arc

public class Arc
extends PathCommand

This is a little used SVG function, as most editors will save curves as Beziers. To reduce the need to rely on the Batik library, this functionallity is being bypassed for the time being. In the future, it would be nice to extend the GeneralPath command to include the arcTo ability provided by Batik.

Author:
Mark McKay, Mark McKay

Field Summary
 boolean largeArc
           
 float rx
           
 float ry
           
 boolean sweep
           
 float x
           
 float xAxisRot
           
 float y
           
 
Fields inherited from class com.kitfox.svg.pathcmd.PathCommand
isRelative
 
Constructor Summary
Arc()
          Creates a new instance of MoveTo
Arc(boolean isRelative, float rx, float ry, float xAxisRot, boolean largeArc, boolean sweep, float x, float y)
           
 
Method Summary
 void appendPath(java.awt.geom.GeneralPath path, BuildHistory hist)
           
 void arcTo(java.awt.geom.GeneralPath path, float rx, float ry, float angle, boolean largeArcFlag, boolean sweepFlag, float x, float y, float x0, float y0)
          Adds an elliptical arc, defined by two radii, an angle from the x-axis, a flag to choose the large arc or not, a flag to indicate if we increase or decrease the angles and the final point of the arc.
static java.awt.geom.Arc2D computeArc(double x0, double y0, double rx, double ry, double angle, boolean largeArcFlag, boolean sweepFlag, double x, double y)
          This constructs an unrotated Arc2D from the SVG specification of an Elliptical arc.
 int getNumKnotsAdded()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rx

public float rx

ry

public float ry

xAxisRot

public float xAxisRot

largeArc

public boolean largeArc

sweep

public boolean sweep

x

public float x

y

public float y
Constructor Detail

Arc

public Arc()
Creates a new instance of MoveTo


Arc

public Arc(boolean isRelative,
           float rx,
           float ry,
           float xAxisRot,
           boolean largeArc,
           boolean sweep,
           float x,
           float y)
Method Detail

appendPath

public void appendPath(java.awt.geom.GeneralPath path,
                       BuildHistory hist)
Specified by:
appendPath in class PathCommand

getNumKnotsAdded

public int getNumKnotsAdded()
Specified by:
getNumKnotsAdded in class PathCommand

arcTo

public void arcTo(java.awt.geom.GeneralPath path,
                  float rx,
                  float ry,
                  float angle,
                  boolean largeArcFlag,
                  boolean sweepFlag,
                  float x,
                  float y,
                  float x0,
                  float y0)
Adds an elliptical arc, defined by two radii, an angle from the x-axis, a flag to choose the large arc or not, a flag to indicate if we increase or decrease the angles and the final point of the arc.

Parameters:
rx - the x radius of the ellipse
ry - the y radius of the ellipse
angle - the angle from the x-axis of the current coordinate system to the x-axis of the ellipse in degrees.
largeArcFlag - the large arc flag. If true the arc spanning less than or equal to 180 degrees is chosen, otherwise the arc spanning greater than 180 degrees is chosen
sweepFlag - the sweep flag. If true the line joining center to arc sweeps through decreasing angles otherwise it sweeps through increasing angles
x - the absolute x coordinate of the final point of the arc.
y - the absolute y coordinate of the final point of the arc.
x0 - - The absolute x coordinate of the initial point of the arc.
y0 - - The absolute y coordinate of the initial point of the arc.

computeArc

public static java.awt.geom.Arc2D computeArc(double x0,
                                             double y0,
                                             double rx,
                                             double ry,
                                             double angle,
                                             boolean largeArcFlag,
                                             boolean sweepFlag,
                                             double x,
                                             double y)
This constructs an unrotated Arc2D from the SVG specification of an Elliptical arc. To get the final arc you need to apply a rotation transform such as: AffineTransform.getRotateInstance (angle, arc.getX()+arc.getWidth()/2, arc.getY()+arc.getHeight()/2);