    package flare.scale
    {
        import flare.util.Maths;
        import flare.util.Strings;

        /**
         * Scale that spaces values linearly along the scale range. This is the
         * default scale for numeric types.
         */
        public class LinearScale extends QuantitativeScale
        {
            /**
             * Creates a new LinearScale.
             * @param min the minimum data value
             * @param max the maximum data value
             * @param base the number base to use
             * @param flush the flush flag for scale padding
             * @param labelFormat the formatting pattern for value labels
             */
            public function LinearScale(min:Number=0, max:Number=0, base:Number=10,
                flush:Boolean=false, labelFormat:String=Strings.DEFAULT_NUMBER)
            {
                super(min, max, base, flush, labelFormat);
            }

            /** @inheritDoc */
            public override function get scaleType():String {
                return ScaleType.LINEAR;
            }

            /** @inheritDoc */
            public override function clone():Scale {
                return new LinearScale(_dmin, _dmax, _base, _flush, _format);
            }

            /** @inheritDoc */
            protected override function interp(val:Number):Number {
                return Maths.invLinearInterp(val, _smin, _smax);
            }

            /** @inheritDoc */
            public override function lookup(f:Number):Object {
                return Maths.linearInterp(f, _smin, _smax);
            }

        } // end of class LinearScale
    }