package flash.display {
	
	
	// import flash.Vector;
	
	
	/**
	 * @externs
	 * A collection of drawing commands and the coordinate parameters for those
	 * commands.
	 *
	 *  Use a GraphicsPath object with the
	 * `Graphics.drawGraphicsData()` method. Drawing a GraphicsPath
	 * object is the equivalent of calling the `Graphics.drawPath()`
	 * method. 
	 *
	 * The GraphicsPath class also has its own set of methods
	 * (`curveTo()`, `lineTo()`, `moveTo()`
	 * `wideLineTo()` and `wideMoveTo()`) similar to those
	 * in the Graphics class for making adjustments to the
	 * `GraphicsPath.commands` and `GraphicsPath.data`
	 * vector arrays.
	 */
	final public class GraphicsPath implements IGraphicsData, IGraphicsPath {
		
		
		/**
		 * The Vector of drawing commands as integers representing the path. Each
		 * command can be one of the values defined by the GraphicsPathCommand class.
		 */
		public var commands:Vector.<int>;
		
		/**
		 * The Vector of Numbers containing the parameters used with the drawing
		 * commands.
		 */
		public var data:Vector.<Number>;
		
		/**
		 * Specifies the winding rule using a value defined in the
		 * GraphicsPathWinding class.
		 */
		public var winding:String; /* note: currently ignored */
		
		
		/**
		 * Creates a new GraphicsPath object.
		 * 
		 * @param winding Specifies the winding rule using a value defined in the
		 *                GraphicsPathWinding class.
		 */
		public function GraphicsPath (commands:Vector.<int> = null, data:Vector.<Number> = null, winding:String = null) {}
		
		
		public function cubicCurveTo (controlX1:Number, controlY1:Number, controlX2:Number, controlY2:Number, anchorX:Number, anchorY:Number):void {}
		
		/**
		 * Adds a new "curveTo" command to the `commands` vector and new
		 * coordinates to the `data` Vector
		 * 
		 * @param controlX A number that specifies the horizontal position of the
		 *                 control point relative to the registration point of the
		 *                 parent display object.
		 * @param controlY A number that specifies the vertical position of the
		 *                 control point relative to the registration point of the
		 *                 parent display object.
		 * @param anchorX  A number that specifies the horizontal position of the
		 *                 next anchor point relative to the registration point of
		 *                 the parent display object.
		 * @param anchorY  A number that specifies the vertical position of the next
		 *                 anchor point relative to the registration point of the
		 *                 parent display object.
		 */
		public function curveTo (controlX:Number, controlY:Number, anchorX:Number, anchorY:Number):void {}
		
		
		/**
		 * Adds a new "lineTo" command to the `commands` vector and new
		 * coordinates to the `data` Vector
		 * 
		 * @param x The x coordinate of the destination point for the line.
		 * @param y The y coordinate of the destination point for the line.
		 */
		public function lineTo (x:Number, y:Number):void {}
		
		
		/**
		 * Adds a new "moveTo" command to the `commands` vector and new
		 * coordinates to the `data` Vector
		 * 
		 * @param x The x coordinate of the destination point.
		 * @param y The y coordinate of the destination point.
		 */
		public function moveTo (x:Number, y:Number):void {}
		
		
		/**
		 * Adds a new "wideLineTo" command to the `commands` vector and
		 * new coordinates to the `data` Vector
		 * 
		 * @param x The x-coordinate of the destination point for the line.
		 * @param y The y-coordinate of the destination point for the line.
		 */
		public function wideLineTo (x:Number, y:Number):void {}
		
		
		/**
		 * Adds a new "wideMoveTo" command to the `commands` vector and
		 * new coordinates to the `data` Vector
		 * 
		 * @param x The x-coordinate of the destination point.
		 * @param y The y-coordinate of the destination point.
		 */
		public function wideMoveTo (x:Number, y:Number):void {}
		
		
	}
	
	
}