package starling.display {
import starling.geom.Polygon;
import openfl.geom.Point;
import openfl.Vector;
/**
 *  A display object supporting basic vector drawing functionality. In its current state,
 *  *  the main use of this class is to provide a range of forms that can be used as masks.
 *  
 * @externs
 */
public class Canvas extends starling.display.DisplayObjectContainer {
	/**
	 *  Creates a new (empty) Canvas. Call one or more of the 'draw' methods to add content. 
	 */
	public function Canvas() {
		super();
	}
	/**
	 *  @inheritDoc 
	 */
	override public function dispose():void {}
	/**
	 *  @inheritDoc 
	 */
	override public function hitTest(localPoint:openfl.geom.Point):starling.display.DisplayObject { return null; }
	/**
	 *  Draws a circle.
	 * 	 *
	 * 	 * @param x         x-coordinate of center point
	 * 	 * @param y         y-coordinate of center point
	 * 	 * @param radius    radius of circle
	 * 	 * @param numSides  the number of lines used to draw the circle.
	 * 	 *                  If you don't pass anything, Starling will pick a reasonable value.
	 * 	 
	 */
	public function drawCircle(x:Number, y:Number, radius:Number, numSides:int = undefined):void {}
	/**
	 *  Draws an ellipse.
	 * 	 *
	 * 	 * @param x         x-coordinate of bounding box
	 * 	 * @param y         y-coordinate of bounding box
	 * 	 * @param width     width of the ellipse
	 * 	 * @param height    height of the ellipse
	 * 	 * @param numSides  the number of lines used to draw the ellipse.
	 * 	 *                  If you don't pass anything, Starling will pick a reasonable value.
	 * 	 
	 */
	public function drawEllipse(x:Number, y:Number, width:Number, height:Number, numSides:int = undefined):void {}
	/**
	 *  Draws a rectangle. 
	 */
	public function drawRectangle(x:Number, y:Number, width:Number, height:Number):void {}
	public function drawRoundRectangle(x:Number, y:Number, width:Number, height:Number, ellipseWidth:Number, ellipseHeight:Object = undefined):void {}
	/**
	 *  Specifies a simple one-color fill that subsequent calls to drawing methods
	 *      * (such as <code>drawCircle()</code>) will use. 
	 */
	public function beginFill(color:int = undefined, alpha:Number = undefined):void {}
	/**
	 *  Resets the color to 'white' and alpha to '1'. 
	 */
	public function endFill():void {}
	/**
	 *  Moves the current drawing position to (x, y).
	 *      *
	 *      * @param x         A Float that indicates the horizontal position relative to the registration point of the parent display object (in pixels).
	 *      * @param y         A Float that indicates the vertical position relative to the registration point of the parent display object (in pixels).
	 *      
	 */
	public function moveTo(x:Number, y:Number):void {}
	/**
	 *  Draws a line using the current line style from the current drawing position to (x, y); the current drawing position is then set to (x, y).
	 *      *
	 *      * @param x         A Float that indicates the horizontal position relative to the registration point of the parent display object (in pixels).
	 *      * @param y         A Float that indicates the vertical position relative to the registration point of the parent display object (in pixels).
	 *      
	 */
	public function lineTo(x:Number, y:Number):void {}
	/**
	 *   Draws a quadratic Bezier curve using the current line style from the current drawing position to (anchorX, anchorY) and using the control point that (controlX, controlY) specifies.
	 *      *
	 *      * @param controlX        A Float that specifies the horizontal position of the control point relative to the registration point of the parent display object.
	 *      * @param controlY        A Float that specifies the vertical position of the control point relative to the registration point of the parent display object.
	 *      * @param anchorX         A Float that specifies the horizontal position of the next anchor point relative to the registration point of the parent display object.
	 *      * @param anchorY         A Float 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 {}
	/**
	 *   Submits a series of IGraphicsData instances for drawing. 
	 *      *
	 *      * @param graphicsData      A Vector containing graphics objects, each of which much implement the flash.display.IGraphicsData interface.
	 *      
	 */
	public function drawGraphicsData(graphicsData:openfl.Vector):void {}
	/**
	 *  Removes all existing vertices. 
	 */
	public function clear():void {}
	/**
	 *  Draws an arbitrary polygon. 
	 */
	public function drawPolygon(polygon:starling.geom.Polygon):void {}
}
}
