classes

ResizeMath.as

Stiahnuť ResizeMath.as

package sk.yoz.math
{
    import flash.geom.Point;
    
    public class ResizeMath extends Object
    {
        public static const METHOD_PAN_AND_SCAN:String = "panAndScan";
        public static const METHOD_LETTERBOX:String = "letterbox";
        public static const METHOD_RAW:String = "raw";
        
        public function ResizeMath()
        {
        }
        
        public static function fixMethod(method:String):String
        {
            return (method == METHOD_PAN_AND_SCAN || method == METHOD_LETTERBOX)
                ? method : METHOD_RAW;
        }
        
        public static function newDimensions(origDimensions:Point, 
            containerDimensions:Point, method:String, 
            allowEnlarging:Boolean = true):Point
        {
            var s:Point = scale(origDimensions, containerDimensions, method, allowEnlarging);
            return new Point(s.x * origDimensions.x, s.y * origDimensions.y);
        }
        
        public static function scale(origDimensions:Point, 
            containerDimensions:Point, method:String, 
            allowEnlarging:Boolean = true):Point
        {
            var sw:Number = containerDimensions.x / origDimensions.x;
            var sh:Number = containerDimensions.y / origDimensions.y;
            var sx:Number = sw; 
            var sy:Number = sh;
            if(method == METHOD_PAN_AND_SCAN)
                sx = sy = Math.max(sw, sh);
            else if(method == METHOD_LETTERBOX)
                sx = sy = Math.min(sw, sh);
            return new Point((sx > 1 && !allowEnlarging) ? 1 : sx, 
                (sy > 1 && !allowEnlarging) ? 1 : sy);
        }
    }
}