package flare.display
{
    /**
     * A Sprite representing a line. Supports position, color, and width
     * properties.
     */
    public class LineSprite extends DirtySprite
    {
        private var _color:uint = 0xcccccc;
        private var _width:Number = 0;
        private var _x1:Number;
        private var _y1:Number;
        private var _x2:Number;
        private var _y2:Number;
        
        /** The x-coordinate for the first line endpoint. */
        public function get x1():Number  { return _x1; }
        public function set x1(x:Number):void { _x1 = x; dirty(); }
        
        /** The y-coordinate for the first line endpoint. */
        public function get y1():Number  { return _y1; }
        public function set y1(y:Number):void { _y1 = y; dirty(); }
        
        /** The x-coordinate for the second line endpoint. */
        public function get x2():Number  { return _x2; }
        public function set x2(x:Number):void { _x2 = x; dirty(); }

        /** The y-coordinate for the second line endpoint. */        
        public function get y2():Number  { return _y2; }
        public function set y2(y:Number):void { _y2 = y; dirty(); }
        
        /** The color of the line. */
        public function get lineColor():uint  { return _color; }
        public function set lineColor(c:uint):void { _color = c; dirty(); }
        
        /** The width of the line. A value of zero indicates a hairwidth line,
         *  as determined by <code>Graphics.lineStyle</code> */
        public function get lineWidth():Number  { return _width; }
        public function set lineWidth(w:Number):void { _width = w; dirty(); }
        
        public override function render():void
        {
            graphics.clear();
            graphics.lineStyle(_width, _color, 1, true, "none");
            graphics.moveTo(_x1, _y1);
            graphics.lineTo(_x2, _y2);
        }
        
    } // end of class LineSprite
}