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 2012/05/03 00:45:08 UTC

svn commit: r1333232 [19/34] - in /incubator/flex/trunk: ./ frameworks/tests/ frameworks/tests/basicTests/ frameworks/tests/basicTests/dmv/ frameworks/tests/basicTests/dmv/scripts/ frameworks/tests/basicTests/dmv/views/ frameworks/tests/basicTests/fxg/...

Added: incubator/flex/trunk/mustella/as3/src/mustella/imageDiff.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/trunk/mustella/as3/src/mustella/imageDiff.mxml?rev=1333232&view=auto
==============================================================================
--- incubator/flex/trunk/mustella/as3/src/mustella/imageDiff.mxml (added)
+++ incubator/flex/trunk/mustella/as3/src/mustella/imageDiff.mxml Wed May  2 22:44:38 2012
@@ -0,0 +1,444 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" initialize="initLC()" width="800" >
+
+	<mx:Script>
+	<![CDATA[
+		import mx.controls.Label;
+		import mx.core.UIComponent;
+
+		private var results:UIComponent;
+		private var contButton:Button;
+
+
+		private var isConnected:Boolean = false;
+
+		private var connection:LocalConnection;
+		private var commandconnection:LocalConnection;
+
+		private var digits:Array = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
+
+		private function initLC():void
+		{
+			for (var i:int = 0; i < 16; i++)
+			{
+				for (var j:int = 0; j < 16; j++)
+				{
+					byteTable[digits[i] + digits[j]] = i * 16 + j;
+				}
+			}
+			percentWidth = 100;
+			percentHeight = 100;
+
+			connection = new LocalConnection();
+			connection.allowDomain("*");
+			connection.client = this;
+
+			commandconnection = new LocalConnection();
+			commandconnection.allowDomain("*");
+			commandconnection.addEventListener(StatusEvent.STATUS, statusHandler);
+
+			connect();
+		}
+
+		private function connect():void
+		{
+			try
+			{
+				connection.connect("_ImageDiffer");
+			}
+			catch (e:Error)
+			{
+				trace("connection failed");
+			}
+		}
+
+		private function statusHandler(event:Event):void
+		{
+			isConnected=true;
+		}
+
+		private var sbd:BitmapData;
+		private var sba:ByteArray;
+		[Bindable] private var scriptName:String = "";
+		[Bindable] private var testName:String = "";
+		// public function startScreenData(w:int, h:int, length:int):void
+		public function startScreenData(w:int, h:int, length:int, name:String, script:String):void
+		{
+			testName=name;
+			scriptName=script;
+			pbhb.visible = true;
+			pb.maximum = length;
+			pb.setProgress(0, length);
+			sba = new ByteArray();
+			sbd = new BitmapData(w, h);
+		}
+		public function addScreenData(s:String):void
+		{
+			toByteArray(sba, s);
+			pb.setProgress(sba.position, pb.maximum);
+		}
+
+		private var bbd:BitmapData;
+		private var bba:ByteArray;
+		public function startBaseData(w:int, h:int, length:int):void
+		{
+			pb.visible = true;
+			pb.maximum = length;
+			pb.setProgress(0, length);
+			bba = new ByteArray();
+			bbd = new BitmapData(w, h);
+		}
+		public function addBaseData(s:String):void
+		{
+			toByteArray(bba, s);
+			pb.setProgress(bba.position, pb.maximum);
+		}
+
+		public function compareBitmaps():void
+		{
+
+			init();
+			pbhb.visible = false;
+			var bm1:Bitmap = new Bitmap();
+			var bm2:Bitmap = new Bitmap();
+			sba.position = 0;
+			bba.position = 0;
+			sbd.setPixels(sbd.rect, sba);
+			bbd.setPixels(bbd.rect, bba);
+			bm1.bitmapData = sbd;
+			bm2.bitmapData = bbd;
+			image1.load(bm1);
+			image2.load(bm2);
+			image1.scaleX = 1;
+			image1.scaleY = 1;
+			image2.scaleX = 1;
+			image2.scaleY = 1;
+			canvas1.width = sbd.width;
+			canvas1.height = sbd.height;
+			canvas2.width = bbd.width;
+			canvas2.height = bbd.height;
+
+			doCompare(true);
+		}
+
+		private var byteTable:Object = new Object();
+
+		private function toByteArray(ba:ByteArray, s:String):void
+		{
+			var arr:Array = s.split(",");
+
+			var n:int = arr.length;
+			for (var i:int = 0; i < n; i++)
+			{
+				var b:String = arr[i];
+				var byte:int = byteTable[b];
+				ba.writeByte(byte);
+			}
+		}
+
+		public function doCompare(cont:Boolean = false):void
+		{
+			
+			var bm1:BitmapData = new BitmapData(image1.content.width, image1.content.height);
+			bm1.draw(image1.content, new Matrix());
+
+			var bm2:BitmapData = new BitmapData(image2.content.width, image2.content.height);
+			bm2.draw(image2.content, new Matrix());
+
+			if (results) {
+				canvas3.removeChild(results);
+			}
+
+			if (contButton) 
+			{ 
+				removeChild(contButton);
+
+			}
+
+			var cmp:Object = bm1.compare(bm2);
+			var label:Label;
+
+			if (cmp == 0)
+			{
+				results = label = new Label();
+				label.text = "Same";
+				label.validateNow();
+				canvas3.addChild(results);
+				canvas3.width = results.width;
+				canvas3.height = results.height;
+				if (cont)
+				{
+					contButton = new Button();
+					contButton.label = "Continue";
+					addChild(contButton);
+					contButton.addEventListener("click", continueHandler);
+				}
+			}
+			else if (cmp == -3)
+			{
+				results = label = new Label();
+				label.text = "Widths are Different: " + image1.content.width + " vs " + image2.content.width;
+				label.validateNow();
+				canvas3.addChild(results);
+				canvas3.width = results.width;
+				canvas3.height = results.height;
+				if (cont)
+				{
+					contButton = new Button();
+					contButton.label = "Continue";
+					addChild(contButton);
+					contButton.addEventListener("click", continueHandler);
+				}
+			}
+			else if (cmp == -4)
+			{
+				results = label = new Label();
+				label.text = "Heights are Different: " + image1.content.height + " vs " + image2.content.height;
+				label.validateNow();
+				canvas3.addChild(results);
+				canvas3.width = results.width;
+				canvas3.height = results.height;
+				if (cont)
+				{
+					contButton = new Button();
+					contButton.label = "Continue";
+					addChild(contButton);
+					contButton.addEventListener("click", continueHandler);
+				}
+			}
+			else
+			{
+				results = new UIComponent();
+				var bm:Bitmap = new Bitmap();
+				results.addChild(bm);
+				bm.bitmapData = BitmapData(cmp);
+				results.width = image1.content.width;
+				results.height = image1.content.height;
+				canvas3.addChild(results);
+				canvas3.width = results.width;
+				canvas3.height = results.height;
+				results.graphics.clear();
+				results.graphics.beginFill(bg.selectedColor);
+				results.graphics.drawRect(0, 0, results.width, results.height);
+				results.graphics.endFill();
+				if (cont)
+				{
+					contButton = new Button();
+					contButton.label = "Continue";
+					addChild(contButton);
+					contButton.addEventListener("click", continueHandler);
+				}
+			}
+
+		}
+
+		private function continueHandler(event:Event):void
+		{
+			if (results)
+			{
+				results.graphics.clear();
+				canvas1.width = 0;
+				canvas1.height = 0;
+				canvas2.width = 0;
+				canvas2.height = 0;
+				canvas3.width = 0;
+				canvas3.height = 0;
+			}
+
+			commandconnection.send("_ImageDifferCommands", "keepGoing");
+		}
+		
+		private function bgChanged():void
+		{
+			if (results)
+			{
+				results.graphics.clear();
+				results.graphics.beginFill(bg.selectedColor);
+				results.graphics.drawRect(0, 0, results.width, results.height);
+				results.graphics.endFill();
+			}
+		}
+
+		private function getPixel(target:UIComponent, x:int, y:int, lbl:Label, bg:UIComponent):void
+		{
+			var pt:Point = new Point(x, y);
+			var screenBits:BitmapData = new BitmapData(target.width, target.height);
+			screenBits.draw(target, new Matrix(1, 0, 0, 1, 0, 0));
+
+			var clr:uint = screenBits.getPixel(pt.x, pt.y);
+			var s:String = clr.toString(16);
+			while (s.length < 6)
+			{
+				s = "0" + s;
+			}
+			lbl.text = s.toUpperCase();
+			bg.graphics.beginFill(clr);
+			bg.graphics.drawRect(0, 0, bg.width, bg.height);
+			bg.graphics.endFill();
+		}
+
+		private function pixelTracking():void
+		{
+			if (cb.selected)
+				systemManager.addEventListener("mouseMove", pixelTracker);
+			else
+				systemManager.removeEventListener("mouseMove", pixelTracker);
+		}
+
+		private function pixelTracker(event:MouseEvent):void
+		{
+			if (image1.contains(event.target as DisplayObject))
+			{
+				updatePixels(image1, event.localX, event.localY, "1");
+			}
+			else if (image2.contains(event.target as DisplayObject))
+			{
+				updatePixels(image2, event.localX, event.localY, "2");
+			}
+			else if (results && results.contains(event.target as DisplayObject))
+			{
+				updatePixels(results, event.localX, event.localY, "3");
+			}
+		}
+
+		private function updatePixels(target:UIComponent, x:Number, y:Number, ui:String):void
+		{
+			var nsx:NumericStepper = this["img" + ui + "x"];
+			var nsy:NumericStepper = this["img" + ui + "y"];
+			nsx.value = x;
+			nsy.value = y;
+			var lbl:Label = this["pixel" + ui];
+			var bg:UIComponent = this["bg" + ui];
+			getPixel(target, x, y, lbl, bg);
+		}
+
+		private function sizeCanvas1():void
+		{
+			image1.scaleX = 1;
+			image1.scaleY = 1;
+			canvas1.width = image1.content.width;
+			canvas1.height = image1.content.height;
+		}
+
+		private function sizeCanvas2():void
+		{
+			image2.scaleX = 1;
+			image2.scaleY = 1;
+			canvas2.width = image2.content.width;
+			canvas2.height = image2.content.height;
+		}
+
+		private function zoomit():void
+		{
+			image1.scaleY = image1.scaleX = zoom.value;
+			image1.validateNow();
+			image2.scaleY = image2.scaleX = zoom.value;
+			image2.validateNow();
+			results.scaleY = results.scaleX = zoom.value;
+			results.validateNow();
+			if (canvas1.width < 100)
+			{
+				canvas1.width = Math.min(image1.width, 100);
+				canvas1.height= Math.min(image1.height, 100);
+				canvas2.width = Math.min(image2.width, 100);
+				canvas2.height= Math.min(image2.height, 100);
+				canvas3.width = Math.min(results.width, 100);
+				canvas3.height= Math.min(results.height, 100);
+			}
+		}
+	]]>
+	</mx:Script>
+
+	<mx:HBox id="pbhb" visible="false">
+		<mx:Label text="receiving data..." />
+		<mx:ProgressBar id="pb" mode="manual" width="400" />		
+	</mx:HBox>
+	<mx:HBox id="testCaseLabel" visible="true">
+		<mx:Label text="{scriptName} {testName}" />
+	</mx:HBox>
+	<mx:HBox>
+		<mx:VBox>
+			<mx:HBox>
+				<mx:Label text="image 1" />
+				<mx:TextInput id="image1Name" />
+				<mx:Button label="load" click="image1.source=image1Name.text" />
+			</mx:HBox>
+		</mx:VBox>
+		<mx:Spacer width="100" />
+		<mx:VBox>
+			<mx:HBox>
+				<mx:Label text="image 2" />
+				<mx:TextInput id="image2Name" />
+				<mx:Button label="load" click="image2.source=image2Name.text" />
+			</mx:HBox>
+		</mx:VBox>
+	</mx:HBox>
+	<mx:Button label="compare" click="compareBitmaps()" />
+	<mx:HBox>
+		<mx:VBox>
+			<mx:Canvas id="canvas1" minHeight="0" minWidth="0" >
+				<mx:Image id="image1" complete="sizeCanvas1()" />
+			</mx:Canvas>
+			<mx:HBox>
+				<mx:Label text="x" />
+				<mx:NumericStepper id="img1x" width="60" maximum="4000" />
+				<mx:Label text="y" />
+				<mx:NumericStepper id="img1y" width="60" maximum="4000" />
+				<mx:Button label="get pixel" click="getPixel(image1, img1x.value, img1y.value, pixel1, bg1)" />
+				<mx:Label id="pixel1" />
+				<mx:UIComponent id="bg1" width="16" height="16" />
+			</mx:HBox>
+		</mx:VBox>
+		<mx:Spacer width="50" />
+		<mx:VBox>
+			<mx:Canvas id="canvas2" minHeight="0" minWidth="0" > 
+				<mx:Image id="image2" complete="sizeCanvas2()" />
+			</mx:Canvas>
+			<mx:HBox>
+				<mx:Label text="x" />
+				<mx:NumericStepper id="img2x" width="60" maximum="4000" />
+				<mx:Label text="y" />
+				<mx:NumericStepper id="img2y" width="60" maximum="4000" />
+				<mx:Button label="get pixel" click="getPixel(image2, img2x.value, img2y.value, pixel2, bg2)" />
+				<mx:Label id="pixel2" />
+				<mx:UIComponent id="bg2" width="16" height="16" />
+			</mx:HBox>
+		</mx:VBox>
+	</mx:HBox>
+	<mx:HBox>
+		<mx:CheckBox id="cb" label="Pixel Reading" click="pixelTracking()" />
+		<mx:Label text="Zoom" />
+		<mx:NumericStepper id="zoom" minimum="1" change="zoomit()" />
+		<mx:Label text="background" />
+		<mx:ColorPicker id="bg" change="bgChanged();" />
+	</mx:HBox>
+	<mx:Canvas id="canvas3" minHeight="0" minWidth="0" />
+	<mx:HBox>
+		<mx:Label text="x" />
+		<mx:NumericStepper id="img3x" width="60" maximum="4000" />
+		<mx:Label text="y" />
+		<mx:NumericStepper id="img3y" width="60" maximum="4000" />
+		<mx:Button label="get pixel" click="getPixel(results, img3x.value, img3y.value, pixel3, bg3)" />
+		<mx:Label id="pixel3" />
+		<mx:UIComponent id="bg3" width="16" height="16" />
+	</mx:HBox>
+
+</mx:Application>

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/imageDiff.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/flex/trunk/mustella/as3/src/mustella/imageDiff.swf
URL: http://svn.apache.org/viewvc/incubator/flex/trunk/mustella/as3/src/mustella/imageDiff.swf?rev=1333232&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/imageDiff.swf
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/flex/trunk/mustella/as3/src/mustella/main.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/trunk/mustella/as3/src/mustella/main.mxml?rev=1333232&view=auto
==============================================================================
--- incubator/flex/trunk/mustella/as3/src/mustella/main.mxml (added)
+++ incubator/flex/trunk/mustella/as3/src/mustella/main.mxml Wed May  2 22:44:38 2012
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" >
+
+	<mx:Script>
+	<![CDATA[
+	]]>
+	</mx:Script>
+		
+	<mx:ComboBox id="cb" />
+
+	<mx:DateField id="df" />
+
+	<mx:Button id="btn" />
+
+	<mx:CreditCardValidator id="ccv" />
+
+</mx:Application>

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/main.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/flex/trunk/mustella/as3/src/mustella/myBitmap.png
URL: http://svn.apache.org/viewvc/incubator/flex/trunk/mustella/as3/src/mustella/myBitmap.png?rev=1333232&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/myBitmap.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/flex/trunk/mustella/as3/src/mustella/myTest4.png
URL: http://svn.apache.org/viewvc/incubator/flex/trunk/mustella/as3/src/mustella/myTest4.png?rev=1333232&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/myTest4.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/flex/trunk/mustella/as3/src/mustella/skins/pauseButtonSkin.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/trunk/mustella/as3/src/mustella/skins/pauseButtonSkin.mxml?rev=1333232&view=auto
==============================================================================
--- incubator/flex/trunk/mustella/as3/src/mustella/skins/pauseButtonSkin.mxml (added)
+++ incubator/flex/trunk/mustella/as3/src/mustella/skins/pauseButtonSkin.mxml Wed May  2 22:44:38 2012
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+
+<!--- The default skin class for the Spark Button component.  
+        
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
+      minWidth="21" minHeight="21"
+      alpha.disabled="0.5" blendMode.disabled="layer">
+
+    <!-- host component -->
+    <fx:Metadata>
+        <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.Button")]
+        ]]>
+    </fx:Metadata>
+    
+    <fx:Script>
+    <![CDATA[         
+        /* Define the skin elements that should not be colorized. 
+           For button, the graphics are colorized but the label is not. */
+        static private const exclusions:Array = ["labelDisplay"];
+                
+        /** 
+         * @copy spark.skins.SparkSkin#colorizeExclusions
+         */     
+        override public function get colorizeExclusions():Array {return exclusions;}
+            
+        [Embed(source="pauseIcon.png")]
+        [Bindable]
+        public var PauseIcon:Class;
+        ]]>        
+    </fx:Script>
+    
+    <!-- states -->
+    <s:states>
+        <s:State name="up" />
+        <s:State name="over" />
+        <s:State name="down" />
+        <s:State name="disabled" />
+    </s:states>
+    
+    <!-- layer 1: shadow -->
+    <s:Rect left="-1" right="-1" top="-1" bottom="-1" radiusX="2" radiusY="2">
+        <s:fill>
+            <s:LinearGradient rotation="90">
+                    <s:GradientEntry color="0x000000" 
+                                   color.down="0xFFFFFF"
+                                   alpha="0.01"
+                                   alpha.down="0" />
+                    <s:GradientEntry color="0x000000" 
+                                   color.down="0xFFFFFF" 
+                                   alpha="0.07"
+                                   alpha.down="0.5" />
+            </s:LinearGradient>
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 2: fill -->
+    <s:Rect left="1" right="1" top="1" bottom="1" radiusX="2" radiusY="2">
+        <s:fill>
+            <s:LinearGradient rotation="90">
+                <s:GradientEntry color="0xFFFFFF" 
+                               color.over="0xBBBDBD" 
+                               color.down="0xAAAAAA" 
+                               alpha="0.85" />
+                <s:GradientEntry color="0xD8D8D8" 
+                               color.over="0x9FA0A1" 
+                               color.down="0x929496" 
+                               alpha="0.85" />
+            </s:LinearGradient>
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 3: fill lowlight -->
+    <s:Rect left="1" right="1" bottom="1" height="9" radiusX="2" radiusY="2">
+        <s:fill>
+            <s:LinearGradient rotation="90">
+                <s:GradientEntry color="0x000000" alpha="0.0099" />
+                <s:GradientEntry color="0x000000" alpha="0.0627" />
+            </s:LinearGradient>
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 4: fill highlight -->
+    <s:Rect left="1" right="1" top="1" height="9" radiusX="2" radiusY="2">
+        <s:fill>
+            <s:SolidColor color="0xFFFFFF" 
+                        alpha="0.33" 
+                        alpha.over="0.22" 
+                        alpha.down="0.12" />
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 5: highlight stroke (all states except down) -->
+    <s:Rect left="1" right="1" top="1" bottom="1" radiusX="2" radiusY="2" excludeFrom="down">
+        <s:stroke>
+            <s:LinearGradientStroke rotation="90" weight="1">
+                <s:GradientEntry color="0xFFFFFF" alpha.over="0.22" />
+                <s:GradientEntry color="0xD8D8D8" alpha.over="0.22" />
+            </s:LinearGradientStroke>
+        </s:stroke>
+    </s:Rect>
+    
+    <!-- layer 6: highlight stroke (down state only) -->
+    <s:Rect left="1" top="1" bottom="1" width="1" includeIn="down">
+        <s:fill>
+            <s:SolidColor color="0x000000" alpha="0.07" />
+        </s:fill>
+    </s:Rect>
+    <s:Rect right="1" top="1" bottom="1" width="1" includeIn="down">
+        <s:fill>
+            <s:SolidColor color="0x000000" alpha="0.07" />
+        </s:fill>
+    </s:Rect>
+    <s:Rect left="2" top="1" right="2" height="1" includeIn="down">
+        <s:fill>
+            <s:SolidColor color="0x000000" alpha="0.25" />
+        </s:fill>
+    </s:Rect>
+    <s:Rect left="1" top="2" right="1" height="1" includeIn="down">
+        <s:fill>
+            <s:SolidColor color="0x000000" alpha="0.09" />
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 7: border - put on top of the fill so it doesn't disappear when scale is less than 1 -->
+    <s:Rect left="0" right="0" top="0" bottom="0" width="69" height="20" radiusX="2" radiusY="2">
+        <s:stroke>
+            <s:LinearGradientStroke rotation="90" weight="1">
+                <s:GradientEntry color="0x000000" 
+                               alpha="0.5625"
+                               alpha.down="0.6375" />
+                <s:GradientEntry color="0x000000" 
+                               alpha="0.75" 
+                               alpha.down="0.85" />
+            </s:LinearGradientStroke>
+        </s:stroke>
+    </s:Rect>
+
+    <!-- layer 8: text -->
+    <!--- 
+        @copy spark.components.supportClasses.ButtonBase#labelDisplay
+    -->
+    <s:Group>
+        <s:BitmapImage source="{PauseIcon}" x="3" y="1" />
+        <s:Label x="28" y="5" id="labelDisplay"
+                 textAlign="center">
+        </s:Label>
+    </s:Group>    
+</s:SparkSkin>

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/skins/pauseButtonSkin.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/flex/trunk/mustella/as3/src/mustella/skins/pauseIcon.png
URL: http://svn.apache.org/viewvc/incubator/flex/trunk/mustella/as3/src/mustella/skins/pauseIcon.png?rev=1333232&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/skins/pauseIcon.png
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/skins/pauseIcon.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/flex/trunk/mustella/as3/src/mustella/skins/playButtonSkin.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/trunk/mustella/as3/src/mustella/skins/playButtonSkin.mxml?rev=1333232&view=auto
==============================================================================
--- incubator/flex/trunk/mustella/as3/src/mustella/skins/playButtonSkin.mxml (added)
+++ incubator/flex/trunk/mustella/as3/src/mustella/skins/playButtonSkin.mxml Wed May  2 22:44:38 2012
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+
+<!--- The default skin class for the Spark Button component.  
+        
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
+      minWidth="21" minHeight="21"
+      alpha.disabled="0.5" blendMode.disabled="layer">
+
+    <!-- host component -->
+    <fx:Metadata>
+        <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.Button")]
+        ]]>
+    </fx:Metadata>
+    
+    <fx:Script>
+    <![CDATA[         
+        /* Define the skin elements that should not be colorized. 
+           For button, the graphics are colorized but the label is not. */
+        static private const exclusions:Array = ["labelDisplay"];
+                
+        /** 
+         * @copy spark.skins.SparkSkin#colorizeExclusions
+         */     
+        override public function get colorizeExclusions():Array {return exclusions;}
+            
+        [Embed(source="playIcon.png")]
+        [Bindable]
+        public var PlayIcon:Class;
+        ]]>        
+    </fx:Script>
+    
+    <!-- states -->
+    <s:states>
+        <s:State name="up" />
+        <s:State name="over" />
+        <s:State name="down" />
+        <s:State name="disabled" />
+    </s:states>
+    
+    <!-- layer 1: shadow -->
+    <s:Rect left="-1" right="-1" top="-1" bottom="-1" radiusX="2" radiusY="2">
+        <s:fill>
+            <s:LinearGradient rotation="90">
+                    <s:GradientEntry color="0x000000" 
+                                   color.down="0xFFFFFF"
+                                   alpha="0.01"
+                                   alpha.down="0" />
+                    <s:GradientEntry color="0x000000" 
+                                   color.down="0xFFFFFF" 
+                                   alpha="0.07"
+                                   alpha.down="0.5" />
+            </s:LinearGradient>
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 2: fill -->
+    <s:Rect left="1" right="1" top="1" bottom="1" radiusX="2" radiusY="2">
+        <s:fill>
+            <s:LinearGradient rotation="90">
+                <s:GradientEntry color="0xFFFFFF" 
+                               color.over="0xBBBDBD" 
+                               color.down="0xAAAAAA" 
+                               alpha="0.85" />
+                <s:GradientEntry color="0xD8D8D8" 
+                               color.over="0x9FA0A1" 
+                               color.down="0x929496" 
+                               alpha="0.85" />
+            </s:LinearGradient>
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 3: fill lowlight -->
+    <s:Rect left="1" right="1" bottom="1" height="9" radiusX="2" radiusY="2">
+        <s:fill>
+            <s:LinearGradient rotation="90">
+                <s:GradientEntry color="0x000000" alpha="0.0099" />
+                <s:GradientEntry color="0x000000" alpha="0.0627" />
+            </s:LinearGradient>
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 4: fill highlight -->
+    <s:Rect left="1" right="1" top="1" height="9" radiusX="2" radiusY="2">
+        <s:fill>
+            <s:SolidColor color="0xFFFFFF" 
+                        alpha="0.33" 
+                        alpha.over="0.22" 
+                        alpha.down="0.12" />
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 5: highlight stroke (all states except down) -->
+    <s:Rect left="1" right="1" top="1" bottom="1" radiusX="2" radiusY="2" excludeFrom="down">
+        <s:stroke>
+            <s:LinearGradientStroke rotation="90" weight="1">
+                <s:GradientEntry color="0xFFFFFF" alpha.over="0.22" />
+                <s:GradientEntry color="0xD8D8D8" alpha.over="0.22" />
+            </s:LinearGradientStroke>
+        </s:stroke>
+    </s:Rect>
+    
+    <!-- layer 6: highlight stroke (down state only) -->
+    <s:Rect left="1" top="1" bottom="1" width="1" includeIn="down">
+        <s:fill>
+            <s:SolidColor color="0x000000" alpha="0.07" />
+        </s:fill>
+    </s:Rect>
+    <s:Rect right="1" top="1" bottom="1" width="1" includeIn="down">
+        <s:fill>
+            <s:SolidColor color="0x000000" alpha="0.07" />
+        </s:fill>
+    </s:Rect>
+    <s:Rect left="2" top="1" right="2" height="1" includeIn="down">
+        <s:fill>
+            <s:SolidColor color="0x000000" alpha="0.25" />
+        </s:fill>
+    </s:Rect>
+    <s:Rect left="1" top="2" right="1" height="1" includeIn="down">
+        <s:fill>
+            <s:SolidColor color="0x000000" alpha="0.09" />
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 7: border - put on top of the fill so it doesn't disappear when scale is less than 1 -->
+    <s:Rect left="0" right="0" top="0" bottom="0" width="69" height="20" radiusX="2" radiusY="2">
+        <s:stroke>
+            <s:LinearGradientStroke rotation="90" weight="1">
+                <s:GradientEntry color="0x000000" 
+                               alpha="0.5625"
+                               alpha.down="0.6375" />
+                <s:GradientEntry color="0x000000" 
+                               alpha="0.75" 
+                               alpha.down="0.85" />
+            </s:LinearGradientStroke>
+        </s:stroke>
+    </s:Rect>
+
+    <!-- layer 8: text -->
+    <!--- 
+        @copy spark.components.supportClasses.ButtonBase#labelDisplay
+    -->
+    <s:Group>
+        <s:BitmapImage source="{PlayIcon}" x="10" y="2" />
+        <s:Label x="35" y="6" id="labelDisplay"
+                 textAlign="center">
+        </s:Label>
+    </s:Group>    
+</s:SparkSkin>
+

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/skins/playButtonSkin.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/flex/trunk/mustella/as3/src/mustella/skins/playIcon.png
URL: http://svn.apache.org/viewvc/incubator/flex/trunk/mustella/as3/src/mustella/skins/playIcon.png?rev=1333232&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/skins/playIcon.png
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/skins/playIcon.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/flex/trunk/mustella/as3/src/mustella/skins/stepButtonSkin.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/trunk/mustella/as3/src/mustella/skins/stepButtonSkin.mxml?rev=1333232&view=auto
==============================================================================
--- incubator/flex/trunk/mustella/as3/src/mustella/skins/stepButtonSkin.mxml (added)
+++ incubator/flex/trunk/mustella/as3/src/mustella/skins/stepButtonSkin.mxml Wed May  2 22:44:38 2012
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+
+<!--- The default skin class for the Spark Button component.  
+        
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
+      minWidth="21" minHeight="21"
+      alpha.disabled="0.5" blendMode.disabled="layer">
+
+    <!-- host component -->
+    <fx:Metadata>
+        <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.Button")]
+        ]]>
+    </fx:Metadata>
+    
+    <fx:Script>
+    <![CDATA[         
+        /* Define the skin elements that should not be colorized. 
+           For button, the graphics are colorized but the label is not. */
+        static private const exclusions:Array = ["labelDisplay"];
+                
+        /** 
+         * @copy spark.skins.SparkSkin#colorizeExclusions
+         */     
+        override public function get colorizeExclusions():Array {return exclusions;}
+            
+        [Embed(source="stepIcon.png")]
+        [Bindable]
+        public var StepIcon:Class;
+        ]]>        
+    </fx:Script>
+    
+    <!-- states -->
+    <s:states>
+        <s:State name="up" />
+        <s:State name="over" />
+        <s:State name="down" />
+        <s:State name="disabled" />
+    </s:states>
+    
+    <!-- layer 1: shadow -->
+    <s:Rect left="-1" right="-1" top="-1" bottom="-1" radiusX="2" radiusY="2">
+        <s:fill>
+            <s:LinearGradient rotation="90">
+                    <s:GradientEntry color="0x000000" 
+                                   color.down="0xFFFFFF"
+                                   alpha="0.01"
+                                   alpha.down="0" />
+                    <s:GradientEntry color="0x000000" 
+                                   color.down="0xFFFFFF" 
+                                   alpha="0.07"
+                                   alpha.down="0.5" />
+            </s:LinearGradient>
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 2: fill -->
+    <s:Rect left="1" right="1" top="1" bottom="1" radiusX="2" radiusY="2">
+        <s:fill>
+            <s:LinearGradient rotation="90">
+                <s:GradientEntry color="0xFFFFFF" 
+                               color.over="0xBBBDBD" 
+                               color.down="0xAAAAAA" 
+                               alpha="0.85" />
+                <s:GradientEntry color="0xD8D8D8" 
+                               color.over="0x9FA0A1" 
+                               color.down="0x929496" 
+                               alpha="0.85" />
+            </s:LinearGradient>
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 3: fill lowlight -->
+    <s:Rect left="1" right="1" bottom="1" height="9" radiusX="2" radiusY="2">
+        <s:fill>
+            <s:LinearGradient rotation="90">
+                <s:GradientEntry color="0x000000" alpha="0.0099" />
+                <s:GradientEntry color="0x000000" alpha="0.0627" />
+            </s:LinearGradient>
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 4: fill highlight -->
+    <s:Rect left="1" right="1" top="1" height="9" radiusX="2" radiusY="2">
+        <s:fill>
+            <s:SolidColor color="0xFFFFFF" 
+                        alpha="0.33" 
+                        alpha.over="0.22" 
+                        alpha.down="0.12" />
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 5: highlight stroke (all states except down) -->
+    <s:Rect left="1" right="1" top="1" bottom="1" radiusX="2" radiusY="2" excludeFrom="down">
+        <s:stroke>
+            <s:LinearGradientStroke rotation="90" weight="1">
+                <s:GradientEntry color="0xFFFFFF" alpha.over="0.22" />
+                <s:GradientEntry color="0xD8D8D8" alpha.over="0.22" />
+            </s:LinearGradientStroke>
+        </s:stroke>
+    </s:Rect>
+    
+    <!-- layer 6: highlight stroke (down state only) -->
+    <s:Rect left="1" top="1" bottom="1" width="1" includeIn="down">
+        <s:fill>
+            <s:SolidColor color="0x000000" alpha="0.07" />
+        </s:fill>
+    </s:Rect>
+    <s:Rect right="1" top="1" bottom="1" width="1" includeIn="down">
+        <s:fill>
+            <s:SolidColor color="0x000000" alpha="0.07" />
+        </s:fill>
+    </s:Rect>
+    <s:Rect left="2" top="1" right="2" height="1" includeIn="down">
+        <s:fill>
+            <s:SolidColor color="0x000000" alpha="0.25" />
+        </s:fill>
+    </s:Rect>
+    <s:Rect left="1" top="2" right="1" height="1" includeIn="down">
+        <s:fill>
+            <s:SolidColor color="0x000000" alpha="0.09" />
+        </s:fill>
+    </s:Rect>
+    
+    <!-- layer 7: border - put on top of the fill so it doesn't disappear when scale is less than 1 -->
+    <s:Rect left="0" right="0" top="0" bottom="0" width="69" height="20" radiusX="2" radiusY="2">
+        <s:stroke>
+            <s:LinearGradientStroke rotation="90" weight="1">
+                <s:GradientEntry color="0x000000" 
+                               alpha="0.5625"
+                               alpha.down="0.6375" />
+                <s:GradientEntry color="0x000000" 
+                               alpha="0.75" 
+                               alpha.down="0.85" />
+            </s:LinearGradientStroke>
+        </s:stroke>
+    </s:Rect>
+
+    <!-- layer 8: text -->
+    <!--- 
+        @copy spark.components.supportClasses.ButtonBase#labelDisplay
+    -->
+    <s:Group>
+        <s:BitmapImage source="{StepIcon}" x="10" y="2" />
+        <s:Label x="35" y="6" id="labelDisplay"
+                 textAlign="center">
+        </s:Label>
+    </s:Group>    
+</s:SparkSkin>
+

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/skins/stepButtonSkin.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/flex/trunk/mustella/as3/src/mustella/skins/stepIcon.png
URL: http://svn.apache.org/viewvc/incubator/flex/trunk/mustella/as3/src/mustella/skins/stepIcon.png?rev=1333232&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/skins/stepIcon.png
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/flex/trunk/mustella/as3/src/mustella/skins/stepIcon.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream