home *** CD-ROM | disk | FTP | other *** search
- package qs.controls
- {
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.geom.Point;
- import flash.geom.Rectangle;
- import flash.text.TextLineMetrics;
- import mx.core.IDataRenderer;
- import mx.core.UIComponent;
- import mx.core.UITextField;
-
- public class CachedLabel extends UIComponent implements IDataRenderer
- {
- private static var xUnit:Point = new Point(1,0);
-
- private static var origin:Point = new Point(0,0);
-
- private var _cachePolicy:String = "auto";
-
- private var _data:Object;
-
- private var _text:String = "";
-
- private var _bitmap:Bitmap;
-
- private var _label:UITextField;
-
- private var _capturedText:BitmapData;
-
- public function CachedLabel()
- {
- super();
- }
-
- public function set data(param1:Object) : void
- {
- if(param1 == this._data)
- {
- return;
- }
- this._data = param1;
- this._text = String(param1);
- if(this._label != null)
- {
- this._label.text = this._text == null ? "" : this._text;
- }
- this.invalidateSize();
- invalidateDisplayList();
- }
-
- override protected function createChildren() : void
- {
- super.createChildren();
- this._label = new UITextField();
- this._label.multiline = true;
- this._label.selectable = false;
- this._label.autoSize = "left";
- this._label.text = this._text;
- this._label.backgroundColor = 6720395;
- addChild(this._label);
- }
-
- public function get data() : Object
- {
- return this._data;
- }
-
- override public function invalidateSize() : void
- {
- super.invalidateSize();
- }
-
- public function set useCache(param1:String) : void
- {
- this._cachePolicy = param1;
- invalidateDisplayList();
- }
-
- override protected function updateDisplayList(param1:Number, param2:Number) : void
- {
- var _loc3_:Point = null;
- var _loc4_:Point = null;
- this._label.validateNow();
- this._label.setActualSize(param1,param2);
- var _loc5_:Boolean = true;
- switch(this._cachePolicy)
- {
- case "off":
- _loc5_ = true;
- break;
- case "on":
- _loc5_ = false;
- break;
- case "auto":
- if(this._label.embedFonts == false && param1 > 0 && param2 > 0)
- {
- _loc3_ = globalToLocal(xUnit);
- _loc4_ = globalToLocal(origin);
- _loc5_ = _loc3_.x - _loc4_.x == 1 && _loc3_.y - _loc4_.y == 0;
- }
- }
- if(param2 <= 1 || param1 <= 1)
- {
- _loc5_ = true;
- }
- if(_loc5_)
- {
- if(this._bitmap != null)
- {
- removeChild(this._bitmap);
- this._bitmap = null;
- }
- this._label.visible = true;
- }
- else
- {
- this._label.visible = false;
- if(this._capturedText == null || this._capturedText.width != param1 || this._capturedText.height != param2)
- {
- this._capturedText = new BitmapData(param1,param2);
- if(this._bitmap != null)
- {
- removeChild(this._bitmap);
- this._bitmap = null;
- }
- }
- if(this._bitmap == null)
- {
- this._bitmap = new Bitmap(this._capturedText);
- this._bitmap.smoothing = true;
- addChild(this._bitmap);
- }
- this._capturedText.fillRect(new Rectangle(0,0,param1,param2),0);
- this._capturedText.draw(this._label);
- }
- }
-
- public function get useCache() : String
- {
- return this._cachePolicy;
- }
-
- override protected function measure() : void
- {
- var _loc1_:TextLineMetrics = null;
- this._label.validateNow();
- if(this._label.embedFonts)
- {
- measuredWidth = this._label.measuredWidth + 6;
- measuredHeight = this._label.measuredHeight + 4;
- }
- else
- {
- _loc1_ = measureText(this._text);
- measuredWidth = _loc1_.width + 6;
- measuredHeight = _loc1_.height + 4;
- }
- }
- }
- }
-
-