  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-public class SpriteVisualElement extends FlexSprite 
+public class SpriteVisualElement extends FlexSprite
     implements IVisualElement, IID, IFlexModule
 {
     /**

        _viewHeight = value;
    }

	//----------------------------------
	//  resizeMode
	//----------------------------------

	private var _resizeMode:String = ResizeMode.SCALE;

	/**
	 *  @private
	 */
	public function get resizeMode():String
	{
		return _resizeMode;
	}

	/**
	 *  @private
	 */
	public function set resizeMode(value:String):void
	{
		if (_resizeMode == value)
			return;

		_resizeMode = value;

		// When resize mode changes, reapply the current size,
		// so that the correct scale can be calcualted and applied correctly.
		setActualSize(_width, _height);
	}

	//----------------------------------
	//  transform
	//----------------------------------

	/**
	 *  @private
	 */
	override public function get transform():flash.geom.Transform
	{
		if (_transform == null)
		{
			setTransform(new mx.geom.Transform(this));
		}
		return _transform;
	}

	/**
	 * @private
	 */
	override public function set transform(value:flash.geom.Transform):void
	{
		var m:Matrix = value.matrix;
		var m3:Matrix3D =  value.matrix3D;
		var ct:ColorTransform = value.colorTransform;
		var pp:PerspectiveProjection = value.perspectiveProjection;

		var mxTransform:mx.geom.Transform = value as mx.geom.Transform;
		if (mxTransform)
		{
			if (!mxTransform.applyMatrix)
				m = null;
			
			if (!mxTransform.applyMatrix3D)
				m3 = null;
		}
		
		setTransform(value);

		if (m != null)
			setLayoutMatrix(m.clone(), true /*triggerLayoutPass*/);
		else if (m3 != null)
			setLayoutMatrix3D(m3.clone(), true /*triggerLayoutPass*/);

		super.transform.colorTransform = ct;
		super.transform.perspectiveProjection = pp;
	}

	/**
	 *  @private
	 */
	private function setTransform(value:flash.geom.Transform):void
	{
		// Clean up the old transform
		var oldTransform:mx.geom.Transform = _transform as mx.geom.Transform;
		if (oldTransform)
			oldTransform.target = null;

		var newTransform:mx.geom.Transform = value as mx.geom.Transform;

		if (newTransform)
			newTransform.target = this;

		_transform = value;
	}

	/**
	 *  @private
	 */
	mx_internal function get $transform():flash.geom.Transform
	{
		return super.transform;
	}

    /**
     *  Sets the x coordinate for the transform center of the component.
     * 
     *  <p>When this object is the target of a Spark transform effect, 
     *  you can override this property by setting 
     *  the <code>AnimateTransform.autoCenterTransform</code> property.
     *  If <code>autoCenterTransform</code> is <code>false</code>, the transform
     *  center is determined by the <code>transformX</code>,
     *  <code>transformY</code>, and <code>transformZ</code> properties
     *  of the effect target.
     *  If <code>autoCenterTransform</code> is <code>true</code>, 
     *  the effect occurs around the center of the target, 
     *  <code>(width/2, height/2)</code>.</p>
     *
     *  <p>Setting this property on the Spark effect class 
     *  overrides the setting on the target object.</p>
     *  
     *  @see spark.effects.AnimateTransform#autoCenterTransform 
     *  @see spark.effects.AnimateTransform#transformX 
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9
     *  @playerversion AIR 1.1

        if (postLayoutTransform)
        {
            var m:Matrix = nonDeltaLayoutMatrix();
            if (m)
            {
                var size:Point = new Point(width, height);
                height = MatrixUtil.transformSize(size, m).y;
