/*
Copyright (c) 2009 Yahoo! Inc. All rights reserved.
The copyrights embodied in the content of this file are licensed under the BSD (revised) open source license
*/
package com.yahoo.astra.utils
{
import com.yahoo.astra.display.BitmapText;
import flash.display.Sprite;
import flash.text.*;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.PixelSnapping;
/**
* Used to measure dimensions for BitmapText objects.
*
* @author Tripp Bridges
*/
public class AxisLabelUtil
{
/**
* Returns the potential width of a string when rendered in a text field. Takes into account
* the TextFormat
settings and the rotation.
*
* @param textValue The string that will be used.
* @param tf The TextFormat object that will be applied.
* @param rotation The rotation that will be applied
*
*/
public static function getTextWidth(textValue:String, tf:TextFormat, rotation:Number = 0):Number
{
rotation = Math.max(-90, Math.min(rotation, 90));
var textField:BitmapText = new BitmapText();
textField.selectable = false;
textField.autoSize = rotation < 0 ? TextFieldAutoSize.RIGHT : TextFieldAutoSize.LEFT;
if(tf != null) textField.defaultTextFormat = tf;
textField.text = textValue;
textField.rotation = rotation;
return textField.width;
}
/**
* Returns the potential height of a string when rendered in a text field. Takes into account
* the TextFormat
settings and the rotation.
*
* @param textValue The string that will be used.
* @param tf The TextFormat object that will be applied.
* @param rotation The rotation that will be applied
*/
public static function getTextHeight(textValue:String, tf:TextFormat, rotation:Number = 0):Number
{
rotation = Math.max(-90, Math.min(rotation, 90));
var textField:BitmapText = new BitmapText();
textField.selectable = false;
textField.autoSize = rotation < 0 ? TextFieldAutoSize.RIGHT : TextFieldAutoSize.LEFT;
if(tf != null) textField.defaultTextFormat = tf;
textField.text = textValue;
textField.rotation = rotation;
return textField.height;
}
/**
* Returns the dimensions of a text field if rotated.
*
* @param textField The text field to be used
* @param rotation The rotation to be applied
*/
public static function getBitmapTextSize(textField:TextField, rotation:Number):Object
{
var spr:Sprite = new Sprite();
var bitmapDataText:BitmapData = new BitmapData(textField.width, textField.height, true, 0);
bitmapDataText.draw(textField);
var bm:Bitmap = new Bitmap(bitmapDataText, PixelSnapping.AUTO, true);
spr.addChild(bm);
spr.rotation = rotation;
return {width:spr.width, height:spr.height};
}
}
}