You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2013/01/23 20:47:46 UTC

svn commit: r1437660 - /flex/sdk/branches/develop/mustella/as3/src/mustella/CompareBitmap.as

Author: aharui
Date: Wed Jan 23 19:47:46 2013
New Revision: 1437660

URL: http://svn.apache.org/viewvc?rev=1437660&view=rev
Log:
Try to embed fonts in stage text emulator

Modified:
    flex/sdk/branches/develop/mustella/as3/src/mustella/CompareBitmap.as

Modified: flex/sdk/branches/develop/mustella/as3/src/mustella/CompareBitmap.as
URL: http://svn.apache.org/viewvc/flex/sdk/branches/develop/mustella/as3/src/mustella/CompareBitmap.as?rev=1437660&r1=1437659&r2=1437660&view=diff
==============================================================================
--- flex/sdk/branches/develop/mustella/as3/src/mustella/CompareBitmap.as (original)
+++ flex/sdk/branches/develop/mustella/as3/src/mustella/CompareBitmap.as Wed Jan 23 19:47:46 2013
@@ -35,6 +35,7 @@ import flash.net.LocalConnection;
 import flash.net.URLLoader;
 import flash.net.URLRequest;
 import flash.text.TextField;
+import flash.text.TextFormat;
 import flash.text.engine.ContentElement;
 import flash.text.engine.TextBlock;
 import flash.text.engine.TextLine;
@@ -44,6 +45,7 @@ import flash.utils.getQualifiedClassName
 import mx.core.IChildList;
 import mx.core.IRawChildrenContainer;
 import mx.core.mx_internal;
+
 use namespace mx_internal;
 
 /**
@@ -280,6 +282,9 @@ public class CompareBitmap extends Asser
 			return true;
 		}
 
+		if (stageText)
+			updateStageTexts(actualTarget);
+		
 		this.root = root;
 		this.context = context;
 		this.testResult = testResult;
@@ -306,6 +311,54 @@ public class CompareBitmap extends Asser
 
 	}
 
+	// there are a few mobile tests that use StageText in the bitmaps
+	// which are TextFields in the emulator.  This makes them use
+	// embedded fonts to get consistency across platforms.
+	private function updateStageTexts(target:DisplayObject):void
+	{
+		var doc:DisplayObjectContainer = target as DisplayObjectContainer;
+		var tf:Object;
+		tf = findTextWidget(doc);
+		if (tf)
+		{
+			var n:int = target.stage.numChildren;
+			for (var i:int = 0; i < n; i++)
+			{
+				var stf:TextField = target.stage.getChildAt(i) as TextField;
+				if (stf)
+				{
+					var stfm:TextFormat = new TextFormat(tf.getStyle("fontFamily"),
+															tf.getStyle("fontSize"),
+															tf.getStyle("color"),
+															tf.getStyle("fontWeight") == "bold",
+															tf.getStyle("fontStyle") == "italic"
+															);
+					stf.defaultTextFormat = stfm;
+					stf.embedFonts = true;
+				}
+			}
+		}
+	}
+	
+	private function findTextWidget(doc:DisplayObjectContainer):Object
+	{
+		if (!doc) return null;
+		var n:int = doc.numChildren;
+		for (var i:int = 0; i < n; i++)
+		{
+			var child:DisplayObject = doc.getChildAt(i);
+			var className:String = getQualifiedClassName(child);
+			if (className.indexOf("StyleableStageText") > -1)
+				return child;
+			else if (child is DisplayObjectContainer)
+			{
+				var tf:Object = findTextWidget(child as DisplayObjectContainer);
+				if (tf) return tf;
+			}
+		}
+		return null;
+	}
+	
 	private function getTargetSize(target:DisplayObject):Point
 	{
 		var width:Number;