    package flare.vis.axis
    {
        import flash.display.Sprite;
        import flare.animate.Transitioner;
        import flare.vis.Visualization;
        import flash.geom.Rectangle;

        /**
         * Base class for representing metric data axes.
         */
        public class Axes extends Sprite
        {
            /** The visualization the axes correspond to. */
            protected var _vis:Visualization;
            /** The layout bounds of the axes. */
            protected var _bounds:Rectangle;

            /** The visualization the axes correspond to. */
            public function get visualization():Visualization { return _vis; }
            public function set visualization(v:Visualization):void { _vis = v; }

            /** The layout bounds of the axes. If this value is not directly set,
             *  the layout bounds of the visualization are provided. */
            public function get layoutBounds():Rectangle {
                if (_bounds != null) return _bounds;
                if (_vis != null) return _vis.bounds;
                return null;
            }
            public function set layoutBounds(b:Rectangle):void { _bounds = b; }

            /**
             * Update these axes, performing filtering and layout as needed.
             * @param trans a Transitioner for collecting value updates
             * @return the input transitioner
             */
            public function update(trans:Transitioner=null):Transitioner
            {
                return trans;
            }

        } // end of class Axes
    }