http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7d529524/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/SolidColorStroke.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/SolidColorStroke.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/SolidColorStroke.as deleted file mode 100644 index 1d05507..0000000 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/SolidColorStroke.as +++ /dev/null @@ -1,130 +0,0 @@ -/** - * Licensed 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.core.graphics -{ - COMPILE::SWF - { - import flash.display.CapsStyle; - import flash.display.JointStyle; - } - - public class SolidColorStroke implements IStroke - { - - //---------------------------------- - // alpha - //---------------------------------- - private var _alpha:Number = 1.0; - - //---------------------------------- - // color - //---------------------------------- - private var _color:uint = 0x000000; - - //---------------------------------- - // weight - //---------------------------------- - private var _weight:Number = 1; - - /** - * The transparency of a color. - * Possible values are 0.0 (invisible) through 1.0 (opaque). - * - * @default 1.0 - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.3 - */ - public function get alpha():Number - { - return _alpha; - } - - public function set alpha(value:Number):void - { - var oldValue:Number = _alpha; - if (value != oldValue) - { - _alpha = value; - } - } - - /** - * A color value. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion FlexJS 0.3 - */ - public function get color():uint - { - return _color; - } - - public function set color(value:uint):void - { - var oldValue:uint = _color; - if (value != oldValue) - { - _color = value; - } - } - - public function get weight():Number - { - return _weight; - } - - /** - * A color value. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion FlexJS 0.3 - */ - public function set weight(value:Number):void - { - _weight = value; - } - - COMPILE::SWF - public function apply(s:GraphicShape):void - { - s.graphics.lineStyle(weight,color,alpha,false,"normal",CapsStyle.SQUARE,JointStyle.MITER); - } - - /** - * addStrokeAttrib() - * - * @param value The GraphicShape object on which the stroke must be added. - * @return {string} - */ - COMPILE::JS - public function addStrokeAttrib(value:GraphicShape):String - { - var strokeColor:String = Number(color).toString(16); - if (strokeColor.length == 1) strokeColor = '00' + strokeColor; - if (strokeColor.length == 2) strokeColor = '00' + strokeColor; - if (strokeColor.length == 4) strokeColor = '00' + strokeColor; - return 'stroke:#' + String(strokeColor) + ';stroke-width:' + - String(weight) + ';stroke-opacity:' + String(alpha); - }; - - } -}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7d529524/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/Text.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/Text.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/Text.as deleted file mode 100644 index e864a11..0000000 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/Text.as +++ /dev/null @@ -1,147 +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.core.graphics -{ - COMPILE::SWF - { - import flash.text.TextFieldType; - import org.apache.flex.core.CSSTextField; - } - COMPILE::JS - { - import org.apache.flex.core.WrappedHTMLElement; - } - - /** - * Draws a string of characters at a specific location using the stroke - * value of color and alpha. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * // TODO (aharui) ignore imports of external linkage interfaces? - * @flexjsignoreimport SVGLocatable - */ - public class Text extends GraphicShape - { - /** - * constructor. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function Text() - { - super(); - - COMPILE::SWF - { - _textField = new CSSTextField(); - addChild(_textField); - } - } - - - COMPILE::SWF - private var _textField:CSSTextField; - - COMPILE::JS - private var _text:WrappedHTMLElement; - - /** - * @copy org.apache.flex.core.ITextModel#textField - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - COMPILE::SWF - public function get textField() : CSSTextField - { - return _textField; - } - - /** - * Draws text at the given point. - * @param value The string to draw. - * @param xt The x position of the top-left corner of the rectangle. - * @param yt The y position of the top-left corner. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - * @flexjsignorecoercion Text - * @flexjsignorecoercion Node - * @flexjsignorecoercion SVGLocatable - */ - public function drawText(value:String, xt:Number, yt:Number):void - { - COMPILE::SWF - { - textField.selectable = false; - textField.type = TextFieldType.DYNAMIC; - textField.mouseEnabled = false; - textField.autoSize = "left"; - textField.text = value; - - var color:SolidColorStroke = stroke as SolidColorStroke; - if (color) { - textField.textColor = color.color; - textField.alpha = color.alpha; - } - - textField.x = xt; - textField.y = yt; - } - COMPILE::JS - { - var style:String = this.getStyleStr(); - if (_text == null) { - _text = document.createElementNS('http://www.w3.org/2000/svg', 'text') as WrappedHTMLElement; - _text.flexjs_wrapper = this; - element.appendChild(_text); - } - else { - _text.removeChild(_text.childNodes[0]); - } - _text.setAttribute('style', style); - _text.setAttribute('x', String(xt) + 'px'); - _text.setAttribute('y', String(yt) + 'px'); - var textNode:Text = document.createTextNode(value) as Text; - _text.appendChild(textNode as Node); - - resize(x, y, (_text as SVGLocatable).getBBox()); - - } - } - - COMPILE::JS - override protected function draw():void - { - - } - - } -} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7d529524/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/utils/AdvancedLayoutFeatures.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/utils/AdvancedLayoutFeatures.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/utils/AdvancedLayoutFeatures.as deleted file mode 100644 index 14cc5af..0000000 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/utils/AdvancedLayoutFeatures.as +++ /dev/null @@ -1,1140 +0,0 @@ -/** - * Licensed 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.core.graphics.utils -{ - import flash.events.Event; - import flash.geom.Matrix; - import flash.geom.Matrix3D; - import flash.geom.Point; - import flash.geom.Vector3D; - import flash.system.Capabilities; - - import org.apache.flex.core.graphics.utils.IAssetLayoutFeatures; - - - /** - * @private - * Transform Offsets can be assigned to any Component or GraphicElement to modify the transform - * of the object beyond where its parent layout places it. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public class AdvancedLayoutFeatures implements IAssetLayoutFeatures - { - //-------------------------------------------------------------------------- - // - // Constructor - // - //-------------------------------------------------------------------------- - /** - * Constructor. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function AdvancedLayoutFeatures() - { - layout = new CompoundTransform(); - } - - - - /** - * @private - * a flag for use by the owning object indicating whether the owning object has a pending update - * to the computed matrix. it is the owner's responsibility to set this flag. - */ - public var updatePending:Boolean = false; - - /** - * storage for the depth value. Layering is considered 'advanced' layout behavior, and not something - * that gets used by the majority of the components out there. So if a component has a non-zero depth, - * it will allocate a AdvancedLayoutFeatures object and store the value here. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public var depth:Number = 0; - - /** - * @private - * slots for the various 2D and 3D matrices for layout, offset, and computed transforms. Note that - * these are only allocated and computed on demand -- many component instances will never use a 3D - * matrix, for example. - */ - protected var _computedMatrix:Matrix; - protected var _computedMatrix3D:Matrix3D; - - /** - * @private - * the layout visible transform as defined by the user and parent layout. - */ - protected var layout:CompoundTransform; - - /** - * @private - * offset values applied by the user - */ - private var _postLayoutTransformOffsets:TransformOffsets; - - /** - * @private - * bit field flags for indicating which transforms are valid -- the layout properties, the matrices, - * and the 3D matrices. Since developers can set any of the three programmatically, the last one set - * will always be valid, and the others will be invalid until validated on demand. - */ - private static const COMPUTED_MATRIX_VALID:uint = 0x1; - private static const COMPUTED_MATRIX3D_VALID:uint = 0x2; - - /** - * @private - * general storage for all of our flags. - */ - private var _flags:uint = 0; - - /** - * @private - * static data used by utility methods below - */ - private static var reVT:Vector3D = new Vector3D(0,0,0); - private static var reVR:Vector3D = new Vector3D(0,0,0); - private static var reVS:Vector3D = new Vector3D(1,1,1); - - private static var reV:Vector.<Vector3D> = new Vector.<Vector3D>(); - reV.push(reVT); - reV.push(reVR); - reV.push(reVS); - - - private static const RADIANS_PER_DEGREES:Number = Math.PI / 180; - - private static const ZERO_REPLACEMENT_IN_3D:Number = .00000000000001; - - private static var tempLocalPosition:Vector3D; - - /** - * @private - * a pointer to the function we use to transform vectors, to work around a bug - * in early versions of the flash player. - */ - private static var transformVector:Function = initTransformVectorFunction; - - /** - * @private - * an actionscript implementation to transform a vector by a matrix. Bugs in early versions of - * flash 10's implementation of Matrix.transformVector force us to do it ourselves in actionscript. - */ - private static function pre10_0_22_87_transformVector(m:Matrix3D,v:Vector3D):Vector3D - { - var r:Vector.<Number> = m.rawData; - return new Vector3D( - r[0] * v.x + r[4] * v.y + r[8] * v.z + r[12], - r[1] * v.x + r[5] * v.y + r[9] * v.z + r[13], - r[2] * v.x + r[6] * v.y + r[10] * v.z + r[14], - 1); - } - - /** - * @private - * a function to transform vectors using the built in player API, if we're in a late enough player version - * that we won't run into bugs.s - */ - private static function nativeTransformVector(m:Matrix3D,v:Vector3D):Vector3D - { - return m.transformVector(v); - } - - /** - * @private - * the first time someone calls transformVector, they'll get this function. It checks the player version, - * and if decides which implementation to use based on whether a bug is present or not. - */ - private static function initTransformVectorFunction(m:Matrix3D,v:Vector3D):Vector3D - { - var canUseNative:Boolean = false; - var version:Array = Capabilities.version.split(' ')[1].split(','); - if (parseFloat(version[0]) > 10) - canUseNative = true; - else if (parseFloat(version[1]) > 0) - canUseNative = true; - else if (parseFloat(version[2]) > 22) - canUseNative = true; - else if (parseFloat(version[3]) >= 87) - canUseNative = true; - if (canUseNative) - transformVector = nativeTransformVector; - else - transformVector = pre10_0_22_87_transformVector; - - return transformVector(m,v); - } - - - //------------------------------------------------------------------------------ - - /** - * layout transform convenience property. Represents the x value of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set layoutX(value:Number):void - { - layout.x = value; - invalidate(); - } - - /** - * @private - */ - public function get layoutX():Number - { - return layout.x; - } - /** - * layout transform convenience property. Represents the y value of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set layoutY(value:Number):void - { - layout.y = value; - invalidate(); - } - - /** - * @private - */ - public function get layoutY():Number - { - return layout.y; - } - - /** - * layout transform convenience property. Represents the z value of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set layoutZ(value:Number):void - { - layout.z = value; - invalidate(); - } - - /** - * @private - */ - public function get layoutZ():Number - { - return layout.z; - } - - //---------------------------------- - // layoutWidth - //---------------------------------- - - private var _layoutWidth:Number = 0; - - /** - * Used by the mirroring transform. See the mirror property. - * @default 0 - */ - public function get layoutWidth():Number - { - return _layoutWidth; - } - - /** - * @private - */ - public function set layoutWidth(value:Number):void - { - if (value == _layoutWidth) - return; - _layoutWidth = value; - invalidate(); - } - - - //------------------------------------------------------------------------------ - - /** - * @private - * the x value of the point around which any rotation and scale is performed in both the layout and computed matrix. - */ - public function set transformX(value:Number):void - { - layout.transformX = value; - invalidate(); - } - /** - * @private - */ - public function get transformX():Number - { - return layout.transformX; - } - - /** - * @private - * the y value of the point around which any rotation and scale is performed in both the layout and computed matrix. - */ - public function set transformY(value:Number):void - { - layout.transformY = value; - invalidate(); - } - - /** - * @private - */ - public function get transformY():Number - { - return layout.transformY; - } - - /** - * @private - * the z value of the point around which any rotation and scale is performed in both the layout and computed matrix. - */ - public function set transformZ(value:Number):void - { - layout.transformZ = value; - invalidate(); - } - - /** - * @private - */ - public function get transformZ():Number - { - return layout.transformZ; - } - - //------------------------------------------------------------------------------ - - - /** - * layout transform convenience property. Represents the rotation around the X axis of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set layoutRotationX(value:Number):void - { - layout.rotationX= value; - invalidate(); - } - - /** - * @private - */ - public function get layoutRotationX():Number - { - return layout.rotationX; - } - - /** - * layout transform convenience property. Represents the rotation around the Y axis of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set layoutRotationY(value:Number):void - { - layout.rotationY= value; - invalidate(); - } - - /** - * @private - */ - public function get layoutRotationY():Number - { - return layout.rotationY; - } - - /** - * layout transform convenience property. Represents the rotation around the Z axis of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set layoutRotationZ(value:Number):void - { - layout.rotationZ= value; - invalidate(); - } - - /** - * @private - */ - public function get layoutRotationZ():Number - { - return layout.rotationZ; - } - - //------------------------------------------------------------------------------ - - - /** - * layout transform convenience property. Represents the scale along the X axis of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set layoutScaleX(value:Number):void - { - layout.scaleX = value; - invalidate(); - } - - /** - * @private - */ - public function get layoutScaleX():Number - { - return layout.scaleX; - } - - /** - * layout transform convenience property. Represents the scale along the Y axis of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set layoutScaleY(value:Number):void - { - layout.scaleY= value; - invalidate(); - } - - /** - * @private - */ - public function get layoutScaleY():Number - { - return layout.scaleY; - } - - - /** - * layout transform convenience property. Represents the scale along the Z axis of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set layoutScaleZ(value:Number):void - { - layout.scaleZ= value; - invalidate(); - } - - /** - * @private - */ - public function get layoutScaleZ():Number - { - return layout.scaleZ; - } - - /** - * @private - * The 2D matrix used during layout calculations to determine the layout and size of the component and its parent and siblings. - * If the convenience properties are set, this matrix is built from those properties. - * If the matrix is set directly, the convenience properties will be updated to values derived from this matrix. - * This matrix is used in the calculation of the computed transform if possible. Under certain circumstances, such as when - * offsets are provided, the decomposed layout properties will be used instead. - */ - public function set layoutMatrix(value:Matrix):void - { - layout.matrix = value; - invalidate(); - } - - - /** - * @private - */ - public function get layoutMatrix():Matrix - { - return layout.matrix; - - } - - - /** - * @private - * The 3D matrix used during layout calculations to determine the layout and size of the component and its parent and siblings. - * This matrix is only used by parents that respect 3D layoyut. - * If the convenience properties are set, this matrix is built from those properties. - * If the matrix is set directly, the convenience properties will be updated to values derived from this matrix. - * This matrix is used in the calculation of the computed transform if possible. Under certain circumstances, such as when - * offsets are provided, the decomposed layout properties will be used instead. - */ - public function set layoutMatrix3D(value:Matrix3D):void - { - layout.matrix3D = value; - invalidate(); - } - - /** - * @private - */ - public function get layoutMatrix3D():Matrix3D - { - return layout.matrix3D; - } - - /** - * true if the computed transform has 3D values. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function get is3D():Boolean - { - return (layout.is3D || (postLayoutTransformOffsets != null && postLayoutTransformOffsets.is3D)); - } - - /** - * true if the layout transform has 3D values. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function get layoutIs3D():Boolean - { - return layout.is3D; - } - - //------------------------------------------------------------------------------ - - /** offsets to the transform convenience properties that are applied when a component is rendered. If this - * property is set, its values will be added to the layout transform properties to determine the true matrix used to render - * the component - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set postLayoutTransformOffsets(value:TransformOffsets):void - { - if (_postLayoutTransformOffsets != null) - { - _postLayoutTransformOffsets.removeEventListener(Event.CHANGE,postLayoutTransformOffsetsChangedHandler); - _postLayoutTransformOffsets.owner = null; - } - _postLayoutTransformOffsets = value; - if (_postLayoutTransformOffsets != null) - { - _postLayoutTransformOffsets.addEventListener(Event.CHANGE,postLayoutTransformOffsetsChangedHandler); - _postLayoutTransformOffsets.owner = this; - } - invalidate(); - } - - public function get postLayoutTransformOffsets():TransformOffsets - { - return _postLayoutTransformOffsets; - } - - private function postLayoutTransformOffsetsChangedHandler(e:Event):void - { - invalidate(); - } - - //---------------------------------- - // mirror - //---------------------------------- - - private var _mirror:Boolean = false; - - /** - * If true the X axis is scaled by -1 and the x coordinate of the origin - * is translated by the component's width. - * - * The net effect of this "mirror" transform is to flip the direction - * that the X axis increases in without changing the layout element's - * location relative to the parent's origin. - * - * @default false - */ - public function get mirror():Boolean - { - return _mirror; - } - - /** - * @private - */ - public function set mirror(value:Boolean):void - { - _mirror = value; - invalidate(); - } - - - //---------------------------------- - // stretchX - //---------------------------------- - - private var _stretchX:Number = 1; - - /** - * The stretchY is the horizontal component of the stretch scale factor which - * is applied before any other transformation property. - * @default 1 - */ - public function get stretchX():Number - { - return _stretchX; - } - - /** - * @private - */ - public function set stretchX(value:Number):void - { - if (value == _stretchX) - return; - _stretchX = value; - invalidate(); - } - - //---------------------------------- - // stretchY - //---------------------------------- - - private var _stretchY:Number = 1; - - /** - * The stretchY is the vertical component of the stretch scale factor which - * is applied before any other transformation property. - * @default 1 - */ - public function get stretchY():Number - { - return _stretchY; - } - - /** - * @private - */ - public function set stretchY(value:Number):void - { - if (value == _stretchY) - return; - _stretchY = value; - invalidate(); - } - - //------------------------------------------------------------------------------ - - /** - * @private - * invalidates our various cached values. Any change to the AdvancedLayoutFeatures object that affects - * the various transforms should call this function. - * @param reason - the code indicating what changes to cause the invalidation. - * @param affects3D - a flag indicating whether the change affects the 2D/3D nature of the various transforms. - * @param dispatchChangeEvent - if true, the AdvancedLayoutFeatures will dispatch a change indicating that its underlying transforms - * have been modified. - */ - private function invalidate():void - { - _flags &= ~COMPUTED_MATRIX_VALID; - _flags &= ~COMPUTED_MATRIX3D_VALID; - } - - - /** - * the computed matrix, calculated by combining the layout matrix and and any offsets provided.. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function get computedMatrix():Matrix - { - if (_flags & COMPUTED_MATRIX_VALID) - return _computedMatrix; - - if (!postLayoutTransformOffsets && !mirror && stretchX == 1 && stretchY == 1) - { - return layout.matrix; - } - - var m:Matrix = _computedMatrix; - if (m == null) - m = _computedMatrix = new Matrix(); - else - m.identity(); - - var tx:Number = layout.transformX; - var ty:Number = layout.transformY; - var sx:Number = layout.scaleX; - var sy:Number = layout.scaleY; - var rz:Number = layout.rotationZ; - var x:Number = layout.x; - var y:Number = layout.y; - - if (mirror) - { - sx *= -1; - x += layoutWidth; - } - - if (postLayoutTransformOffsets) - { - sx *= postLayoutTransformOffsets.scaleX; - sy *= postLayoutTransformOffsets.scaleY; - rz += postLayoutTransformOffsets.rotationZ; - x += postLayoutTransformOffsets.x; - y += postLayoutTransformOffsets.y; - } - - if (stretchX != 1 || stretchY != 1) - m.scale(stretchX, stretchY); - build2DMatrix(m, tx, ty, sx, sy, rz, x, y); - - _flags |= COMPUTED_MATRIX_VALID; - return m; - } - - /** - * the computed 3D matrix, calculated by combining the 3D layout matrix and and any offsets provided.. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function get computedMatrix3D():Matrix3D - { - if (_flags & COMPUTED_MATRIX3D_VALID) - return _computedMatrix3D; - - - if (!postLayoutTransformOffsets && !mirror && stretchX == 1 && stretchY == 1) - { - return layout.matrix3D; - } - - var m:Matrix3D = _computedMatrix3D; - if (m == null) - m = _computedMatrix3D = new Matrix3D(); - else - m.identity(); - - var tx:Number = layout.transformX; - var ty:Number = layout.transformY; - var tz:Number = layout.transformZ; - var sx:Number = layout.scaleX; - var sy:Number = layout.scaleY; - var sz:Number = layout.scaleZ; - var rx:Number = layout.rotationX; - var ry:Number = layout.rotationY; - var rz:Number = layout.rotationZ; - var x:Number = layout.x; - var y:Number = layout.y; - var z:Number = layout.z; - - if (mirror) - { - sx *= -1; - x += layoutWidth; - } - - if (postLayoutTransformOffsets) - { - sx *= postLayoutTransformOffsets.scaleX; - sy *= postLayoutTransformOffsets.scaleY; - sz *= postLayoutTransformOffsets.scaleZ; - rx += postLayoutTransformOffsets.rotationX; - ry += postLayoutTransformOffsets.rotationY; - rz += postLayoutTransformOffsets.rotationZ; - x += postLayoutTransformOffsets.x; - y += postLayoutTransformOffsets.y; - z += postLayoutTransformOffsets.z; - } - - build3DMatrix(m, tx, ty, tz, sx, sy, sz, rx, ry, rz, x, y, z); - // Always prepend last - if (stretchX != 1 || stretchY != 1) - m.prependScale(stretchX, stretchY, 1); - - _flags |= COMPUTED_MATRIX3D_VALID; - return m; - } - - - /** - * @private - * convenience function for building a 2D matrix from the convenience properties - */ - public static function build2DMatrix(m:Matrix, - tx:Number,ty:Number, - sx:Number,sy:Number, - rz:Number, - x:Number,y:Number):void - { - m.translate(-tx,-ty); - m.scale(sx,sy); - m.rotate(rz* RADIANS_PER_DEGREES); - m.translate(x+tx,y+ty); - } - - - /** - * @private - * convenience function for building a 3D matrix from the convenience properties - */ - public static function build3DMatrix(m:Matrix3D, - tx:Number,ty:Number,tz:Number, - sx:Number,sy:Number,sz:Number, - rx:Number,ry:Number,rz:Number, - x:Number,y:Number,z:Number):void - { - reVR.x = rx * RADIANS_PER_DEGREES; - reVR.y = ry * RADIANS_PER_DEGREES; - reVR.z = rz * RADIANS_PER_DEGREES; - m.recompose(reV); - if (sx == 0) - sx = ZERO_REPLACEMENT_IN_3D; - if (sy == 0) - sy = ZERO_REPLACEMENT_IN_3D; - if (sz == 0) - sz = ZERO_REPLACEMENT_IN_3D; - m.prependScale(sx,sy,sz); - m.prependTranslation(-tx,-ty,-tz); - m.appendTranslation(tx+x,ty+y,tz+z); - } - - - /** - * A utility method to transform a point specified in the local - * coordinates of this object to its location in the object's parent's - * coordinates. The pre-layout and post-layout result will be set on - * the <code>position</code> and <code>postLayoutPosition</code> - * parameters, if they are non-null. - * - * @param propertyIs3D A boolean reflecting whether the calculation needs - * to take into account the 3D matrix of the object. - * @param localPoint The point to be transformed, specified in the - * local coordinates of the object. - * @position A Vector3D point that will hold the pre-layout - * result. If null, the parameter is ignored. - * @postLayoutPosition A Vector3D point that will hold the post-layout - * result. If null, the parameter is ignored. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4 - */ - public function transformPointToParent(propertyIs3D:Boolean, - localPosition:Vector3D, position:Vector3D, - postLayoutPosition:Vector3D):void - { - var transformedV:Vector3D; - var transformedP:Point; - tempLocalPosition = - localPosition ? - localPosition.clone() : - new Vector3D(); - - if (is3D || propertyIs3D) - { - if (position != null) - { - transformedV = transformVector(layoutMatrix3D, tempLocalPosition); - position.x = transformedV.x; - position.y = transformedV.y; - position.z = transformedV.z; - } - - if (postLayoutPosition != null) - { - // computedMatrix factor in stretchXY, so divide it out of position first - tempLocalPosition.x /= stretchX; - tempLocalPosition.y /= stretchY; - transformedV = transformVector(computedMatrix3D, tempLocalPosition); - postLayoutPosition.x = transformedV.x; - postLayoutPosition.y = transformedV.y; - postLayoutPosition.z = transformedV.z; - } - } - else - { - var localP:Point = new Point(tempLocalPosition.x, - tempLocalPosition.y); - if (position != null) - { - transformedP = layoutMatrix.transformPoint(localP); - position.x = transformedP.x; - position.y = transformedP.y; - position.z = 0; - } - - if (postLayoutPosition != null) - { - // computedMatrix factor in stretchXY, so divide it out of position first - localP.x /= stretchX; - localP.y /= stretchY; - transformedP = computedMatrix.transformPoint(localP); - postLayoutPosition.x = transformedP.x; - postLayoutPosition.y = transformedP.y; - postLayoutPosition.z = 0; - } - } - } - - /** - * @private - * call when you've changed the inputs to the computed transform to make - * any adjustments to keep a particular point fixed in parent coordinates. - */ - private function completeTransformCenterAdjustment(changeIs3D:Boolean, - transformCenter:Vector3D, targetPosition:Vector3D, - targetPostLayoutPosition:Vector3D):void - { - // TODO (chaase): optimize for transformCenter == (0,0,0) - if (is3D || changeIs3D) - { - if (targetPosition != null) - { - var adjustedLayoutCenterV:Vector3D = transformVector(layoutMatrix3D, transformCenter); - if (adjustedLayoutCenterV.equals(targetPosition) == false) - { - layout.translateBy(targetPosition.x - adjustedLayoutCenterV.x, - targetPosition.y - adjustedLayoutCenterV.y, - targetPosition.z - adjustedLayoutCenterV.z); - invalidate(); - } - } - if (targetPostLayoutPosition != null && _postLayoutTransformOffsets != null) - { - // computedMatrix factor in stretchXY, so divide it out of transform center first - var tmpPos:Vector3D = new Vector3D(transformCenter.x, transformCenter.y, transformCenter.z); - tmpPos.x /= stretchX; - tmpPos.y /= stretchY; - var adjustedComputedCenterV:Vector3D = transformVector(computedMatrix3D, tmpPos); - if (adjustedComputedCenterV.equals(targetPostLayoutPosition) == false) - { - postLayoutTransformOffsets.x +=targetPostLayoutPosition.x - adjustedComputedCenterV.x; - postLayoutTransformOffsets.y += targetPostLayoutPosition.y - adjustedComputedCenterV.y; - postLayoutTransformOffsets.z += targetPostLayoutPosition.z - adjustedComputedCenterV.z; - invalidate(); - } - } - } - else - { - var transformCenterP:Point = new Point(transformCenter.x,transformCenter.y); - if (targetPosition != null) - { - var currentPositionP:Point = layoutMatrix.transformPoint(transformCenterP); - if (currentPositionP.x != targetPosition.x || - currentPositionP.y != targetPosition.y) - { - layout.translateBy(targetPosition.x - currentPositionP.x, - targetPosition.y - currentPositionP.y, 0); - invalidate(); - } - } - - if (targetPostLayoutPosition != null && _postLayoutTransformOffsets != null) - { - // computedMatrix factor in stretchXY, so divide it out of transform center first - transformCenterP.x /= stretchX; - transformCenterP.y /= stretchY; - var currentPostLayoutPosition:Point = - computedMatrix.transformPoint(transformCenterP); - if (currentPostLayoutPosition.x != targetPostLayoutPosition.x || - currentPostLayoutPosition.y != targetPostLayoutPosition.y) - { - _postLayoutTransformOffsets.x += targetPostLayoutPosition.x - currentPostLayoutPosition.x; - _postLayoutTransformOffsets.y += targetPostLayoutPosition.y - currentPostLayoutPosition.y; - invalidate(); - } - } - } - } - - private static var staticTranslation:Vector3D = new Vector3D(); - private static var staticOffsetTranslation:Vector3D = new Vector3D(); - - /** - * A utility method to update the rotation and scale of the transform - * while keeping a particular point, specified in the component's own - * coordinate space, fixed in the parent's coordinate space. This - * function will assign the rotation and scale values provided, then - * update the x/y/z properties as necessary to keep tx/ty/tz fixed. - * @param transformCenter the point, in the component's own coordinates, - * to keep fixed relative to its parent. - * @param rotation the new values for the rotation of the transform - * @param scale the new values for the scale of the transform - * @param translation the new values for the translation of the transform - */ - public function transformAround(transformCenter:Vector3D, - scale:Vector3D, - rotation:Vector3D, - transformCenterPosition:Vector3D, - postLayoutScale:Vector3D = null, - postLayoutRotation:Vector3D = null, - postLayoutTransformCenterPosition:Vector3D = null):void - { - var is3D:Boolean = (scale != null && scale.z != 1) || - (rotation != null && ((rotation.x != 0 ) || (rotation.y != 0))) || - (transformCenterPosition != null && transformCenterPosition.z != 0) || - (postLayoutScale != null && postLayoutScale.z != 1) || - (postLayoutRotation != null && - (postLayoutRotation.x != 0 || postLayoutRotation.y != 0)) || - (postLayoutTransformCenterPosition != null && postLayoutTransformCenterPosition.z != 0); - - var needOffsets:Boolean = _postLayoutTransformOffsets == null && - (postLayoutScale != null || postLayoutRotation != null || - postLayoutTransformCenterPosition != null); - if (needOffsets) - _postLayoutTransformOffsets = new TransformOffsets(); - - // now if they gave us a non-trivial transform center, and didn't tell us where they want it, - // we need to calculate where it is so that we can make sure we keep it there. - if (transformCenter != null && - (transformCenterPosition == null || postLayoutTransformCenterPosition == null)) - { - transformPointToParent(is3D, transformCenter, staticTranslation, - staticOffsetTranslation); - if (postLayoutTransformCenterPosition == null && transformCenterPosition != null) - { - staticOffsetTranslation.x = transformCenterPosition.x + staticOffsetTranslation.x - staticTranslation.x; - staticOffsetTranslation.y = transformCenterPosition.y + staticOffsetTranslation.y - staticTranslation.y; - staticOffsetTranslation.z = transformCenterPosition.z + staticOffsetTranslation.z - staticTranslation.z; - } - - } - // if targetPosition/postLayoutTargetPosition is null here, it might be because the caller passed in - // requested values, so we haven't calculated it yet. So that means our target position is the values - // they passed in. - var targetPosition:Vector3D = (transformCenterPosition == null)? staticTranslation:transformCenterPosition; - var postLayoutTargetPosition:Vector3D = (postLayoutTransformCenterPosition == null)? staticOffsetTranslation:postLayoutTransformCenterPosition; - - // now update our transform values. - if (rotation != null) - { - if (!isNaN(rotation.x)) - layout.rotationX = rotation.x; - if (!isNaN(rotation.y)) - layout.rotationY = rotation.y; - if (!isNaN(rotation.z)) - layout.rotationZ = rotation.z; - } - if (scale != null) - { - if (!isNaN(scale.x)) - layout.scaleX = scale.x; - if (!isNaN(scale.y)) - layout.scaleY = scale.y; - if (!isNaN(scale.z)) - layout.scaleZ = scale.z; - } - - if (postLayoutRotation != null) - { - _postLayoutTransformOffsets.rotationX = postLayoutRotation.x; - _postLayoutTransformOffsets.rotationY = postLayoutRotation.y; - _postLayoutTransformOffsets.rotationZ = postLayoutRotation.z; - } - if (postLayoutScale != null) - { - _postLayoutTransformOffsets.scaleX = postLayoutScale.x; - _postLayoutTransformOffsets.scaleY = postLayoutScale.y; - _postLayoutTransformOffsets.scaleZ = postLayoutScale.z; - } - - // if they didn't pass us a transform center, - // then we assume it's the origin. In that case, it's trivially easy - // to make sure the origin is at a particular point...we simply set - // the transformCenterPosition portion of our transforms to that point. - if (transformCenter == null) - { - if (transformCenterPosition != null) - { - layout.x = transformCenterPosition.x; - layout.y = transformCenterPosition.y; - layout.z = transformCenterPosition.z; - } - if (postLayoutTransformCenterPosition != null) - { - _postLayoutTransformOffsets.x = postLayoutTransformCenterPosition.x - layout.x; - _postLayoutTransformOffsets.y = postLayoutTransformCenterPosition.y - layout.y; - _postLayoutTransformOffsets.z = postLayoutTransformCenterPosition.z - layout.z; - } - } - invalidate(); - - // if they did pass in a transform center, go do the adjustments necessary to keep it fixed in place. - if (transformCenter != null) - completeTransformCenterAdjustment(is3D, transformCenter, - targetPosition, postLayoutTargetPosition); - - - } - - } -} - http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7d529524/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/utils/CompoundTransform.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/utils/CompoundTransform.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/utils/CompoundTransform.as deleted file mode 100644 index 4dc546e..0000000 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/utils/CompoundTransform.as +++ /dev/null @@ -1,777 +0,0 @@ -/** - * Licensed 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.core.graphics.utils -{ - import flash.geom.Matrix; - import flash.geom.Matrix3D; - import flash.geom.Vector3D; - - import __AS3__.vec.Vector; - - /** - * A CompoundTransform represents a 2D or 3D matrix transform. A compound transform represents a matrix that can be queried or set either as a 2D matrix, - * a 3D matrix, or as individual convenience transform properties such as x, y, scaleX, rotationZ, etc. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public class CompoundTransform - { - //-------------------------------------------------------------------------- - // - // Constructor - // - //-------------------------------------------------------------------------- - /** - * Constructor. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function CompoundTransform() - { - } - - - - /** - * @private - * storage for transform properties. These values are concatenated together with the layout properties to - * form the actual computed matrix used to render the object. - */ - private var _rotationX:Number = 0; - private var _rotationY:Number = 0; - private var _rotationZ:Number = 0; - private var _scaleX:Number = 1; - private var _scaleY:Number = 1; - private var _scaleZ:Number = 1; - private var _x:Number = 0; - private var _y:Number = 0; - private var _z:Number = 0; - - private var _transformX:Number = 0; - private var _transformY:Number = 0; - private var _transformZ:Number = 0; - - - /** - * @private - * slots for the 2D and 3D matrix transforms. Note that - * these are only allocated and computed on demand -- many component instances will never use a 3D - * matrix, for example. - */ - private var _matrix:Matrix; - private var _matrix3D:Matrix3D; - - - /** - * @private - * bit field flags for indicating which transforms are valid -- the layout properties, the matrices, - * and the 3D matrices. Since developers can set any of the three programmatically, the last one set - * will always be valid, and the others will be invalid until validated on demand. - */ - private static const MATRIX_VALID:uint = 0x20; - private static const MATRIX3D_VALID:uint = 0x40; - private static const PROPERTIES_VALID:uint = 0x80; - - - /** - * @private - * flags for tracking whether the transform is 3D. A transform is 3D if any of the 3D properties -- rotationX/Y, scaleZ, or z -- are set. - */ - private static const IS_3D:uint = 0x200; - private static const M3D_FLAGS_VALID:uint = 0x400; - - /** - * @private - * constants to indicate which form of a transform -- the properties, matrix, or matrix3D -- is - * 'the source of truth.' - */ - public static const SOURCE_PROPERTIES:uint = 1; - /** - * @private - * constants to indicate which form of a transform -- the properties, matrix, or matrix3D -- is - * 'the source of truth.' - */ - public static const SOURCE_MATRIX:uint = 2; - /** - * @private - * constants to indicate which form of a transform -- the properties, matrix, or matrix3D -- is - * 'the source of truth.' - */ - public static const SOURCE_MATRIX3D:uint = 3; - - /** - * @private - * indicates the 'source of truth' for the transform. - */ - public var sourceOfTruth:uint = SOURCE_PROPERTIES; - - /** - * @private - * general storage for all of ur flags. - */ - private var _flags:uint = PROPERTIES_VALID; - - /** - * @private - * flags that get passed to the invalidate method indicating why the invalidation is happening. - */ - private static const INVALIDATE_FROM_NONE:uint = 0; - private static const INVALIDATE_FROM_PROPERTY:uint = 4; - private static const INVALIDATE_FROM_MATRIX:uint = 5; - private static const INVALIDATE_FROM_MATRIX3D:uint = 6; - - /** - * @private - * static data used by utility methods below - */ - private static var decomposition:Vector.<Number> = new Vector.<Number>(); - decomposition.push(0); - decomposition.push(0); - decomposition.push(0); - decomposition.push(0); - decomposition.push(0); - - private static const RADIANS_PER_DEGREES:Number = Math.PI / 180; - - //---------------------------------------------------------------------------- - - /** - * The x value of the transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set x(value:Number):void - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - if (value == _x) - return; - translateBy(value-_x,0,0); - invalidate(INVALIDATE_FROM_PROPERTY, false /*affects3D*/); - } - /** - * @private - */ - public function get x():Number - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - return _x; - } - - /** - * The y value of the transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set y(value:Number):void - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - if (value == _y) - return; - translateBy(0,value-_y,0); - invalidate(INVALIDATE_FROM_PROPERTY, false /*affects3D*/); - } - - /** - * @private - */ - public function get y():Number - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - return _y; - } - - /** - * The z value of the transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set z(value:Number):void - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - if (value == _z) - return; - translateBy(0,0,value-_z); - invalidate(INVALIDATE_FROM_PROPERTY, true /*affects3D*/); - } - - /** - * @private - */ - public function get z():Number - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - return _z; - } - - //------------------------------------------------------------------------------ - - - /** - * The rotationX, in degrees, of the transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set rotationX(value:Number):void - { - // clamp the rotation value between -180 and 180. This is what - // the Flash player does, so let's mimic it here too. - value = MatrixUtil.clampRotation(value); - - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - if (value == _rotationX) - return; - _rotationX = value; - invalidate(INVALIDATE_FROM_PROPERTY, true /*affects3D*/); - } - - /** - * @private - */ - public function get rotationX():Number - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - return _rotationX; - } - - /** - * The rotationY, in degrees, of the transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set rotationY(value:Number):void - { - // clamp the rotation value between -180 and 180. This is what - // the Flash player does, so let's mimic it here too. - value = MatrixUtil.clampRotation(value); - - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - if (value == _rotationY) - return; - _rotationY = value; - invalidate(INVALIDATE_FROM_PROPERTY, true /*affects3D*/); - } - - /** - * @private - */ - public function get rotationY():Number - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - return _rotationY; - } - - /** - * The rotationZ, in degrees, of the transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set rotationZ(value:Number):void - { - // clamp the rotation value between -180 and 180. This is what - // the Flash player does, so let's mimic it here too. - value = MatrixUtil.clampRotation(value); - - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - if (value == _rotationZ) - return; - _rotationZ = value; - invalidate(INVALIDATE_FROM_PROPERTY, false /*affects3D*/); - } - - /** - * @private - */ - public function get rotationZ():Number - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - return _rotationZ; - } - - //------------------------------------------------------------------------------ - - - /** - * The scaleX of the transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set scaleX(value:Number):void - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - if (value == _scaleX) - return; - _scaleX = value; - invalidate(INVALIDATE_FROM_PROPERTY, false /*affects3D*/); - } - - /** - * @private - */ - public function get scaleX():Number - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - return _scaleX; - } - - /** - * The scaleY of the transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set scaleY(value:Number):void - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - if (value == _scaleY) - return; - _scaleY = value; - invalidate(INVALIDATE_FROM_PROPERTY, false /*affects3D*/); - } - - /** - * @private - */ - public function get scaleY():Number - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - return _scaleY; - } - - - /** - * The scaleZ of the transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set scaleZ(value:Number):void - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - if (value == _scaleZ) - return; - _scaleZ = value; - invalidate(INVALIDATE_FROM_PROPERTY, true /*affects3D*/); - } - - /** - * @private - */ - public function get scaleZ():Number - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - return _scaleZ; - } - - - /** - * @private - * returns true if the transform has 3D values. - */ - public function get is3D():Boolean - { - if ((_flags & M3D_FLAGS_VALID) == 0) - update3DFlags(); - return ((_flags & IS_3D) != 0); - } - - //------------------------------------------------------------------------------ - /** - * The x value of the transform center. The transform center is kept fixed as rotation and scale are applied. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set transformX(value:Number):void - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - if (value == _transformX) - return; - _transformX = value; - invalidate(INVALIDATE_FROM_PROPERTY, true /*affects3D*/); - } - - /** - * @private - */ - public function get transformX():Number - { - return _transformX; - } - - //------------------------------------------------------------------------------ - /** - * The y value of the tansform center. The transform center is kept fixed as rotation and scale are applied. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set transformY(value:Number):void - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - if (value == _transformY) - return; - _transformY = value; - invalidate(INVALIDATE_FROM_PROPERTY, true /*affects3D*/); - } - - /** - * @private - */ - public function get transformY():Number - { - return _transformY; - } - //------------------------------------------------------------------------------ - /** - * The z value of the tansform center. The transform center is kept fixed as rotation and scale are applied. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function set transformZ(value:Number):void - { - if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix(); - if (value == _transformZ) - return; - _transformZ = value; - invalidate(INVALIDATE_FROM_PROPERTY, true /*affects3D*/); - } - - /** - * @private - */ - public function get transformZ():Number - { - return _transformZ; - } - - //------------------------------------------------------------------------------ - - /** - * @private - * invalidates our various cached values. Any change to the CompoundTransform object that affects - * the various transforms should call this function. - * @param reason - the code indicating what changes to cause the invalidation. - * @param affects3D - a flag indicating whether the change affects the 2D/3D nature of the various transforms. - * @param dispatchChangeEvent - if true, the CompoundTransform will dispatch a change indicating that its underlying transforms - * have been modified. - */ - private function invalidate(reason:uint, affects3D:Boolean):void - { - //race("invalidating: " + reason); - switch(reason) - { - case INVALIDATE_FROM_PROPERTY: - sourceOfTruth = SOURCE_PROPERTIES; - _flags |= PROPERTIES_VALID; - _flags &= ~MATRIX_VALID; - _flags &= ~MATRIX3D_VALID; - break; - case INVALIDATE_FROM_MATRIX: - sourceOfTruth = SOURCE_MATRIX; - _flags |= MATRIX_VALID; - _flags &= ~PROPERTIES_VALID; - _flags &= ~MATRIX3D_VALID; - break; - case INVALIDATE_FROM_MATRIX3D: - sourceOfTruth = SOURCE_MATRIX3D; - _flags |= MATRIX3D_VALID; - _flags &= ~PROPERTIES_VALID; - _flags &= ~MATRIX_VALID; - break; - } - if (affects3D) - _flags &= ~M3D_FLAGS_VALID; - - } - - private static const EPSILON:Number = .001; - /** - * @private - * updates the flags that indicate whether the layout, offset, and/or computed transforms are 3D in nature. - * Since the user can set either the individual transform properties or the matrices directly, we compute these - * flags based on what the current 'source of truth' is for each of these values. - */ - private function update3DFlags():void - { - if ((_flags & M3D_FLAGS_VALID) == 0) - { - var matrixIs3D:Boolean = false; - - switch(sourceOfTruth) - { - case SOURCE_PROPERTIES: - matrixIs3D = ( // note that rotationZ is the same as rotation, and not a 3D affecting - (Math.abs(_scaleZ-1) > EPSILON) || // property. - ((Math.abs(_rotationX)+EPSILON)%360) > 2*EPSILON || - ((Math.abs(_rotationY)+EPSILON)%360) > 2*EPSILON || - Math.abs(_z) > EPSILON - ); - break; - case SOURCE_MATRIX: - matrixIs3D = false; - break; - case SOURCE_MATRIX3D: - var rawData:Vector.<Number> = _matrix3D.rawData; - matrixIs3D = (rawData[2] != 0 || // rotation y - rawData[6] != 0 || // rotation x - rawData[8] !=0 || // rotation y - rawData[10] != 1 || // scalez / rotation x / rotation y - rawData[14] != 0); // translation z - break; - } - - if (matrixIs3D) - _flags |= IS_3D; - else - _flags &= ~IS_3D; - - _flags |= M3D_FLAGS_VALID; - } - } - - - /** - * Applies the delta to the transform's translation component. Unlike setting the x, y, or z properties directly, - * this method can be safely called without changing the transform's concept of 'the source of truth'. - * - * @param x The x value of the transform. - * - * @param y The y value of the transform. - * - * @param z The z value of the transform. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function translateBy(x:Number,y:Number,z:Number = 0):void - { - if (_flags & MATRIX_VALID) - { - _matrix.tx += x; - _matrix.ty += y; - } - if (_flags & PROPERTIES_VALID) - { - _x += x; - _y += y; - _z += z; - } - if (_flags & MATRIX3D_VALID) - { - var data:Vector.<Number> = _matrix3D.rawData; - data[12] += x; - data[13] += y; - data[14] += z; - _matrix3D.rawData = data; - } - invalidate(INVALIDATE_FROM_NONE, z != 0 /*affects3D*/); - } - - - /** - * The 2D matrix either set directly by the user, or composed by combining the transform center, scale, rotation - * and translation, in that order. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function get matrix():Matrix - { - - if (_flags & MATRIX_VALID) - return _matrix; - - if ((_flags & PROPERTIES_VALID) == false) - validatePropertiesFromMatrix(); - - var m:Matrix = _matrix; - if (m == null) - m = _matrix = new Matrix(); - else - m.identity(); - - AdvancedLayoutFeatures.build2DMatrix(m,_transformX,_transformY, - _scaleX,_scaleY, - _rotationZ, - _x,_y); - _flags |= MATRIX_VALID; - return m; - } - - /** - * @private - */ - public function set matrix(v:Matrix):void - { - if (_matrix== null) - { - _matrix = v.clone(); - } - else - { - _matrix.identity(); - _matrix.concat(v); - } - - // affects3D is true since setting matrix changes the transform to 2D - invalidate(INVALIDATE_FROM_MATRIX, true /*affects3D*/); - } - - /** - * @private - * decomposes the offset transform matrices down into the convenience offset properties. Note that this is not - * a bi-directional transformation -- it is possible to create a matrix that can't be fully represented in the - * convenience properties. This function will pull from the matrix or matrix3D values, depending on which was most - * recently set - */ - private function validatePropertiesFromMatrix():void - { - if (sourceOfTruth == SOURCE_MATRIX3D) - { - var result:Vector.<Vector3D> = _matrix3D.decompose(); - _rotationX = result[1].x / RADIANS_PER_DEGREES; - _rotationY = result[1].y / RADIANS_PER_DEGREES; - _rotationZ = result[1].z / RADIANS_PER_DEGREES; - _scaleX = result[2].x; - _scaleY = result[2].y; - _scaleZ = result[2].z; - - if (_transformX != 0 || _transformY != 0 || _transformZ != 0) - { - var postTransformTCenter:Vector3D = _matrix3D.transformVector(new Vector3D(_transformX,_transformY,_transformZ)); - _x = postTransformTCenter.x - _transformX; - _y = postTransformTCenter.y - _transformY; - _z = postTransformTCenter.z - _transformZ; - } - else - { - _x = result[0].x; - _y = result[0].y; - _z = result[0].z; - } - } - else if (sourceOfTruth == SOURCE_MATRIX) - { - MatrixUtil.decomposeMatrix(decomposition,_matrix,_transformX,_transformY); - _x = decomposition[0]; - _y = decomposition[1]; - _z = 0; - _rotationX = 0; - _rotationY = 0; - _rotationZ = decomposition[2]; - _scaleX = decomposition[3]; - _scaleY = decomposition[4]; - _scaleZ = 1; - } - _flags |= PROPERTIES_VALID; - - } - - - - /** - * The 3D matrix either set directly by the user, or composed by combining the transform center, scale, rotation - * and translation, in that order. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function get matrix3D():Matrix3D - { - if (_flags & MATRIX3D_VALID) - return _matrix3D; - - if ((_flags & PROPERTIES_VALID) == false) - validatePropertiesFromMatrix(); - - var m:Matrix3D = _matrix3D; - if (m == null) - m = _matrix3D = new Matrix3D(); - else - m.identity(); - - AdvancedLayoutFeatures.build3DMatrix(m,transformX,transformY,transformZ, - _scaleX,_scaleY,_scaleZ, - _rotationX,_rotationY,_rotationZ, - _x,_y,_z); - _flags |= MATRIX3D_VALID; - return m; - - } - - /** - * @private - */ - public function set matrix3D(v:Matrix3D):void - { - if (_matrix3D == null) - { - _matrix3D = v.clone(); - } - else - { - _matrix3D.identity(); - if (v) - _matrix3D.append(v); - } - invalidate(INVALIDATE_FROM_MATRIX3D, true /*affects3D*/); - } - - } -} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7d529524/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/utils/IAssetLayoutFeatures.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/utils/IAssetLayoutFeatures.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/utils/IAssetLayoutFeatures.as deleted file mode 100644 index 1e36b60..0000000 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/core/graphics/utils/IAssetLayoutFeatures.as +++ /dev/null @@ -1,371 +0,0 @@ -/** - * Licensed 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.core.graphics.utils -{ - import flash.geom.Matrix; - import flash.geom.Matrix3D; - - - /** - * The IAssetLayoutFeatures interface defines the minimum properties and methods - * required for an Object to support advanced transforms in embedded assets. - * - * @see mx.core.AdvancedLayoutFeatures - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - public interface IAssetLayoutFeatures - { - - /** - * Layout transform convenience property. Represents the x value of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set layoutX(value:Number):void; - - /** - * @private - */ - function get layoutX():Number; - - /** - * Layout transform convenience property. Represents the y value of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set layoutY(value:Number):void; - - /** - * @private - */ - function get layoutY():Number; - - /** - * Layout transform convenience property. Represents the z value of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set layoutZ(value:Number):void; - - /** - * @private - */ - function get layoutZ():Number; - - /** - * Used by the mirroring transform. See the mirror property. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function get layoutWidth():Number; - - /** - * @private - */ - function set layoutWidth(value:Number):void; - - //------------------------------------------------------------------------------ - - /** - * The x value of the point around which any rotation and scale is performed in both the layout and computed matrix. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set transformX(value:Number):void; - /** - * @private - */ - function get transformX():Number; - - /** - * The y value of the point around which any rotation and scale is performed in both the layout and computed matrix. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set transformY(value:Number):void; - - /** - * @private - */ - function get transformY():Number; - - /** - * The z value of the point around which any rotation and scale is performed in both the layout and computed matrix. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set transformZ(value:Number):void; - - /** - * @private - */ - function get transformZ():Number; - - //------------------------------------------------------------------------------ - - /** - * Layout transform convenience property. Represents the rotation around the X axis of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set layoutRotationX(value:Number):void; - - /** - * @private - */ - function get layoutRotationX():Number; - - /** - * Layout transform convenience property. Represents the rotation around the Y axis of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set layoutRotationY(value:Number):void; - - /** - * @private - */ - function get layoutRotationY():Number; - - /** - * Layout transform convenience property. Represents the rotation around the Z axis of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set layoutRotationZ(value:Number):void; - - /** - * @private - */ - function get layoutRotationZ():Number; - - //------------------------------------------------------------------------------ - - /** - * Layout transform convenience property. Represents the scale along the X axis of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set layoutScaleX(value:Number):void; - - /** - * @private - */ - function get layoutScaleX():Number; - - /** - * Layout transform convenience property. Represents the scale along the Y axis of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set layoutScaleY(value:Number):void; - - /** - * @private - */ - function get layoutScaleY():Number; - - /** - * Layout transform convenience property. Represents the scale along the Z axis of the layout matrix used in layout and in - * the computed transform. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set layoutScaleZ(value:Number):void; - - /** - * @private - */ - function get layoutScaleZ():Number; - - /** - * The 2D matrix used during layout calculations to determine the layout and size of the component and its parent and siblings. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set layoutMatrix(value:Matrix):void; - - /** - * @private - */ - function get layoutMatrix():Matrix; - - /** - * The 3D matrix used during layout calculations to determine the layout and size of the component and its parent and siblings. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function set layoutMatrix3D(value:Matrix3D):void; - - /** - * @private - */ - function get layoutMatrix3D():Matrix3D; - - /** - * True if the computed transform has 3D values. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function get is3D():Boolean; - - /** - * True if the layout transform has 3D values. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function get layoutIs3D():Boolean; - - /** - * If true the X axis is scaled by -1 and the x coordinate of the origin - * is translated by the component's width. - * - * The net effect of this "mirror" transform is to flip the direction - * that the X axis increases in without changing the layout element's - * location relative to the parent's origin. - * - * @default false - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function get mirror():Boolean; - - /** - * @private - */ - function set mirror(value:Boolean):void; - - - /** - * The stretchY is the horizontal component of the stretch scale factor which - * is applied before any other transformation property. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function get stretchX():Number; - - /** - * @private - */ - function set stretchX(value:Number):void; - - /** - * The stretchY is the vertical component of the stretch scale factor which - * is applied before any other transformation property. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function get stretchY():Number; - - /** - * @private - */ - function set stretchY(value:Number):void; - - //------------------------------------------------------------------------------ - - /** - * The computed matrix, calculated by combining the layout matrix and any offsets provided. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function get computedMatrix():Matrix; - - /** - * The computed 3D matrix, calculated by combining the 3D layout matrix and any offsets provided. - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4.1 - */ - function get computedMatrix3D():Matrix3D; - } -}