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 2016/08/25 15:32:41 UTC

[33/50] [abbrv] git commit: [flex-asjs] [refs/heads/spark] - Remove MeagerMatrix removed Vector3D Reimplemented Matrix using compatible licensed code Added chainability to Matrix methods

Remove MeagerMatrix
removed Vector3D
Reimplemented Matrix using compatible licensed code
Added chainability to Matrix methods


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/518f7173
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/518f7173
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/518f7173

Branch: refs/heads/spark
Commit: 518f71734bb20c81dbccfb217d58bfe047979f40
Parents: 91b7669
Author: Harbs <ha...@in-tools.com>
Authored: Sun Aug 14 22:34:36 2016 +0300
Committer: Harbs <ha...@in-tools.com>
Committed: Sun Aug 14 22:34:36 2016 +0300

----------------------------------------------------------------------
 .../projects/Core/src/main/flex/CoreClasses.as  |   1 -
 .../org/apache/flex/core/ITransformModel.as     |   6 +-
 .../apache/flex/core/TransformCompoundModel.as  |   8 +-
 .../flex/org/apache/flex/core/TransformModel.as |   8 +-
 .../org/apache/flex/core/TransformMoveXModel.as |   4 +-
 .../org/apache/flex/core/TransformMoveYModel.as |   4 +-
 .../apache/flex/core/TransformRotateModel.as    |   4 +-
 .../org/apache/flex/core/TransformScaleModel.as |   4 +-
 .../main/flex/org/apache/flex/geom/IMatrix.as   |  37 --
 .../main/flex/org/apache/flex/geom/Matrix.as    | 432 ++++++++-----------
 .../flex/org/apache/flex/geom/MeagerMatrix.as   | 106 -----
 .../main/flex/org/apache/flex/geom/Vector3D.as  | 208 ---------
 .../flex/org/apache/flex/svg/TransformBead.as   |   6 +-
 13 files changed, 195 insertions(+), 633 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Core/src/main/flex/CoreClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/CoreClasses.as b/frameworks/projects/Core/src/main/flex/CoreClasses.as
index 3a69a31..3e86f1c 100644
--- a/frameworks/projects/Core/src/main/flex/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/flex/CoreClasses.as
@@ -110,7 +110,6 @@ internal class CoreClasses
 	import org.apache.flex.events.ValueEvent; ValueEvent;
     import org.apache.flex.events.utils.MouseUtils; MouseUtils;
 	import org.apache.flex.geom.Matrix; Matrix;
-	import org.apache.flex.geom.MeagerMatrix; MeagerMatrix;
     import org.apache.flex.geom.Point; Point;
     import org.apache.flex.geom.Rectangle; Rectangle;
     import org.apache.flex.utils.BinaryData; BinaryData;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ITransformModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ITransformModel.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ITransformModel.as
index a88fcb6..56cb961 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ITransformModel.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ITransformModel.as
@@ -19,7 +19,7 @@
 package org.apache.flex.core
 {
 	import org.apache.flex.events.IEventDispatcher;
-	import org.apache.flex.geom.IMatrix;
+	import org.apache.flex.geom.Matrix;
 	
     /**
      *  The ITransformModel interface describes the minimum set of properties
@@ -40,8 +40,8 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-		function get matrix():IMatrix;
-		function set matrix(value:IMatrix):void;
+		function get matrix():Matrix;
+		function set matrix(value:Matrix):void;
 		
 	}
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformCompoundModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformCompoundModel.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformCompoundModel.as
index ce2e6d2..9418fd1 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformCompoundModel.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformCompoundModel.as
@@ -18,7 +18,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
 {
-	import org.apache.flex.geom.IMatrix;
+	import org.apache.flex.geom.Matrix;
 
 	[DefaultProperty("transformModels")]
 	public class TransformCompoundModel extends TransformModel
@@ -28,10 +28,10 @@ package org.apache.flex.core
 			if (value && value.length > 0)
 			{
 				var length:int = value.length;
-				var product:IMatrix = (value[0] as ITransformModel).matrix.clone();
+				var product:Matrix = (value[0] as ITransformModel).matrix.clone();
 				for (var i:int = 1; i < length; i++)
 				{
-					var current:IMatrix = (value[i] as ITransformModel).matrix;
+					var current:Matrix = (value[i] as ITransformModel).matrix;
 					concat(product, current);
 				}
 				matrix = product;
@@ -41,7 +41,7 @@ package org.apache.flex.core
 			}
 		}
 		
-		private function concat(product:IMatrix, factor:IMatrix):void
+		private function concat(product:Matrix, factor:Matrix):void
 		{
 			var result_a:Number = product.a * factor.a;
 			var result_b:Number = 0.0;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformModel.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformModel.as
index e2c083b..063b682 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformModel.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformModel.as
@@ -20,21 +20,21 @@ package org.apache.flex.core
 {
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.EventDispatcher;
-	import org.apache.flex.geom.IMatrix;
+	import org.apache.flex.geom.Matrix;
 	
 	public class TransformModel extends EventDispatcher implements ITransformModel
 	{
 		
 		public static const CHANGE:String = "transferModelChange";
 		
-		private var _matrix:IMatrix;
+		private var _matrix:Matrix;
 		private var _strand:IStrand;
 		
 		public function TransformModel()
 		{
 		}
 		
-		public function get matrix():IMatrix
+		public function get matrix():Matrix
 		{
 			return _matrix;
 		}
@@ -49,7 +49,7 @@ package org.apache.flex.core
 			return _strand as ITransformHost;
 		}
 		
-		public function set matrix(value:IMatrix):void
+		public function set matrix(value:Matrix):void
 		{
 			_matrix = value;
 			if (_strand)

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformMoveXModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformMoveXModel.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformMoveXModel.as
index 40dd15f..78f2747 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformMoveXModel.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformMoveXModel.as
@@ -18,7 +18,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
 {
-	import org.apache.flex.geom.MeagerMatrix;
+	import org.apache.flex.geom.Matrix;
 
 	public class TransformMoveXModel extends TransformModel
 	{
@@ -36,7 +36,7 @@ package org.apache.flex.core
 		public function set x(value:Number):void
 		{
 			_x = value;
-			matrix = new MeagerMatrix(1, 0, 0, 1, x, 0);
+			matrix = new Matrix(1, 0, 0, 1, x, 0);
 		}
 
 	}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformMoveYModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformMoveYModel.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformMoveYModel.as
index 51b9ba5..4d9f657 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformMoveYModel.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformMoveYModel.as
@@ -18,7 +18,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
 {
-	import org.apache.flex.geom.MeagerMatrix;
+	import org.apache.flex.geom.Matrix;
 
 	public class TransformMoveYModel extends TransformModel
 	{
@@ -36,7 +36,7 @@ package org.apache.flex.core
 		public function set y(value:Number):void
 		{
 			_y = value;
-			matrix = new MeagerMatrix(1, 0, 0, 1, 0, y);
+			matrix = new Matrix(1, 0, 0, 1, 0, y);
 		}
 
 	}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformRotateModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformRotateModel.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformRotateModel.as
index 62bc7f6..1b9d1a8 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformRotateModel.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformRotateModel.as
@@ -18,7 +18,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
 {
-	import org.apache.flex.geom.MeagerMatrix;
+	import org.apache.flex.geom.Matrix;
 	
 	
 	public class TransformRotateModel extends TransformModel
@@ -38,7 +38,7 @@ package org.apache.flex.core
 		{
 			_angle = value;
 			var radians:Number = value * Math.PI/180;
-			matrix = new MeagerMatrix(Math.cos(radians), Math.sin(radians), -Math.sin(radians), Math.cos(radians));
+			matrix = new Matrix(Math.cos(radians), Math.sin(radians), -Math.sin(radians), Math.cos(radians));
 		}
 
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformScaleModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformScaleModel.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformScaleModel.as
index ccd24a8..c8c29a8 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformScaleModel.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformScaleModel.as
@@ -18,7 +18,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
 {
-	import org.apache.flex.geom.MeagerMatrix;
+	import org.apache.flex.geom.Matrix;
 
 	public class TransformScaleModel extends TransformModel
 	{
@@ -35,7 +35,7 @@ package org.apache.flex.core
 		public function set scale(value:Number):void
 		{
 			_scale = value;
-			matrix = new MeagerMatrix(scale, 0, 0, scale, 0, 0);
+			matrix = new Matrix(scale, 0, 0, scale, 0, 0);
 		}
 
 	}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/IMatrix.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/IMatrix.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/IMatrix.as
deleted file mode 100644
index abc6348..0000000
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/IMatrix.as
+++ /dev/null
@@ -1,37 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.flex.geom
-{
-	public interface IMatrix
-	{
-		function get a():Number;
-		function set a(value:Number):void;
-		function get b():Number;
-		function set b(value:Number):void;
-		function get c():Number;
-		function set c(value:Number):void;
-		function get d():Number;
-		function set d(value:Number):void;
-		function get tx():Number;
-		function set tx(value:Number):void;
-		function get ty():Number;
-		function set ty(value:Number):void;
-		function clone():IMatrix
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Matrix.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Matrix.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Matrix.as
index bf634e3..41ca075 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Matrix.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Matrix.as
@@ -19,7 +19,7 @@
 package org.apache.flex.geom
 {
 
-	public class Matrix implements IMatrix
+	public class Matrix
 	{
 		public function Matrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)
 		{
@@ -31,319 +31,233 @@ package org.apache.flex.geom
 			this.ty = ty;
 
 		}
-		private var _a:Number;
-		private var _b:Number;
-		private var _c:Number;
-		private var _d:Number;
-		private var _tx:Number;
-		private var _ty:Number;
+		public var a:Number;
+		public var b:Number;
+		public var c:Number;
+		public var d:Number;
+		public var tx:Number;
+		public var ty:Number;
 
-		public function get ty():Number
+		/**
+		 *	Returns a copy of the Matrix
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.7
+		 */
+		public function clone():Matrix
 		{
-			return _ty;
-		}
-
-		public function set ty(value:Number):void
-		{
-			_ty = value;
-		}
-
-		public function get tx():Number
-		{
-			return _tx;
-		}
-
-		public function set tx(value:Number):void
-		{
-			_tx = value;
-		}
-
-		public function get d():Number
-		{
-			return _d;
-		}
-
-		public function set d(value:Number):void
-		{
-			_d = value;
-		}
-
-		public function get c():Number
-		{
-			return _c;
-		}
-
-		public function set c(value:Number):void
-		{
-			_c = value;
-		}
-
-		public function get b():Number
-		{
-			return _b;
-		}
-
-		public function set b(value:Number):void
-		{
-			_b = value;
+			return new Matrix(a, b, c, d, tx, ty);
 		}
-
-		public function get a():Number
+		
+		/**
+		 *  Adds the Matrix the current one
+		 *  Returns the matrix so the methods can be chained.
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.7
+		 */
+		public function concat(m:Matrix):Matrix
 		{
-			return _a;
+			var newa:Number = a * m.a + b * m.c;
+			b = a * m.b + b * m.d;
+			a = newa;
+			
+			var newc:Number = c * m.a + d * m.c;
+			d = c * m.b + d * m.d;
+			c = newc;
+			
+			var newtx:Number = tx * m.a + ty * m.c + m.tx;
+			ty = tx * m.b + ty * m.d + m.ty;
+			tx = newtx;
+			return this;
 		}
 
-		public function set a(value:Number):void
+		/**
+		 *  Calculates the Matrix determinant
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.7
+		 */
+		public function determinant():Number
 		{
-			_a = value;
-		}
-
-		public function clone():IMatrix
-		{
-			return new Matrix(a, b, c, d, tx, ty);
-		}
-		
-		public function concat(m:Matrix):void
-		{
-			var result_a:Number = a * m.a;
-			var result_b:Number = 0.0;
-			var result_c:Number = 0.0;
-			var result_d:Number = d * m.d;
-			var result_tx:Number = tx * m.a + m.tx;
-			var result_ty:Number = ty * m.d + m.ty;
-			if (b != 0.0 || c != 0.0 || m.b != 0.0 || m.c != 0.0)
-			{
-				result_a = result_a + b * m.c;
-				result_d = result_d + c * m.b;
-				result_b = result_b + (a * m.b + b * m.d);
-				result_c = result_c + (c * m.a + d * m.c);
-				result_tx = result_tx + ty * m.c;
-				result_ty = result_ty + tx * m.b;
-			}
-			a = result_a;
-			b = result_b;
-			c = result_c;
-			d = result_d;
-			tx = result_tx;
-			ty = result_ty;
+			return a * d - b * c;
 		}
 		
-		public function invert():void
+		/**
+		 *  Inverts the Matrix.
+		 *  Returns the matrix so the methods can be chained.
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.7
+		 */
+		public function invert():Matrix
 		{
-			var a0:* = NaN;
-			var a1:* = NaN;
-			var a2:* = NaN;
-			var a3:* = NaN;
-			var det:* = NaN;
-			var result_ty:* = NaN;
-			if (b == 0.0 && c == 0.0)
+			// if b and c are both 0, we can simplify this.
+			if (b == 0 && c == 0)
 			{
 				a = 1 / a;
 				d = 1 / d;
-				b = c = 0.0;
-				tx = -a * tx;
-				ty = -d * ty;
+				tx *= -a;
+				ty *= -d;
 			}
 			else
 			{
-				a0 = a;
-				a1 = b;
-				a2 = c;
-				a3 = d;
-				det = a0 * a3 - a1 * a2;
-				if (det == 0.0)
+				var det:Number = determinant();
+				if (det == 0)
 				{
 					identity();
-					return;
+					return this;
 				}
 				det = 1 / det;
-				a = a3 * det;
-				b = -a1 * det;
-				c = -a2 * det;
-				d = a0 * det;
-				result_ty = -(b * tx + d * ty);
-				tx = -(a * tx + c * ty);
-				ty = result_ty;
+				var newa:Number = d * det;
+				d = a * det;
+				a = newa;
+				b *= -det;
+				c *= -det;
+			
+				var newtx:Number = - a * tx - c * ty;
+				ty = - b * tx - d * ty;
+				tx = newtx;
 			}
+			return this;
 		}
 		
-		public function identity():void
+		/**
+		 *  Resets the matrix to the default values.
+		 *  Returns the matrix so the methods can be chained.
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.7
+		 */
+		public function identity():Matrix
 		{
 			a = d = 1;
-			b = c = 0.0;
-			tx = ty = 0.0;
+			b = c = tx = ty = 0;
+			return this;
 		}
 		
-		public function createBox(scaleX:Number, scaleY:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void
+		/**
+		 *  Rotates the Matrix by the specified value.
+		 *  Returns the matrix so the methods can be chained.
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.7
+		 */
+		public function rotate(angle:Number):Matrix
 		{
-			var u:Number = Math.cos(rotation);
-			var v:Number = Math.sin(rotation);
-			a = u * scaleX;
-			b = v * scaleY;
-			c = -v * scaleX;
-			d = u * scaleY;
-			tx = tx;
-			ty = ty;
-		}
+			var cos:Number = Math.cos(angle);
+			var sin:Number = Math.sin(angle);
+			
+			var newa:Number = a * cos - b * sin;
+			b = a * sin + b * cos;
+			a = newa;
 		
-		public function createGradientBox(width:Number, height:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void
-		{
-			createBox(width / 1638.4, height / 1638.4, rotation, tx + width / 2, ty + height / 2);
-		}
+			var newc:Number = c * cos - d * sin;
+			d = c * sin + d * cos;
+			c = newc;
 		
-		public function rotate(angle:Number):void
-		{
-			var u:Number = Math.cos(angle);
-			var v:Number = Math.sin(angle);
-			var result_a:Number = u * a - v * b;
-			var result_b:Number = v * a + u * b;
-			var result_c:Number = u * c - v * d;
-			var result_d:Number = v * c + u * d;
-			var result_tx:Number = u * tx - v * ty;
-			var result_ty:Number = v * tx + u * ty;
-			a = result_a;
-			b = result_b;
-			c = result_c;
-			d = result_d;
-			tx = result_tx;
-			ty = result_ty;
+			var newtx:Number = tx * cos - ty * sin;
+			ty = tx * sin + ty * cos;
+			tx = newtx;
+			return this;
 		}
 		
-		public function translate(dx:Number, dy:Number):void
+		/**
+		 *  Moves the Matrix by the specified amount
+		 *  Returns the matrix so the methods can be chained.
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.7
+		 */
+		public function translate(x:Number, y:Number):Matrix
 		{
-			tx = tx + dx;
-			ty = ty + dy;
+			tx += x;
+			ty += y;
+			return this;
 		}
 		
-		public function scale(sx:Number, sy:Number):void
+		/**
+		 *  Scales the Matrix by the specified amount.
+		 *  Returns the matrix so the methods can be chained.
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.7
+		 */
+		public function scale(x:Number, y:Number):Matrix
 		{
-			a = a * sx;
-			b = b * sy;
-			c = c * sx;
-			d = d * sy;
-			tx = tx * sx;
-			ty = ty * sy;
+			a *= x;
+			b *= y;
+			c *= x;
+			d *= y;
+			tx *= x;
+			ty *= y;
+			return this;
 		}
 		
+		/**
+		 *  Uses the Matrix to transform the point without the translation values.
+		 *  Returns a new Point. The original Point is unchanged.
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.7
+		 */
 		public function deltaTransformPoint(point:Point):Point
 		{
 			return new Point(a * point.x + c * point.y, d * point.y + b * point.x);
 		}
 		
+		/**
+		 *  Uses the Matrix to transform the point including the translation values.
+		 *  Returns a new Point. The original Point is unchanged.
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.7
+		 */
 		public function transformPoint(point:Point):Point
 		{
 			return new Point(a * point.x + c * point.y + tx, d * point.y + b * point.x + ty);
 		}
 		
+		/**
+		 *  Returns a string representation of the Matrix.
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.7
+		 */
 		public function toString():String
 		{
 			return "(a=" + a + ", b=" + b + ", c=" + c + ", d=" + d + ", tx=" + tx + ", ty=" + ty + ")";
 		}
 		
-		public function copyFrom(sourceMatrix:Matrix):void
-		{
-			a = sourceMatrix.a;
-			b = sourceMatrix.b;
-			c = sourceMatrix.c;
-			d = sourceMatrix.d;
-			tx = sourceMatrix.tx;
-			ty = sourceMatrix.ty;
-		}
-		
-		public function setTo(aa:Number, ba:Number, ca:Number, da:Number, txa:Number, tya:Number):void
-		{
-			a = aa;
-			b = ba;
-			c = ca;
-			d = da;
-			tx = txa;
-			ty = tya;
-		}
-		
-		public function copyRowTo(row:uint, vector3D:Vector3D):void
+		/**
+		 *  Copies the values from another Matrix.
+		 *  Returns the matrix so the methods can be chained.
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.7
+		 */
+		public function copyFrom(source:Matrix):Matrix
 		{
-			switch (row)
-			{
-				case 0: 
-					break;
-				case 1: 
-					vector3D.x = b;
-					vector3D.y = d;
-					vector3D.z = ty;
-					break;
-				case 2: 
-				case 3: 
-					vector3D.x = 0;
-					vector3D.y = 0;
-					vector3D.z = 1;
-					break;
-				default: 
-					vector3D.x = a;
-					vector3D.y = c;
-					vector3D.z = tx;
-			}
-		}
-		
-		public function copyColumnTo(column:uint, vector3D:Vector3D):void
-		{
-			switch (column)
-			{
-				case 0: 
-					break;
-				case 1: 
-					vector3D.x = c;
-					vector3D.y = d;
-					vector3D.z = 0;
-					break;
-				case 2: 
-				case 3: 
-					vector3D.x = tx;
-					vector3D.y = ty;
-					vector3D.z = 1;
-					break;
-				default: 
-					vector3D.x = a;
-					vector3D.y = b;
-					vector3D.z = 0;
-			}
-		}
-		
-		public function copyRowFrom(row:uint, vector3D:Vector3D):void
-		{
-			switch (row)
-			{
-				case 0: 
-					break;
-				case 1: 
-				case 2: 
-					b = vector3D.x;
-					d = vector3D.y;
-					ty = vector3D.z;
-					break;
-				default: 
-					a = vector3D.x;
-					c = vector3D.y;
-					tx = vector3D.z;
-			}
+			a = source.a;
+			b = source.b;
+			c = source.c;
+			d = source.d;
+			tx = source.tx;
+			ty = source.ty;
+			return this;
 		}
 		
-		public function copyColumnFrom(column:uint, vector3D:Vector3D):void
-		{
-			switch (column)
-			{
-				case 0: 
-					break;
-				case 1: 
-				case 2: 
-					b = vector3D.x;
-					d = vector3D.y;
-					ty = vector3D.z;
-					break;
-				default: 
-					a = vector3D.x;
-					c = vector3D.y;
-					tx = vector3D.z;
-			}
-		}
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/MeagerMatrix.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/MeagerMatrix.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/MeagerMatrix.as
deleted file mode 100644
index 595b64d..0000000
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/MeagerMatrix.as
+++ /dev/null
@@ -1,106 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.flex.geom
-{
-	
-	public class MeagerMatrix implements IMatrix
-	{
-		public function MeagerMatrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)
-		{
-			this.a = a;
-			this.b = b;
-			this.c = c;
-			this.d = d;
-			this.tx = tx;
-			this.ty = ty;
-			
-		}
-		private var _a:Number;
-		private var _b:Number;
-		private var _c:Number;
-		private var _d:Number;
-		private var _tx:Number;
-		private var _ty:Number;
-		
-		public function get ty():Number
-		{
-			return _ty;
-		}
-		
-		public function set ty(value:Number):void
-		{
-			_ty = value;
-		}
-		
-		public function get tx():Number
-		{
-			return _tx;
-		}
-		
-		public function set tx(value:Number):void
-		{
-			_tx = value;
-		}
-		
-		public function get d():Number
-		{
-			return _d;
-		}
-		
-		public function set d(value:Number):void
-		{
-			_d = value;
-		}
-		
-		public function get c():Number
-		{
-			return _c;
-		}
-		
-		public function set c(value:Number):void
-		{
-			_c = value;
-		}
-		
-		public function get b():Number
-		{
-			return _b;
-		}
-		
-		public function set b(value:Number):void
-		{
-			_b = value;
-		}
-		
-		public function get a():Number
-		{
-			return _a;
-		}
-		
-		public function set a(value:Number):void
-		{
-			_a = value;
-		}
-		
-		public function clone():IMatrix
-		{
-			return new MeagerMatrix(a, b, c, d, tx, ty);
-		}
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Vector3D.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Vector3D.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Vector3D.as
deleted file mode 100644
index b661d97..0000000
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Vector3D.as
+++ /dev/null
@@ -1,208 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.flex.geom
-{
-	COMPILE::SWF
-	{
-		import flash.geom.Vector3D;
-	}
-	
-	COMPILE::SWF
-	public class Vector3D extends flash.geom.Vector3D
-	{
-		public function Vector3D(x:Number = 0.0, y:Number = 0.0, z:Number = 0.0, w:Number = 0.0)
-		{
-			super(x,y,z,w);
-		}
-		override public function clone():flash.geom.Vector3D
-		{
-			return new org.apache.flex.geom.Vector3D(this.x,this.y,this.z,this.w);
-		}
-
-	}
-	
-	COMPILE::JS
-	public class Vector3D
-	{
-		public static const X_AXIS:Vector3D = new Vector3D(1,0,0);
-		public static const Y_AXIS:Vector3D = new Vector3D(0,1,0);
-		public static const Z_AXIS:Vector3D = new Vector3D(0,0,1);
-		public var x:Number;
-		public var y:Number;
-		public var z:Number;
-		public var w:Number;
-		public function Vector3D(x:Number = 0.0, y:Number = 0.0, z:Number = 0.0, w:Number = 0.0)
-		{
-			this.x = x;
-			this.y = y;
-			this.z = z;
-			this.w = w;
-		}
-		
-		public static function angleBetween(a:Vector3D, b:Vector3D) : Number
-		{
-			var dot:Number = a.x * b.x + a.y * b.y + a.z * b.z;
-			var al:Number = a.length;
-			var bl:Number = b.length;
-			dot = dot / (al * bl);
-			return Math.acos(dot);
-		}
-		
-		public static function distance(pt1:Vector3D, pt2:Vector3D) : Number
-		{
-			return pt1.subtract(pt2).length;
-		}
-		
-		public function clone():Vector3D
-		{
-			return new Vector3D(this.x,this.y,this.z,this.w);
-		}
-		
-		public function dotProduct(a:Vector3D):Number
-		{
-			return this.x * a.x + this.y * a.y + this.z * a.z;
-		}
-		
-		public function crossProduct(a:Vector3D) : Vector3D
-		{
-			return new Vector3D(this.y * a.z - this.z * a.y,this.z * a.x - this.x * a.z,this.x * a.y - this.y * a.x,1);
-		}
-		
-		public function get length() : Number
-		{
-			var r:Number = this.x * this.x + this.y * this.y + this.z * this.z;
-			if(r <= 0)
-			{
-				return 0;
-			}
-			return Math.sqrt(r);
-		}
-		
-		public function get lengthSquared() : Number
-		{
-			return this.x * this.x + this.y * this.y + this.z * this.z;
-		}
-		
-		public function normalize() : Number
-		{
-			var len:Number = this.length;
-			var lenInv:Number = len != 0?1 / len:0;
-			this.x = this.x * lenInv;
-			this.y = this.y * lenInv;
-			this.z = this.z * lenInv;
-			return len;
-		}
-		
-		public function scaleBy(s:Number) : void
-		{
-			this.x = this.x * s;
-			this.y = this.y * s;
-			this.z = this.z * s;
-		}
-		
-		public function incrementBy(a:Vector3D) : void
-		{
-			this.x = this.x + a.x;
-			this.y = this.y + a.y;
-			this.z = this.z + a.z;
-		}
-		
-		public function decrementBy(a:Vector3D) : void
-		{
-			this.x = this.x - a.x;
-			this.y = this.y - a.y;
-			this.z = this.z - a.z;
-		}
-		
-		public function add(a:Vector3D) : Vector3D
-		{
-			return new Vector3D(this.x + a.x,this.y + a.y,this.z + a.z);
-		}
-		
-		public function subtract(a:Vector3D) : Vector3D
-		{
-			return new Vector3D(this.x - a.x,this.y - a.y,this.z - a.z);
-		}
-		
-		public function negate() : void
-		{
-			this.x = -this.x;
-			this.y = -this.y;
-			this.z = -this.z;
-		}
-		
-		public function equals(toCompare:Vector3D, allFour:Boolean = false) : Boolean
-		{
-			return this.x == toCompare.x && this.y == toCompare.y && this.z == toCompare.z && (allFour?this.w == toCompare.w:true);
-		}
-		
-		public function nearEquals(toCompare:Vector3D, tolerance:Number, allFour:Boolean = false) : Boolean
-		{
-			var diff:Number = this.x - toCompare.x;
-			diff = diff < 0?0 - diff:diff;
-			var goodEnough:Boolean = diff < tolerance;
-			if(goodEnough)
-			{
-				diff = this.y - toCompare.y;
-				diff = diff < 0?0 - diff:diff;
-				goodEnough = diff < tolerance;
-				if(goodEnough)
-				{
-					diff = this.z - toCompare.z;
-					diff = diff < 0?0 - diff:diff;
-					goodEnough = diff < tolerance;
-					if(goodEnough && allFour)
-					{
-						diff = this.w = toCompare.w;
-						diff = diff < 0?0 - diff:diff;
-						goodEnough = diff < tolerance;
-					}
-				}
-			}
-			return goodEnough;
-		}
-		
-		public function project() : void
-		{
-			var tRecip:Number = 1 / this.w;
-			this.x = this.x * tRecip;
-			this.y = this.y * tRecip;
-			this.z = this.z * tRecip;
-		}
-		
-		public function toString() : String
-		{
-			return "Vector3D(" + this.x + ", " + this.y + ", " + this.z + ")";
-		}
-		
-		public function copyFrom(sourceVector3D:Vector3D) : void
-		{
-			this.x = sourceVector3D.x;
-			this.y = sourceVector3D.y;
-			this.z = sourceVector3D.z;
-		}
-		
-		public function setTo(xa:Number, ya:Number, za:Number) : void
-		{
-			this.x = xa;
-			this.y = ya;
-			this.z = za;
-		}
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/518f7173/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/TransformBead.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/TransformBead.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/TransformBead.as
index e37f4df..19fe765 100644
--- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/TransformBead.as
+++ b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/TransformBead.as
@@ -24,7 +24,7 @@ package org.apache.flex.svg
 	import org.apache.flex.core.ITransformModel;
 	import org.apache.flex.core.TransformModel;
 	import org.apache.flex.events.Event;
-	import org.apache.flex.geom.IMatrix;
+	import org.apache.flex.geom.Matrix;
 
 	COMPILE::SWF {
 		import flash.display.Sprite;
@@ -67,7 +67,7 @@ package org.apache.flex.svg
 		public function transform():void
 		{
 			var element:Sprite = host.transformElement as Sprite;
-			var fjsm:org.apache.flex.geom.IMatrix = transformModel.matrix;
+			var fjsm:org.apache.flex.geom.Matrix = transformModel.matrix;
 			var flashMatrix:flash.geom.Matrix = new flash.geom.Matrix(fjsm.a, fjsm.b, fjsm.c, fjsm.d, fjsm.tx, fjsm.ty);
 			element.transform.matrix = flashMatrix;
 		}
@@ -79,7 +79,7 @@ package org.apache.flex.svg
 		{
 			var element:org.apache.flex.core.WrappedHTMLElement = host.transformElement;
 			(element.parentNode as HTMLElement).setAttribute("overflow", "visible");
-			var fjsm:org.apache.flex.geom.IMatrix = transformModel.matrix;
+			var fjsm:org.apache.flex.geom.Matrix = transformModel.matrix;
 			var matrixArray:Array = [fjsm.a , fjsm.b, fjsm.c, fjsm.d, fjsm.tx, fjsm.ty];
 			var transformStr:String = "matrix(" + matrixArray.join(",") + ")";
 			element.setAttribute("transform", transformStr);