Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1278095 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/accessibility/SpinnerAccImpl.as
+++ frameworks/projects/spark/src/spark/accessibility/SpinnerAccImpl.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 Adobe Systems Incorporated
-//  All Rights Reserved.
+//  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
 //
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//      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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Tweaked a method name to be further from alphabetical order.

--- as3/test/asunit4/support/OrderedTestMethodTest.as
+++ as3/test/asunit4/support/OrderedTestMethodTest.as
@@ -22,7 +22,7 @@
 		}

 		[Test]
-		public function orderZeroByDefault():void {
+		public function zeroIsDefaultOrder():void {
 			methodsCalled.push(arguments.callee);
 		}


Fixed parameter reading on Windows.
(We are parsing a URL, and even though it represents a file, it's still
a URL, so it uses the standard slash and not the microsoft slash.)
This will make SDK testing work on Windows.
We suck a lot for not fixing this sooner, but
- I didn't have Windows set up for development.
- It was broken for so long, we deprioritized and then sorta forgot about it.
This has been broken for over 5 months, when I last touched this file
to make it work on Macs.

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@5506 542714f4-19e9-0310-aa3c-eee0fc999fb1

--- src/as/com/threerings/util/ParameterUtil.as
+++ src/as/com/threerings/util/ParameterUtil.as
@@ -92,9 +92,7 @@
         }
         // else, let's try loading parameters.xml

-        // assume only windows uses the wrong slash
-        var fileSep :String = (-1 != Capabilities.os.indexOf("Windows")) ? "\\" : "/";
-        var dex :int = url.lastIndexOf(fileSep);
+        var dex :int = url.lastIndexOf("/");
         var paramUrl :String;
         if (dex == -1) {
             paramUrl = "file:";


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1265239 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutViewNavigatorSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutViewNavigatorSkin.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2011 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package spark.skins.mobile
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 13018
Author:   gosmith@adobe.com
Date:     2009-12-17T00:37:19.400451Z

Log Message:
-----------
Committed a change to SkinnableTextBase for Jon Avila, pushing the accessibility properties and tabIndex set on the SkinnableTextBase down into the RichEditableText in its skin.

QE notes: None
Doc notes: None
Bugs: None
Reviewer: Gordon
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1282848 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as
@@ -11,10 +11,13 @@

 package spark.components.supportClasses
 {
-
+
+import flash.accessibility.Accessibility;
+import flash.accessibility.AccessibilityProperties;
 import flash.display.DisplayObject;
 import flash.events.Event;
 import flash.events.FocusEvent;
+import flash.system.Capabilities;

 import flashx.textLayout.elements.TextFlow;
 import flashx.textLayout.events.SelectionEvent;
@@ -306,8 +309,152 @@
     //  Overridden properties: UIComponent
     //
     //--------------------------------------------------------------------------
-
-    //----------------------------------
+
+	/*
+
+	Note:
+
+	SkinnableTextBase does not have an accessibilityImplementation
+	because, if it does, the Flash Player doesn't support text-selection
+	accessibility. The selectionAnchorIndex and selectionActiveIndex
+	getters of the acc impl don't get called, probably because Player 10.1
+	doesn't like the fact that stage.focus is the texDisplay:RichEditableText
+	part instead of the SinnableTextBase component (i.e., the TextInput
+	or TextArea).
+
+	Instead, we rely on the RichEditableTextAccImpl of the textDisplay
+	to provide accessibility.
+
+	However, developers expect to be able to control accessibility by setting
+	accessibilityProperties, accessibilityName, accessibilityDescription,
+	tabIndex, etc. on the component itself.
+
+	In order to make these settings usable by RichEditableTextAccImpl,
+	we push them down into the accessibilityProperties of the RichEditableText,
+	using the invalidateProperties() / commitProperties() pattern.
+
+	*/
+
+	//----------------------------------
+	//  accessibilityEnabled
+	//----------------------------------
+
+	/**
+	 *  @private
+	 */
+	override public function set accessibilityEnabled(value:Boolean):void
+	{
+		if (!Capabilities.hasAccessibility)
+			return;
+
+		if (!accessibilityProperties)
+			accessibilityProperties = new AccessibilityProperties();
+
+		accessibilityProperties.silent = !value;
+		accessibilityPropertiesChanged = true;
+
+		invalidateProperties();
+	}
+
+	//----------------------------------
+	//  accessibilityDescription
+	//----------------------------------
+
+	/**
+	 *  @private
+	 */
+	override public function set accessibilityDescription(value:String):void
+	{
+		if (!Capabilities.hasAccessibility)
+			return;
+
+		if (!accessibilityProperties)
+			accessibilityProperties = new AccessibilityProperties();
+
+		accessibilityProperties.description = value;
+		accessibilityPropertiesChanged = true;
+
+		invalidateProperties();
+	}
+
+	//----------------------------------
+	//  accessibilityName
+	//----------------------------------
+
+	/**
+	 *  @private
+	 */
+	override public function set accessibilityName(value:String):void
+	{
+		if (!Capabilities.hasAccessibility)
+			return;
+
+		if (!accessibilityProperties)
+			accessibilityProperties = new AccessibilityProperties();
+
+		accessibilityProperties.name = value;
+		accessibilityPropertiesChanged = true;
+
+		invalidateProperties();
+	}
+
+	//----------------------------------
+	//  accessibilityProperties
+	//----------------------------------
+
+	/**
+	 *  @private
+	 *  Storage for the accessibilityProperties property.
+	 */
+	private var _accessibilityProperties:AccessibilityProperties = null;
+
+	/**
+	 *  @private
+	 */
+	private var accessibilityPropertiesChanged:Boolean = false;
+
+	/**
+	 *  @private
+	 */
+	override public function get accessibilityProperties():AccessibilityProperties
+	{
+		return _accessibilityProperties;
+	}
+
+	/**
+	 *  @private
+	 */
+	override public function set accessibilityProperties(
+									value:AccessibilityProperties):void
+	{
+		_accessibilityProperties = value;
+		accessibilityPropertiesChanged = true;
+
+		invalidateProperties();
+	}
+
+	//----------------------------------
+	//  accessibilityShortcut
+	//----------------------------------
+
+	/**
+	 *  @private
+	 */
+	override public function set accessibilityShortcut(value:String):void
+	{
+		if (!Capabilities.hasAccessibility)
+			return;
+
+		if (!accessibilityProperties)
+			accessibilityProperties = new AccessibilityProperties();
+
+		accessibilityProperties.shortcut = value;
+		accessibilityPropertiesChanged = true;
+
+		invalidateProperties();
+	}
+
+	//----------------------------------
     //  baselinePosition
     //----------------------------------

@@ -356,6 +503,36 @@
         invalidateProperties();
     }

+	//----------------------------------
+	//  tabIndex
+	//----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the tabIndex property.
+     */
+    private var _tabIndex:int = -1;
+
+    /**
+     *  @private
+     */
+    override public function get tabIndex():int
+    {
+        return _tabIndex;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set tabIndex(
+                                    value:int):void
+    {
+        _tabIndex = value;
+        accessibilityPropertiesChanged = true;
+
+        invalidateProperties();
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Properties proxied to textDisplay
@@ -783,7 +960,31 @@
     //  Overridden methods
     //
     //--------------------------------------------------------------------------
-
+
+	/**
+	 *  @private
+	 */
+	override protected function commitProperties():void
+	{
+		super.commitProperties();
+
+		if (accessibilityPropertiesChanged)
+		{
+			if (textDisplay)
+			{
+				textDisplay.accessibilityProperties = _accessibilityProperties;
+                textDisplay.tabIndex = _tabIndex;
+
+				// Note: Calling updateProperties() on players that don't
+				// support accessibility will throw an RTE.
+				if (Capabilities.hasAccessibility)
+					Accessibility.updateProperties();
+			}
+
+			accessibilityPropertiesChanged = false;
+		}
+	}
+
     /**
      *  @private
      */


Flash: Remove extra clear() operation on SimpleUpload FileReference, causing Plupload to hang in some cases.

--- src/flash/plupload/src/com/plupload/File.as
+++ src/flash/plupload/src/com/plupload/File.as
@@ -167,7 +167,6 @@
 				);

 				file._chunk++;
-				file._fileRef.data.clear();

 				dispatchEvent(uploadChunkEvt);


added dynamic sub injectors

added dynamic sub injectors

--- src/flexlib/css/CSSPropertyInjector.as
+++ src/flexlib/css/CSSPropertyInjector.as
@@ -31,7 +31,7 @@
 import flash.utils.getDefinitionByName;
 import flash.utils.getQualifiedClassName;

-import mx.core.UIComponent;
+import mx.binding.utils.BindingUtils;
 import mx.events.FlexEvent;
 import mx.events.StateChangeEvent;
 import mx.events.StyleEvent;
@@ -50,6 +50,10 @@
  */
 public dynamic class CSSPropertyInjector
 {
+	protected static const TARGET : String = "target";
+	protected static const STYLENAME : String = "styleName";
+	protected static const STYLENAMES : String = "styleNames";
+
     //--------------------------------------------------------------------------
     //
     //  Class methods
@@ -512,12 +516,31 @@
                 val = this[ key ];
             }

+        	var propName : String = null;
+        	var injector : CSSPropertyInjector = null;
+
             //  If there is a property, assign the value
             if ( target.hasOwnProperty( key ) && target[ key ] != val )
             {
-                target[ key ] = val;
+        		target[ key ] = val;
             }

+        	else if ( key.indexOf( STYLENAMES ) == 0 )
+        	{
+        		propName = key.substr( STYLENAMES.length, 1 ).toLowerCase() + key.substr( STYLENAMES.length+1 );
+        		injector = new CSSPropertyInjector();
+        		BindingUtils.bindProperty( injector, TARGET, target, propName );
+        		injector.styleNames = val;
+        	}
+
+        	else if ( key.indexOf( STYLENAME ) == 0 )
+        	{
+        		propName = key.substr( STYLENAME.length, 1 ).toLowerCase() + key.substr( STYLENAME.length+1 );
+        		injector = new CSSPropertyInjector();
+        		BindingUtils.bindProperty( injector, TARGET, target, propName );
+        		injector.styleName = val;
+        	}
+
             //  If there is no property and target is an IStyleClient
             //  set the value as a style.
             else if ( target is IStyleClient )


added MouseUtils static variable to StandardLib

--- WeaveJS/src/weavejs/util/StandardLib.as
+++ WeaveJS/src/weavejs/util/StandardLib.as
@@ -22,6 +22,7 @@
 		 */
 		public static var lodash:Object;
 		public static var ol:Object;
+		public static var MouseUtils:Object;

 		public static function formatNumber(number:Number, precision:int = -1):String
 		{


Grabbed latest SpatialIndex.as from Master branch to avoid any merge
issues later.

Change-Id: Ib49aba8e41bedb5b27a86ade9eb02fa88f3b984c

--- WeaveUI/src/weave/utils/SpatialIndex.as
+++ WeaveUI/src/weave/utils/SpatialIndex.as
@@ -227,6 +227,55 @@
 			return _kdTree.queryRange(minKDKey, maxKDKey);
 		}

+		private function polygonOverlapsPolyLine(polygon:Array, line:Object):Boolean
+		{
+			for (var i:int = 0; i < line.length - 1; ++i)
+			{
+				if (ComputationalGeometryUtils.polygonOverlapsLine(
+											_tempBoundsPolygon,
+											line[i].x, line[i].y,
+											line[i + 1].x, line[i + 1].y	))
+				{
+					return true;
+				}
+			}
+
+			return false;
+		}
+		private function polygonOverlapsPolyPoint(polygon:Array, point:Object):Boolean
+		{
+			for (var i:int = 0; i < point.length; ++i)
+			{
+				if (ComputationalGeometryUtils.polygonOverlapsPoint(_tempBoundsPolygon, point[i].x, point[i].y))
+					return true;
+			}
+
+			return false;
+		}
+		private function getMinimumUnscaledDistanceFromPolyLine(line:Object, x:Number, y:Number):Number
+		{
+			var min:Number = Number.POSITIVE_INFINITY;
+
+			for (var i:int = 0; i < line.length - 1; ++i)
+			{
+				min = Math.min(
+					ComputationalGeometryUtils.getUnscaledDistanceFromLine(line[i].x, line[i].y, line[i + 1].x, line[i + 1].y,x, y),
+					min);
+			}
+			return min;
+		}
+		private function getMinimumUnscaledDistanceFromPolyPoint(line:Object, x:Number, y:Number):Number
+		{
+			var min:Number = Number.POSITIVE_INFINITY;
+
+			for (var i:int = 0; i < line.length; ++i)
+			{
+				min = Math.min(
+					ComputationalGeometryUtils.getDistanceFromPointSq(line[i].x, line[i].y, x, y),
+					min);
+			}
+			return min;
+		}
 		/**
 		 * This function will get the keys which intersect with the bounds.
 		 *
@@ -237,10 +286,10 @@
 		{
 			var keys:Array;
 			// if this index isn't for an IPlotterWithGeometries OR the user wants legacy probing
-			if (_keyToGeometriesMap == null || Weave.properties.enableGeometryProbing.value == false)
+			if (_keyToGeometriesMap == null || !Weave.properties.enableGeometryProbing.value == true)
 				return getKeysOverlappingCollectiveBounds(bounds, 0);
 			else
-				keys = getKeysOverlappingCollectiveBounds(bounds, 0);
+				keys = getKeysOverlappingCollectiveBounds(bounds, minImportance);

 			// if there are 0 keys
 			if (keys.length == 0)
@@ -288,13 +337,10 @@
 									result.push(key);
 									continue keyLoop;
 								}
-							}
+							}
 							else if (genGeomIsLine)
 							{
-								if (ComputationalGeometryUtils.polygonOverlapsLine(
-									_tempBoundsPolygon, /* bounds polygon */
-									part[0].x, part[0].y,
-									part[1].x, part[1].y))
+								if (polygonOverlapsPolyLine(_tempBoundsPolygon, part))
 								{
 									result.push(key);
 									continue keyLoop;
@@ -302,9 +348,7 @@
 							}
 							else // point
 							{
-								if (ComputationalGeometryUtils.polygonOverlapsPoint(
-									_tempBoundsPolygon, /* bounds polygon */
-									part[0].x, part[0].y))
+								if (polygonOverlapsPolyPoint(_tempBoundsPolygon, part))
 								{
 									result.push(key);
 									continue keyLoop;
@@ -323,9 +367,7 @@

 						if (simpleGeomIsPoly)// a polygon, check for polygon overlap
 						{
-							if (ComputationalGeometryUtils.polygonOverlapsPolygon(
-								_tempBoundsPolygon, /* bounds polygon */
-								_tempGeometryPolygon /* vertices polygon */ ))
+							if (ComputationalGeometryUtils.polygonOverlapsPolygon(_tempBoundsPolygon, vertices))
 							{
 								result.push(key);
 								continue keyLoop;
@@ -333,10 +375,7 @@
 						}
 						else if (simpleGeomIsLine) // if a line, check for bounds intersect line
 						{
-							if (ComputationalGeometryUtils.polygonOverlapsLine(
-								_tempBoundsPolygon, /* polygon */
-								vertices[0].x, vertices[0].y, /* point A on AB */
-								vertices[1].x, vertices[1].y /* point B on AB */ ))
+							if (polygonOverlapsPolyLine(_tempBoundsPolygon, vertices))
 							{
 								result.push(key);
 								continue keyLoop;
@@ -344,9 +383,7 @@
 						}
 						else
 						{
-							if (ComputationalGeometryUtils.polygonOverlapsPoint(
-								_tempBoundsPolygon, /* polygon */
-								vertices[0].x, vertices[0].y /* point */))
+							if (polygonOverlapsPolyPoint(_tempBoundsPolygon, vertices))
 							{
 								result.push(key);
 								continue keyLoop;
@@ -496,9 +533,7 @@
 									}
 									else if (genGeomIsLine)
 									{
-										distanceSq = ComputationalGeometryUtils.getUnscaledDistanceFromLine(
-											part[0].x, part[0].y, part[1].x, part[1].y,
-											xQueryCenter, yQueryCenter);
+										distanceSq = getMinimumUnscaledDistanceFromPolyLine(part, xQueryCenter, yQueryCenter);

 										if (distanceSq <= Number.MIN_VALUE)
 											overlapsQueryCenter = true;
@@ -507,8 +542,7 @@
 									}
 									else if (genGeomIsPoint)
 									{
-										distanceSq = ComputationalGeometryUtils.getDistanceFromPointSq(
-											part[0].x, part[0].y, xQueryCenter, yQueryCenter);
+										distanceSq = getMinimumUnscaledDistanceFromPolyPoint(part, xQueryCenter, yQueryCenter);
 										if (distanceSq <= Number.MIN_VALUE)
 											overlapsQueryCenter = true;
 										else
@@ -566,9 +600,7 @@
 								}
 								else if (simpleGeomIsLine)
 								{
-									distanceSq = ComputationalGeometryUtils.getUnscaledDistanceFromLine(
-										vertices[0].x, vertices[0].y, vertices[1].x, vertices[1].y,
-										xQueryCenter, yQueryCenter);
+									distanceSq = getMinimumUnscaledDistanceFromPolyLine(vertices, xQueryCenter, yQueryCenter);
 									if (distanceSq <= Number.MIN_VALUE)
 										overlapsQueryCenter = true;
 									else
@@ -576,8 +608,7 @@
 								}
 								else if (simpleGeomIsPoint)
 								{
-									distanceSq = ComputationalGeometryUtils.getDistanceFromPointSq(
-										vertices[0].x, vertices[0].y, xQueryCenter, yQueryCenter);
+									distanceSq = getMinimumUnscaledDistanceFromPolyPoint(vertices, xQueryCenter, yQueryCenter);
 									if (distanceSq <= Number.MIN_VALUE)
 										overlapsQueryCenter = true;
 									else


no message

no message

--- example/src/StarlingRoot.as
+++ example/src/StarlingRoot.as
@@ -266,8 +266,8 @@
         fwdBtn.touchable = backBtn.touchable = false;
         progress.scaleX = 0.0;
         urlInput.text = "";
-        //webView.addTab(newTabUrls[tabBar.tabs.length - 2]);
-        webView.addTab();
+        webView.addTab(newTabUrls[tabBar.tabs.length - 2]);
+        //webView.addTab();
         tabBar.setActiveTab(webView.currentTab);
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 2805
Author:   chaase@adobe.com
Date:     2008-08-11T20:37:18.700675Z

Log Message:
-----------
First checkin for the "Arbitrary Type Interpolation" feature. This feature has a rewritten Tween class (now named flex.effects.Animation). This class supports the old Tween capabilities, but adds functionality such as the ability to supply alternate interpolation objects (to allow animation of non-Number types), a new Easing API, and new 'repeat behavior' that will allow terser looping or reversing animations. The existing new effects were slightly changed to use the new Animation class (instead of Tween), and the superclass of the new effects, AnimateProperties (renamed 'Animate'), is now a subclass of Effect (not TweenEffect).

Added various new interpolation and easing classes, along with the new packages flex.effects.interpolation and flex.effects.easing. Also added new color-interpolation effect, 'Tint'.

Expect slight tweaks to the API during i7, but the bulk of the functionality and API changes are being checked in now.

Reviewed by Jason S.
Testing: checkintests & mustella tests/Effects (passed)

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Animation.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/easing/Linear.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/.actionScriptProperties</path>
<path kind="file" action="A">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/EffectsProperties.mxml</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-2009-manifest.xml</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/AnimatePropertiesInstance.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/AnimateProperties.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/gumbo-manifest.xml</path>
<path kind="file" action="A">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/components/AnimationPropertiesForm.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/FadeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Fade.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/easing/Constant.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/easing/Power.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation/ColorInterpolator.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/AnimateInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/TintInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/easing/IEaser.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Tint.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Animate.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation/NumberArrayInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation/IInterpolator.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation/NumberInterpolator.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/IAnimationTarget.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/ResizeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Resize.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/easing</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/easing/Sine.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/MoveInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Move.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/events/AnimationEvent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation/ArrayInterpolator.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1284128 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/effects/interpolation/MultiValueInterpolator.as
+++ frameworks/projects/spark/src/spark/effects/interpolation/MultiValueInterpolator.as
@@ -0,0 +1,68 @@
+package flex.effects.interpolation
+{
+/**
+ * ArrayInterpolator interpolates each element of start/end array
+ * inputs separately, using another internal interpolator to do
+ * the per-element interpolation. By default, the per-element
+ * interpolation uses NumberInterpolator, but callers
+ * can construct ArrayInterpolator with a different interpolator
+ * instead.
+ */
+public class ArrayInterpolator implements IInterpolator
+{
+
+    /**
+     * Constructor. An optional parameter provides a per-element
+     * interpolator that will be used for every element of the arrays.
+     * If no interpolator is supplied, NumberInterpolator
+     * will be used by default.
+     */
+    public function ArrayInterpolator(value:IInterpolator = null)
+    {
+        elementInterpolator = value;
+    }
+
+    // The internal per-element interpolator
+    private var _elementInterpolator:IInterpolator;
+    /**
+     * The internal interpolator that ArrayInterpolator uses for
+     * each element of the input arrays
+     */
+    public function get elementInterpolator():IInterpolator
+    {
+        return _elementInterpolator;
+    }
+    public function set elementInterpolator(value:IInterpolator):void
+    {
+        _elementInterpolator = value ?
+            value : (NumberInterpolator.getInstance());
+    }
+
+    /**
+     * Returns the Array type, which is the type of
+     * object interpolated by ArrayInterpolator
+     */
+    public function get interpolatedType():Class
+    {
+        return Array;
+    }
+
+    /**
+     * @inheritDoc
+     *
+     * Interpolation for ArrayInterpolator consists of running a separate
+     * interpolation on each element of the startValue and endValue
+     * arrays, returning a new Array that holds those interpolated values.
+     */
+    public function interpolate(fraction:Number, startValue:*, endValue:*):*
+    {
+        var returnArray:Array = [];
+        for (var i:int = 0; i < startValue.length; i++)
+            returnArray[i] = _elementInterpolator.interpolate(fraction,
+                startValue[i], endValue[i]);
+
+        return returnArray;
+    }
+
+}
+}


IMetaDataContainer.getMetaData() now returns an array of MetaData objects

--- src/as3reflect/MetaDataContainer.as
+++ src/as3reflect/MetaDataContainer.as
@@ -61,13 +61,14 @@
 		/**
 		 * @inheritDoc
 		 */
-		public function getMetaData(key:String):MetaData {
+		public function getMetaData(key:String):Array {
+			var result:Array = [];
 			for (var i:int = 0; i<_metaData.length; i++) {
 				if (MetaData(_metaData[i]).name == key) {
-					return _metaData[i];
+					result.push(_metaData[i]);
 				}
 			}
-			return null;
+			return result;
 		}

 	}


HLS : expose backBufferLength

HLS : expose backBufferLength

--- src/org/mangui/hls/HLS.as
+++ src/org/mangui/hls/HLS.as
@@ -181,6 +181,11 @@
             return _hlsNetStream.bufferLength;
         };

+        /** get current back buffer Length  **/
+        public function get backBufferLength() : Number {
+            return _hlsNetStream.backBufferLength;
+        };
+
         /** get audio tracks list**/
         public function get audioTracks() : Vector.<AudioTrack> {
             return _audioTrackController.audioTracks;


Update src/justpinegames/Logi/Console.as

Removed flash.display.Events and used starling.events.Event instead

--- src/justpinegames/Logi/Console.as
+++ src/justpinegames/Logi/Console.as
@@ -1,6 +1,5 @@
 package justpinegames.Logi
 {
-	import flash.events.Event;
 	import flash.desktop.Clipboard;
 	import flash.desktop.ClipboardFormats;
 	import flash.utils.getQualifiedClassName;
@@ -10,8 +9,8 @@
 	import feathers.controls.Scroller;
 	import feathers.controls.renderers.IListItemRenderer;
 	import feathers.controls.ScrollContainer;
-    import feathers.controls.text.BitmapFontTextRenderer;
-    import feathers.core.FeathersControl;
+        import feathers.controls.text.BitmapFontTextRenderer;
+        import feathers.core.FeathersControl;
 	import feathers.data.ListCollection;
 	import feathers.layout.VerticalLayout;
 	import feathers.text.BitmapFontTextFormat;
@@ -19,6 +18,7 @@
 	import starling.core.Starling;
 	import starling.display.Quad;
 	import starling.events.Event;
+	import starling.events.ResizeEvent;
 	import starling.text.BitmapFont;
 	import starling.textures.TextureSmoothing;

@@ -92,7 +92,7 @@
 			}
 		}

-		private function addedToStageHandler(e:starling.events.Event):void
+		private function addedToStageHandler(e:Event):void
 		{
 			_consoleHeight = this.stage.stageHeight * _consoleSettings.consoleSize;

@@ -119,13 +119,13 @@
 				consoleItemRenderer.height = 20;
 				return consoleItemRenderer;
 			};
-			_list.addEventListener(starling.events.Event.CHANGE, copyLine);
+			_list.addEventListener(Event.CHANGE, copyLine);
 			_consoleContainer.addChild(_list);

 			_copyButton = new Button();

 			_copyButton.label = "Copy All";
-			_copyButton.addEventListener(starling.events.Event.ADDED, function(e:starling.events.Event):void
+			_copyButton.addEventListener(Event.ADDED, function(e:Event):void
 			{
                 _copyButton.defaultLabelProperties.smoothing = TextureSmoothing.NONE;
                 _copyButton.downLabelProperties.smoothing = TextureSmoothing.NONE;
@@ -141,7 +141,7 @@
 				_copyButton.width = 150;
 				_copyButton.height = 40;
 			});
-			_copyButton.addEventListener(starling.events.Event.SELECT, copy);
+			_copyButton.addEventListener(Event.SELECT, copy);
 			_consoleContainer.addChild(_copyButton);

 			_hudContainer = new ScrollContainer();
@@ -166,9 +166,9 @@

 			_archiveOfUndisplayedLogs = [];

-			Starling.current.nativeStage.addEventListener(flash.events.Event.RESIZE, function(e:flash.events.Event):void
-			{
-				setScreenSize(Starling.current.nativeStage.stageWidth, Starling.current.nativeStage.stageHeight);
+			stage.addEventListener(ResizeEvent.RESIZE, function(e:ResizeEvent):void
+			{
+				setScreenSize(stage.stageWidth, stage.stageHeight);
 			});
 		}

@@ -275,7 +275,7 @@
 			var createLabel:Function = function(text:String, format:BitmapFontTextFormat):BitmapFontTextRenderer
 			{
 				var label:BitmapFontTextRenderer = new BitmapFontTextRenderer();
-				label.addEventListener(starling.events.Event.ADDED, function(e:starling.events.Event):void
+				label.addEventListener(Event.ADDED, function(e:Event):void
 				{
 					label.textFormat = format;
 				});


Flash: Remove BlobPile.as, not needed anymore.

--- src/flash/src/com/utils/BlobPile.as
+++ src/flash/src/com/utils/BlobPile.as
@@ -1,71 +0,0 @@
-package com.utils
-{
-	import com.Blob;
-	import com.File;
-
-	import flash.net.FileReference;
-
-	public class BlobPile
-	{
-		private var _count:uint = 0;
-
-		private var _pile:Object = {};
-
-
-		public function exists(id:String) : Boolean
-		{
-			return _pile.hasOwnProperty(id);
-		}
-
-
-		public function get(id:String) : *
-		{
-			if (exists(id)) {
-				return _pile[id];
-			}
-			return false;
-		}
-
-
-		public function add(blob:*) : Boolean
-		{
-			if (_validBlob(blob) && !exists(blob.id)) {
-				_pile[blob.id] = blob;
-				return true;
-			}
-			return false;
-		}
-
-
-		public function update(blob:*) : Boolean
-		{
-			if (!_validBlob(blob)) {
-				return false; // or maybe throw exception
-			}
-
-			_pile[blob.id] = blob;
-			return true;
-		}
-
-
-		public function purge() : void
-		{
-
-		}
-
-
-		public function destroy() : void
-		{
-
-		}
-
-
-		private function _validBlob(blob:*) : Boolean
-		{
-			return (blob is Blob) && blob.hasOwnProperty('id');
-		}
-
-
-
-	}
-}