You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by yi...@apache.org on 2021/08/04 07:52:16 UTC
[royale-asjs] branch develop updated: Try to get ASDoc example to
work by removing some unsued classes that were not ignored by ASDoc
This is an automated email from the ASF dual-hosted git repository.
yishayw pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
The following commit(s) were added to refs/heads/develop by this push:
new 6ce050b Try to get ASDoc example to work by removing some unsued classes that were not ignored by ASDoc
new bd07fe0 Merge branch 'develop' of https://github.com/apache/royale-asjs into develop
6ce050b is described below
commit 6ce050b11e669c9a029d118a861d83387b4cae50
Author: Yishay Weiss <yi...@hotmail.com>
AuthorDate: Wed Aug 4 10:51:42 2021 +0300
Try to get ASDoc example to work by removing some unsued classes that were not ignored by ASDoc
---
.../MXRoyale/src/main/royale/MXRoyaleClasses.as | 2 -
.../src/main/royale/mx/effects/easing/Quintic.as | 135 -
.../royale/mx/managers/PopUpManagerChildList.as | 81 -
.../src/main/royale/SparkRoyaleClasses.as | 19 +-
.../src/main/royale/spark/components/HScrollBar.as | 600 ----
.../royale/spark/components/SkinnableContainer.as | 1 -
.../src/main/royale/spark/components/VScrollBar.as | 581 ----
.../main/royale/spark/components/VideoDisplay.as | 2466 ----------------
.../spark/components/mediaClasses/ScrubBar.as | 276 --
.../spark/components/mediaClasses/VolumeBar.as | 582 ----
.../main/royale/spark/core/SpriteVisualElement.as | 3014 --------------------
.../src/main/royale/spark/effects/Move.as | 4 +-
.../src/main/royale/spark/events/TrackBaseEvent.as | 171 --
.../src/main/royale/spark/filters/BevelFilter.as | 1 -
.../spark/skins/spark/ScrollBarDownButtonSkin.mxml | 133 -
.../spark/skins/spark/ScrollBarUpButtonSkin.mxml | 132 -
.../fullScreen/PlayPauseButtonSkin.mxml | 142 -
.../mediaClasses/fullScreen/ScrubBarSkin.mxml | 135 -
.../mediaClasses/fullScreen/VolumeBarSkin.mxml | 88 -
.../mediaClasses/normal/PlayPauseButtonSkin.mxml | 214 --
.../spark/mediaClasses/normal/ScrubBarSkin.mxml | 178 --
.../spark/mediaClasses/normal/VolumeBarSkin.mxml | 112 -
.../styles/metadata/BasicInheritingTextStyles.as | 606 ----
23 files changed, 4 insertions(+), 9669 deletions(-)
diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
index e790057..da729ca 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
@@ -33,11 +33,9 @@ internal class MXRoyaleClasses
import mx.core.DesignLayer; DesignLayer;
import mx.effects.AnimateProperty; AnimateProperty;
import mx.effects.easing.Cubic; Cubic;
- //import mx.effects.easing.Quintic; Quintic;
import mx.events.StateChangeEvent; StateChangeEvent;
import mx.graphics.BitmapFill; BitmapFill;
import mx.graphics.BitmapFillMode; BitmapFillMode;
- //import mx.managers.PopUpManagerChildList; PopUpManagerChildList;
import mx.core.mx_internal; mx_internal;
import mx.core.ScrollPolicy; ScrollPolicy;
import mx.controls.beads.ToolTipBead; ToolTipBead;
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/effects/easing/Quintic.as b/frameworks/projects/MXRoyale/src/main/royale/mx/effects/easing/Quintic.as
deleted file mode 100644
index 32d4a8f..0000000
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/effects/easing/Quintic.as
+++ /dev/null
@@ -1,135 +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 mx.effects.easing
-{
-
-/**
- * The Spark effects provided as of Flex 4 use classes which implement the
- * IEaser interface instead of the easing functions in classes like Quintic for
- * the earlier Flex 3 effects. To achieve the same functionality of Quintic,
- * create a Power instance with an <code>exponent</code> of 5 and set the
- * <code>easeInFraction</code> appropriately to get the desired result.
- */
-[Alternative(replacement="spark.effects.easing.Power", since="4.0")]
-
-/**
- * The Quintic class defines three easing functions to implement
- * motion with Flex effect classes. The acceleration of motion for a Quintic easing
- * equation is greater than for a Quadratic, Cubic, or Quartic easing equation.
- *
- * For more information, see http://www.robertpenner.com/profmx.
- *
- * @langversion 3.0
- * @playerversion Flash 9
- * @playerversion AIR 1.1
- * @productversion Flex 3
- */
-public class Quintic
-{
- include "../../core/Version.as";
-
- //--------------------------------------------------------------------------
- //
- // Class methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * The <code>easeIn()</code> method starts motion from zero velocity,
- * and then accelerates motion as it executes.
- *
- * @param t Specifies time.
- *
- * @param b Specifies the initial position of a component.
- *
- * @param c Specifies the total change in position of the component.
- *
- * @param d Specifies the duration of the effect, in milliseconds.
- *
- * @return Number corresponding to the position of the component.
- *
- * @langversion 3.0
- * @playerversion Flash 9
- * @playerversion AIR 1.1
- * @productversion Flex 3
- */
- public static function easeIn(t:Number, b:Number,
- c:Number, d:Number):Number
- {
- return c * (t /= d) * t * t * t * t + b;
- }
-
- /**
- * The <code>easeOut()</code> method starts motion fast,
- * and then decelerates motion to a zero velocity as it executes.
- *
- * @param t Specifies time.
- *
- * @param b Specifies the initial position of a component.
- *
- * @param c Specifies the total change in position of the component.
- *
- * @param d Specifies the duration of the effect, in milliseconds.
- *
- * @return Number corresponding to the position of the component.
- *
- * @langversion 3.0
- * @playerversion Flash 9
- * @playerversion AIR 1.1
- * @productversion Flex 3
- */
- public static function easeOut(t:Number, b:Number,
- c:Number, d:Number):Number
- {
- return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
- }
-
- /**
- * The <code>easeInOut()</code> method combines the motion
- * of the <code>easeIn()</code> and <code>easeOut()</code> methods
- * to start the motion from a zero velocity, accelerate motion,
- * then decelerate to a zero velocity.
- *
- * @param t Specifies time.
- *
- * @param b Specifies the initial position of a component.
- *
- * @param c Specifies the total change in position of the component.
- *
- * @param d Specifies the duration of the effect, in milliseconds.
- *
- * @return Number corresponding to the position of the component.
- *
- * @langversion 3.0
- * @playerversion Flash 9
- * @playerversion AIR 1.1
- * @productversion Flex 3
- */
- public static function easeInOut(t:Number, b:Number,
- c:Number, d:Number):Number
- {
- if ((t /= d / 2) < 1)
- return c / 2 * t * t * t * t * t + b;
-
- return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
- }
-}
-
-}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/managers/PopUpManagerChildList.as b/frameworks/projects/MXRoyale/src/main/royale/mx/managers/PopUpManagerChildList.as
deleted file mode 100644
index 1e753cd..0000000
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/managers/PopUpManagerChildList.as
+++ /dev/null
@@ -1,81 +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 mx.managers
-{
-
-/**
- * The PopUpManagerChildList class defines the constant values for
- * the <code>detail</code> property of the
- * PopUpManager <code>addPopUp()</code> and <code>createPopUp()</code>
- * methods.
- *
- * @see PopUpManager
- *
- * @langversion 3.0
- * @playerversion Flash 9
- * @playerversion AIR 1.1
- * @productversion Flex 3
- */
-public final class PopUpManagerChildList
-{
- include "../core/Version.as";
-
- //--------------------------------------------------------------------------
- //
- // Class constants
- //
- //--------------------------------------------------------------------------
-
- /**
- * Indicates that the popup is placed in the same child list as the
- * application.
- *
- * @langversion 3.0
- * @playerversion Flash 9
- * @playerversion AIR 1.1
- * @productversion Flex 3
- */
- public static const APPLICATION:String = "application";
-
- /**
- * Indicates that the popup is placed in the popup child list
- * which will cause it to float over other popups in the application
- * layer.
- *
- * @langversion 3.0
- * @playerversion Flash 9
- * @playerversion AIR 1.1
- * @productversion Flex 3
- */
- public static const POPUP:String = "popup";
-
- /**
- * Indicates that the popup is placed in whatever child list the
- * parent component is in.
- *
- * @langversion 3.0
- * @playerversion Flash 9
- * @playerversion AIR 1.1
- * @productversion Flex 3
- */
- public static const PARENT:String = "parent";
-}
-
-}
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as b/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
index 9f2775b..d5cd1ec 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
@@ -27,14 +27,8 @@ package
*/
internal class SparkRoyaleClasses
{
- //import spark.components.HScrollBar; HScrollBar;
- //import spark.components.VScrollBar; VScrollBar;
- //import spark.core.SpriteVisualElement; SpriteVisualElement;
//import spark.events.RendererExistenceEvent; RendererExistenceEvent;
- //import spark.events.TrackBaseEvent; TrackBaseEvent;
//import spark.primitives.Graphic; Graphic;
- //import spark.skins.spark.ScrollBarDownButtonSkin; ScrollBarDownButtonSkin;
- //import spark.skins.spark.ScrollBarUpButtonSkin; ScrollBarUpButtonSkin;
import spark.events.IndexChangeEvent; IndexChangeEvent;
import spark.events.TextOperationEvent; TextOperationEvent;
import spark.components.supportClasses.DropDownListBase; DropDownListBase;
@@ -107,19 +101,10 @@ internal class SparkRoyaleClasses
import spark.components.IItemRenderer; IItemRenderer;
-//import spark.components.VideoDisplay; VideoDisplay;
-//import spark.components.mediaClasses.ScrubBar; ScrubBar;
-//import spark.components.mediaClasses.VolumeBar; VolumeBar;
import spark.effects.easing.IEaser; IEaser;
-import spark.events.TitleWindowBoundsEvent; TitleWindowBoundsEvent; // needed
+import spark.events.TitleWindowBoundsEvent; TitleWindowBoundsEvent;
import spark.components.IItemRendererOwner; IItemRendererOwner;
-//import spark.skins.spark.mediaClasses.fullScreen.PlayPauseButtonSkin; PlayPauseButtonSkin;
-//import spark.skins.spark.mediaClasses.fullScreen.ScrubBarSkin; ScrubBarSkin;
-//import spark.skins.spark.mediaClasses.fullScreen.VolumeBarSkin; VolumeBarSkin;
-//import spark.skins.spark.mediaClasses.normal.PlayPauseButtonSkin; PlayPauseButtonSkin;
-//import spark.skins.spark.mediaClasses.normal.ScrubBarSkin; ScrubBarSkin;
-//import spark.skins.spark.mediaClasses.normal.VolumeBarSkin; VolumeBarSkin;
-import spark.utils.LabelUtil; LabelUtil; // needed
+import spark.utils.LabelUtil; LabelUtil;
import spark.components.ResizeMode; ResizeMode;
import spark.filters.BevelFilter; BevelFilter;
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/HScrollBar.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/HScrollBar.as
deleted file mode 100644
index 51b76c4..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/HScrollBar.as
+++ /dev/null
@@ -1,600 +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 spark.components
-{
-import org.apache.royale.events.Event;
-import org.apache.royale.events.MouseEvent;
-import org.apache.royale.geom.Point;
-
-import mx.core.EventPriority;
-import mx.core.IInvalidating;
-import mx.core.InteractionMode;
-import mx.core.mx_internal;
-import mx.events.FlexMouseEvent;
-import mx.events.PropertyChangeEvent;
-import mx.events.ResizeEvent;
-
-import spark.components.supportClasses.ScrollBarBase;
-import spark.core.IViewport;
-import spark.core.NavigationUnit;
-import spark.utils.MouseEventUtil;
-
-use namespace mx_internal;
-
-//--------------------------------------
-// Events
-//--------------------------------------
-
-/**
- * Dispatched when the <code>horizontalScrollPosition</code> is going
- * to change due to a <code>mouseWheel</code> event.
- *
- * <p>The default behavior is to scroll horizontally by the event
- * <code>delta</code> number of "steps".
- * The viewport's <code>getHorizontalScrollPositionDelta</code> method using
- * either <code>LEFT</code> or <code>RIGHT</code>, depending on the scroll
- * direction, determines the width of the step.</p>
- *
- * <p>Calling the <code>preventDefault()</code> method
- * on the event prevents the horizontal scroll position from changing.
- * Otherwise if you modify the <code>delta</code> property of the event,
- * that value will be used as the number horizontal of "steps".</p>
- *
- * @eventType mx.events.FlexMouseEvent.MOUSE_WHEEL_CHANGING
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 2.5
- * @productversion Flex 4.5
- */
-[Event(name="mouseWheelChanging", type="mx.events.FlexMouseEvent")]
-
-//--------------------------------------
-// Other metadata
-//--------------------------------------
-
-[IconFile("HScrollBar.png")]
-[DefaultTriggerEvent("change")]
-
-/**
- * The HScrollBar (horizontal scrollbar) control lets you control
- * the portion of data that is displayed when there is too much data
- * to fit horizontally in a display area.
- *
- * <p>Although you can use the HScrollBar control as a stand-alone control,
- * you usually combine it as part of another group of components to
- * provide scrolling functionality.</p>
- *
- * <p>The HScrollBar control has the following default characteristics:</p>
- * <table class="innertable">
- * <tr>
- * <th>Characteristic</th>
- * <th>Description</th>
- * </tr>
- * <tr>
- * <td>Default size</td>
- * <td>85 pixels wide by 15 pixels high</td>
- * </tr>
- * <tr>
- * <td>Minimum size</td>
- * <td>35 pixels wide and 35 pixels high</td>
- * </tr>
- * <tr>
- * <td>Maximum size</td>
- * <td>10000 pixels wide and 10000 pixels high</td>
- * </tr>
- * <tr>
- * <td>Default skin classes</td>
- * <td>spark.skins.spark.HScrollBarSkin
- * <p>spark.skins.spark.HScrollBarThumbSkin</p>
- * <p>spark.skins.spark.HScrollBarTrackSkin</p></td>
- * </tr>
- * </table>
- *
- * @mxml
- * <p>The <code><s:HScrollBar></code> tag inherits all of the tag
- * attributes of its superclass and adds the following tag attributes:</p>
- *
- * <pre>
- * <s:HScrollBar
- *
- * <strong>Properties</strong>
- * viewport=""
- * />
- * </pre>
- *
- * @see spark.skins.spark.HScrollBarSkin
- * @see spark.skins.spark.HScrollBarThumbSkin
- * @see spark.skins.spark.HScrollBarTrackSkin
- *
- * @includeExample examples/HScrollBarExample.mxml
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-public class HScrollBar extends ScrollBarBase
-{
- include "../core/Version.as";
-
- //--------------------------------------------------------------------------
- //
- // Constructor
- //
- //--------------------------------------------------------------------------
-
- /**
- * Constructor.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function HScrollBar()
- {
- super();
- }
-
- //--------------------------------------------------------------------------
- //
- // Overridden properties
- //
- //--------------------------------------------------------------------------
-
- private function updateMaximumAndPageSize():void
- {
- var hsp:Number = viewport.horizontalScrollPosition;
- var viewportWidth:Number = isNaN(viewport.width) ? 0 : viewport.width;
- // Special case: if contentWidth is 0, assume that it hasn't been
- // updated yet. Making the maximum==hsp here avoids trouble later
- // when Range constrains value
- var cWidth:Number = viewport.contentWidth;
-
- if (getStyle("interactionMode") == InteractionMode.TOUCH)
- {
- // For mobile, we allow the min/max to extend a little beyond the ends so
- // we can support bounce/pull kinetic effects.
- minimum = -viewportWidth;
- maximum = (cWidth == 0) ? hsp + viewportWidth : cWidth;
- }
- else
- {
- minimum = 0;
- maximum = (cWidth == 0) ? hsp : cWidth - viewportWidth;
- }
-
-
- pageSize = viewportWidth;
- }
-
- /**
- * The viewport controlled by this scrollbar.
- *
- * @default null
- *
- * @see spark.core.IViewport
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- *
- */
- override public function set viewport(newViewport:IViewport):void
- {
-
- const oldViewport:IViewport = super.viewport;
- if (oldViewport == newViewport)
- return;
-
- if (oldViewport)
- {
- oldViewport.removeEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
- removeEventListener(MouseEvent.MOUSE_WHEEL, hsb_mouseWheelHandler, true);
- }
-
- super.viewport = newViewport;
-
- if (newViewport)
- {
- updateMaximumAndPageSize()
- value = newViewport.horizontalScrollPosition;
-
- // The HSB viewport mouse wheel listener is added at a low priority so that
- // if a VSB installs a listener it will run first and cancel the event.
- newViewport.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler, false, EventPriority.DEFAULT_HANDLER);
-
- // The HSB mouse wheel listener stops propagation and redispatches its event,
- // so we listen during the capture phase.
- addEventListener(MouseEvent.MOUSE_WHEEL, hsb_mouseWheelHandler, true);
- }
- }
-
- //--------------------------------------------------------------------------
- //
- // Methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * @private
- */
- override protected function pointToValue(x:Number, y:Number):Number
- {
- if (!thumb || !track)
- return 0;
-
- var r:Number = track.getLayoutBoundsWidth() - thumb.getLayoutBoundsWidth();
- return minimum + ((r != 0) ? (x / r) * (maximum - minimum) : 0);
- }
-
- /**
- * @private
- */
- override protected function updateSkinDisplayList():void
- {
- if (!thumb || !track)
- return;
-
- var trackSize:Number = track.getLayoutBoundsWidth();
-
- var min:Number;
- var max:Number;
- if (getStyle("interactionMode") == InteractionMode.TOUCH && viewport)
- {
- // For calculating thumb position/size on mobile, we want to exclude
- // the extra margin we added to minimum and maximum for bounce/pull.
- var viewportWidth:Number = isNaN(viewport.width) ? 0 : viewport.width;
-
- min = 0;
- max = Math.max(0, maximum - viewportWidth);
- }
- else
- {
- min = minimum;
- max = maximum;
- }
- var range:Number = max - min;
-
- var fixedThumbSize:Boolean = !(getStyle("fixedThumbSize") === false);
- var thumbPos:Point;
- var thumbPosTrackX:Number = 0;
- var thumbPosParentX:Number = 0;
- var thumbSize:Number = trackSize;
- if (range > 0)
- {
- if (!fixedThumbSize)
- {
- thumbSize = Math.min((pageSize / (range + pageSize)) * trackSize, trackSize)
- thumbSize = Math.max(thumb.minWidth, thumbSize);
- }
- else
- {
- thumbSize = thumb ? thumb.width : 0;
- }
-
- // calculate new thumb position.
- thumbPosTrackX = (pendingValue - min) * ((trackSize - thumbSize) / range);
- }
-
- // Special thumb behavior for bounce/pull. When the component is positioned
- // beyond its min/max, we want the scroll thumb to shink in size.
- // Note: not checking interactionMode==TOUCH here because it is assumed that
- // value will never exceed min/max unless in touch mode.
- if (pendingValue < min)
- {
- if (!fixedThumbSize)
- {
- // The minimum size we'll shrink the thumb to is either thumb.minWidth or thumbSize: whichever is smaller.
- thumbSize = Math.max(Math.min(thumb.minWidth, thumbSize), thumbSize + pendingValue);
- }
- thumbPosTrackX = min;
- }
- if (pendingValue > max)
- {
- if (!fixedThumbSize)
- {
- // The minimum size we'll shrink the thumb to is either thumb.minWidth or thumbSize: whichever is smaller.
- thumbSize = Math.max(Math.min(thumb.minWidth, thumbSize), thumbSize - (pendingValue - max));
- }
- thumbPosTrackX = trackSize - thumbSize;
- }
-
- if (!fixedThumbSize)
- thumb.setLayoutBoundsSize(thumbSize, NaN);
- if (getStyle("autoThumbVisibility") === true)
- thumb.visible = thumbSize < trackSize;
-
- // convert thumb position to parent's coordinates.
- thumbPos = track.localToGlobal(new Point(thumbPosTrackX, 0));
- if (thumb.parent)
- thumbPosParentX = thumb.parent.globalToLocal(thumbPos).x;
-
- thumb.setLayoutBoundsPosition(Math.round(thumbPosParentX), thumb.getLayoutBoundsY());
- }
-
- /**
- * Updates the <code>value</code> property and, if viewport is non-null, sets
- * its <code>horizontalScrollPosition</code> to <code>value</code>.
- *
- * @param value The new value of the <code>value</code> property.
- * @see #viewport
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- override protected function setValue(value:Number):void
- {
- super.setValue(value);
- if (viewport)
- viewport.horizontalScrollPosition = value;
- }
-
-
- /**
- * Increment <code>value</code> by a page if <code>increase</code> is <code>true</code>,
- * or decrement <code>value</code> by a page if <code>increase</code> is <code>false</code>.
- * Increasing the scrollbar's <code>value</code> scrolls the viewport to the right.
- * Decreasing the <code>value</code> scrolls to the viewport to the left.
- *
- * <p>If the <code>viewport</code> property is set, then its
- * <code>getHorizontalScrollPositionDelta()</code> method
- * is used to compute the size of the page increment.
- * If <code>viewport</code> is null, then the scrollbar's
- * <code>pageSize</code> property is used.</p>
- *
- * @param increase Whether to increment (<code>true</code>) or
- * decrement (<code>false</code>) <code>value</code>.
- *
- * @see spark.components.supportClasses.ScrollBarBase#changeValueByPage()
- * @see spark.components.supportClasses.Range#setValue()
- * @see spark.core.IViewport
- * @see spark.core.IViewport#horizontalScrollPosition
- * @see spark.core.IViewport#getHorizontalScrollPositionDelta()
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- override public function changeValueByPage(increase:Boolean = true):void
- {
- var oldPageSize:Number;
- if (viewport)
- {
- // Want to use ScrollBarBase's changeValueByPage() implementation to get the same
- // animated behavior for scrollbars with and without viewports.
- // For now, just change pageSize temporarily and call the superclass
- // implementation.
- oldPageSize = pageSize;
- pageSize = Math.abs(viewport.getHorizontalScrollPositionDelta(
- (increase) ? NavigationUnit.PAGE_RIGHT : NavigationUnit.PAGE_LEFT));
- }
- super.changeValueByPage(increase);
- if (viewport)
- pageSize = oldPageSize;
- }
-
- /**
- * @private
- */
- override protected function animatePaging(newValue:Number, pageSize:Number):void
- {
- if (viewport)
- {
- var vpPageSize:Number = Math.abs(viewport.getHorizontalScrollPositionDelta(
- (newValue > value) ? NavigationUnit.PAGE_RIGHT : NavigationUnit.PAGE_LEFT));
- super.animatePaging(newValue, vpPageSize);
- return;
- }
- super.animatePaging(newValue, pageSize);
- }
-
- /**
- * If <code>viewport</code> is not null,
- * changes the horizontal scroll position for a line up
- * or line down operation by
- * scrolling the viewport.
- * This method calculates the amount to scroll by calling the
- * <code>IViewport.getHorizontalScrollPositionDelta()</code> method
- * with either <code>flash.ui.Keyboard.RIGHT</code>
- * or <code>flash.ui.Keyboard.LEFT</code>.
- * It then calls the <code>setValue()</code> method to
- * set the <code>IViewport.horizontalScrollPosition</code> property
- * to the appropriate value.
- *
- * <p>If <code>viewport</code> is null,
- * calling this method changes the scroll position for a line up
- * or line down operation by calling
- * the <code>changeValueByStep()</code> method.</p>
- *
- * @param increase Whether the line scoll is up (<code>true</code>) or
- * down (<code>false</code>).
- *
- * @see spark.components.supportClasses.Range#changeValueByStep()
- * @see spark.components.supportClasses.Range#setValue()
- * @see spark.core.IViewport
- * @see spark.core.IViewport#horizontalScrollPosition
- * @see spark.core.IViewport#getHorizontalScrollPositionDelta()
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- override public function changeValueByStep(increase:Boolean = true):void
- {
- var oldStepSize:Number;
- if (viewport)
- {
- // Want to use ScrollBarBase's changeValueByStep() implementation to get the same
- // animated behavior for scrollbars with and without viewports.
- // For now, just change stepSize temporarily and call the superclass
- // implementation.
- oldStepSize = stepSize;
- stepSize = Math.abs(viewport.getHorizontalScrollPositionDelta(
- (increase) ? NavigationUnit.RIGHT : NavigationUnit.LEFT));
- }
- super.changeValueByStep(increase);
- if (viewport)
- stepSize = oldStepSize;
- }
-
- /**
- * @private
- */
- override protected function partAdded(partName:String, instance:Object):void
- {
- if (instance == thumb)
- {
- thumb.setConstraintValue("left", undefined);
- thumb.setConstraintValue("right", undefined);
- thumb.setConstraintValue("horizontalCenter", undefined);
- }
-
- super.partAdded(partName, instance);
- }
-
- /**
- * @private
- * Set this scrollbar's value to the viewport's current horizontalScrollPosition.
- */
- override mx_internal function viewportHorizontalScrollPositionChangeHandler(event:PropertyChangeEvent):void
- {
- if (viewport)
- value = viewport.horizontalScrollPosition;
- }
-
- /**
- * @private
- * Set this scrollbar's maximum to the viewport's contentWidth
- * less the viewport width and its pageSize to the viewport's width.
- */
- override mx_internal function viewportResizeHandler(event:ResizeEvent):void
- {
- if (viewport)
- updateMaximumAndPageSize();
- }
-
- /**
- * @private
- * Set this scrollbar's maximum to the viewport's contentWidth less the viewport width.
- */
- override mx_internal function viewportContentWidthChangeHandler(event:PropertyChangeEvent):void
- {
- if (viewport)
- {
- if (getStyle("interactionMode") == InteractionMode.TOUCH)
- {
- updateMaximumAndPageSize();
- }
- else
- {
- // SDK-28898: reverted previous behavior for desktop, resets
- // scroll position to zero when all content is removed.
- maximum = viewport.contentWidth - viewport.width;
- }
- }
- }
-
- /**
- * @private
- */
- override public function styleChanged(styleName:String):void
- {
- super.styleChanged(styleName);
-
- var allStyles:Boolean = !styleName || styleName == "styleName";
-
- if (allStyles || styleName == "interactionMode")
- {
- if (viewport)
- updateMaximumAndPageSize();
- }
- }
-
- /**
- * @private
- * Scroll horizontally by event.delta "steps". This listener is added to the viewport
- * at a lower priority then the vertical scrollbar mouse wheel listener, so that vertical
- * scrolling is preferred when both scrollbars exist.
- */
- mx_internal function mouseWheelHandler(event:MouseEvent):void
- {
- const vp:IViewport = viewport;
- if (event.isDefaultPrevented() || !vp || !vp.visible || !visible)
- return;
-
- // Dispatch the "mouseWheelChanging" event. If preventDefault() is called
- // on this event, the event will be cancelled. Otherwise if the delta
- // is modified the new value will be used.
- var changingEvent:FlexMouseEvent = MouseEventUtil.createMouseWheelChangingEvent(event);
- if (!dispatchEvent(changingEvent))
- {
- event.preventDefault();
- return;
- }
-
- const delta:int = changingEvent.delta;
-
- var nSteps:uint = Math.abs(delta);
- var navigationUnit:uint;
- var scrollPositionChanged:Boolean;
-
- // Scroll delta "steps".
- navigationUnit = (delta < 0) ? NavigationUnit.RIGHT : NavigationUnit.LEFT;
- for (var hStep:int = 0; hStep < nSteps; hStep++)
- {
- var hspDelta:Number = vp.getHorizontalScrollPositionDelta(navigationUnit);
- if (!isNaN(hspDelta))
- {
- vp.horizontalScrollPosition += hspDelta;
- scrollPositionChanged = true;
- if (vp is IInvalidating)
- IInvalidating(vp).validateNow();
- }
- }
-
- if (scrollPositionChanged)
- dispatchEvent(new Event(Event.CHANGE));
-
- event.preventDefault();
- }
-
- /**
- * @private
- * Redispatch HSB mouse wheel events to the viewport to give the VSB's listener, if any,
- * an opportunity to handle/cancel them. If no VSB exists, mouseWheelHandler (see above)
- * will process the event.
- */
- private function hsb_mouseWheelHandler(event:MouseEvent):void
- {
- const vp:IViewport = viewport;
- if (event.isDefaultPrevented() || !vp || !vp.visible)
- return;
-
- event.stopImmediatePropagation();
- vp.dispatchEvent(event);
- }
-}
-}
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/SkinnableContainer.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/SkinnableContainer.as
index 509472b..247316b 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/SkinnableContainer.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/SkinnableContainer.as
@@ -100,7 +100,6 @@ import org.apache.royale.utils.loadBeadFromValuesManager;
*/
//[Event(name="elementRemove", type="spark.events.ElementExistenceEvent")]
- include "../styles/metadata/BasicInheritingTextStyles.as"
/*include "../styles/metadata/AdvancedInheritingTextStyles.as"
include "../styles/metadata/SelectionFormatTextStyles.as"
*/
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/VScrollBar.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/VScrollBar.as
deleted file mode 100644
index 268d21b..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/VScrollBar.as
+++ /dev/null
@@ -1,581 +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 spark.components
-{
-import org.apache.royale.events.Event;
-import org.apache.royale.events.MouseEvent;
-import org.apache.royale.geom.Point;
-
-import mx.core.IInvalidating;
-import mx.core.InteractionMode;
-import mx.core.mx_internal;
-import mx.events.FlexMouseEvent;
-import mx.events.PropertyChangeEvent;
-import mx.events.ResizeEvent;
-
-import spark.components.supportClasses.ScrollBarBase;
-import spark.core.IViewport;
-import spark.core.NavigationUnit;
-import spark.utils.MouseEventUtil;
-
-use namespace mx_internal;
-
-//--------------------------------------
-// Events
-//--------------------------------------
-
-/**
- * Dispatched when the <code>verticalScrollPosition</code> is going
- * to change due to a <code>mouseWheel</code> event.
- *
- * <p>The default behavior is to scroll vertically by the event
- * <code>delta</code> number of "steps".
- * The viewport's <code>getVerticalScrollPositionDelta</code> method using
- * either <code>UP</code> or <code>DOWN</code>, depending on the scroll
- * direction, determines the height of the step.</p>
- *
- * <p>Calling the <code>preventDefault()</code> method
- * on the event prevents the vertical scroll position from changing.
- * Otherwise if you modify the <code>delta</code> property of the event,
- * that value will be used as the number of vertical "steps".</p>
- *
- * @eventType mx.events.FlexMouseEvent.MOUSE_WHEEL_CHANGING
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 2.5
- * @productversion Flex 4.5
- */
-[Event(name="mouseWheelChanging", type="mx.events.FlexMouseEvent")]
-
-//--------------------------------------
-// Other metadata
-//--------------------------------------
-
-[IconFile("VScrollBar.png")]
-[DefaultTriggerEvent("change")]
-
-/**
- * The VScrollBar (vertical scrollbar) control lets you control
- * the portion of data that is displayed when there is too much data
- * to fit vertically in a display area.
- *
- * <p>Although you can use the VScrollBar control as a stand-alone control,
- * you usually combine it as part of another group of components to
- * provide scrolling functionality.</p>
- *
- * <p>The VScrollBar control has the following default characteristics:</p>
- * <table class="innertable">
- * <tr>
- * <th>Characteristic</th>
- * <th>Description</th>
- * </tr>
- * <tr>
- * <td>Default size</td>
- * <td>15 pixels wide by 85 pixels high</td>
- * </tr>
- * <tr>
- * <td>Minimum size</td>
- * <td>15 pixels wide and 15 pixels high</td>
- * </tr>
- * <tr>
- * <td>Maximum size</td>
- * <td>10000 pixels wide and 10000 pixels high</td>
- * </tr>
- * <tr>
- * <td>Default skin classes</td>
- * <td>spark.skins.spark.VScrollBarSkin
- * <p>spark.skins.spark.VScrollBarThumbSkin</p>
- * <p>spark.skins.spark.VScrollBarTrackSkin</p></td>
- * </tr>
- * </table>
- *
- * @mxml
- * <p>The <code><s:VScrollBar></code> tag inherits all of the tag
- * attributes of its superclass and adds the following tag attributes:</p>
- *
- * <pre>
- * <s:VScrollBar
- * <strong>Properties</strong>
- * viewport=""
- * />
- * </pre>
- *
- * @includeExample examples/VScrollBarExample.mxml
- *
- * @see spark.skins.spark.VScrollBarSkin
- * @see spark.skins.spark.VScrollBarThumbSkin
- * @see spark.skins.spark.VScrollBarTrackSkin
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-public class VScrollBar extends ScrollBarBase
-{
- include "../core/Version.as";
-
- //--------------------------------------------------------------------------
- //
- // Constructor
- //
- //--------------------------------------------------------------------------
-
- /**
- * Constructor.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function VScrollBar()
- {
- super();
- }
-
- //--------------------------------------------------------------------------
- //
- // Overridden properties
- //
- //--------------------------------------------------------------------------
-
- private function updateMaximumAndPageSize():void
- {
- var vsp:Number = viewport.verticalScrollPosition;
- var viewportHeight:Number = isNaN(viewport.height) ? 0 : viewport.height;
- // Special case: if contentHeight is 0, assume that it hasn't been
- // updated yet. Making the maximum==vsp here avoids trouble later
- // when Range constrains value
- var cHeight:Number = viewport.contentHeight;
-
- if (getStyle("interactionMode") == InteractionMode.TOUCH)
- {
- // For mobile, we allow the min/max to extend a little beyond the ends so
- // we can support bounce/pull kinetic effects.
- minimum = -viewportHeight;
- maximum = (cHeight == 0) ? vsp + viewportHeight : cHeight;
- }
- else
- {
- minimum = 0;
- maximum = (cHeight == 0) ? vsp : cHeight - viewportHeight;
- }
-
- pageSize = viewportHeight;
- }
-
- /**
- * The viewport controlled by this scrollbar.
- *
- * @default null
- * @see spark.core.IViewport
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- *
- */
- override public function set viewport(newViewport:IViewport):void
- {
- const oldViewport:IViewport = super.viewport;
- if (oldViewport == newViewport)
- return;
-
- if (oldViewport)
- {
- oldViewport.removeEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
- removeEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
- }
-
- super.viewport = newViewport;
-
- if (newViewport)
- {
- updateMaximumAndPageSize()
- value = newViewport.verticalScrollPosition;;
- newViewport.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
- addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
- }
- }
-
- //--------------------------------------------------------------------------
- //
- // Methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * @private
- */
- override protected function pointToValue(x:Number, y:Number):Number
- {
- if (!thumb || !track)
- return 0;
-
- var r:Number = track.getLayoutBoundsHeight() - thumb.getLayoutBoundsHeight();
- return minimum + ((r != 0) ? (y / r) * (maximum - minimum) : 0);
- }
-
- /**
- * @private
- */
- override protected function updateSkinDisplayList():void
- {
- if (!thumb || !track)
- return;
-
- var trackSize:Number = track.getLayoutBoundsHeight();
-
- var min:Number;
- var max:Number;
- if (getStyle("interactionMode") == InteractionMode.TOUCH && viewport)
- {
- // For calculating thumb position/size on mobile, we want to exclude
- // the extra margin we added to minimum and maximum for bounce/pull.
- var viewportHeight:Number = isNaN(viewport.height) ? 0 : viewport.height;
-
- min = 0;
- max = Math.max(0, maximum - viewportHeight);
- }
- else
- {
- min = minimum;
- max = maximum;
- }
- var range:Number = max - min;
-
- var fixedThumbSize:Boolean = !(getStyle("fixedThumbSize") === false);
- var thumbPos:Point;
- var thumbPosTrackY:Number = 0;
- var thumbPosParentY:Number = 0;
- var thumbSize:Number = trackSize;
- if (range > 0)
- {
- if (!fixedThumbSize)
- {
- thumbSize = Math.min((pageSize / (range + pageSize)) * trackSize, trackSize);
- thumbSize = Math.max(thumb.minHeight, thumbSize);
- }
- else
- {
- thumbSize = thumb ? thumb.height : 0;
- }
-
- // calculate new thumb position.
- thumbPosTrackY = (pendingValue - min) * ((trackSize - thumbSize) / range);
- }
-
- // Special thumb behavior for bounce/pull. When the component is positioned
- // beyond its min/max, we want the scroll thumb to shink in size.
- // Note: not checking interactionMode==TOUCH here because it is assumed that
- // value will never exceed min/max unless in touch mode.
- if (pendingValue < min)
- {
- if (!fixedThumbSize)
- {
- // The minimum size we'll shrink the thumb to is either thumb.minHeight or thumbSize: whichever is smaller.
- thumbSize = Math.max(Math.min(thumb.minHeight, thumbSize), thumbSize + pendingValue);
- }
- thumbPosTrackY = min;
- }
- if (pendingValue > max)
- {
- if (!fixedThumbSize)
- {
- // The minimum size we'll shrink the thumb to is either thumb.minHeight or thumbSize: whichever is smaller.
- thumbSize = Math.max(Math.min(thumb.minHeight, thumbSize), thumbSize - (pendingValue - max));
- }
- thumbPosTrackY = trackSize - thumbSize;
- }
-
- if (!fixedThumbSize)
- thumb.setLayoutBoundsSize(NaN, thumbSize);
- if (getStyle("autoThumbVisibility") === true)
- thumb.visible = thumbSize < trackSize;
-
- // convert thumb position to parent's coordinates.
- thumbPos = track.localToGlobal(new Point(0, thumbPosTrackY));
- if (thumb.parent)
- thumbPosParentY = thumb.parent.globalToLocal(thumbPos).y;
-
- thumb.setLayoutBoundsPosition(thumb.getLayoutBoundsX(), Math.round(thumbPosParentY));
- }
-
-
- /**
- * Updates the value property and, if <code>viewport</code> is non null, then sets
- * its <code>verticalScrollPosition</code> to <code>value</code>.
- *
- * @param value The new value of the <code>value</code> property.
- * @see #viewport
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- override protected function setValue(value:Number):void
- {
- super.setValue(value);
- if (viewport)
- viewport.verticalScrollPosition = value;
- }
-
- /**
- * Increment <code>value</code> by a page if <code>increase</code> is <code>true</code>,
- * or decrement <code>value</code> by a page if <code>increase</code> is <code>false</code>.
- * Increasing the scrollbar's <code>value</code> scrolls the viewport up.
- * Decreasing the <code>value</code> scrolls to the viewport down.
- *
- * <p>If the <code>viewport</code> property is set, then its
- * <code>getVerticalScrollPositionDelta()</code> method
- * is used to compute the size of the page increment.
- * If <code>viewport</code> is null, then the scrollbar's
- * <code>pageSize</code> property is used.</p>
- *
- * @param increase Whether to increment (<code>true</code>) or
- * decrement (<code>false</code>) <code>value</code>.
- *
- * @see spark.components.supportClasses.ScrollBarBase#changeValueByPage()
- * @see spark.components.supportClasses.Range#setValue()
- * @see spark.core.IViewport
- * @see spark.core.IViewport#verticalScrollPosition
- * @see spark.core.IViewport#getVerticalScrollPositionDelta()
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- override public function changeValueByPage(increase:Boolean = true):void
- {
- var oldPageSize:Number;
- if (viewport)
- {
- // Want to use ScrollBarBase's changeValueByPage() implementation to get the same
- // animated behavior for scrollbars with and without viewports.
- // For now, just change pageSize temporarily and call the superclass
- // implementation.
- oldPageSize = pageSize;
- pageSize = Math.abs(viewport.getVerticalScrollPositionDelta(
- (increase) ? NavigationUnit.PAGE_DOWN : NavigationUnit.PAGE_UP));
- }
- super.changeValueByPage(increase);
- if (viewport)
- pageSize = oldPageSize;
- }
-
- /**
- * @private
- */
- override protected function animatePaging(newValue:Number, pageSize:Number):void
- {
- if (viewport)
- {
- var vpPageSize:Number = Math.abs(viewport.getVerticalScrollPositionDelta(
- (newValue > value) ? NavigationUnit.PAGE_DOWN : NavigationUnit.PAGE_UP));
- super.animatePaging(newValue, vpPageSize);
- return;
- }
- super.animatePaging(newValue, pageSize);
- }
-
- /**
- * If <code>viewport</code> is not null,
- * changes the vertical scroll position for a line up or line down operation by
- * scrolling the viewport.
- * This method calculates the amount to scroll by calling the
- * <code>IViewport.getVerticalScrollPositionDelta()</code> method
- * with either <code>flash.ui.Keyboard.RIGHT</code>
- * or <code>flash.ui.Keyboard.LEFT</code>.
- * It then calls the <code>setValue()</code> method to
- * set the <code>IViewport.verticalScrollPosition</code> property
- * to the appropriate value.
- *
- * <p>If <code>viewport</code> is null,
- * calling this method changes the vertical scroll position for
- * a line up or line down operation by calling
- * the <code>changeValueByStep()</code> method.</p>
- *
- * @param increase Whether the line scoll is up (<code>true</code>) or
- * down (<code>false</code>).
- *
- * @see spark.components.supportClasses.Range#changeValueByStep()
- * @see spark.components.supportClasses.Range#setValue()
- * @see spark.core.IViewport
- * @see spark.core.IViewport#verticalScrollPosition
- * @see spark.core.IViewport#getVerticalScrollPositionDelta()
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- override public function changeValueByStep(increase:Boolean = true):void
- {
- var oldStepSize:Number;
- if (viewport)
- {
- // Want to use ScrollBarBase's changeValueByStep() implementation to get the same
- // animated behavior for scrollbars with and without viewports.
- // For now, just change stepSize temporarily and call the superclass
- // implementation.
- oldStepSize = stepSize;
- stepSize = Math.abs(viewport.getVerticalScrollPositionDelta(
- (increase) ? NavigationUnit.DOWN : NavigationUnit.UP));
- }
- super.changeValueByStep(increase);
- if (viewport)
- stepSize = oldStepSize;
- }
-
-
- /**
- * @private
- */
- override protected function partAdded(partName:String, instance:Object):void
- {
- if (instance == thumb)
- {
- thumb.setConstraintValue("top", undefined);
- thumb.setConstraintValue("bottom", undefined);
- thumb.setConstraintValue("verticalCenter", undefined);
- }
-
- super.partAdded(partName, instance);
- }
-
- /**
- * @private
- * Set this scrollbar's value to the viewport's current
- * verticalScrollPosition.
- */
- override mx_internal function viewportVerticalScrollPositionChangeHandler(event:PropertyChangeEvent):void
- {
- if (viewport)
- value = viewport.verticalScrollPosition;
- }
-
- /**
- * @private
- * Set this scrollbar's maximum to the viewport's contentHeight
- * less the viewport height and its pageSize to the viewport's height.
- */
- override mx_internal function viewportResizeHandler(event:ResizeEvent):void
- {
- if (viewport)
- updateMaximumAndPageSize();
- }
-
- /**
- * @private
- * Set this scrollbar's maximum to the viewport's contentHeight
- * less the viewport height.
- */
- override mx_internal function viewportContentHeightChangeHandler(event:PropertyChangeEvent):void
- {
- if (viewport)
- {
- if (getStyle("interactionMode") == InteractionMode.TOUCH)
- {
- updateMaximumAndPageSize();
- }
- else
- {
- // SDK-28898: reverted previous behavior for desktop, resets
- // scroll position to zero when all content is removed.
- maximum = viewport.contentHeight - viewport.height;
- }
- }
- }
-
- /**
- * @private
- */
- override public function styleChanged(styleName:String):void
- {
- super.styleChanged(styleName);
-
- var allStyles:Boolean = !styleName || styleName == "styleName";
-
- if (allStyles || styleName == "interactionMode")
- {
- if (viewport)
- updateMaximumAndPageSize();
- }
- }
-
-
- /**
- * @private
- * Scroll vertically by event.delta "steps". This listener is added to both the scrollbar
- * and the viewport so we short-ciruit if the viewport doesn't exist or isn't visible.
- *
- * Note also: the HScrollBar class redispatches mouse wheel events that target the HSB
- * to its viewport. If a vertical scrollbar exists, this listener will handle those
- * events by scrolling vertically. This is done so that if a VSB exists, the mouse
- * wheel always scrolls vertically, even if it's over the HSB.
- */
- mx_internal function mouseWheelHandler(event:MouseEvent):void
- {
- const vp:IViewport = viewport;
- if (event.isDefaultPrevented() || !vp || !vp.visible || !visible)
- return;
-
- // Dispatch the "mouseWheelChanging" event. If preventDefault() is called
- // on this event, the event will be cancelled. Otherwise if the delta
- // is modified the new value will be used.
- var changingEvent:FlexMouseEvent = MouseEventUtil.createMouseWheelChangingEvent(event);
- if (!dispatchEvent(changingEvent))
- {
- event.preventDefault();
- return;
- }
-
- const delta:int = changingEvent.delta;
-
- var nSteps:uint = Math.abs(delta);
- var navigationUnit:uint;
- var scrollPositionChanged:Boolean;
-
- // Scroll delta "steps".
- navigationUnit = (delta < 0) ? NavigationUnit.DOWN : NavigationUnit.UP;
- for (var vStep:int = 0; vStep < nSteps; vStep++)
- {
- var vspDelta:Number = vp.getVerticalScrollPositionDelta(navigationUnit);
- if (!isNaN(vspDelta))
- {
- vp.verticalScrollPosition += vspDelta;
- scrollPositionChanged = true;
- if (vp is IInvalidating)
- IInvalidating(vp).validateNow();
- }
- }
-
- if (scrollPositionChanged)
- dispatchEvent(new Event(Event.CHANGE));
-
- event.preventDefault();
- }
-
-}
-}
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/VideoDisplay.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/VideoDisplay.as
deleted file mode 100644
index b9e53be..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/VideoDisplay.as
+++ /dev/null
@@ -1,2466 +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 spark.components
-{
-
-import mx.core.UIComponent;
-//import org.apache.royale.events.Event;
-//import org.apache.royale.geom.Point;
-//import org.apache.royale.geom.Rectangle;
-//import flash.media.Video;
-
-//import mx.core.IUIComponent;
-//import mx.core.IVisualElement;
-//import mx.core.mx_internal;
-//import mx.events.FlexEvent;
-//import mx.events.PropertyChangeEvent;
-//import mx.resources.IResourceManager;
-//import mx.resources.ResourceManager;
-
-
-//import org.osmf.containers.MediaContainer;
-//import org.osmf.elements.VideoElement;
-//import org.osmf.events.AudioEvent;
-//import org.osmf.events.DisplayObjectEvent;
-//import org.osmf.events.LoadEvent;
-//import org.osmf.events.MediaPlayerCapabilityChangeEvent;
-//import org.osmf.events.MediaPlayerStateChangeEvent;
-//import org.osmf.events.SeekEvent;
-//import org.osmf.events.TimeEvent;
-//import org.osmf.layout.HorizontalAlign;
-//import org.osmf.layout.LayoutMetadata;
-//import org.osmf.layout.ScaleMode;
-//import org.osmf.layout.VerticalAlign;
-//import org.osmf.media.DefaultMediaFactory;
-//import org.osmf.media.MediaElement;
-//import org.osmf.media.MediaFactory;
-//import org.osmf.media.MediaFactoryItem;
-//import org.osmf.media.MediaPlayer;
-//import org.osmf.media.MediaPlayerState;
-//import org.osmf.media.MediaResourceBase;
-//import org.osmf.media.URLResource;
-//import org.osmf.media.MediaType;
-//import org.osmf.net.NetLoader;
-//import org.osmf.net.DynamicStreamingItem;
-//import org.osmf.net.rtmpstreaming.RTMPDynamicStreamingNetLoader;
-//import org.osmf.net.DynamicStreamingResource;
-//import org.osmf.net.FMSURL;
-//import org.osmf.utils.OSMFStrings;
-//import org.osmf.utils.URL;
-
-//import spark.components.mediaClasses.DynamicStreamingVideoItem;
-//import spark.components.mediaClasses.DynamicStreamingVideoSource;
-//import spark.primitives.BitmapImage;
-
-use namespace mx_internal;
-
-//--------------------------------------
-// Events
-//--------------------------------------
-
-/**
- * Dispatched when the data is received as a download operation progresses.
- * This event is only dispatched when playing a video by downloading it
- * directly from a server, typically by issuing an HTTP request.
- * It is not displatched when playing a video from a special media server,
- * such as Flash Media Server.
- *
- * <p>This event may not be dispatched when the source is set to null or a playback
- * error occurs.</p>
- *
- * @eventType org.osmf.events.LoadEvent.BYTES_LOADED_CHANGE
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.0
- * @productversion Flex 4
- */
-[Event(name="bytesLoadedChange",type="org.osmf.events.LoadEvent")]
-
-/**
- * Dispatched when the playhead reaches the duration for playable media.
- *
- * @eventType org.osmf.events.TimeEvent.COMPLETE
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.0
- * @productversion Flex 4
- */
-[Event(name="complete", type="org.osmf.events.TimeEvent")]
-
-/**
- * Dispatched when the <code>currentTime</code> property of the MediaPlayer has changed.
- *
- * <p>This event may not be dispatched when the source is set to null or a playback
- * error occurs.</p>
- *
- * @eventType org.osmf.events.TimeEvent.CURRENT_TIME_CHANGE
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.0
- * @productversion Flex 4
- */
-[Event(name="currentTimeChange",type="org.osmf.events.TimeEvent")]
-
-/**
- * Dispatched when the <code>duration</code> property of the media has changed.
- *
- * <p>This event may not be dispatched when the source is set to null or a playback
- * error occurs.</p>
- *
- * @eventType org.osmf.events.TimeEvent.DURATION_CHANGE
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.0
- * @productversion Flex 4
- */
-[Event(name="durationChange", type="org.osmf.events.TimeEvent")]
-
-/**
- * Dispatched when the MediaPlayer's state has changed.
- *
- * @eventType org.osmf.events.MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.0
- * @productversion Flex 4
- */
-[Event(name="mediaPlayerStateChange", type="org.osmf.events.MediaPlayerStateChangeEvent")]
-
-//--------------------------------------
-// Other metadata
-//--------------------------------------
-
-[DefaultProperty("source")]
-
-[ResourceBundle("osmf")]
-
-[IconFile("VideoDisplay.png")]
-
-/**
- * Because this component does not define a skin for the mobile theme, Adobe
- * recommends that you not use it in a mobile application. Alternatively, you
- * can define your own mobile skin for the component. For more information,
- * see <a href="http://help.adobe.com/en_US/Flex/4.0/UsingSDK/WS53116913-F952-4b21-831F-9DE85B647C8A.html">Spark Skinning</a>.
- */
-[DiscouragedForProfile("mobileDevice")]
-
-/**
- * The VideoDisplay class is chromeless video player that supports
- * progressive download, multi-bitrate, and streaming video.
- *
- * <p><code>VideoDisplay</code> is the chromeless version that does not support skinning.
- * It is useful when you do not want the user to interact with the control.</p>
- *
- * <p><code>VideoPlayer</code> is the skinnable version.</p>
- *
- * <p>The VideoDisplay control has the following default characteristics:</p>
- * <table class="innertable">
- * <tr>
- * <th>Characteristic</th>
- * <th>Description</th>
- * </tr>
- * <tr>
- * <td>Default size</td>
- * <td>0 pixels wide by 0 pixels high with no content,
- * and the width and height of the video with content</td>
- * </tr>
- * <tr>
- * <td>Minimum size</td>
- * <td>0</td>
- * </tr>
- * <tr>
- * <td>Maximum size</td>
- * <td>10000 pixels wide and 10000 pixels high</td>
- * </tr>
- * </table>
- *
- * @mxml
- *
- * <p>The <code><s:VideoDisplay></code> tag inherits all of the tag
- * attributes of its superclass and adds the following tag attributes:</p>
- *
- * <pre>
- * <s:VideoDisplay
- * <strong>Properties</strong>
- * autoDisplayFirstFrame="true"
- * autoPlay="true"
- * autoRewind="true"
- * loop="false"
- * muted="false"
- * pauseWhenHidden="true"
- * scaleMode="letterbox"
- * source=""
- * volume="1"
- *
- * <strong>Events</strong>
- * bytesLoadedChange="<i>No default</i>"
- * complete="<i>No default</i>"
- * currentTimeChange="<i>No default</i>"
- * durationChange="<i>No default</i>"
- * mediaPlayerStateChange="<i>No default</i>"
- *
- * />
- * </pre>
- *
- * @see spark.components.VideoPlayer
- *
- * @includeExample examples/VideoDisplayExample.mxml
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-public class VideoDisplay extends UIComponent
-{
- //include "../core/Version.as";
-
- //--------------------------------------------------------------------------
- //
- // Class methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * @private
- * Set as the OSMF.resourceBundleFunction and used to look up
- * strings so the OSMF RTEs are localized in Flex.
- */
- //private static function getResourceString(resourceName:String,
- //args:Array = null):String
- //{
- //var resourceManager:IResourceManager = ResourceManager.getInstance();
- //return resourceManager.getString("osmf", resourceName, args);
- //}
-
- /**
- * Copied from OSMF ScaleModeUtils.getScaledSize. ScaleModeUtils became
- * an internal OSMF class in OSMF 1.0 so it is copied here.
- *
- * Calculates the scaled size based on the scaling algorithm.
- * The available width and height are the width and height of the container.
- * The intrinsic width and height are the width and height of the content.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion OSMF 1.0
- */
- //private static function getScaledSize
- //( scaleMode:String
- //, availableWidth:Number, availableHeight:Number
- //, intrinsicWidth:Number, intrinsicHeight:Number
- //):Point
- //{
- //var result:Point;
- //
- //switch (scaleMode)
- //{
- //case ScaleMode.ZOOM:
- //case ScaleMode.LETTERBOX:
- //
- //var availableRatio:Number
- //= availableWidth
- /// availableHeight;
- //
- //var componentRatio:Number
- //= (intrinsicWidth || availableWidth)
- /// (intrinsicHeight || availableHeight);
- //
- //if ( (scaleMode == ScaleMode.ZOOM && componentRatio < availableRatio)
- //|| (scaleMode == ScaleMode.LETTERBOX && componentRatio > availableRatio)
- //)
- //{
- //result
- //= new Point
- //( availableWidth
- //, availableWidth / componentRatio
- //);
- //}
- //else
- //{
- //result
- //= new Point
- //( availableHeight * componentRatio
- //, availableHeight
- //);
- //}
- //
- //break;
- //
- //case ScaleMode.STRETCH:
- //
- //result
- //= new Point
- //( availableWidth
- //, availableHeight
- //);
- //break;
- //
- //case ScaleMode.NONE:
- //
- //result
- //= new Point
- //( intrinsicWidth || availableWidth
- //, intrinsicHeight || availableHeight
- //);
- //
- //break;
- //}
-
- //return result;
- //}
-
- //--------------------------------------------------------------------------
- //
- // Constructor
- //
- //--------------------------------------------------------------------------
-
- /**
- * Constructor.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function VideoDisplay()
- {
- super();
-
- // create the underlying MediaPlayer class first.
- //createUnderlyingVideoPlayer();
-
- // added and removed event listeners to see whether we should
- // start or stop the video
- //addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
- //addEventListener(Event.REMOVED_FROM_STAGE, removedFromStageHandler);
-
- // Set the OSMF hook used for localizing runtime error messages.
- // OSMF itself has English-only messages,
- // but higher layers like Flex can provide localized versions.
- //OSMFStrings.resourceStringFunction = getResourceString;
- }
-
- //--------------------------------------------------------------------------
- //
- // Variables
- //
- //--------------------------------------------------------------------------
-
- /**
- * @private
- * This is the underlying VideoPlayer object. At some point in the
- * future, we may change to a new implementation.
- */
- //mx_internal var videoPlayer:MediaPlayer;
-
- /**
- * @private
- * This is the underlying container used to display
- * the underlying videoPlayer.
- */
- //mx_internal var videoContainer:MediaContainer;
-
- /**
- * @private
- * How the correct media elements are created based on the url of
- * the resource.
- */
- //mx_internal var mediaFactory:MediaFactory;
-
- /**
- * @private
- * Whether the video is on the display list or not
- */
- //private var _isOnDisplayList:Boolean = false;
-
- /**
- * @private
- * Whether the we should play the video when the video
- * becomes playable again (visible, on display list, and enabled).
- * This starts out as true, but when we pause the video is changePlayback(),
- * we set it to false. Also, when a user action occurs, like pause() or play()
- * or stop() is called, we set it to false as well.
- */
- //private var playTheVideoOnVisible:Boolean = true;
-
- /**
- * @private
- */
- //private var effectiveVisibility:Boolean = false;
-
- /**
- * @private
- */
- //private var effectiveVisibilityChanged:Boolean = false;
-
- /**
- * @private
- */
- //private var effectiveEnabled:Boolean = false;
-
- /**
- * @private
- */
- //private var effectiveEnabledChanged:Boolean = false;
-
- /**
- * @private
- * We do different things in the source setter based on if we
- * are initialized or not.
- */
- //private var initializedOnce:Boolean = false;
-
- /**
- * @private
- * Keeps track of the muted property while loading up a
- * video because of autoDisplayFirstFrame.
- */
- //private var beforeLoadMuted:Boolean;
-
- /**
- * @private
- * Keeps track whether we are loading up the
- * video because of autoDisplayFirstFrame.
- *
- * <p>In this case we are in "state1" of loading,
- * which means we are waiting for the READY
- * MediaPlayerStateChangeEvent and haven't done anything yet.</p>
- */
- //private var inLoadingState1:Boolean;
-
- /**
- * @private
- * Keeps track whether we are loading up the
- * video because of autoDisplayFirstFrame.
- *
- * <p>In this case we are in "state2" of loading,
- * which means have set videoPlayer.displayObject.visible=false
- * and videoPlayer.muted=true. We've also called play() and are
- * waiting for the DimensionChangeEvent.</p>
- *
- * <p>Note: At this point, inLoadingState1 = true as well.</p>
- */
- //private var inLoadingState2:Boolean;
-
- /**
- * @private
- * Keeps track whether we are loading up the
- * video because of autoDisplayFirstFrame.
- *
- * <p>In this case we are in "state3" of loading,
- * which means have received the DimensionChangeEvent and have called
- * pause() and seek(0). We are currently waiting for the
- * SEEK_END event, at which point we will be completely loaded up.</p>
- *
- * <p>Note: At this point, inLoadingState1 = inLoadingState2 = true.</p>
- */
- //private var inLoadingState3:Boolean;
-
- /**
- * @private
- *
- * Old value of videoPlayer.currentTimeUpdateInterval. We store the old
- * value when we are taken off the stage and pauseWhenHidden is true
- * (removedFromStageHandler). We restore the old value when we are added
- * to the stage (addedToStageHandler). The value is used in setupSource()
- * to turn the timers back on if they were disabled. The value if also used
- * to check if we should turn off the timers in videoPlayer_seekChangeHandler
- * and videoPlayer_currentTimeChangeHandler.
- * This is done to keep this component from being pinned in memory by the timer
- * associated the currentTimeUpdateInterval property.
- */
- //private var oldCurrentTimeUpdateInterval:Number = NaN;
-
- /**
- * @private
- *
- * Old value of videoPlayer.bytesLoadedUpdateInterval. We store the old
- * value when we are taken off the stage and pauseWhenHidden is true
- * (removedFromStageHandler). We restore the old value when we are added
- * to the stage (addedToStageHandler). The value is used in setupSource()
- * to turn the timers back on if they were disabled. The value if also used
- * to check if we should turn off the timers in videoPlayer_seekChangeHandler
- * and videoPlayer_currentTimeChangeHandler.
- * This is done to keep this component from being pinned in memory by the timer
- * associated the bytesLoadedUpdateInterval property.
- */
- //private var oldBytesLoadedUpdateInterval:Number = NaN;
-
- //--------------------------------------------------------------------------
- //
- // Properties
- //
- //--------------------------------------------------------------------------
-
- //----------------------------------
- // autoDisplayFirstFrame
- //----------------------------------
-
- /**
- * @private
- */
- //private var _autoDisplayFirstFrame:Boolean = true;
-
- [Inspectable(category="General", defaultValue="true")]
-
- /**
- * If <code>autoPlay = false</code>, then
- * <code>autoDisplayFirstFrame</code> controls whether the video
- * is loaded when the <code>source</code> is set.
- * If <code>autoDisplayFirstFrame</code>
- * is set to <code>true</code>, then the first frame of the video is
- * loaded and the video is sized correctly.
- * If <code>autoDisplayFirstFrame</code> is set to <code>false</code>, then no
- * connection to the source is made, the first frame is not shown,
- * and the video's size is not determined until someone tries to play
- * the video.
- *
- * <p>If <code>autoPlay = true</code>, then this flag is ignored.</p>
- *
- * @default true
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get autoDisplayFirstFrame():Boolean
- {
- //return _autoDisplayFirstFrame;
- return false;
- }
-
- /**
- * @private
- */
- public function set autoDisplayFirstFrame(value:Boolean):void
- {
- //_autoDisplayFirstFrame = value;
- }
-
- //----------------------------------
- // autoPlay
- //----------------------------------
-
- /**
- * @private
- */
- //private var _autoPlay:Boolean = true;
-
- [Inspectable(category="General", defaultValue="true")]
-
- /**
- * Specifies whether the video starts playing immediately when the
- * <code>source</code> property is set.
- * If <code>true</code>, the video file immediately begins to buffer and
- * play.
- *
- * <p>Even if <code>autoPlay</code> is set to <code>false</code>, Flex
- * starts loading the video after the <code>initialize()</code> method is
- * called.
- * For Flash Media Server, this means creating the stream and loading
- * the first frame to display.
- * In the case of an HTTP download, Flex starts downloading the stream
- * and shows the first frame.</p>
- *
- * <p>If <code>playWhenHidden</code> is set to <code>false</code>, then
- * <code>autoPlay</code> also affects what happens when the video
- * comes back on stage and is enabled and visible.</p>
- *
- * @default true
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get autoPlay():Boolean
- {
- //return _autoPlay;
- return false;
- }
-
- /**
- * @private (setter)
- */
- public function set autoPlay(value:Boolean):void
- {
- //if (autoPlay == value)
- //return;
- //
- //_autoPlay = value;
- //
- //// call changePlayback() but don't immediately play or pause
- //// based on this change to autoPlay
- //changePlayback(false, false);
- }
-
- //----------------------------------
- // autoRewind
- //----------------------------------
-
- [Inspectable(category="General", defaultValue="true")]
-
- /**
- * Specifies whether the FLV file should rewind to the first frame
- * when play stops, either by calling the <code>stop()</code> method or by
- * reaching the end of the stream.
- *
- * <p>This property has no effect for live streaming video.</p>
- *
- * @default true
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get autoRewind():Boolean
- {
- //return videoPlayer.autoRewind;
- return false;
- }
-
- public function set autoRewind(value:Boolean):void
- {
- //videoPlayer.autoRewind = value;
- }
-
- //----------------------------------
- // bytesLoaded
- //----------------------------------
-
- [Inspectable(Category="General", defaultValue="0")]
- [Bindable("bytesLoadedChange")]
- [Bindable("mediaPlayerStateChange")]
-
- /**
- * The number of bytes of data that have been downloaded into the application.
- *
- * @return The number of bytes of data that have been downloaded into the application.
- * @default 0
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get bytesLoaded():Number
- {
- //return videoPlayer.bytesLoaded;
- return NaN;
- }
-
- //----------------------------------
- // bytesTotal
- //----------------------------------
-
- [Inspectable(Category="General", defaultValue="0")]
- [Bindable("mediaPlayerStateChange")]
-
- /**
- * The total size in bytes of the data being downloaded into the application.
- *
- * @return The total size in bytes of the data being downloaded into the application.
- * @default 0
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get bytesTotal():Number
- {
- //return videoPlayer.bytesTotal;
- return NaN;
- }
-
- //----------------------------------
- // currentTime
- //----------------------------------
-
- [Inspectable(Category="General", defaultValue="0")]
- [Bindable("currentTimeChange")]
- [Bindable("mediaPlayerStateChange")]
-
- /**
- * Current time of the playhead, measured in seconds,
- * since the video starting playing.
- *
- * @default 0
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get currentTime():Number
- {
- //return videoPlayer.currentTime;
- return NaN;
- }
-
- //----------------------------------
- // duration
- //----------------------------------
-
- [Inspectable(Category="General", defaultValue="0")]
- [Bindable("durationChange")]
- [Bindable("mediaPlayerStateChange")]
-
- /**
- * Duration of the video's playback, in seconds
- *
- * @return The total running time of the video in seconds
- * @default 0
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get duration():Number
- {
- //return videoPlayer.duration;
- return NaN;
- }
-
- //----------------------------------
- // loop
- //----------------------------------
-
- [Inspectable(Category="General", defaultValue="false")]
-
- /**
- * Indicates whether the media should play again after playback has completed.
- * The <code>loop</code> property takes precedence over the <code>autoRewind</code>
- * property, so if loop is set to <code>true</code>, the <code>autoRewind</code>
- * property is ignored.
- *
- * @default false
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get loop():Boolean
- {
- //return videoPlayer.loop;
- return false;
- }
-
- /**
- * @private
- */
- public function set loop(value:Boolean):void
- {
- //if (loop == value)
- //return;
- //
- //videoPlayer.loop = value;
- }
-
- //----------------------------------
- // mediaPlayerState
- //----------------------------------
-
- [Inspectable(category="General", defaultValue="uninitialized")]
- [Bindable("mediaPlayerStateChange")]
-
- /**
- * The current state of the video. See
- * org.osmf.media.MediaPlayerState for available values.
- *
- * @default uninitialized
- *
- * @see org.osmf.media.MediaPlayerState
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get mediaPlayerState():String
- {
- //return videoPlayer.state;
- return null;
- }
-
- //----------------------------------
- // muted
- //----------------------------------
-
- [Inspectable(category="General", defaultValue="false")]
- [Bindable("volumeChanged")]
-
- /**
- * Set to <code>true</code> to mute the video, <code>false</code>
- * to unmute the video.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get muted():Boolean
- {
- //// if inLoadingState2, we've got to
- //// fake the muted value
- //if (inLoadingState2)
- //return beforeLoadMuted;
- //
- //return videoPlayer.muted;
- return false;
- }
-
- /**
- * @private
- */
- public function set muted(value:Boolean):void
- {
- //if (muted == value)
- //return;
- //
- //// if inLoadingState2, don't change muted...just fake it
- //if (inLoadingState2)
- //{
- //beforeLoadMuted = value;
- //return;
- //}
- //
- //videoPlayer.muted = value;
- }
-
- //----------------------------------
- // pauseWhenHidden
- //----------------------------------
-
- /**
- * @private
- * Storage variable for pauseWhenHidden
- */
- //private var _pauseWhenHidden:Boolean = true;
-
- [Inspectable(category="General", defaultValue="true")]
-
- /**
- * Controls whether the video continues to play when it is
- * "hidden". The video is "hidden" when either <code>visible</code>
- * is set to <code>false</code> on it or one of its ancestors,
- * or when the video is taken off
- * of the display list. If set to <code>true</code>, the video
- * pauses playback until the video is visible again. If set to
- * <code>false</code> the video continues to play when it is hidden.
- *
- * <p>If the video is disabled (or one of the video's parents are
- * disabled), the video pauses as well, but when it is re-enabled,
- * the video does not play again. This behavior is not controlled through
- * <code>pauseWhenHidden</code>; it is defined in the VideoDisplay component.</p>
- *
- * @default true
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get pauseWhenHidden():Boolean
- {
- //return _pauseWhenHidden;
- return false;
- }
-
- /**
- * @private
- */
- public function set pauseWhenHidden(value:Boolean):void
- {
- //if (_pauseWhenHidden == value)
- //return;
- //
- //_pauseWhenHidden = value;
- //
- //if (_pauseWhenHidden)
- //{
- //addVisibilityListeners();
- //computeEffectiveVisibilityAndEnabled();
- //}
- //else
- //{
- //removeVisibilityListeners();
- //}
- //
- //// call changePlayback(). If we're invisible or off the stage,
- //// setting this to true can pause the video. However, setting it
- //// to false should have no immediate impact.
- //changePlayback(value, false);
- }
-
- //----------------------------------
- // playing
- //----------------------------------
-
- [Inspectable(category="General")]
- [Bindable("mediaPlayerStateChange")]
-
- /**
- * Contains <code>true</code> if the video is playing or is attempting to play.
- *
- * <p>The video may not be currently playing, as it may be seeking
- * or buffering, but the video is attempting to play.</p>
- *
- * @see #play()
- * @see #pause()
- * @see #stop()
- * @see #autoPlay
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get playing():Boolean
- {
- //return videoPlayer.playing;
- return null;
- }
-
- //----------------------------------
- // scaleMode
- //----------------------------------
-
- /**
- * @private
- */
- //private var _scaleMode:String = ScaleMode.LETTERBOX;
-
- [Inspectable(Category="General", enumeration="none,stretch,letterbox,zoom", defaultValue="letterbox")]
-
- /**
- * The <code>scaleMode</code> property describes different ways of
- * sizing the video content.
- * You can set <code>scaleMode</code> to
- * <code>"none"</code>, <code>"stretch"</code>,
- * <code>"letterbox"</code>, or <code>"zoom"</code>.
- *
- * <p>If no width, height, or constraints are specified on the component,
- * this property has no effect.</p>
- *
- * @default "letterbox"
- *
- * @see org.osmf.display.ScaleMode
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get scaleMode():String
- {
- //return _scaleMode;
- return null;
- }
-
- /**
- * @private
- */
- public function set scaleMode(value:String):void
- {
- //if (scaleMode == value)
- //return;
- //
- //switch(value)
- //{
- //case ScaleMode.NONE:
- //_scaleMode = ScaleMode.NONE;
- //break;
- //case ScaleMode.STRETCH:
- //_scaleMode = ScaleMode.STRETCH;
- //break;
- //case ScaleMode.LETTERBOX:
- //_scaleMode = ScaleMode.LETTERBOX;
- //break;
- //case ScaleMode.ZOOM:
- //_scaleMode = ScaleMode.ZOOM;
- //break;
- //default:
- //_scaleMode = ScaleMode.LETTERBOX;
- //break;
- //}
- //
- //// set scaleMode on the videoElement object
- //if (videoPlayer.media)
- //{
- //var layout:LayoutMetadata = videoPlayer.media.
- //getMetadata(LayoutMetadata.LAYOUT_NAMESPACE) as LayoutMetadata;
- //if (layout)
- //layout.scaleMode = _scaleMode;
- //}
- //
- //invalidateSize();
- //invalidateDisplayList();
- }
-
- //----------------------------------
- // source
- //----------------------------------
-
- //private var _source:Object;
- //private var sourceChanged:Boolean;
-
- [Inspectable(category="General", defaultValue="null")]
- [Bindable("sourceChanged")]
-
- /**
- * The video source.
- *
- * <p>For progressive download, the source is just a path or URL pointing
- * to the video file to play.</p>
- *
- * <p>For streaming (recorded streaming, live streaming,
- * or multi-bitrate streaming), the source property is a
- * DynamicStreamingVideoSource object. If you just want to play
- * a recorded or live streaming video with no multi-bitrate support,
- * you can just pass in a String URL pointing to the video
- * stream. However, if you do this, the streamType is assumed to be "any,"
- * and you don't have as much control over the streaming as you would if
- * you used the DynamicStreamingVideoSource object.</p>
- *
- * <p>Note: Setting the source on a MediaPlayerStateChangeEvent.LOADING or a
- * MediaPlayerStateChangeEvent.READY is not recommended if the source was
- * previously set. This could cause an infinite loop or an RTE.
- * If you must do an operation like that, wait an additional frame to
- * set the source.</p>
- *
- * @see spark.components.mediaClasses.DynamicStreamingVideoSource
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get source():Object
- {
- //return _source;
- return null;
- }
-
- /**
- * @private (setter)
- */
- public function set source(value:Object):void
- {
- //_source = value;
- //
- //// if we haven't initialized, let's wait to set up the
- //// source in commitProperties() as it is dependent on other
- //// properties, like autoPlay and enabled, and those may not
- //// be set yet, especially if they are set via MXML.
- //// Otherwise, if we have initialized, let's just set up the
- //// source immediately. This way people can change the source
- //// and immediately call methods like seek().
- //if (!initializedOnce)
- //{
- //sourceChanged = true;
- //invalidateProperties();
- //}
- //else
- //{
- //setUpSource();
- //}
- //
- //dispatchEvent(new Event("sourceChanged"));
- }
-
- //----------------------------------
- // thumbnailSource
- //----------------------------------
-
- /**
- * @private
- */
- //private var _thumbnailSource:Object;
-
- /**
- * @private
- * Group that holds the BitmapImage for the thumbnail
- */
- //private var thumbnailGroup:Group;
-
- /**
- * @private
- * BitmapImage for the thumbnail
- */
- //private var thumbnailBitmapImage:BitmapImage;
-
- [Inspectable(Category="General")]
-
- /**
- * @private
- * Thumbnail source is an internal property used to replace the video with a thumbnail.
- * This is for places where we just want to load in a placeholder object for the video
- * and don't want to incur the extra load-time or memory of loading up the video.
- *
- * <p>Thumbnail source can take any valid source that can be passed in to
- * <code>spark.primitivies.BitmapImage#source</code>.</p>
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- mx_internal function get thumbnailSource():Object
- {
- //return _thumbnailSource;
- return null;
- }
-
- /**
- * @private
- */
- mx_internal function set thumbnailSource(value:Object):void
- {
- //if (_thumbnailSource == value)
- //return;
- //
- //_thumbnailSource = value;
- //
- //// if we haven't initialized, let's wait to set up the
- //// source in commitProperties() as it is dependent on other
- //// properties, like autoPlay and enabled, and those may not
- //// be set yet, especially if they are set via MXML.
- //// Otherwise, if we have initialized, let's just set up the
- //// source immediately. This way people can change the source
- //// and immediately call methods like seek().
- //if (!initializedOnce)
- //{
- //sourceChanged = true;
- //invalidateProperties();
- //}
- //else
- //{
- //setUpThumbnailSource();
- //}
- }
-
- /**
- * @private
- * Sets up the thumbnail source for use.
- */
- //private function setUpThumbnailSource():void
- //{
- //if (thumbnailSource)
- //{
- //// create thumbnail group if there isn't one
- //if (!thumbnailGroup)
- //{
- //thumbnailBitmapImage = new BitmapImage();
- //thumbnailBitmapImage.includeInLayout = false;
- //
- //thumbnailGroup = new Group();
- //// add thumbnailGroup to the display list first in case
- //// bitmap needs to check its layoutDirection.
- //addChild(thumbnailGroup);
- //thumbnailGroup.clipAndEnableScrolling = true;
- //thumbnailGroup.addElement(thumbnailBitmapImage);
- //}
- //
- //// if thumbnailGroup isn't on the display list, then add it.
- //if (!this.contains(thumbnailGroup))
- //addChild(thumbnailGroup);
- //
- //thumbnailBitmapImage.source = thumbnailSource;
- //invalidateSize();
- //invalidateDisplayList();
- //}
- //else
- //{
- //if (thumbnailGroup)
- //{
- //// null out the source and remove the thumbnail group
- //if (thumbnailBitmapImage)
- //thumbnailBitmapImage.source = null;
- //if (this.contains(thumbnailGroup))
- //removeChild(thumbnailGroup);
- //invalidateSize();
- //}
- //}
- //}
-
- //----------------------------------
- // videoObject
- //----------------------------------
-
- [Inspectable(category="General", defaultValue="null")]
-
- /**
- * The underlying flash player <code>flash.media.Video</code> object.
- *
- * <p>If the source is <code>null</code>, then there may be no
- * underlying <code>flash.media.Video object</code> yet. In that
- * case, <code>videoObject</code> returns <code>null</code>.</p>
- *
- * @default null
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get videoObject():Video
- {
- //return videoPlayer.displayObject as Video;
- return null;
- }
-
- //----------------------------------
- // volume
- //----------------------------------
-
- [Inspectable(category="General", defaultValue="1.0", minValue="0.0", maxValue="1.0")]
- [Bindable("volumeChanged")]
-
- /**
- * The volume level, specified as a value between 0 and 1.
- *
- * @default 1
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get volume():Number
- {
- //return videoPlayer.volume;
- return null;
- }
-
- /**
- * @private
- */
- public function set volume(value:Number):void
- {
- //if (volume == value)
- //return;
- //
- //videoPlayer.volume = value;
- }
-
- //--------------------------------------------------------------------------
- //
- // Overridden methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * @private
- */
- //override protected function commitProperties():void
- //{
- //super.commitProperties();
- //
- //initializedOnce = true;
- //
- //if (effectiveVisibilityChanged || effectiveEnabledChanged)
- //{
- //// if either visibility of enabled changed, re-compute them here
- //computeEffectiveVisibilityAndEnabled();
- //
- //// if visibility changed and we care about it, we can
- //// cause a play or a pause depending on our visibility
- //var causePause:Boolean = false;
- //var causePlay:Boolean = false;
- //if (effectiveVisibilityChanged && pauseWhenHidden)
- //{
- //causePause = !effectiveVisibility;
- //causePlay = effectiveVisibility;
- //}
- //
- //// if enabled changed, we can only cause a pause.
- //// Re-enabling a component doesn't cause a play.
- //if (effectiveEnabledChanged)
- //{
- //if (!effectiveEnabled)
- //causePause = true;
- //}
- //
- //changePlayback(causePause, causePlay);
- //
- //effectiveVisibilityChanged = false;
- //effectiveEnabledChanged = false;
- //}
- //
- //if (sourceChanged)
- //{
- //sourceChanged = false;
- //
- //if (thumbnailSource)
- //setUpThumbnailSource();
- //else
- //setUpSource();
- //}
- //}
-
- /**
- * @private
- */
- //override protected function measure() : void
- //{
- //super.measure();
- //
- //var intrinsicWidth:Number;
- //var intrinsicHeight:Number;
- //
- //// if showing the thumbnail, just use the thumbnail's size
- //if (thumbnailSource && thumbnailGroup)
- //{
- //intrinsicWidth = thumbnailBitmapImage.getPreferredBoundsWidth();
- //intrinsicHeight = thumbnailBitmapImage.getPreferredBoundsHeight();
- //}
- //else
- //{
- //// If there is no media the width/height will be NaN.
- //// Convert it to zero for our purposes.
- //intrinsicWidth = videoPlayer.mediaWidth;
- //if (isNaN(intrinsicWidth))
- //intrinsicWidth = 0;
-//
- //intrinsicHeight = videoPlayer.mediaHeight;
- //if (isNaN(intrinsicHeight))
- //intrinsicHeight = 0;
- //}
-//
- //measuredWidth = intrinsicWidth;
- //measuredHeight = intrinsicHeight;
- //
- //// Determine whether 'width' and 'height' have been set.
- //var bExplicitWidth:Boolean = !isNaN(explicitWidth);
- //var bExplicitHeight:Boolean = !isNaN(explicitHeight);
-//
- //// If only one has been set, calculate the other based on aspect ratio.
- //if (bExplicitWidth && !bExplicitHeight && intrinsicWidth > 0)
- //measuredHeight = explicitWidth * intrinsicHeight / intrinsicWidth;
- //else if (bExplicitHeight && !bExplicitWidth && intrinsicHeight > 0)
- //measuredWidth = explicitHeight * intrinsicWidth / intrinsicHeight;
- //}
-
- /**
- * @private
- */
- //override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void
- //{
- //super.updateDisplayList(unscaledWidth, unscaledHeight);
- //
- //// if just showing the thumbnail, push this width/height in to the thumbnail
- //// otherwise we'll push it in to the video object
- //if (thumbnailSource && thumbnailGroup)
- //{
- //// get what the size of our image should be
- //var newSize:Point = getScaledSize(scaleMode, unscaledWidth, unscaledHeight,
- //thumbnailBitmapImage.getPreferredBoundsWidth(), thumbnailBitmapImage.getPreferredBoundsHeight());
- //
- //// set the thumbnailGroup to be the size of the component.
- //// set the bitmap image to be the size it should be according to OSMF
- //thumbnailGroup.setLayoutBoundsSize(unscaledWidth, unscaledHeight);
- //thumbnailBitmapImage.setLayoutBoundsSize(newSize.x, newSize.y);
- //
- //// center the thumnail image within the thumbnail group.
- //// if it's too big to fit, the thumbnail group will crop it
- //thumbnailBitmapImage.x = (unscaledWidth - newSize.x)/2;
- //thumbnailBitmapImage.y = (unscaledHeight - newSize.y)/2;
- //
- //return;
- //}
- //
- //videoContainer.width = Math.floor(unscaledWidth);
- //videoContainer.height = Math.floor(unscaledHeight);
-//
- //// need to validate the gateway immediately--otherwise we may run out of synch
- //// as they may wait a frame by default before validating (see SDK-24880)
- //videoContainer.validateNow();
- //}
-
- //--------------------------------------------------------------------------
- //
- // Methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * Pauses playback without moving the playhead.
- * If playback is already is paused or is stopped, this method has no
- * effect.
- *
- * <p>To start playback again, call the <code>play()</code> method.</p>
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function pause():void
- {
- //// check to see if we can call methods on the video player object yet
- //if (!videoPlayerResponsive())
- //return;
- //
- //playTheVideoOnVisible = false;
- //
- //// if we're loading up, then we will pause automatically, so let's
- //// not interrupt this process
- //// if inLoadingState1 && pausable, then let loading state handle it
- //// if inLoadingState1 && !pausable, then let the loading state handle it
- //// if !inLoadingState1 && pausable, then just pause
- //// if !inLoadingState1 && !pausable, then load (if needed to show first frame)
- //if (!inLoadingState1 && videoPlayer.canPause)
- //videoPlayer.pause();
- //else if (!videoPlayer.canPause && autoDisplayFirstFrame)
- //load();
- }
-
- /**
- * Causes the video to play. Can be called while the video is
- * paused, stopped, or while the video is already playing.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function play():void
- {
- //// check to see if we can call methods on the video player object yet
- //if (!videoPlayerResponsive())
- //return;
- //
- //playTheVideoOnVisible = false;
- //
- //// if we're loading up, use a special method to cancel the load
- //// and to start playing again. Otherwise, go ahead and play
- //if (inLoadingState1)
- //cancelLoadAndPlay();
- //else if (videoPlayer.canPlay)
- //videoPlayer.play();
- }
-
- /**
- * Seeks to given time in the video. If the video is playing,
- * continue playing from that point. If the video is paused, seek to
- * that point and remain paused. If the video is stopped, seek to
- * that point and enters paused state.
- * This method has no effect with live video streams.
- *
- * <p>If time is less than 0 or NaN, throws exception. If time
- * is past the end of the stream, or past the amount of file
- * downloaded so far, then attempts to seek and, if it fails, it then recovers.</p>
- *
- * <p>The <code>currentTime</code> property might not have the expected value
- * immediately after you call <code>seek()</code>.
- * For a progressive download,
- * you can seek only to a keyframe; therefore, a seek takes you to the
- * time of the first keyframe after the specified time.</p>
- *
- * <p><strong>Note</strong>: When streaming, a seek always goes to the precise specified
- * time even if the source FLV file doesn't have a keyframe there.</p>
- *
- * <p>Seeking is asynchronous, so if you call the <code>seek()</code> method,
- * <code>currentTime</code> does not update immediately. </p>
- *
- * @param time The seek time, in seconds.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function seek(time:Number):void
- {
- //// check to see if we can call methods on the video player object yet
- //if (!videoPlayerResponsive())
- //return;
- //
- //// TODO (rfrishbe): could handle what to do if this gets called when loading() better.
- //// Need to store where we want to seek to.
- //if (videoPlayer.canSeek)
- //videoPlayer.seek(time);
- }
-
- /**
- * Stops video playback. If <code>autoRewind</code> is set to
- * <code>true</code>, rewinds to first frame. If video is already
- * stopped, has no effect. To start playback again, call
- * <code>play()</code>.
- *
- * @see #autoRewind
- * @see #play()
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function stop():void
- {
- //// check to see if we can call methods on the video player object yet
- //if (!videoPlayerResponsive())
- //return;
- //
- //playTheVideoOnVisible = false;
- //
- //// if we're loading up, then we will stop automatically, so let's
- //// not interrupt this process
- //// if inLoadingState1 && pausable, then let loading state handle it
- //// if inLoadingState1 && !pausable, then let the loading state handle it
- //// if !inLoadingState1 && pausable, then just pause
- //// if !inLoadingState1 && !pausable, then load (if needed to show first frame)
- //if (!inLoadingState1 && videoPlayer.canPause)
- //videoPlayer.stop();
- //else if (!videoPlayer.canPause && autoDisplayFirstFrame)
- //load();
- }
-
- //--------------------------------------------------------------------------
- //
- // Private Methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * @private
- * If the video player is responsive, then methods can be called on the underlying
- * video player.
- */
- //private function videoPlayerResponsive():Boolean
- //{
- //// can't call any methods before we've initialized
- //if (!initializedOnce)
- //return false;
- //
- //// if displaying a thumbnail, no methods can be called b/c there's no video
- //// loaded up
- //if (thumbnailSource)
- //return false;
- //
- //// if the video player's in a bad state, we can't do anything
- //if (videoPlayer.state == MediaPlayerState.PLAYBACK_ERROR ||
- //videoPlayer.state == MediaPlayerState.UNINITIALIZED ||
- //videoPlayer.state == MediaPlayerState.LOADING)
- //{
- //return false;
- //}
- //
- //// if no source, return false as well
- //if (!source)
- //return false;
- //
- //// otherwise, we are in a good state and have a source, so let's go
- //return true;
- //}
-
- /**
- * @private
- */
- //private function createUnderlyingVideoPlayer():void
- //{
- //// create new video player
- //videoPlayer = new MediaPlayer();
- //videoContainer = new MediaContainer();
- //videoContainer.clipChildren = true;
- //
- //mediaFactory = new DefaultMediaFactory();
- //
- //// remove unsupport media types
- //var unsupportedMediaTypes:Array = ["org.osmf.elements.video.dvr.dvrcast",
- //"org.osmf.elements.image",
- //"org.osmf.elements.swf"];
- //
- //for each (var mediaType:String in unsupportedMediaTypes)
- //{
- //var mediaFactoryItem:MediaFactoryItem = mediaFactory.getItemById(mediaType);
- //if (mediaFactoryItem)
- //mediaFactory.removeItem(mediaFactoryItem);
- //}
-//
- //// internal events
- //videoPlayer.addEventListener(DisplayObjectEvent.MEDIA_SIZE_CHANGE, videoPlayer_mediaSizeChangeHandler);
- //videoPlayer.addEventListener(AudioEvent.VOLUME_CHANGE, videoPlayer_volumeChangeHandler);
- //videoPlayer.addEventListener(AudioEvent.MUTED_CHANGE, videoPlayer_mutedChangeHandler);
- //
- //// public events
- //videoPlayer.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, videoPlayer_mediaPlayerStateChangeHandler);
- //videoPlayer.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, dispatchEvent);
- //videoPlayer.addEventListener(LoadEvent.BYTES_LOADED_CHANGE, dispatchEvent);
- //videoPlayer.addEventListener(TimeEvent.DURATION_CHANGE, videoPlayer_durationChangeHandler);
- //videoPlayer.addEventListener(TimeEvent.COMPLETE, dispatchEvent);
- //
- //addChild(videoContainer);
- //}
-
- /**
- * @private
- * Sets up the source for use.
- */
- //private function setUpSource():void
- //{
- //// clean up any listeners from the old source, especially if we
- //// are in the processing of loading that video file up
- //cleanUpSource()
- //
- //// if was playing a previous video, let's remove it now
- //if (videoPlayer.media && videoContainer.containsMediaElement(videoPlayer.media))
- //{
- //videoContainer.removeMediaElement(videoPlayer.media);
- //}
- //
- //var videoElement:org.osmf.media.MediaElement = null;
- //
- //// check for 4 cases: streaming video, progressive download,
- //// an IMediaResource, or a VideoElement.
- //// The latter 2 are undocumented but allowed for flexibility until we
- //// can support OSMF better after they ship OSMF 1.0. At that point, support
- //// for a source as an IMediaResource or a VideoElement may be removed.
- //if (source is DynamicStreamingVideoSource)
- //{
- //// the streaming video case.
- //// build up a DynamicStreamingResource to pass in to OSMF
- //var streamingSource:DynamicStreamingVideoSource = source as DynamicStreamingVideoSource;
- //var dsr:DynamicStreamingResource;
- //
- //// check for two cases for host: String and URL.
- //// Technically, we only support URL, but we secretly allow
- //// them to send in an OSMF URL or FMSURL here to help resolve any ambiguity
- //// around serverName vs. streamName.
- //if (streamingSource.host is String)
- //{
- //dsr = new DynamicStreamingResource(streamingSource.host as String,
- //streamingSource.streamType);
- //}
- //else if (streamingSource.host is URL)
- //{
- //dsr = new DynamicStreamingResource(URL(streamingSource.host).host,
- //streamingSource.streamType);
- //}
- //
- //if (dsr)
- //{
- //var n:int = streamingSource.streamItems.length;
- //var item:DynamicStreamingVideoItem;
- //var dsi:DynamicStreamingItem;
- //var streamItems:Vector.<DynamicStreamingItem> = new Vector.<DynamicStreamingItem>(n);
- //
- //for (var i:int = 0; i < n; i++)
- //{
- //item = streamingSource.streamItems[i];
- //dsi = new DynamicStreamingItem(item.streamName, item.bitrate);
- //streamItems[i] = dsi;
- //}
- //dsr.streamItems = streamItems;
- //
- //dsr.initialIndex = streamingSource.initialIndex;
- //
- //// add video type metadata so if the URL is ambiguous, OSMF will
- //// know what type of file we're trying to connect to
- //dsr.mediaType = MediaType.VIDEO;
- //
- //videoElement = new org.osmf.elements.VideoElement(dsr, new RTMPDynamicStreamingNetLoader());
- //}
- //}
- //else if (source is String && source != "")
- //{
- //var urlResource:URLResource = new URLResource(source as String);
- //videoElement = mediaFactory.createMediaElement(urlResource);
- //
- //// If the url could not be resolved to a media element then try
- //// telling osmf the media is a video and try again.
- //// We do not specify the media type as video the first time,
- //// so we can have the chance to play audio.
- //if (videoElement == null)
- //{
- //urlResource.mediaType = MediaType.VIDEO;
- //videoElement = mediaFactory.createMediaElement(urlResource);
- //}
- //}
- //else if (source is MediaResourceBase)
- //{
- //videoElement = mediaFactory.createMediaElement(MediaResourceBase(source));
- //}
- //else if (source is org.osmf.elements.VideoElement)
- //{
- //videoElement = source as org.osmf.elements.VideoElement;
- //}
- //
- //// reset the visibilityPausedTheVideo flag
- //playTheVideoOnVisible = true;
- //// set up videoPlayer.autoPlay based on whether this.autoPlay is
- //// set and whether we are visible and the other typical conditions.
- //changePlayback(false, false);
- //
- //// if we're not going to autoPlay (or couldn't autoPlay because
- //// we're hidden or for some other reason), but we need to seek
- //// to the first frame, then we have to do this on our own
- //// by using our load() method.
- //if (videoElement && (!autoPlay || !shouldBePlaying) && autoDisplayFirstFrame)
- //load();
- //
- //// set videoPlayer's element to the newly constructed VideoElement
- //// set the newly constructed videoElement's gateway to be the videoGateway
- //videoPlayer.media = videoElement;
- //
- //if (videoElement)
- //{
- //// If we are loading a video, make sure the timers are restored in case
- //// they had been disabled. The timers will be disabled again if we are
- //// only loading the first frame.
- //if (!isNaN(oldCurrentTimeUpdateInterval))
- //{
- //videoPlayer.currentTimeUpdateInterval = oldCurrentTimeUpdateInterval;
- //videoPlayer.bytesLoadedUpdateInterval = oldBytesLoadedUpdateInterval;
- //}
-//
- //if (videoElement.getMetadata(LayoutMetadata.LAYOUT_NAMESPACE) == null)
- //{
- //var layout:LayoutMetadata = new LayoutMetadata();
- //layout.scaleMode = scaleMode;
- //layout.verticalAlign = VerticalAlign.MIDDLE;
- //layout.horizontalAlign = HorizontalAlign.CENTER;
- //layout.percentWidth = 100;
- //layout.percentHeight = 100;
- //videoElement.addMetadata(LayoutMetadata.LAYOUT_NAMESPACE, layout);
- //}
-//
- //if (videoElement && !videoContainer.containsMediaElement(videoElement) )
- //{
- //videoContainer.addMediaElement(videoElement);
- //}
- //}
- //else
- //{
- //// if our source is null, let's invalidateSize() here.
- //// if it's a bad source, we'll get a playbackError and invalidate
- //// the size down there. If it's a good source, we'll get a
- //// dimensionChange event and invalidate the size in there.
- //invalidateSize();
- //}
- //}
-
- /**
- * @private
- * Our own internal load() method to handle the case
- * where autoPlay = false and autoDisplayFirstFrame = true
- * so that we can load up the video, figure out its size,
- * and show the first frame
- */
- //private function load():void
- //{
- //inLoadingState1 = true;
- //
- //// wait until we can mute, play(), pause(), and seek() before doing anything.
- //// We should be able to do all of these operations on the READY state change event.
- //videoPlayer.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, videoPlayer_mediaPlayerStateChangeHandlerForLoading);
- //}
-
- //--------------------------------------------------------------------------
- //
- // pauseWhenHidden: Event handlers and Private Methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * @private
- * Whether the video should be playing based on enabled,
- * pauseWhenHidden, whether it's on the display list, and its
- * effective visibility.
- */
- //private function get shouldBePlaying():Boolean
- //{
- //// if disabled, return false
- //if (!effectiveEnabled)
- //return false;
- //
- //// if we want to look at visibility, check to
- //// see if we are on the display list and check out
- //// effectiveVisibility (which looks up our parent chain
- //// to make sure us and all of our ancestors are visible)
- //if (pauseWhenHidden)
- //{
- //if (!_isOnDisplayList)
- //return false;
- //
- //if (!effectiveVisibility)
- //return false;
- //}
- //
- //return true;
- //}
-
- /**
- * @private
- * This method will pause or play the video by looking at the state of
- * the component and determining whether it should play or pause. This
- * method gets called when an important event occurs, such as
- * the component being added/removed from the stage, the component's
- * effective visibility changing, or when autoPlay is set.
- *
- * <p>Only certain events are "action events" which can cause the video
- * to pause or play immediately. For example, when autoPlay is set to
- * true/false, that shouldn't cause any immediate action, but changePlayback()
- * is still called so that autoPlay can be set on the underlying media player.</p>
- *
- * <p>Actions that can pause the video are:
- * <ul>
- * <li>Changes in effective enablement</li>
- * <li>Changes in effective visibility</li>
- * <li>Changes in staging (added or removed from display list)</li>
- * <li>Setting pauseWhenHidden = true</li>
- * </ul></p>
- *
- * <p>Actions that can play the video are:
- * <ul>
- * <li>Changes in effective visibility</li>
- * <li>Changes in staging (added or removed from display list)</li>
- * </ul></p>
- *
- * @param causePause Whether this action can cause a currently playing video to pause
- * @param causePlay Whether this action can cause a currently paused video to play
- */
- //private function changePlayback(causePause:Boolean, causePlay:Boolean):void
- //{
- //// if we shouldn't be playing, we pause the video.
- //// if we come back up and should be playing, we will
- //// start playing the video again if the video wasn't paused
- //// by the user or developer and autoPlay is true.
- //if (shouldBePlaying)
- //{
- //videoPlayer.autoPlay = autoPlay;
- //
- //// only play the video if visibility caused it to pause
- //// (instead of a user or developer calling video.pause()).
- //// Also, only play if autoPlay is true. Otherwise when
- //// the visibility changes, we won't automatically
- //// play the video
- //if (causePlay && (playTheVideoOnVisible && autoPlay))
- //{
- //playTheVideoOnVisible = false;
- //
- //// set autoplay and call play() if the
- //// source has loaded up and it's playable
- //if (inLoadingState1)
- //cancelLoadAndPlay();
- //else if (videoPlayer.canPlay)
- //videoPlayer.play();
- //}
- //}
- //else
- //{
- //// there are really three states the video player can
- //// be in with respect to play vs. paused:
- //// 1) playing
- //// 2) paused
- //// 3) loading
- //// Here we are checking if we are playing or loading
- //// and going to play soon (autoPlay = true)
- //if (causePause && (playing || (videoPlayer.state == MediaPlayerState.LOADING && autoPlay)))
- //playTheVideoOnVisible = true;
-//
- //// always set autoPlay to false here and
- //// if pausable, pause the video
- //videoPlayer.autoPlay = false;
- //if (causePause)
- //{
- //// if we're loading up, then we will pause automatically, so let's
- //// not interrupt this process
- //// if inLoadingState1 && pausable, then let loading state handle it
- //// if inLoadingState1 && !pausable, then let the loading state handle it
- //// if !inLoadingState1 && pausable, then just pause
- //// if !inLoadingState1 && !pausable, then load (if needed to show first frame)
- //if (!inLoadingState1 && videoPlayer.canPause)
- //videoPlayer.pause();
- //else if (!videoPlayer.canPause && autoDisplayFirstFrame)
- //load();
- //}
- //}
- //}
-
- /**
- * @private
- * Cancels the load, no matter what state it's in, and starts to play().
- */
- //private function cancelLoadAndPlay():void
- //{
- //if (inLoadingState1)
- //{
- //if (!inLoadingState2)
- //{
- //// first step
- //
- //// Don't need to do anything but set inLoadingState1 = false (done down below).
- //// This is handled in videoPlayer_mediaPlayerStateChangeHandlerForLoading which will still
- //// be fired and will handle calling videoPlayer.play() without the rest of the loading
- //// junk because inLoadingState1 = false now
- //}
- //else if (!inLoadingState3)
- //{
- //// second step
- //videoPlayer.muted = beforeLoadMuted;
- //
- //if (videoPlayer.displayObject)
- //videoPlayer.displayObject.visible = true;
- //
- //videoPlayer.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, videoPlayer_currentTimeChangeHandler);
- //videoPlayer.removeEventListener(MediaPlayerCapabilityChangeEvent.CAN_SEEK_CHANGE, videoPlayer_canSeekChangeHandler);
- //}
- //else
- //{
- //// third step
- //videoPlayer.removeEventListener(SeekEvent.SEEKING_CHANGE, videoPlayer_seekChangeHandler);
- //videoPlayer.muted = beforeLoadMuted;
- //if (videoPlayer.displayObject)
- //videoPlayer.displayObject.visible = true;
- //
- //// wasn't playing
- //if (videoPlayer.canPlay)
- //videoPlayer.play();
- //}
- //
- //inLoadingState1 = false;
- //inLoadingState2 = false;
- //inLoadingState3 = false;
- //}
- //}
-
- /**
- * @private
- * Cancels the load, no matter what state it's in. This is used when changing the source.
- */
- //private function cleanUpSource():void
- //{
- //// TODO (rfrishbe): very similar to cancelLoadAndPlay(). Should collapse it down.
- //
- //// always remove listener as we could be out of loadState1 but still "loading to play"
- //videoPlayer.removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, videoPlayer_mediaPlayerStateChangeHandlerForLoading);
- //
- //if (inLoadingState1)
- //{
- //if (!inLoadingState2)
- //{
- //// first step
- //
- //// Just need to remove event listeners as we did above
- //}
- //else if (!inLoadingState3)
- //{
- //// second step
- //videoPlayer.muted = beforeLoadMuted;
- //videoPlayer.displayObject.visible = true;
- //
- //// going to call pause() now to stop immediately
- //videoPlayer.pause();
- //}
- //else
- //{
- //// third step
- //videoPlayer.removeEventListener(SeekEvent.SEEKING_CHANGE, videoPlayer_seekChangeHandler);
- //videoPlayer.muted = beforeLoadMuted;
- //videoPlayer.displayObject.visible = true;
- //
- //// already called pause(), so don't do anything
- //}
- //
- //inLoadingState1 = false;
- //inLoadingState2 = false;
- //inLoadingState3 = false;
- //}
- //}
-
- /**
- * @private
- */
- //private function addedToStageHandler(event:Event):void
- //{
- //_isOnDisplayList = true;
- //
- //// add listeners to current parents to see if their visibility has changed
- //if (pauseWhenHidden)
- //addVisibilityListeners();
- //
- //addEnabledListeners();
- //
- //computeEffectiveVisibilityAndEnabled();
-//
- //// When added to the stage, restore some videoPlayer timers that we had
- //// disabled when we went offstage.
- //if (!isNaN(oldCurrentTimeUpdateInterval))
- //{
- //videoPlayer.currentTimeUpdateInterval = oldCurrentTimeUpdateInterval;
- //videoPlayer.bytesLoadedUpdateInterval = oldBytesLoadedUpdateInterval;
-//
- //oldCurrentTimeUpdateInterval = NaN;
- //oldBytesLoadedUpdateInterval = NaN;
- //}
- //
- //// being added to the display list will not pause the video, but
- //// it may play the video if pauseWhenHidden = true
- //changePlayback(false, pauseWhenHidden);
- //}
-
- /**
- * @private
- */
- //private function removedFromStageHandler(event:Event):void
- //{
- //_isOnDisplayList = false;
- //
- //// remove listeners from old parents
- //if (pauseWhenHidden)
- //removeVisibilityListeners();
- //
- //removeEnabledListeners();
- //
- //// Stop the timers associated with these intervals when we go
- //// offscreen so we are not pinned in memory. Save the old
- //// values of the timers so we can restore them when we come
- //// back on stage.
- //if (pauseWhenHidden)
- //{
- //oldCurrentTimeUpdateInterval = videoPlayer.currentTimeUpdateInterval;
- //oldBytesLoadedUpdateInterval = videoPlayer.bytesLoadedUpdateInterval;
- //videoPlayer.currentTimeUpdateInterval = -1;
- //videoPlayer.bytesLoadedUpdateInterval = -1;
- //}
- //
- //// being removed from the display list will pause the video if
- //// pauseWhenHidden = true
- //changePlayback(pauseWhenHidden, false);
- //}
-
- /**
- * @private
- * Add event listeners for SHOW and HIDE on all the ancestors up the parent chain.
- * Adding weak event listeners just to be safe.
- */
- //private function addVisibilityListeners():void
- //{
- //var current:IVisualElement = this;
- //while (current)
- //{
- //// add visibility listeners to the parent
- //current.addEventListener(FlexEvent.HIDE, visibilityChangedHandler, false, 0, true);
- //current.addEventListener(FlexEvent.SHOW, visibilityChangedHandler, false, 0, true);
- //
- //// add listeners to the design layer too
- //if (current.designLayer)
- //{
- //current.designLayer.addEventListener("layerPropertyChange",
- //designLayer_layerPropertyChangeHandler, false, 0, true);
- //}
- //
- //current = current.parent as IVisualElement;
- //}
- //}
-
- /**
- * @private
- * Add event listeners for "enabledChanged" event on all ancestors up the parent chain.
- * Adding weak event listeners just to be safe.
- */
- //private function addEnabledListeners():void
- //{
- //var current:IVisualElement = this;
- //while (current)
- //{
- //current.addEventListener("enabledChanged", enabledChangedHandler, false, 0, true);
- //current.addEventListener("enabledChanged", enabledChangedHandler, false, 0, true);
- //
- //current = current.parent as IVisualElement;
- //}
- //}
-
- /**
- * @private
- * Remove event listeners for SHOW and HIDE on all the ancestors up the parent chain.
- */
- //private function removeVisibilityListeners():void
- //{
- //var current:IVisualElement = this;
- //while (current)
- //{
- //current.removeEventListener(FlexEvent.HIDE, visibilityChangedHandler, false);
- //current.removeEventListener(FlexEvent.SHOW, visibilityChangedHandler, false);
- //
- //if (current.designLayer)
- //{
- //current.designLayer.removeEventListener("layerPropertyChange",
- //designLayer_layerPropertyChangeHandler, false);
- //}
- //
- //current = current.parent as IVisualElement;
- //}
- //}
-
- /**
- * @private
- * Remove event listeners for "enabledChanged" event on all ancestors up the parent chain.
- */
- //private function removeEnabledListeners():void
- //{
- //var current:IVisualElement = this;
- //while (current)
- //{
- //current.removeEventListener("enabledChanged", enabledChangedHandler, false);
- //current.removeEventListener("enabledChanged", enabledChangedHandler, false);
- //
- //current = current.parent as IVisualElement;
- //}
- //}
-
- /**
- * @private
- * Event call back whenever the visibility of us or one of our ancestors
- * changes
- */
- //private function visibilityChangedHandler(event:FlexEvent):void
- //{
- //effectiveVisibilityChanged = true;
- //invalidateProperties();
- //}
-
- /**
- * @private
- * Event call back whenever the visibility of our designLayer or one of our parent's
- * designLayers change.
- */
- //private function designLayer_layerPropertyChangeHandler(event:PropertyChangeEvent):void
- //{
- //if (event.property == "effectiveVisibility")
- //{
- //effectiveVisibilityChanged = true;
- //invalidateProperties();
- //}
- //}
-
- /**
- * @private
- * Event call back whenever the enablement of us or one of our ancestors
- * changes
- */
- //private function enabledChangedHandler(event:Event):void
- //{
- //effectiveEnabledChanged = true;
- //invalidateProperties();
- //}
-
- /**
- * @private
- */
- //private function computeEffectiveVisibilityAndEnabled():void
- //{
- //// start out with true visibility and enablement
- //// then loop up parent-chain to see if any of them are false
- //effectiveVisibility = true;
- //effectiveEnabled = true;
- //var current:IVisualElement = this;
- //
- //while (current)
- //{
- //if (!current.visible ||
- //(current.designLayer && !current.designLayer.effectiveVisibility))
- //{
- //effectiveVisibility = false;
- //if (!effectiveEnabled)
- //break;
- //}
- //
- //if (current is IUIComponent && !IUIComponent(current).enabled)
- //{
- //effectiveEnabled = false;
- //if (!effectiveVisibility)
- //break;
- //}
- //
- //current = current.parent as IVisualElement;
- //}
- //}
-
- //--------------------------------------------------------------------------
- //
- // Event handlers
- //
- //--------------------------------------------------------------------------
-
- /**
- * @private
- */
- //private function videoPlayer_volumeChangeHandler(event:AudioEvent):void
- //{
- //dispatchEvent(new Event("volumeChanged"));
- //}
-
- /**
- * @private
- */
- //private function videoPlayer_mutedChangeHandler(event:AudioEvent):void
- //{
- //dispatchEvent(new Event("volumeChanged"));
- //}
-
- /**
- * @private
- * Event handler for mediaPlayerStateChange event.
- */
- //private function videoPlayer_mediaPlayerStateChangeHandler(event:MediaPlayerStateChangeEvent):void
- //{
- //// if the event change caused us to go in to a state where
- //// nothing is loaded up and we've no chance of getting a
- //// dimensionChangeEvent, then let's invalidate our size here
- //if (event.state == MediaPlayerState.PLAYBACK_ERROR)
- //invalidateSize();
- //
- //// this is a public event, so let's re-dispatch it
- //dispatchEvent(event);
- //}
-
- /**
- * @private
- * Event handler for mediaPlayerStateChange event--used only
- * when trying to load up the video without playing it.
- */
- //private function videoPlayer_mediaPlayerStateChangeHandlerForLoading(event:MediaPlayerStateChangeEvent):void
- //{
- //// only come in here when we want to load the video without playing it.
- ////trace("videoPlayer_mediaPlayerStateChangeHandlerForLoading: mediaPlayerState = " + event.state);
- //
- //// wait until we are ready so that we can set mute, play, pause, and seek
- //if (event.state == MediaPlayerState.READY)
- //{
- //// now that we are loading up, let's remove the event listener:
- //videoPlayer.removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, videoPlayer_mediaPlayerStateChangeHandlerForLoading);
- //
- //// if we are already playing() for some reason because someone called play(), then
- //// we don't need to do anything.
- //if (videoPlayer.playing)
- //return;
- //
- //// if this load wasn't cancelled, then we'll do the load stuff.
- //// otherwise, we'll just cause play().
- //if (inLoadingState1)
- //{
- ////trace("videoPlayer_mediaPlayerStateChangeHandlerForLoading: inLoadingState1");
-//
- //beforeLoadMuted = videoPlayer.muted;
- //videoPlayer.muted = true;
- //
- //if (videoPlayer.displayObject)
- //videoPlayer.displayObject.visible = false;
- //
- //inLoadingState2 = true;
- //}
- //
- //// call play(), here, then wait to call pause() and seek(0) in the
- //// mediaSizeChangeHandler
- ////trace("videoPlayer_mediaPlayerStateChangeHandlerForLoading: call videoPlayer.play()");
- //videoPlayer.play();
- //}
- //}
-
- /**
- * @private
- */
- //private function videoPlayer_mediaSizeChangeHandler(event:DisplayObjectEvent):void
- //{
- ////trace("videoPlayer_mediaSizeChangeHandler");
- //invalidateSize();
- //
- //// if we're loading up the video, then let's finish the load in here
- //if (inLoadingState2)
- //{
- ////trace("videoPlayer_mediaSizeChangeHandler: inLoadingState2");
-//
- //if (videoPlayer.canSeek && videoPlayer.canSeekTo(0))
- //{
- ////trace("videoPlayer_mediaSizeChangeHandler: canSeek to first frame");
- //inLoadingState3 = true;
- //
- //// Don't call pause and seek inside this handler because OSMF is
- //// not expecting us to change its HTTPStreamingState value in
- //// HTTPNetStream.onMainTimer as a result of dispatching this
- //// event (see SDK-27028).
- //callLater(pauseAndSeekCallBack);
- //}
- //else if (duration < 0)
- //{
- //// Work around for negative durations - FM-1009
- //// We want to seek to the first frame but we can't because the
- //// duration of the video is reported as negative. As a work around,
- //// listen for the first time change event and then pause the video.
- ////trace("videoPlayer_mediaSizeChangeHandler: negative duration - wait for first current time change event");
- //videoPlayer.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, videoPlayer_currentTimeChangeHandler);
- //}
- //else
- //{
- ////trace("videoPlayer_mediaSizeChangeHandler: waiting for media to become seekable");
- //
- //// wait for the media to become seekable.
- //videoPlayer.addEventListener(MediaPlayerCapabilityChangeEvent.CAN_SEEK_CHANGE, videoPlayer_canSeekChangeHandler);
- //}
- //}
- //}
-
- //private function pauseAndSeekCallBack():void
- //{
- //// the seek(0) is asynchronous so let's add an event listener to see when it's finsished:
- //videoPlayer.addEventListener(SeekEvent.SEEKING_CHANGE, videoPlayer_seekChangeHandler);
- //
- //// called play(), now call pause() and seek(0);
- //videoPlayer.pause();
- //videoPlayer.seek(0);
- //
- //}
-
- /**
- * @private
- * Wait until the media is seekable before we call pause() and seek().
- */
- //private function videoPlayer_canSeekChangeHandler(event:Event):void
- //{
- ////trace("videoPlayer_canSeekChangeHandler: seeking = " + videoPlayer.canSeek);
- //
- //videoPlayer.removeEventListener(MediaPlayerCapabilityChangeEvent.CAN_SEEK_CHANGE, videoPlayer_canSeekChangeHandler);
-//
- //if (inLoadingState2)
- //{
- //if (videoPlayer.canSeek && videoPlayer.canSeekTo(0))
- //{
- //inLoadingState3 = true;
- //
- //// Don't call pause and seek inside this handler because OSMF is
- //// not expecting us to change its HTTPStreamingState value in
- //// HTTPNetStream.onMainTimer as a result of dispatching this
- //// event (see SDK-27028).
- //callLater(pauseAndSeekCallBack);
- //}
- //}
- //}
-
- /**
- * @private
- * Event handler for seekEnd events. We only use this
- * when trying to load up the video without playing it.
- * This will be called after the video has loaded up and
- * we have finished seeking back to the first frame.
- */
- //private function videoPlayer_seekChangeHandler(event:SeekEvent):void
- //{
- //if (!event.seeking)
- //{
- //inLoadingState1 = false;
- //inLoadingState2 = false;
- //inLoadingState3 = false;
- //
- //videoPlayer.removeEventListener(SeekEvent.SEEKING_CHANGE, videoPlayer_seekChangeHandler);
- //videoPlayer.muted = beforeLoadMuted;
- //if (videoPlayer.displayObject)
- //videoPlayer.displayObject.visible = true;
-//
- //// Disable the TimeEvents again that we had
- //// enabled for loading a video while offstage.
- //if (!isNaN(oldCurrentTimeUpdateInterval))
- //{
- //videoPlayer.currentTimeUpdateInterval = -1;
- //videoPlayer.bytesLoadedUpdateInterval = -1;
- //}
- //}
- //}
-
-
- /**
- * @private
- *
- * Work around for negative durations - see FM-1009.
- * See want to seek to the first frame but can't because
- * the video has a negative duration. So we listen to the
- * current time. When we get a time change so we must be at
- * least the first frame so pause the video now and clean
- * up the load state variables.
- */
- //private function videoPlayer_currentTimeChangeHandler(event:TimeEvent):void
- //{
- ////trace("videoPlayer_currentTimeChangeHandler: time = " + event.time);
- //
- //videoPlayer.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, videoPlayer_currentTimeChangeHandler);
- //videoPlayer.removeEventListener(MediaPlayerCapabilityChangeEvent.CAN_SEEK_CHANGE, videoPlayer_canSeekChangeHandler);
-//
- //videoPlayer.pause();
- //videoPlayer.muted = beforeLoadMuted;
- //
- //if (videoPlayer.displayObject)
- //videoPlayer.displayObject.visible = true;
-//
- //inLoadingState1 = false;
- //inLoadingState2 = false;
- //inLoadingState3 = false;
-//
- //// Disable the TimeEvents again that we had
- //// enabled for loading a video while offstage.
- //if (!isNaN(oldCurrentTimeUpdateInterval))
- //{
- //videoPlayer.currentTimeUpdateInterval = -1;
- //videoPlayer.bytesLoadedUpdateInterval = -1;
- //}
- //}
-
- /**
- * @private
- *
- * Work around for negative durations - see FM-1009.
- *
- * If we get a duration event that is negative while in
- * inLoadingState2 is true, then listen for the first time
- * change event so we can pause the video.
- */
- //private function videoPlayer_durationChangeHandler(event:TimeEvent):void
- //{
- ////trace("videoPlayer_durationChangeHandler: time = " + event.time);
- //dispatchEvent(event);
- //
- //if (inLoadingState2)
- //{
- //if (event.time < 0)
- //{
- //// Work around for negative durations - FM-1009
- //// We want to seek to the first frame but we can't because the
- //// duration of the video is reported as negative. As a work around,
- //// listen for the first time change event and then pause the video.
- ////trace("videoPlayer_durationChangeHandler: negative duration - wait for first current time change event");
- //videoPlayer.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, videoPlayer_currentTimeChangeHandler);
- //}
- //}
- //}
-}
-}
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/mediaClasses/ScrubBar.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/mediaClasses/ScrubBar.as
deleted file mode 100644
index 82be80f..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/mediaClasses/ScrubBar.as
+++ /dev/null
@@ -1,276 +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 spark.components.mediaClasses
-{
-
-import org.apache.royale.html.Slider;
-import mx.core.UIComponent;
-//import flash.display.DisplayObject;
-//import flash.display.DisplayObjectContainer;
-//import flash.display.InteractiveObject;
-//import org.apache.royale.events.Event;
-
-//import mx.core.IVisualElement;
-
-//import spark.components.HSlider;
-
-/**
- * The VideoScrubBar class defines a video timeline that shows the
- * current play head location in the video, the amount of the video previously played,
- * and the loaded in part of the video.
- * The timeline appears at the bottom of the VideoPlayer control.
- *
- * @see spark.components.VideoPlayer
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-public class ScrubBar extends Slider
-{
-
- //--------------------------------------------------------------------------
- //
- // Constructor
- //
- //--------------------------------------------------------------------------
-
- /**
- * Constructor.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function ScrubBar()
- {
- super();
-
- //dataTipFormatFunction = formatTimeValue;
- }
-
- //--------------------------------------------------------------------------
- //
- // Skin Parts
- //
- //--------------------------------------------------------------------------
-
- [SkinPart(required="false")]
-
- /**
- * An optional skin part for the area on the track
- * representing the video that's been played.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public var playedArea:UIComponent;
-
- [SkinPart(required="false")]
-
- /**
- * An optional skin part for the area on the track
- * representing the currently loaded in part of the video.
- *
- * <p>For a progressive download video, this will correspond
- * to the number of bytes downloaded. For a streaming video,
- * the whole video is "loaded in" as it's quick to seek to
- * any spot in the video.</p>
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public var loadedRangeArea:UIComponent;
-
- //--------------------------------------------------------------------------
- //
- // Properties
- //
- //--------------------------------------------------------------------------
-
- //---------------------------------
- // loadedRangeEnd
- //---------------------------------
-
- //private var _loadedRangeEnd:Number;
-
- /**
- * The range of currently loaded in values. This
- * property corresponds to the end of that range.
- *
- * <p>For a progressive download video, this will correspond
- * to the number of bytes downloaded. For a streaming video,
- * the whole video is "loaded in" as it's quick to seek to
- * any spot in the video.</p>
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get loadedRangeEnd():Number
- {
- //return _loadedRangeEnd;
- return NaN;
- }
-
- /**
- * @private
- */
- public function set loadedRangeEnd(value:Number):void
- {
- //if (value == _loadedRangeEnd)
- //return;
- //
- //_loadedRangeEnd = value;
- //invalidateDisplayList();
- }
-
- //--------------------------------------------------------------------------
- //
- // Methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * @private
- */
- //override protected function partAdded(partName:String, instance:Object):void
- //{
- //super.partAdded(partName, instance);
- //
- //if (instance == playedArea)
- //{
- //if (playedArea is InteractiveObject)
- //InteractiveObject(playedArea).mouseEnabled = false;
- //if (playedArea is DisplayObjectContainer)
- //DisplayObjectContainer(playedArea).mouseChildren = false;
- //
- //invalidateDisplayList();
- //}
- //else if (instance == loadedRangeArea)
- //{
- //if (loadedRangeArea is InteractiveObject)
- //InteractiveObject(loadedRangeArea).mouseEnabled = false;
- //if (loadedRangeArea is DisplayObjectContainer)
- //DisplayObjectContainer(loadedRangeArea).mouseChildren = false;
- //
- //invalidateDisplayList();
- //}
- //}
-
- /**
- * @private
- */
- //private function calculateAreaSize(value:Number):Number
- //{
- //var trackPos:Number = track.getLayoutBoundsX();
- //var trackSize:Number = track.getLayoutBoundsWidth();
- //var thumbSize:Number = thumb.getLayoutBoundsWidth();
- //var range:Number = maximum - minimum;
- //var thumbPos:Number = (range > 0) ? (value - minimum) * ((trackSize - thumbSize) / range) : 0;
- //return thumbSize + thumbPos;
- //}
-
- /**
- * @private
- */
- //override protected function updateSkinDisplayList():void
- //{
- //super.updateSkinDisplayList();
- //
- //if (!thumb || !track)
- //return;
- //
- //sizeLoadedRangeArea(calculateAreaSize(loadedRangeEnd));
- //sizePlayedArea(calculateAreaSize(pendingValue));
- //}
-
- /**
- * Sets the size of the loaded range area.
- * The loaded range area defines the area on the timeline that represents
- * the currently loaded portion of the video.
- *
- * @param loadedRangeAreaSize The new size of the loaded in range area.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- //protected function sizeLoadedRangeArea(loadedRangeAreaSize:Number):void
- //{
- //if (loadedRangeArea)
- //loadedRangeArea.setLayoutBoundsSize(Math.round(loadedRangeAreaSize), NaN);
- //}
-
- /**
- * Sets the size of the played area.
- * The played area defines the area on the timeline that represents
- * the part of the video that has been played.
- *
- * @param playedAreaSize The new size of the played area.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- //protected function sizePlayedArea(playedAreaSize:Number):void
- //{
- //if (playedArea)
- //playedArea.setLayoutBoundsSize(Math.round(playedAreaSize), NaN);
- //}
-
- /**
- * @private
- */
- //private function formatTimeValue(value:Number):String
- //{
- //// default format: hours:minutes:seconds
- //var hours:uint = Math.floor(value/3600) % 24;
- //var minutes:uint = Math.floor(value/60) % 60;
- //var seconds:uint = Math.round(value) % 60;
- //
- //var result:String = "";
- //if (hours != 0)
- //result = hours + ":";
- //
- //if (result && minutes < 10)
- //result += "0" + minutes + ":";
- //else
- //result += minutes + ":";
- //
- //if (seconds < 10)
- //result += "0" + seconds;
- //else
- //result += seconds;
- //
- //return result;
- //}
-}
-}
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/mediaClasses/VolumeBar.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/mediaClasses/VolumeBar.as
deleted file mode 100644
index be10931..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/mediaClasses/VolumeBar.as
+++ /dev/null
@@ -1,582 +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 spark.components.mediaClasses
-{
-
-
-import org.apache.royale.html.Slider;
-//import flash.display.DisplayObject;
-//import org.apache.royale.events.Event;
-//import org.apache.royale.events.FocusEvent;
-//import org.apache.royale.events.KeyboardEvent;
-//import org.apache.royale.events.MouseEvent;
-//import org.apache.royale.geom.Point;
-//import flash.ui.Keyboard;
-//import flash.ui.Mouse;
-//
-//import mx.collections.IList;
-//import mx.core.IUIComponent;
-import mx.core.UIComponent;
-//import mx.core.mx_internal;
-//import mx.events.CollectionEvent;
-//import mx.events.FlexEvent;
-//import mx.managers.LayoutManager;
-//
-//import spark.components.VSlider;
-//import spark.components.supportClasses.ButtonBase;
-//import spark.components.supportClasses.DropDownController;
-//import spark.components.supportClasses.ListBase;
-//import spark.events.DropDownEvent;
-//import spark.utils.LabelUtil;
-
-use namespace mx_internal;
-
-//--------------------------------------
-// Events
-//--------------------------------------
-
-/**
- * Dispatched when the volume drop-down slider is dismissed for any reason,
- * such as when the user:
- * <ul>
- * <li>Selects an item in the drop-down slider</li>
- * <li>Clicks outside of the drop-down slider</li>
- * </ul>
- *
- * @eventType spark.events.DropDownEvent.CLOSE
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-[Event(name="close", type="spark.events.DropDownEvent")]
-
-/**
- * Dispatched when the user mouses over the drop-down slider
- * to display it. It is also dispatched if the user
- * uses the keyboard and types Ctrl-Down to open the drop-down slider.
- *
- * @eventType spark.events.DropDownEvent.OPEN
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-[Event(name="open", type="spark.events.DropDownEvent")]
-
-/**
- * Dispatched when the user mutes or unmutes the volume.
- *
- * @eventType mx.events.FlexEvent.MUTED_CHANGE
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-[Event(name="mutedChange", type="mx.events.FlexEvent")]
-
-//--------------------------------------
-// Styles
-//--------------------------------------
-
-/**
- * The delay, in milliseconds, before opening the volume slider
- * after the user moves the mouse over the volume icon in
- * the VideoDisplay control.
- *
- * @default 200
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-[Style(name="rollOverOpenDelay", type="Number", inherit="no")]
-
-//--------------------------------------
-// SkinStates
-//--------------------------------------
-
-/**
- * Open state of the drop-down slider.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-[SkinState("open")]
-
-/**
- * The VolumeBar class defines a drop-down slider to control
- * the volume of the VideoDisplay control.
- * By default, the drop-down slider opens when the user moves the mouse
- * over the volume icon of the VideoDisplay control.
- * The <code>rollOverOpenDelay</code> style defines a delay of 200 milliseconds
- * before opening the drop-down slider.
- *
- * @see spark.components.VideoDisplay
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-public class VolumeBar extends Slider
-{
-
- //--------------------------------------------------------------------------
- //
- // Constructor
- //
- //--------------------------------------------------------------------------
-
- /**
- * Constructor.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function VolumeBar()
- {
- super();
-
- //dropDownController = new DropDownController();
-
- // add change listener so we know when the user has interacted
- // with the volume bar to change the value so we can automatically
- // unmute the volume when the user does that.
- //addEventListener(Event.CHANGE, changeHandler);
- }
-
- //--------------------------------------------------------------------------
- //
- // Skin Parts
- //
- //--------------------------------------------------------------------------
-
- /**
- * A skin part that defines the mute/unmute button.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- [SkinPart(required="false")]
- //public var muteButton:MuteButton;
- public var muteButton:UIComponent;
-
-
- /**
- * A skin part that defines the drop-down area of the volume drop-down slider.
- * When the volume slider drop down is open,
- * clicking anywhere outside of the <code>dropDown</code> skin part
- * closes the drop-down slider.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- [SkinPart(required="false")]
- public var dropDown:DisplayObject;
-
- //--------------------------------------------------------------------------
- //
- // Properties
- //
- //--------------------------------------------------------------------------
-
- //----------------------------------
- // dropDownController
- //----------------------------------
-
- //private var _dropDownController:DropDownController;
-
- /**
- * Instance of the DropDownController class that handles all of the mouse, keyboard
- * and focus user interactions.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- //protected function get dropDownController():DropDownController
- //{
- //return _dropDownController;
- //}
-
- /**
- * @private
- */
- //protected function set dropDownController(value:DropDownController):void
- //{
- //if (_dropDownController == value)
- //return;
- //
- //_dropDownController = value;
- //
- //_dropDownController.addEventListener(DropDownEvent.OPEN, dropDownController_openHandler);
- //_dropDownController.addEventListener(DropDownEvent.CLOSE, dropDownController_closeHandler);
- //
- //_dropDownController.rollOverOpenDelay = getStyle("rollOverOpenDelay");
- //
- //if (muteButton)
- //_dropDownController.openButton = muteButton;
- //if (dropDown)
- //_dropDownController.dropDown = dropDown;
- //}
-
- //----------------------------------
- // isDropDownOpen
- //----------------------------------
-
- /**
- * @copy spark.components.supportClasses.DropDownController#isOpen
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get isDropDownOpen():Boolean
- {
- //if (dropDownController)
- //return dropDownController.isOpen;
- //else
- //return false;
- return false;
- }
-
- //----------------------------------
- // muted
- //----------------------------------
-
- /**
- * @private
- */
- private var _muted:Boolean = false;
-
- [Bindable("mutedChange")]
-
- /**
- * Contains <code>true</code> if the volume of the video is muted,
- * and <code>false</code> if not.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get muted():Boolean
- {
- //return _muted;
- return false;
- }
-
- /**
- * @private
- */
- public function set muted(value:Boolean):void
- {
- //if (_muted == value)
- //return;
- //
- //_muted = value;
- //
- //// invalidateDisplayList() because we take in to account value and muted when
- //// determining where to draw the thumb on the track.
- //invalidateDisplayList();
- //
- //if (muteButton)
- //muteButton.muted = value;
- //
- //dispatchEvent(new FlexEvent(FlexEvent.MUTED_CHANGE));
- }
-
- //--------------------------------------------------------------------------
- //
- // Overridden Properties
- //
- //--------------------------------------------------------------------------
-
- //----------------------------------
- // baselinePosition
- //----------------------------------
-
- /**
- * @private
- */
- //override public function get baselinePosition():Number
- public function get baselinePosition():Number
- {
- //return getBaselinePositionForPart(muteButton);
- return NaN;
- }
-
- //--------------------------------------------------------------------------
- //
- // Overridden Methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * @private
- * Overridden to handle the muted case where the value's not actually changed,
- * but we want it to show up as 0.
- */
- //override protected function updateSkinDisplayList():void
- //{
- //if (!thumb || !track)
- //return;
- //
- //var thumbRange:Number = track.getLayoutBoundsHeight() - thumb.getLayoutBoundsHeight();
- //var range:Number = maximum - minimum;
- //
- //// calculate new thumb position.
- //var thumbPosTrackY:Number;
- //
- //// if muted, it's 0. otherwise, calculate it normally
- //// TODO (rfrishbe): should probably use setValue(0) and listen for CHANGE on the VideoPlayer
- //// instead of VALUE_COMMIT.
- //if (!muted)
- //thumbPosTrackY = (range > 0) ? thumbRange - (((pendingValue - minimum) / range) * thumbRange) : 0;
- //else
- //thumbPosTrackY = thumbRange;
- //
- //// convert to parent's coordinates.
- //var thumbPos:Point = track.localToGlobal(new Point(0, thumbPosTrackY));
- //var thumbPosParentY:Number = thumb.parent.globalToLocal(thumbPos).y;
- //
- //thumb.setLayoutBoundsPosition(thumb.getLayoutBoundsX(), Math.round(thumbPosParentY));
- //}
-
- /**
- * @private
- */
- //override public function styleChanged(styleProp:String):void
- public function styleChanged(styleProp:String):void
- {
- //super.styleChanged(styleProp);
- //var allStyles:Boolean = (styleProp == null || styleProp == "styleName");
- //
- //if (allStyles || styleProp == "rollOverOpenDelay")
- //{
- //if (dropDownController)
- //dropDownController.rollOverOpenDelay = getStyle("rollOverOpenDelay");
- //}
- }
-
-
- /**
- * @private
- */
- //override protected function setValue(value:Number):void
- //{
- //super.setValue(value);
- //
- //if (muteButton)
- //muteButton.volume = value;
- //}
-
- /**
- * @private
- */
- //override protected function getCurrentSkinState():String
- //{
- //return !enabled ? "disabled" : dropDownController.isOpen ? "open" : "normal";
- //}
-
- /**
- * @private
- */
- //override protected function partAdded(partName:String, instance:Object):void
- //{
- //super.partAdded(partName, instance);
- //
- //if (instance == muteButton)
- //{
- //if (dropDownController)
- //dropDownController.openButton = muteButton;
- //
- //muteButton.addEventListener(FlexEvent.MUTED_CHANGE, muteButton_mutedChangeHandler);
- //muteButton.volume = value;
- //muteButton.muted = muted;
- //}
- //else if (instance == dropDown && dropDownController)
- //{
- //dropDownController.dropDown = dropDown;
- //}
- //}
-
- /**
- * @private
- */
- //override protected function partRemoved(partName:String, instance:Object):void
- //{
- //if (instance == muteButton)
- //{
- //muteButton.removeEventListener(FlexEvent.MUTED_CHANGE, muteButton_mutedChangeHandler);
- //}
- //else if (instance == dropDownController)
- //{
- //if (instance == muteButton)
- //dropDownController.openButton = null;
- //
- //if (instance == dropDown)
- //dropDownController.dropDown = null;
- //}
- //
- //super.partRemoved(partName, instance);
- //}
-
- /**
- * @private
- * On focus, pop open the drop down and validate everything so
- * we can draw focus on one of the drop-down parts (the thumb)
- */
- //override public function setFocus():void
- override public function setFocus():void
- {
- //openDropDown();
- //LayoutManager.getInstance().validateNow();
- //super.setFocus();
- }
-
- /**
- * @private
- */
- //override protected function focusOutHandler(event:FocusEvent):void
- //{
- //dropDownController.processFocusOut(event);
-//
- //super.focusOutHandler(event);
- //}
-
- //--------------------------------------------------------------------------
- //
- // Methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * Opens the drop-down slider.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function openDropDown():void
- {
- //dropDownController.openDropDown();
- }
-
- /**
- * Closes the drop-down slider.
- *
- * @param commit Set to <code>true</code> if the component should commit the value
- * from the drop-down slider.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function closeDropDown(commit:Boolean):void
- {
- //dropDownController.closeDropDown(commit);
- }
-
- //--------------------------------------------------------------------------
- //
- // Event handling
- //
- //--------------------------------------------------------------------------
-
- /**
- * Event handler for the <code>dropDownController</code>
- * <code>DropDownEvent.OPEN</code> event. Updates the skin's state and
- * ensures that the selectedItem is visible.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- mx_internal function dropDownController_openHandler(event:DropDownEvent):void
- {
- invalidateSkinState();
-
- dispatchEvent(event);
- }
-
- /**
- * Event handler for the <code>dropDownController</code>
- * <code>DropDownEvent.CLOSE</code> event. Updates the skin's state.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- //mx_internal function dropDownController_closeHandler(event:DropDownEvent):void
- //{
- //invalidateSkinState();
- //
- //// In this implementation, the volume is always changed immediately,
- //// so no need to handle the case when
- //// commit==false and event.preventDefault() is called on this DropDownEvent
- //
- //dispatchEvent(event);
- //}
-
- /**
- * @private
- * When the value is changed via a user-interaction, we will
- * automatically unmute the volume
- */
- //private function changeHandler(event:Event):void
- //{
- //// when the value is set, this volume bar unmutes the
- //// video player automatically
- //if (muted)
- //muted = false;
- //}
-
- /**
- * @private
- * When the mute button changes the muted value, we need to change
- * our own.
- */
- //private function muteButton_mutedChangeHandler(event:FlexEvent):void
- //{
- //muted = muteButton.muted;
- //}
-
-}
-}
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/core/SpriteVisualElement.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/core/SpriteVisualElement.as
deleted file mode 100644
index 10ca16f..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/core/SpriteVisualElement.as
+++ /dev/null
@@ -1,3014 +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 spark.core
-{
-
-import flash.display.BlendMode;
-import mx.core.UIComponent;
-import org.apache.royale.events.Event;
-import org.apache.royale.events.IEventDispatcher;
-import flash.geom.ColorTransform;
-import org.apache.royale.geom.Matrix;
-import org.apache.royale.geom.Matrix3D;
-import flash.geom.PerspectiveProjection;
-import org.apache.royale.geom.Point;
-import org.apache.royale.geom.Rectangle;
-import flash.geom.Vector3D;
-
-import mx.core.AdvancedLayoutFeatures;
-import mx.core.DesignLayer;
-import mx.core.FlexSprite;
-import mx.core.IFlexModule;
-import mx.core.IFlexModuleFactory;
-import mx.core.IInvalidating;
-import mx.core.ILayoutDirectionElement;
-import mx.core.IMXMLObject;
-import mx.core.IUIComponent;
-import mx.core.IUITextField;
-import mx.core.IVisualElement;
-import mx.core.LayoutDirection;
-import mx.core.mx_internal;
-import mx.events.PropertyChangeEvent;
-import mx.filters.BaseFilter;
-import mx.filters.IBitmapFilter;
-import mx.geom.Transform;
-import mx.geom.TransformOffsets;
-import mx.graphics.shaderClasses.ColorBurnShader;
-import mx.graphics.shaderClasses.ColorDodgeShader;
-import mx.graphics.shaderClasses.ColorShader;
-import mx.graphics.shaderClasses.ExclusionShader;
-import mx.graphics.shaderClasses.HueShader;
-import mx.graphics.shaderClasses.LuminosityShader;
-import mx.graphics.shaderClasses.SaturationShader;
-import mx.graphics.shaderClasses.SoftLightShader;
-import mx.managers.ILayoutManagerClient;
-import mx.utils.MatrixUtil;
-import mx.utils.TransformUtil;
-
-import spark.components.ResizeMode;
-import spark.utils.MaskUtil;
-
-
-use namespace mx_internal;
-
-/**
- * The SpriteVisualElement class is a light-weight Sprite-based implemention
- * of the IVisualElement interface. Spark containers can lay out and render SpriteVisualElement objects.
- *
- * <p>If you use ActionScript to add an FXG component to an application, it should be of type SpriteVisualElement.</p>
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-public class SpriteVisualElement extends FlexSprite
- implements IVisualElement, IMXMLObject, IFlexModule
-{
- /**
- * Constructor.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function SpriteVisualElement()
- {
- super();
- measure();
- }
-
- //--------------------------------------------------------------------------
- //
- // Variables
- //
- //--------------------------------------------------------------------------
-
- // When changing these constants, make sure you change
- // the constants with the same name in UIComponent
- private static const DEFAULT_MAX_WIDTH:Number = 10000;
- private static const DEFAULT_MAX_HEIGHT:Number = 10000;
-
- /**
- * @private
- * Flag that signifies this SVE is nested and thus should search for an
- * SVE ancestor at an arbitrary depth to report changes such as
- * invalidating size.
- */
- mx_internal var nestedSpriteVisualElement:Boolean;
-
- /**
- * @private
- * Storage for the original size of the graphic. Initialized in the c-tor.
- */
- private var naturalWidth:Number;
- private var naturalHeight:Number;
-
- /**
- * @private
- * Storage for advanced layout and transform properties.
- */
- private var _layoutFeatures:AdvancedLayoutFeatures;
-
- /**
- * @private
- * When true, the transform on this component consists only of translation.
- * Otherwise, it may be arbitrarily complex.
- */
- private var hasDeltaIdentityTransform:Boolean = true;
-
- /**
- * @private
- * Storage for the modified Transform object that can dispatch
- * change events correctly.
- */
- private var _transform:flash.geom.Transform;
-
- /**
- * @private
- * Initializes the implementation and storage of some of the less
- * frequently used advanced layout features of a component.
- * Call this function before attempting to use any of the
- * features implemented by the AdvancedLayoutFeatures object.
- */
- private function initAdvancedLayoutFeatures():AdvancedLayoutFeatures
- {
- var features:AdvancedLayoutFeatures = new AdvancedLayoutFeatures();
-
- hasDeltaIdentityTransform = false;
-
- features.layoutScaleX = scaleX;
- features.layoutScaleY = scaleY;
- features.layoutScaleZ = scaleZ;
- features.layoutRotationX = rotationX;
- features.layoutRotationY = rotationY;
- features.layoutRotationZ = rotation;
- features.layoutX = x;
- features.layoutY = y;
- features.layoutZ = z;
- features.layoutWidth = _width; // for the mirror transform
-
- // Initialize the internal variable last,
- // since the transform getters depend on it.
- _layoutFeatures = features;
-
- invalidateTransform();
- return features;
- }
-
- /**
- * @private
- * Makes sure that the computed matrix will be committed.
- */
- private function invalidateTransform():void
- {
- if (_layoutFeatures && _layoutFeatures.updatePending == false)
- {
- _layoutFeatures.updatePending = true;
- applyComputedMatrix();
- }
- }
-
- /**
- * @private
- * Commits the computed matrix built from the combination of the layout
- * matrix and the transform offsets to the flash displayObject's transform.
- */
- private function applyComputedMatrix():void
- {
- _layoutFeatures.updatePending = false;
-
- if (_layoutFeatures.is3D)
- super.transform.matrix3D = _layoutFeatures.computedMatrix3D;
- else
- super.transform.matrix = _layoutFeatures.computedMatrix;
- }
-
- /**
- * @private
- * Returns the layout matrix, or null if it only consists of translations.
- */
- protected function nonDeltaLayoutMatrix():Matrix
- {
- if (hasDeltaIdentityTransform)
- return null;
- if (_layoutFeatures != null)
- {
- return _layoutFeatures.layoutMatrix;
- }
- else
- {
- // Lose scale.
- // if scale is actually set (and it's not just our "secret scale"), then
- // layoutFeatures wont' be null and we won't be down here
- return MatrixUtil.composeMatrix(x, y, 1, 1, rotation, 0, 0);
- }
- }
-
- /**
- * @private
- * Resizes the sprite to the specified pre-transform size
- */
- private function setActualSize(width:Number, height:Number):void
- {
- if ((_width != width) && _layoutFeatures)
- {
- _layoutFeatures.layoutWidth = width;
- invalidateTransform();
- }
-
- _width = width;
- _height = height;
-
- if (resizeMode == ResizeMode.NO_SCALE)
- {
- // Set the internal scale to 1
- if (_layoutFeatures)
- {
- _layoutFeatures.stretchX = 1;
- _layoutFeatures.stretchY = 1;
- invalidateTransform();
- }
- }
- else
- {
- // Scale from the measured size to the layout size
- var measuredWidth:Number = isNaN(_viewWidth) ? naturalWidth : _viewWidth;
- var measuredHeight:Number = isNaN(_viewHeight) ? naturalHeight : _viewHeight;
-
- var sx:Number = measuredWidth != 0 ? _width / measuredWidth : 1;
- var sy:Number = measuredHeight != 0 ? _height / measuredHeight : 1;
-
- if (sx != 1 || sy != 1 || _layoutFeatures)
- {
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
-
- _layoutFeatures.stretchX = sx;
- _layoutFeatures.stretchY = sy;
- invalidateTransform();
- }
- }
- }
-
- /**
- * @private
- * Moves the sprite to the specified position, doesn't invalidate parent.
- */
- private function move(x:Number, y:Number):void
- {
- if (_layoutFeatures == null)
- {
- super.x = x;
- super.y = y;
- }
- else
- {
- _layoutFeatures.layoutX = x;
- _layoutFeatures.layoutY = y;
- invalidateTransform();
- }
- }
-
- /**
- * @private
- * Measures the naturalWidth and naturalHeight of the container
- */
- private function measure():void
- {
- var bounds:Rectangle = getBounds(this);
- naturalWidth = Math.max(0, bounds.right);
- naturalHeight = Math.max(0, bounds.bottom);
-
- // If no explicit size has been set, then update the actual size here.
- // In cases where the FXG is included in a layout, the layout will
- // update the size afterwards because we will invalidate the parent.
- if (isNaN(_explicitWidth))
- _width = naturalWidth;
-
- if (isNaN(_explicitHeight))
- _height = naturalHeight;
- }
-
- /**
- * @private
- * Causes to re-measure the natural width/height
- * if size changes, parent size is invalidated as well.
- */
- protected function invalidateSize():void
- {
- var curWidth:Number = naturalWidth;
- var curHeight:Number = naturalHeight;
-
- measure();
-
- if (curWidth != naturalWidth || curHeight != naturalHeight)
- {
- var parent:DisplayObjectContainer = this.parent;
-
- // Search for an ancestor SpriteVisualElement to inform them that
- // they need to re-measure as their size has been invalidated.
- while (nestedSpriteVisualElement)
- {
- if (parent is SpriteVisualElement || parent == null || parent.parent == null)
- {
- break;
- }
- else
- {
- parent = parent.parent;
- }
- }
-
- if (parent is SpriteVisualElement)
- SpriteVisualElement(parent).invalidateSize();
- else
- invalidateParentSizeAndDisplayList();
- }
- }
-
- //--------------------------------------------------------------------------
- //
- // Properties
- //
- //--------------------------------------------------------------------------
-
- //----------------------------------
- // postLayoutTransformOffsets
- //----------------------------------
-
- /**
- * @copy mx.core.IVisualElement#postLayoutTransformOffsets
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get postLayoutTransformOffsets():TransformOffsets
- {
- return (_layoutFeatures == null)?
- null :
- _layoutFeatures.postLayoutTransformOffsets;
- }
-
- /**
- * @private
- */
- public function set postLayoutTransformOffsets(value:TransformOffsets):void
- {
- if (value != null && _layoutFeatures == null)
- initAdvancedLayoutFeatures();
-
- if (_layoutFeatures.postLayoutTransformOffsets != null)
- _layoutFeatures.postLayoutTransformOffsets.removeEventListener
- (Event.CHANGE,transformOffsetsChangedHandler);
- _layoutFeatures.postLayoutTransformOffsets = value;
- if (_layoutFeatures.postLayoutTransformOffsets != null)
- _layoutFeatures.postLayoutTransformOffsets.addEventListener
- (Event.CHANGE,transformOffsetsChangedHandler);
- }
-
- //----------------------------------
- // alpha
- //----------------------------------
-
- /**
- * @private
- * Storage for the alpha property.
- */
- private var _alpha:Number = 1.0;
- private var _effectiveAlpha:Number = 1.0;
-
- /**
- * @private
- */
- override public function get alpha():Number
- {
- // Here we roundtrip alpha in the same manner as the
- // player (purposely introducing a rounding error).
- return int(_alpha * 256.0) / 256.0;
- }
-
- /**
- * @private
- */
- override public function set alpha(value:Number):void
- {
- if (_alpha != value)
- {
- _alpha = value;
-
- if (designLayer)
- value = value * designLayer.effectiveAlpha;
-
- super.alpha = value;
-
- if (_blendMode == "auto")
- {
- // If alpha changes from an opaque/transparent (1/0) and
- // translucent (0 < value < 1) then change the default
- // blendMode accordingly
- if ((value > 0 && value < 1) && (_effectiveAlpha == 0 || _effectiveAlpha == 1))
- {
- super.blendMode = BlendMode.LAYER;
- }
- else if ((value == 0 || value == 1) && (_effectiveAlpha > 0 && _effectiveAlpha < 1))
- {
- super.blendMode = BlendMode.NORMAL;
- }
- }
-
- _effectiveAlpha = value;
- }
- }
-
- //----------------------------------
- // baseline
- //----------------------------------
-
- /**
- * @private
- * Storage for the baseline property.
- */
- private var _baseline:Object;
-
- [Inspectable(category="General")]
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get baseline():Object
- {
- return _baseline;
- }
-
- /**
- * @private
- */
- public function set baseline(value:Object):void
- {
- if (_baseline == value)
- return;
-
- _baseline = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // baselinePosition
- //----------------------------------
-
- [Inspectable(category="General")]
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get baselinePosition():Number
- {
- return 0;
- }
-
- //----------------------------------
- // blendMode
- //----------------------------------
-
- /**
- * @private
- * Storage for the blendMode property.
- */
- private var _blendMode:String = "auto";
-
- [Inspectable(category="General", enumeration="auto,add,alpha,darken,difference,erase,hardlight,invert,layer,lighten,multiply,normal,subtract,screen,overlay,colordodge,colorburn,exclusion,softlight,hue,saturation,color,luminosity", defaultValue="auto")]
- /**
- * A value from the BlendMode class that specifies which blend mode to use.
- *
- * @default auto
- *
- * @see flash.display.DisplayObject#blendMode
- * @see flash.display.BlendMode
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- override public function get blendMode():String
- {
- return _blendMode;
- }
-
- /**
- * @private
- */
- override public function set blendMode(value:String):void
- {
- if (value == _blendMode)
- return;
-
- _blendMode = value;
-
- // Look for AIM blendModes which are not supported by DisplayObject's
- // blendMode natively and require setting a custom blendShader.
- if (value == "color")
- {
- blendShader = new ColorShader();
- }
- else if (value == "colordodge")
- {
- blendShader = new ColorDodgeShader();
- }
- else if (value == "colorburn")
- {
- blendShader = new ColorBurnShader();
- }
- else if (value == "exclusion")
- {
- blendShader = new ExclusionShader();
- }
- else if (value == "hue")
- {
- blendShader = new HueShader();
- }
- else if (value == "luminosity")
- {
- blendShader = new LuminosityShader();
- }
- else if (value == "saturation")
- {
- blendShader = new SaturationShader();
- }
- else if (value == "softlight")
- {
- blendShader = new SoftLightShader();
- }
- else if (value == "auto")
- {
- if (alpha == 0 || alpha == 1)
- super.blendMode = BlendMode.NORMAL;
- else
- super.blendMode = BlendMode.LAYER;
- }
- else
- {
- super.blendMode = value;
- }
- }
-
- //----------------------------------
- // bottom
- //----------------------------------
-
- /**
- * @private
- * Storage for the bottom property.
- */
- private var _bottom:Object;
-
- [Inspectable(category="General")]
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get bottom():Object
- {
- return _bottom;
- }
-
- /**
- * @private
- */
- public function set bottom(value:Object):void
- {
- if (_bottom == value)
- return;
-
- _bottom = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // filters
- //----------------------------------
-
- /**
- * @private
- * Storage for the filters property.
- */
- private var _filters:Array;
-
- /**
- * @private
- */
- override public function get filters():Array
- {
- return _filters ? _filters : super.filters;
- }
-
- /**
- * @private
- */
- override public function set filters(value:Array):void
- {
- var n:int;
- var i:int;
- var e:IEventDispatcher;
-
- if (_filters)
- {
- n = _filters.length;
- for (i = 0; i < n; i++)
- {
- e = _filters[i] as IEventDispatcher;
- if (e)
- e.removeEventListener(BaseFilter.CHANGE, filterChangeHandler);
- }
- }
-
- _filters = value;
-
- var clonedFilters:Array = [];
- if (_filters)
- {
- n = _filters.length;
- for (i = 0; i < n; i++)
- {
- if (_filters[i] is IBitmapFilter)
- {
- e = _filters[i] as IEventDispatcher;
- if (e)
- e.addEventListener(BaseFilter.CHANGE, filterChangeHandler);
- clonedFilters.push(IBitmapFilter(_filters[i]).clone());
- }
- else
- {
- clonedFilters.push(_filters[i]);
- }
- }
- }
-
- super.filters = clonedFilters;
- }
-
- //----------------------------------
- // height
- //----------------------------------
-
- private var _explicitHeight:Number = NaN; // The height explicitly set by the user
- private var _height:Number = 0; // The height that's set by the layout
-
- /**
- * @private
- */
- [PercentProxy("percentHeight")]
- override public function get height():Number
- {
- return _height;
- }
-
- /**
- * @private
- */
- override public function set height(value:Number):void
- {
- // Apply to the current actual size
- _height = value;
- setActualSize(_width, _height);
-
- // Modify the explicit height
- if (_explicitHeight == value)
- return;
-
- _explicitHeight = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // minHeight
- //----------------------------------
-
- /**
- * @private
- *
- * The minimum height explicitly set by the user.
- */
- private var _explicitMinHeight:Number = NaN;
-
- /**
- * @private
- */
- public function get minHeight():Number
- {
- if (!isNaN(_explicitMinHeight))
- return _explicitMinHeight;
- return resizeMode == ResizeMode.SCALE ? 0 : preferredHeight;
- }
-
- /**
- * @private
- */
- public function set minHeight(value:Number):void
- {
- if (_explicitMinHeight == value)
- return;
- _explicitMinHeight = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // maxHeight
- //----------------------------------
-
- /**
- * @private
- *
- * The maximum height explicitly set by the user.
- */
- private var _explicitMaxHeight:Number = NaN;
-
- /**
- * @private
- */
- public function get maxHeight():Number
- {
- if (!isNaN(_explicitMaxHeight))
- return _explicitMaxHeight;
- return DEFAULT_MAX_HEIGHT;
- }
-
- /**
- * @private
- */
- public function set maxHeight(value:Number):void
- {
- if (_explicitMaxHeight == value)
- return;
- _explicitMaxHeight = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // horizontalCenter
- //----------------------------------
-
- /**
- * @private
- * Storage for the horizontalCenter property.
- */
- private var _horizontalCenter:Object;
-
- [Inspectable(category="General")]
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get horizontalCenter():Object
- {
- return _horizontalCenter;
- }
-
- /**
- * @private
- */
- public function set horizontalCenter(value:Object):void
- {
- if (_horizontalCenter == value)
- return;
-
- _horizontalCenter = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // includeInLayout
- //----------------------------------
-
- /**
- * @private
- * Storage for the includeInLayout property.
- */
- private var _includeInLayout:Boolean = true;
-
- [Inspectable(category="General", defaultValue="true")]
-
- /**
- * @copy mx.core.UIComponent#includeInLayout
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get includeInLayout():Boolean
- {
- return _includeInLayout;
- }
-
- /**
- * @private
- */
- public function set includeInLayout(value:Boolean):void
- {
- if (_includeInLayout == value)
- return;
-
- _includeInLayout = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // depth
- //----------------------------------
-
- /**
- * @private
- * Storage for the depth property.
- */
- private var _depth:Number = 0;
-
- /**
- * @copy spark.primitives.supportClasses.GraphicElement#depth
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get depth():Number
- {
- return _depth;
- }
-
- /**
- * @private
- */
- public function set depth(value:Number):void
- {
- if (value == _depth)
- return;
-
- _depth = value;
- if (parent != null && "invalidateLayering" in parent && parent["invalidateLayering"] is Function)
- parent["invalidateLayering"]();
- }
-
- //----------------------------------
- // left
- //----------------------------------
-
- /**
- * @private
- * Storage for the left property.
- */
- private var _left:Object;
-
- [Inspectable(category="General")]
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get left():Object
- {
- return _left;
- }
-
- /**
- * @private
- */
- public function set left(value:Object):void
- {
- if (_left == value)
- return;
-
- _left = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // id
- //----------------------------------
-
- /**
- * @private
- * Storage for the id property.
- */
- private var _id:String;
-
- /**
- * The identity of the component.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get id():String
- {
- return _id;
- }
-
- /**
- * @private
- */
- public function set id(value:String):void
- {
- _id = value;
- }
-
- //----------------------------------
- // luminosityInvert
- //----------------------------------
-
- /**
- * @private
- * Storage for the luminosityInvert property.
- */
- private var _luminosityInvert:Boolean = false;
-
- [Inspectable(category="General", enumeration="true,false", defaultValue="false")]
- /**
- * @copy spark.primitives.supportClasses.GraphicElement#luminosityInvert
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get luminosityInvert():Boolean
- {
- return _luminosityInvert;
- }
-
- /**
- * @private
- */
- public function set luminosityInvert(value:Boolean):void
- {
- _luminosityInvert = value;
- }
-
- //----------------------------------
- // luminosityClip
- //----------------------------------
-
- /**
- * @private
- * Storage for the luminosityClip property.
- */
- private var _luminosityClip:Boolean = false;
-
- [Inspectable(category="General", enumeration="true,false", defaultValue="false")]
- /**
- * @copy spark.primitives.supportClasses.GraphicElement#luminosityClip
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get luminosityClip():Boolean
- {
- return _luminosityClip;
- }
-
- /**
- * @private
- */
- public function set luminosityClip(value:Boolean):void
- {
- _luminosityClip = value;
- }
-
-
-
- //----------------------------------
- // moduleFactory
- //----------------------------------
-
- /**
- * @private
- * Storage for the moduleFactory property.
- */
- private var _moduleFactory:IFlexModuleFactory;
-
- [Inspectable(environment="none")]
-
- /**
- * A module factory is used as context for using embeded fonts and for
- * finding the style manager that controls the styles for this
- * component.
- *
- * @langversion 3.0
- * @playerversion Flash 9
- * @playerversion AIR 1.1
- * @productversion Flex 4
- */
- public function get moduleFactory():IFlexModuleFactory
- {
- return _moduleFactory;
- }
-
- /**
- * @private
- */
- public function set moduleFactory(factory:IFlexModuleFactory):void
- {
- // Update childrens' moduleFactory before updating _moduleFactory,
- // as we compare childrens' old moduleFactory with _moduleFactory.
- setModuleFactoryInChildrenOf(this, factory);
-
- // Finally update the _moduleFactory
- _moduleFactory = factory;
- }
-
- /**
- * @private
- * Set the module factory of DisplayObjects in the specified container.
- * The children of container will be iterated over an those that implement
- * IFlexModule will be set to the value in the factory parameter. Children
- * that are themselves containers will call this function recursively to
- * set their children.
- *
- * @param container The container whose children to process.
- * @param factory The module factory to set in a child that implements IFlexModule.
- */
- private function setModuleFactoryInChildrenOf(container:DisplayObjectContainer, factory:IFlexModuleFactory):void
- {
- var n:int = container.numChildren;
- for (var i:int = 0; i < n; i++)
- {
- var child:DisplayObject = container.getChildAt(i);
-
- if (child is IFlexModule)
- {
- var fmChild:IFlexModule = IFlexModule(child);
- if (fmChild.moduleFactory == null || fmChild.moduleFactory == _moduleFactory)
- {
- fmChild.moduleFactory = factory;
- }
- }
- else if (child is DisplayObjectContainer)
- {
- // look at this object's children
- setModuleFactoryInChildrenOf(DisplayObjectContainer(child), factory);
- }
- }
- }
-
- //----------------------------------
- // owner
- //----------------------------------
-
- /**
- * @private
- */
- private var _owner:DisplayObjectContainer;
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get owner():DisplayObjectContainer
- {
- return _owner ? _owner : parent;
- }
-
- public function set owner(value:DisplayObjectContainer):void
- {
- _owner = value;
- }
-
- //----------------------------------
- // layer
- //----------------------------------
-
- /**
- * @private
- * Storage for the layer property.
- */
- private var _designLayer:DesignLayer;
-
- [Inspectable (environment='none')]
-
- /**
- * @copy mx.core.IVisualElement#designLayer
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get designLayer():DesignLayer
- {
- return _designLayer;
- }
-
- /**
- * @private
- */
- public function set designLayer(value:DesignLayer):void
- {
- if (_designLayer)
- _designLayer.removeEventListener("layerPropertyChange", layer_PropertyChange, false);
-
- _designLayer = value;
-
- if (_designLayer)
- _designLayer.addEventListener("layerPropertyChange", layer_PropertyChange, false, 0, true);
-
- super.alpha = _designLayer ? _alpha * _designLayer.effectiveAlpha : _alpha;
- super.visible = _designLayer ? _visible && _designLayer.effectiveVisibility : _visible;
- }
-
- //----------------------------------
- // mask
- //----------------------------------
- private var _mask:DisplayObject;
- mx_internal var maskChanged:Boolean;
-
- [Inspectable(category="General")]
- /**
- * @copy spark.components.supportClasses.GroupBase#mask
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- override public function get mask():DisplayObject
- {
- return _mask;
- }
-
- /**
- * @private
- */
- override public function set mask(value:DisplayObject):void
- {
- if (_mask !== value)
- {
- if (_mask && _mask.parent === this)
- {
- removeChild(_mask);
- }
-
- _mask = value;
- maskChanged = true;
- applyMask();
- }
- super.mask = value;
- }
-
- //----------------------------------
- // maskType
- //----------------------------------
-
- private var _maskType:String = MaskType.CLIP;
- private var maskTypeChanged:Boolean;
- private var originalMaskFilters:Array;
-
- [Bindable("propertyChange")]
- [Inspectable(category="General", enumeration="clip,alpha,luminosity", defaultValue="clip")]
-
- /**
- * @copy spark.components.supportClasses.GroupBase#maskType
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get maskType():String
- {
- return _maskType;
- }
-
- /**
- * @private
- */
- public function set maskType(value:String):void
- {
- if (_maskType != value)
- {
- _maskType = value;
- maskTypeChanged = true;
- applyMask();
- }
- }
-
- //----------------------------------
- // percentHeight
- //----------------------------------
-
- /**
- * @private
- * Storage for the percentHeight property.
- */
- mx_internal var _percentHeight:Number;
-
- [Inspectable(category="General")]
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get percentHeight():Number
- {
- return _percentHeight;
- }
-
- /**
- * @private
- */
- public function set percentHeight(value:Number):void
- {
- if (_percentHeight == value)
- return;
-
- _percentHeight = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // percentWidth
- //----------------------------------
-
- /**
- * @private
- * Storage for the percentWidth property.
- */
- mx_internal var _percentWidth:Number;
-
- [Inspectable(category="General")]
-
- /**
- * @copy mx.core.UIComponent#percentWidth
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get percentWidth():Number
- {
- return _percentWidth;
- }
-
- /**
- * @private
- */
- public function set percentWidth(value:Number):void
- {
- if (_percentWidth == value)
- return;
-
- _percentWidth = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // right
- //----------------------------------
-
- /**
- * @private
- * Storage for the right property.
- */
- private var _right:Object;
-
- [Inspectable(category="General")]
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get right():Object
- {
- return _right;
- }
-
- /**
- * @private
- */
- public function set right(value:Object):void
- {
- if (_right == value)
- return;
-
- _right = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // x
- //----------------------------------
-
- /**
- * @private
- */
- override public function get x():Number
- {
- return (_layoutFeatures == null) ? super.x : _layoutFeatures.layoutX;
- }
-
- /**
- * @private
- */
- override public function set x(value:Number):void
- {
- if (x == value)
- return;
-
- move(value, y);
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // y
- //----------------------------------
-
- /**
- * @private
- */
- override public function get y():Number
- {
- return (_layoutFeatures == null) ? super.y : _layoutFeatures.layoutY;
- }
-
- /**
- * @private
- */
- override public function set y(value:Number):void
- {
- if (y == value)
- return;
-
- move(x, value);
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // z
- //----------------------------------
-
- /**
- * @private
- */
- override public function get z():Number
- {
- return (_layoutFeatures == null) ? super.z : _layoutFeatures.layoutZ;
- }
-
- /**
- * @private
- */
- override public function set z(value:Number):void
- {
- if (z == value)
- return;
-
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
-
- hasDeltaIdentityTransform = false;
- _layoutFeatures.layoutZ = value;
-
- invalidateTransform();
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // rotation
- //----------------------------------
-
- /**
- * @private
- */
- override public function get rotation():Number
- {
- return (_layoutFeatures == null) ? super.rotation : _layoutFeatures.layoutRotationZ;
- }
-
- /**
- * @private
- */
- override public function set rotation(value:Number):void
- {
- if (rotation == value)
- return;
-
- hasDeltaIdentityTransform = false;
- if (_layoutFeatures == null)
- super.rotation = MatrixUtil.clampRotation(value);
- else
- _layoutFeatures.layoutRotationZ = value;
-
- invalidateTransform();
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // rotationX
- //----------------------------------
-
- /**
- * Indicates the x-axis rotation of the DisplayObject instance, in degrees,
- * from its original orientation relative to the 3D parent container.
- * Values from 0 to 180 represent clockwise rotation; values from 0 to -180
- * represent counterclockwise rotation. Values outside this range are added
- * to or subtracted from 360 to obtain a value within the range.
- *
- * This property is ignored during calculation by any of Flex's 2D layouts.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- override public function get rotationX():Number
- {
- return (_layoutFeatures == null) ? super.rotationX : _layoutFeatures.layoutRotationX;
- }
-
- /**
- * @private
- */
- override public function set rotationX(value:Number):void
- {
- if (rotationX == value)
- return;
-
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
- _layoutFeatures.layoutRotationX = value;
- invalidateTransform();
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // rotationY
- //----------------------------------
-
- /**
- * Indicates the y-axis rotation of the DisplayObject instance, in degrees,
- * from its original orientation relative to the 3D parent container.
- * Values from 0 to 180 represent clockwise rotation; values from 0 to -180
- * represent counterclockwise rotation. Values outside this range are added
- * to or subtracted from 360 to obtain a value within the range.
- *
- * This property is ignored during calculation by any of Flex's 2D layouts.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- override public function get rotationY():Number
- {
- return (_layoutFeatures == null) ? super.rotationY : _layoutFeatures.layoutRotationY;
- }
-
- /**
- * @private
- */
- override public function set rotationY(value:Number):void
- {
- if (rotationY == value)
- return;
-
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
- _layoutFeatures.layoutRotationY = value;
- invalidateTransform();
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // rotationZ
- //----------------------------------
-
- /**
- * @private
- */
- override public function get rotationZ():Number
- {
- return rotation;
- }
-
- /**
- * @private
- */
- override public function set rotationZ(value:Number):void
- {
- rotation = value;
- }
-
- //----------------------------------
- // scaleX
- //----------------------------------
-
- /**
- * @private
- */
- override public function get scaleX():Number
- {
- // if it's been set, layoutFeatures won't be null. Otherwise, return 1 as
- // super.scaleX might be some other value since we change the width/height
- // through scaling
- return (_layoutFeatures == null) ? 1 : _layoutFeatures.layoutScaleX;
- }
-
- /**
- * @private
- */
- override public function set scaleX(value:Number):void
- {
- if (value == scaleX)
- return;
-
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
-
- hasDeltaIdentityTransform = false;
- _layoutFeatures.layoutScaleX = value;
- invalidateTransform();
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // scaleY
- //----------------------------------
-
- /**
- * @private
- */
- override public function get scaleY():Number
- {
- // if it's been set, layoutFeatures won't be null. Otherwise, return 1 as
- // super.scaleX might be some other value since we change the width/height
- // through scaling
- return (_layoutFeatures == null) ? 1 : _layoutFeatures.layoutScaleY;
- }
-
- /**
- * @private
- */
- override public function set scaleY(value:Number):void
- {
- if (value == scaleY)
- return;
-
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
-
- hasDeltaIdentityTransform = false;
- _layoutFeatures.layoutScaleY = value;
- invalidateTransform();
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // scaleZ
- //----------------------------------
-
- /**
- * @private
- */
- override public function get scaleZ():Number
- {
- return (_layoutFeatures == null) ? super.scaleZ : _layoutFeatures.layoutScaleZ;
- }
-
- /**
- * @private
- */
- override public function set scaleZ(value:Number):void
- {
- if (scaleZ == value)
- return;
-
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
-
- hasDeltaIdentityTransform = false;
- _layoutFeatures.layoutScaleZ = value;
- invalidateTransform();
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // top
- //----------------------------------
-
- /**
- * @private
- * Storage for the top property.
- */
- private var _top:Object;
-
- [Inspectable(category="General")]
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get top():Object
- {
- return _top;
- }
-
- /**
- * @private
- */
- public function set top(value:Object):void
- {
- if (_top == value)
- return;
-
- _top = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // verticalCenter
- //----------------------------------
-
- /**
- * @private
- * Storage for the verticalCenter property.
- */
- private var _verticalCenter:Object;
-
- [Inspectable(category="General")]
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get verticalCenter():Object
- {
- return _verticalCenter;
- }
-
- /**
- * @private
- */
- public function set verticalCenter(value:Object):void
- {
- if (_verticalCenter == value)
- return;
-
- _verticalCenter = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // visible
- //----------------------------------
-
- /**
- * @private
- * Storage for the visible property.
- */
- private var _visible:Boolean = true;
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 2.5
- * @productversion Flex 4.5
- */
- override public function get visible():Boolean
- {
- return _visible;
- }
-
- /**
- * @private
- */
- override public function set visible(value:Boolean):void
- {
- _visible = value;
-
- if (designLayer && !designLayer.effectiveVisibility)
- value = false;
-
- if (super.visible == value)
- return;
-
- super.visible = value;
- }
-
- //----------------------------------
- // width
- //----------------------------------
-
- private var _explicitWidth:Number = NaN; // The width explicitly set by the user
- private var _width:Number = 0; // The width that's set by the layout
-
- /**
- * @private
- */
- [PercentProxy("percentWidth")]
- override public function get width():Number
- {
- return _width;
- }
-
- /**
- * @private
- */
- override public function set width(value:Number):void
- {
- // Apply to the current actual size
- _width = value;
- setActualSize(_width, _height);
-
- // Modify the explicit width
- if (_explicitWidth == value)
- return;
-
- _explicitWidth = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // minWidth
- //----------------------------------
-
- /**
- * @private
- *
- * The minimum width explicitly set by the user.
- */
- private var _explicitMinWidth:Number = NaN;
-
- /**
- * @private
- */
- public function get minWidth():Number
- {
- if (!isNaN(_explicitMinWidth))
- return _explicitMinWidth;
- return resizeMode == ResizeMode.SCALE ? 0 : preferredWidth;
- }
-
- /**
- * @private
- */
- public function set minWidth(value:Number):void
- {
- if (_explicitMinWidth == value)
- return;
- _explicitMinWidth = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // maxWidth
- //----------------------------------
-
- /**
- * @private
- *
- * The maximum width explicitly set by the user.
- */
- private var _explicitMaxWidth:Number = NaN;
-
- /**
- * @private
- */
- public function get maxWidth():Number
- {
- if (!isNaN(_explicitMaxWidth))
- return _explicitMaxWidth;
- return DEFAULT_MAX_WIDTH;
- }
-
- /**
- * @private
- */
- public function set maxWidth(value:Number):void
- {
- if (_explicitMaxWidth == value)
- return;
- _explicitMaxWidth = value;
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // viewWidth
- //----------------------------------
-
- private var _viewWidth:Number = NaN;
-
- /**
- * @copy spark.primitives.Graphic#viewWidth
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- protected function set viewWidth(value:Number):void
- {
- _viewWidth = value;
- }
-
- //----------------------------------
- // viewHeight
- //----------------------------------
-
- private var _viewHeight:Number = NaN;
-
- /**
- * @copy spark.primitives.Graphic#viewHeight
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- protected function set viewHeight(value:Number):void
- {
- _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 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get transformX():Number
- {
- return (_layoutFeatures == null)? 0 : _layoutFeatures.transformX;
- }
-
- /**
- * @private
- */
- public function set transformX(value:Number):void
- {
- if (transformX == value)
- return;
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
- _layoutFeatures.transformX = value;
- invalidateTransform();
- invalidateParentSizeAndDisplayList();
- }
-
- /**
- * Sets the y 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>transformY</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#transformY
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get transformY():Number
- {
- return (_layoutFeatures == null)? 0 : _layoutFeatures.transformY;
- }
-
- /**
- * @private
- */
- public function set transformY(value:Number):void
- {
- if (transformY == value)
- return;
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
- _layoutFeatures.transformY = value;
- invalidateTransform();
- invalidateParentSizeAndDisplayList();
- }
-
- /**
- * Sets the z 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>transformZ</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#transformZ
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get transformZ():Number
- {
- return (_layoutFeatures == null)? 0 : _layoutFeatures.transformZ;
- }
-
- /**
- * @private
- */
- public function set transformZ(value:Number):void
- {
- if (transformZ == value)
- return;
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
- _layoutFeatures.transformZ = value;
- invalidateTransform();
- invalidateParentSizeAndDisplayList();
- }
-
- //----------------------------------
- // layoutDirection
- //----------------------------------
-
- private var _layoutDirection:String = null;
-
- [Inspectable(category="General", enumeration="ltr,rtl")]
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 2.5
- * @productversion Flex 4.5
- */
- public function get layoutDirection():String
- {
- if (_layoutDirection != null)
- return _layoutDirection;
-
- const parentElt:ILayoutDirectionElement = parent as ILayoutDirectionElement;
- return (parentElt) ? parentElt.layoutDirection : LayoutDirection.LTR;
- }
-
- /**
- * @private
- */
- public function set layoutDirection(value:String):void
- {
- if (_layoutDirection == value)
- return;
-
- _layoutDirection = value;
- invalidateLayoutDirection();
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 2.5
- * @productversion Flex 4.5
- */
- public function invalidateLayoutDirection():void
- {
- const parentElt:ILayoutDirectionElement = parent as ILayoutDirectionElement;
- if (!parentElt)
- return;
-
- // If this element's layoutDirection doesn't match its parent's, then
- // set the _layoutFeatures.mirror flag. Similarly, if mirroring isn't
- // required, then clear the _layoutFeatures.mirror flag.
-
- const mirror:Boolean = (parentElt.layoutDirection != null && _layoutDirection != null)
- && (_layoutDirection != parentElt.layoutDirection);
-
- if ((_layoutFeatures) ? (mirror != _layoutFeatures.mirror) : mirror)
- {
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
- _layoutFeatures.mirror = mirror;
- invalidateTransform();
- invalidateParentSizeAndDisplayList();
- }
- }
-
- //--------------------------------------------------------------------------
- //
- // Overridden methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * @private
- */
- override public function addChild(child:DisplayObject):DisplayObject
- {
- // Do anything that needs to be done before the child is added.
- // In the case of SVE..we just need to deal with text UIComponents
- // and setting them up because this is a "static" object
- addingChild(child);
-
- super.addChild(child);
-
- childAdded(child);
-
- return child;
- }
-
- /**
- * @private
- */
- override public function addChildAt(child:DisplayObject,
- index:int):DisplayObject
- {
- addingChild(child);
-
- super.addChildAt(child, index);
-
- childAdded(child);
-
- return child;
- }
-
- /**
- * @private
- */
- mx_internal function addingChild(child:DisplayObject):void
- {
- // for SVE, we just need to set up the parent and the nestLevel
- if (child is IUIComponent)
- IUIComponent(child).parentChanged(this);
-
- // Set the nestLevel to "2" since we don't really have a
- // concept of nestLevel for SVE
- if (child is ILayoutManagerClient)
- ILayoutManagerClient(child).nestLevel = 2;
- else if (child is IUITextField)
- IUITextField(child).nestLevel = 2;
- }
-
- /**
- * @private
- */
- mx_internal function childAdded(child:DisplayObject):void
- {
- // for SVE, we just need call initialize()
- if (child is IUIComponent)
- {
- IUIComponent(child).initialize();
- }
- }
-
- /**
- * @private
- */
- override public function globalToLocal(point:Point):Point
- {
- if (resizeMode == ResizeMode.SCALE && _layoutFeatures != null)
- {
- // If resize mode is scale, then globalToLocal shouldn't account for
- // stretchX/Y
- var sX:Number = _layoutFeatures.stretchX;
- var sY:Number = _layoutFeatures.stretchY;
- _layoutFeatures.stretchX = 1;
- _layoutFeatures.stretchY = 1;
- applyComputedMatrix();
-
- var p:Point = super.globalToLocal(point);
-
- // Restore stretch
- _layoutFeatures.stretchX = sX;
- _layoutFeatures.stretchY = sY;
- applyComputedMatrix();
-
- return p;
- }
- else
- {
- return super.globalToLocal(point);
- }
- }
-
- /**
- * @private
- */
- override public function localToGlobal(point:Point):Point
- {
- if (resizeMode == ResizeMode.SCALE && _layoutFeatures != null)
- {
- // If resize mode is scale, then localToGlobal shouldn't account for
- // stretchX/Y
- var sX:Number = _layoutFeatures.stretchX;
- var sY:Number = _layoutFeatures.stretchY;
- _layoutFeatures.stretchX = 1;
- _layoutFeatures.stretchY = 1;
- applyComputedMatrix();
-
- var p:Point = super.localToGlobal(point);
-
- // Restore stretch
- _layoutFeatures.stretchX = sX;
- _layoutFeatures.stretchY = sY;
- applyComputedMatrix();
-
- return p;
- }
- else
- {
- return super.localToGlobal(point);
- }
- }
- //--------------------------------------------------------------------------
- //
- // Methods
- //
- //--------------------------------------------------------------------------
-
- /**
- * Called automatically by the MXML compiler when the SpriteVisualElement
- * is created using an MXML tag.
- * If you create the SpriteVisualElement through ActionScript you
- * must set the <code>id</code> property manually.
- *
- * @param document The MXML document containing this SpriteVisualElement (not used).
- * @param id The MXML id for this SpriteVisualElement.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function initialized(document:Object, id:String):void
- {
- this.id = id;
- }
-
- /**
- * @private
- */
- private function transformOffsetsChangedHandler(e:Event):void
- {
- invalidateTransform();
- }
-
- private function get preferredWidth():Number
- {
- if (!isNaN(_explicitWidth))
- return _explicitWidth;
- if (!isNaN(_viewWidth))
- return _viewWidth;
- return naturalWidth;
- }
-
- private function get preferredHeight():Number
- {
- if (!isNaN(_explicitHeight))
- return _explicitHeight;
- if (!isNaN(_viewHeight))
- return _viewHeight;
- return naturalHeight;
- }
-
- /**
- * @private
- */
- protected function layer_PropertyChange(event:PropertyChangeEvent):void
- {
- switch (event.property)
- {
- case "effectiveVisibility":
- {
- var newValue:Boolean = (event.newValue && _visible);
- if (newValue != super.visible)
- super.visible = newValue;
- break;
- }
- case "effectiveAlpha":
- {
- var newAlpha:Number = Number(event.newValue) * _alpha;
- if (newAlpha != super.alpha)
- super.alpha = newAlpha;
- break;
- }
- }
- }
-
- /**
- * @private
- */
- private function filterChangeHandler(event:Event):void
- {
- filters = _filters;
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getLayoutBoundsX(postLayoutTransform:Boolean = true):Number
- {
- var m:Matrix = postLayoutTransform ? nonDeltaLayoutMatrix() : null;
- if (!m)
- return x;
-
- var topLeft:Point = new Point(0, 0);
- MatrixUtil.transformBounds(width, height, m, topLeft);
- return topLeft.x;
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getLayoutBoundsY(postLayoutTransform:Boolean = true):Number
- {
- var m:Matrix = postLayoutTransform ? nonDeltaLayoutMatrix() : null;
- if (!m)
- return y;
-
- var topLeft:Point = new Point(0, 0);
- MatrixUtil.transformBounds(width, height, m, topLeft);
- return topLeft.y;
- }
-
- /**
- * @copy mx.core.ILayoutElement#getLayoutBoundsWidth()
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getLayoutBoundsWidth(postLayoutTransform:Boolean = true):Number
- {
- return transformWidthForLayout(width, height, postLayoutTransform);
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getLayoutBoundsHeight(postLayoutTransform:Boolean = true):Number
- {
- return transformHeightForLayout(width, height, postLayoutTransform);
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getMaxBoundsWidth(postLayoutTransform:Boolean = true):Number
- {
- return transformWidthForLayout(maxWidth, maxHeight, postLayoutTransform);
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getMaxBoundsHeight(postLayoutTransform:Boolean = true):Number
- {
- return transformHeightForLayout(maxWidth, maxHeight, postLayoutTransform);
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getMinBoundsWidth(postLayoutTransform:Boolean = true):Number
- {
- return transformWidthForLayout(minWidth, minHeight, postLayoutTransform);
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getMinBoundsHeight(postLayoutTransform:Boolean = true):Number
- {
- return transformHeightForLayout(minWidth, minHeight, postLayoutTransform);
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getPreferredBoundsWidth(postLayoutTransform:Boolean = true):Number
- {
- return transformWidthForLayout(preferredWidth, preferredHeight, postLayoutTransform);
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getPreferredBoundsHeight(postLayoutTransform:Boolean = true):Number
- {
- return transformHeightForLayout(preferredWidth, preferredHeight, postLayoutTransform);
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getBoundsXAtSize(width:Number, height:Number, postLayoutTransform:Boolean = true):Number
- {
- var m:Matrix = postLayoutTransform ? nonDeltaLayoutMatrix() : null;
- if (!m)
- return x;
-
- var topLeft:Point = new Point(0, 0);
- MatrixUtil.transformBounds(preferredWidth, preferredHeight, m, topLeft);
- return topLeft.x;
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getBoundsYAtSize(width:Number, height:Number, postLayoutTransform:Boolean = true):Number
- {
- var m:Matrix = postLayoutTransform ? nonDeltaLayoutMatrix() : null;
- if (!m)
- return y;
-
- var topLeft:Point = new Point(0, 0);
- MatrixUtil.transformBounds(preferredWidth, preferredHeight, m, topLeft);
- return topLeft.y;
- }
-
- /**
- * Invalidates parent size and display list if
- * this object affects its layout (includeInLayout is true).
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- protected function invalidateParentSizeAndDisplayList():void
- {
- if (!includeInLayout)
- return;
-
- var p:IInvalidating = parent as IInvalidating;
- if (!p)
- return;
-
- p.invalidateSize();
- p.invalidateDisplayList();
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function setLayoutBoundsPosition(newBoundsX:Number, newBoundsY:Number, postLayoutTransform:Boolean = true):void
- {
- var currentBoundsX:Number = getLayoutBoundsX(postLayoutTransform);
- var currentBoundsY:Number = getLayoutBoundsY(postLayoutTransform);
-
- var xOffset:Number = newBoundsX - currentBoundsX;
- var yOffset:Number = newBoundsY - currentBoundsY;
-
- if (xOffset != 0 || yOffset != 0)
- move(x + xOffset, y + yOffset);
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function setLayoutBoundsSize(width:Number,
- height:Number,
- postLayoutTransform:Boolean = true):void
- {
- var m:Matrix = postLayoutTransform ? nonDeltaLayoutMatrix() : null;
-
- if (!m)
- {
- if (isNaN(width))
- width = preferredWidth;
- if (isNaN(height))
- height = preferredHeight;
-
- setActualSize(width, height);
- return;
- }
-
- var fitSize:Point = MatrixUtil.fitBounds(width, height, m,
- _explicitWidth,
- _explicitHeight,
- preferredWidth,
- preferredHeight,
- minWidth,
- minHeight,
- maxWidth,
- maxHeight);
-
- // If we couldn't fit at all, default to the minimum size
- if (!fitSize)
- setActualSize(preferredWidth, preferredHeight);
- else
- setActualSize(fitSize.x, fitSize.y);
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getLayoutMatrix():Matrix
- {
- if (_layoutFeatures != null || super.transform.matrix == null)
- {
- // TODO: this is a workaround for a situation in which the
- // object is in 2D, but used to be in 3D and the player has not
- // yet cleaned up the matrices. So the matrix property is null, but
- // the matrix3D property is non-null. layoutFeatures can deal with
- // that situation, so we allocate it here and let it handle it for
- // us. The downside is that we have now allocated layoutFeatures
- // forever and will continue to use it for future situations that
- // might not have required it. Eventually, we should recognize
- // situations when we can de-allocate layoutFeatures and back off
- // to letting the player handle transforms for us.
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
-
- // esg: _layoutFeatures keeps a single internal copy of the layoutMatrix.
- // since this is an internal class, we don't need to worry about developers
- // accidentally messing with this matrix, _unless_ we hand it out. Instead,
- // we hand out a clone.
- return _layoutFeatures.layoutMatrix.clone();
- }
- else
- {
- // flash also returns copies.
- return super.transform.matrix;
- }
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function setLayoutMatrix(value:Matrix, invalidateLayout:Boolean):void
- {
- hasDeltaIdentityTransform = false;
-
- var previousMatrix:Matrix = _layoutFeatures ?
- _layoutFeatures.layoutMatrix : super.transform.matrix;
-
- if (_layoutFeatures == null)
- {
- // flash will make a copy of this on assignment.
- super.transform.matrix = value;
- }
- else
- {
- // layout features will internally make a copy of this matrix rather than
- // holding onto a reference to it.
- _layoutFeatures.layoutMatrix = value;
- invalidateTransform();
- }
-
- // Early exit if possible. We don't want to invalidate unnecessarily.
- // We need to do the check here, after our new value has been applied
- // because our matrix components are rounded upon being applied to a
- // DisplayObject.
- if (MatrixUtil.isEqual(previousMatrix, _layoutFeatures ?
- _layoutFeatures.layoutMatrix : super.transform.matrix))
- {
- return;
- }
-
- if (invalidateLayout)
- invalidateParentSizeAndDisplayList();
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get hasLayoutMatrix3D():Boolean
- {
- return _layoutFeatures ? _layoutFeatures.layoutIs3D : false;
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function get is3D():Boolean
- {
- return _layoutFeatures ? _layoutFeatures.is3D : false;
- }
-
- /**
- * @inheritDoc
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function getLayoutMatrix3D():Matrix3D
- {
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
- // esg: _layoutFeatures keeps a single internal copy of the layoutMatrix.
- // since this is an internal class, we don't need to worry about developers
- // accidentally messing with this matrix, _unless_ we hand it out. Instead,
- // we hand out a clone.
- return _layoutFeatures.layoutMatrix3D.clone();
- }
-
- /**
- * @inheritDoc
- *
- * Similar to the <code>layoutMatrix3D</code> property. This property, however,
- * does not trigger a layout pass.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function setLayoutMatrix3D(value:Matrix3D, invalidateLayout:Boolean):void
- {
- // Early exit if possible. We don't want to invalidate unnecessarily.
- if (_layoutFeatures && MatrixUtil.isEqual3D(_layoutFeatures.layoutMatrix3D, value))
- return;
-
- if (_layoutFeatures == null)
- initAdvancedLayoutFeatures();
- // layout features will internally make a copy of this matrix rather than
- // holding onto a reference to it.
- _layoutFeatures.layoutMatrix3D = value;
- invalidateTransform();
-
- if (invalidateLayout)
- invalidateParentSizeAndDisplayList();
- }
-
- /**
- * @copy mx.core.ILayoutElement#transformAround()
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function transformAround(transformCenter:Vector3D,
- scale:Vector3D = null,
- rotation:Vector3D = null,
- translation:Vector3D = null,
- postLayoutScale:Vector3D = null,
- postLayoutRotation:Vector3D = null,
- postLayoutTranslation:Vector3D = null,
- invalidateLayout:Boolean = true):void
- {
- // Make sure that no transform setters will trigger parent invalidation.
- // Reset the flag at the end of the method.
- var oldIncludeInLayout:Boolean;
- if (!invalidateLayout)
- {
- oldIncludeInLayout = _includeInLayout;
- _includeInLayout = false;
- }
-
- TransformUtil.transformAround(this,
- transformCenter,
- scale,
- rotation,
- translation,
- postLayoutScale,
- postLayoutRotation,
- postLayoutTranslation,
- _layoutFeatures,
- initAdvancedLayoutFeatures);
-
- if (_layoutFeatures != null)
- {
- invalidateTransform();
-
- // Will not invalidate parent if we have set _includeInLayout to false
- // in the beginning of the method
- invalidateParentSizeAndDisplayList();
- }
-
- if (!invalidateLayout)
- _includeInLayout = oldIncludeInLayout;
- }
-
- /**
- * 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 localPosition The point to be transformed, specified in the
- * local coordinates of the object.
- * @param position A Vector3D point that will hold the pre-layout
- * result. If null, the parameter is ignored.
- * @param 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(localPosition:Vector3D,
- position:Vector3D,
- postLayoutPosition:Vector3D):void
- {
- TransformUtil.transformPointToParent(this,
- localPosition,
- position,
- postLayoutPosition,
- _layoutFeatures);
- }
-
- /**
- * Transform the element's size.
- *
- * <p>This method calculates the bounding box of the graphic element as if the element’s width/height properties were set to the passed in values.
- * The method returns the width of the bounding box.</p>
- *
- * <p>In general, this method is not for use by developers. Instead, you should implement or override the methods defined by the ILayoutElement interface.</p>
- *
- * @param width The target pre-transform width.
- *
- * @param height The target pre-transform height.
- *
- * @param postLayoutTransform When <code>true</code>, the returned bounding box is around the transformed element in its parent space (the element's transform is applied first).
- *
- * @return Returns the transformed width. Transformation is this element's
- * layout transformation matrix.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- protected function transformWidthForLayout(width:Number,
- height:Number,
- postLayoutTransform:Boolean = true):Number
- {
- if (postLayoutTransform)
- {
- var m:Matrix = nonDeltaLayoutMatrix();
- if (m)
- width = MatrixUtil.transformSize(width, height, m).x;
- }
-
- return width;
- }
-
- /**
- * Transform the element's size.
- *
- * <p>This method calculates the bounding box of the graphic element as if the element’s width/height properties were set to the passed in values.
- * The method returns the height of the bounding box.</p>
- *
- * <p>In general, this method is not for use by developers. Instead, you should implement or override the methods defined by the ILayoutElement interface.</p>
- *
- * @param width The target pre-transform width.
- *
- * @param height The target pre-transform height.
- *
- * @param postLayoutTransform When <code>true</code>, the returned bounding box is around the transformed element in its parent space (the element's transform is applied first).
- *
- * @return Returns the transformed height. Transformation is this element's
- * layout transformation matrix.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- protected function transformHeightForLayout(width:Number,
- height:Number,
- postLayoutTransform:Boolean = true):Number
- {
- if (postLayoutTransform)
- {
- var m:Matrix = nonDeltaLayoutMatrix();
- if (m)
- height = MatrixUtil.transformSize(width, height, m).y;
- }
-
- return height;
- }
-
- /**
- * @private
- */
- private function applyMask():void
- {
- if (maskChanged)
- {
- maskChanged = false;
- if (_mask)
- {
- maskTypeChanged = true;
-
- if (!_mask.parent)
- {
- // TODO (jszeto): Does this need to be attached to a sibling?
- addChild(_mask);
-
- MaskUtil.applyMask(_mask, null);
- }
- }
- }
-
- if (maskTypeChanged)
- {
- maskTypeChanged = false;
-
- if (_mask)
- MaskUtil.applyMaskType(_mask, _maskType, luminosityInvert, luminosityClip, this);
- }
- }
-}
-}
-
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/effects/Move.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/effects/Move.as
index 80c7bc5..0fd8c24 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/effects/Move.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/effects/Move.as
@@ -19,13 +19,13 @@
package spark.effects
{
-import flash.geom.Vector3D;
+//import flash.geom.Vector3D;
import mx.core.mx_internal;
import mx.effects.IEffectInstance;
import spark.effects.animation.MotionPath;
-import spark.effects.supportClasses.AnimateTransformInstance;
+//import spark.effects.supportClasses.AnimateTransformInstance;
use namespace mx_internal;
import spark.effects.Animate;
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/events/TrackBaseEvent.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/events/TrackBaseEvent.as
deleted file mode 100644
index df5b00e..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/events/TrackBaseEvent.as
+++ /dev/null
@@ -1,171 +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 spark.events
-{
-
-import org.apache.royale.events.Event;
-
-/**
- * Represents events that are dispatched from a TrackBase component.
- *
- * @see spark.components.supportClasses.TrackBase
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-public class TrackBaseEvent extends Event
-{
- include "../core/Version.as";
-
- //--------------------------------------------------------------------------
- //
- // Class constants
- //
- //--------------------------------------------------------------------------
-
- /**
- * The <code>TrackBaseEvent.THUMB_DRAG</code> constant defines the value of the
- * <code>type</code> property of the event object for a <code>thumbDrag</code> event.
- *
- * <p>The properties of the event object have the following values:</p>
- * <table class="innertable">
- * <tr><th>Property</th><th>Value</th></tr>
- * <tr><td><code>bubbles</code></td><td>false</td></tr>
- * <tr><td><code>cancelable</code></td><td>false</td></tr>
- * <tr><td><code>currentTarget</code></td><td>The Object that defines the
- * event listener that handles the event. For example, if you use
- * <code>myButton.addEventListener()</code> to register an event listener,
- * myButton is the value of the <code>currentTarget</code>. </td></tr>
- * <tr><td><code>target</code></td><td>The Object that dispatched the event;
- * it is not always the Object listening for the event.
- * Use the <code>currentTarget</code> property to always access the
- * Object listening for the event.</td></tr>
- * </table>
- *
- * @eventType thumbDrag
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public static const THUMB_DRAG:String = "thumbDrag";
-
- /**
- * The <code>TrackBaseEvent.THUMB_PRESS</code> constant defines the value of the
- * <code>type</code> property of the event object for a <code>thumbPress</code> event.
- *
- * <p>The properties of the event object have the following values:</p>
- * <table class="innertable">
- * <tr><th>Property</th><th>Value</th></tr>
- * <tr><td><code>bubbles</code></td><td>false</td></tr>
- * <tr><td><code>cancelable</code></td><td>false</td></tr>
- * <tr><td><code>currentTarget</code></td><td>The Object that defines the
- * event listener that handles the event. For example, if you use
- * <code>myButton.addEventListener()</code> to register an event listener,
- * myButton is the value of the <code>currentTarget</code>. </td></tr>
- * <tr><td><code>target</code></td><td>The Object that dispatched the event;
- * it is not always the Object listening for the event.
- * Use the <code>currentTarget</code> property to always access the
- * Object listening for the event.</td></tr>
- * </table>
- *
- * @eventType thumbPress
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public static const THUMB_PRESS:String = "thumbPress";
-
- /**
- * The <code>TrackBaseEvent.THUMB_RELEASE</code> constant defines the value of the
- * <code>type</code> property of the event object for a <code>thumbRelease</code> event.
- *
- * <p>The properties of the event object have the following values:</p>
- * <table class="innertable">
- * <tr><th>Property</th><th>Value</th></tr>
- * <tr><td><code>bubbles</code></td><td>false</td></tr>
- * <tr><td><code>cancelable</code></td><td>false</td></tr>
- * <tr><td><code>currentTarget</code></td><td>The Object that defines the
- * event listener that handles the event. For example, if you use
- * <code>myButton.addEventListener()</code> to register an event listener,
- * myButton is the value of the <code>currentTarget</code>. </td></tr>
- * <tr><td><code>target</code></td><td>The Object that dispatched the event;
- * it is not always the Object listening for the event.
- * Use the <code>currentTarget</code> property to always access the
- * Object listening for the event.</td></tr>
- * </table>
- *
- * @eventType thumbRelease
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public static const THUMB_RELEASE:String = "thumbRelease";
-
- //--------------------------------------------------------------------------
- //
- // Constructor
- //
- //--------------------------------------------------------------------------
-
- /**
- * Constructor.
- *
- * @param type The event type; indicates the action that caused the event.
- *
- * @param bubbles Specifies whether the event can bubble up the display list hierarchy.
- *
- * @param cancelable Specifies whether the behavior associated with the event can be prevented.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
- public function TrackBaseEvent(
- type:String, bubbles:Boolean = false,
- cancelable:Boolean = false)
- {
- super(type, bubbles, cancelable);
- }
-
- //--------------------------------------------------------------------------
- //
- // Overridden methods: Event
- //
- //--------------------------------------------------------------------------
-
- /**
- * @private
- */
- override public function clone():Event
- {
- return new TrackBaseEvent(type, bubbles, cancelable);
- }
-}
-
-}
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/filters/BevelFilter.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/filters/BevelFilter.as
index bd32e60..80ccfba 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/filters/BevelFilter.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/filters/BevelFilter.as
@@ -20,7 +20,6 @@
package spark.filters
{
import org.apache.royale.events.IEventDispatcher;
-import flash.filters.BevelFilter;
import mx.filters.BitmapFilter;
import mx.filters.BitmapFilterType;
import mx.filters.BaseDimensionFilter;
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/ScrollBarDownButtonSkin.mxml b/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/ScrollBarDownButtonSkin.mxml
deleted file mode 100644
index 887d880..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/ScrollBarDownButtonSkin.mxml
+++ /dev/null
@@ -1,133 +0,0 @@
-<?xml version="1.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.
-
--->
-
-<!--- The default skin class for down button of the Spark ScrollBar component.
-
- @see spark.components.supportClasses.ScrollBarBase
- @see spark.components.HScrollBar
- @see spark.components.VScrollBar
-
- @langversion 3.0
- @playerversion Flash 10
- @playerversion AIR 1.5
- @productversion Flex 4
--->
-<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:fb="http://ns.adobe.com/flashbuilder/2009">
-
- <fx:Metadata>
- <![CDATA[
- /**
- * @copy spark.skins.spark.ApplicationSkin#hostComponent
- */
- [HostComponent("spark.components.Button")]
- ]]>
- </fx:Metadata>
-
- <fx:Script fb:purpose="styling">
- /* Define the skin elements that should not be colorized.
- For scroll bar buttons, the graphics are colorized but the arrow is not. */
- static private const exclusions:Array = ["arrow"];
-
- /**
- * @private
- */
- override public function get colorizeExclusions():Array {return exclusions;}
-
- /* Define the symbol fill items that should be colored by the "symbolColor" style. */
- static private const symbols:Array = ["arrowFill1", "arrowFill2"];
-
- /**
- * @private
- */
- override public function get symbolItems():Array {return symbols};
-
- /**
- * @private
- */
- override protected function initializationComplete():void
- {
- useChromeColor = true;
- super.initializationComplete();
- }
- </fx:Script>
-
- <s:states>
- <s:State name="up" />
- <s:State name="over" />
- <s:State name="down" />
- <s:State name="disabled" />
- </s:states>
-
- <!-- border/background -->
- <s:Rect left="0" right="0" minWidth="14" top="0" bottom="0" minHeight="17">
- <s:stroke>
- <s:SolidColorStroke color="0x686868" weight="1"/>
- </s:stroke>
- <s:fill>
- <s:SolidColor color="0xF9F9F9" color.down="0xDEEBFF" />
- </s:fill>
- </s:Rect>
-
- <!-- fill -->
- <s:Rect left="1" right="1" top="1" bottom="1">
- <s:fill>
- <s:LinearGradient>
- <s:GradientEntry color="0xFFFFFF"
- color.over="0xBBBBBB"
- color.down="0xD6D6D6"
- alpha="0.85"
- alpha.down="1" />
- <s:GradientEntry color="0xE7E7E7"
- color.over="0x9FA0A1"
- color.down="0x888888"
- alpha="0.85"
- alpha.down="1" />
- </s:LinearGradient>
- </s:fill>
- </s:Rect>
-
- <!-- highlight -->
- <s:Rect left="1" top="1" bottom="1" width="6">
- <s:fill>
- <s:SolidColor color="0xFFFFFF"
- alpha="0.75"
- alpha.over="0.22"
- alpha.down="0.22" />
- </s:fill>
- </s:Rect>
-
- <!-- arrow -->
- <!--- Defines the appearance of the down arrow in the ScrollBar component. -->
- <s:Path horizontalCenter="0" verticalCenter="0" id="arrow"
- data="M 3.5 7.0 L 0.0 0.0 L 7.0 0.0 L 3.5 7.0">
- <s:fill>
- <s:RadialGradient rotation="90" focalPointRatio="1">
- <!--- @private
- Defines the first fill color in the ScrollBar component's down arrow. -->
- <s:GradientEntry id="arrowFill1" color="0" alpha="0.6" />
- <!--- @private
- Defines the second fill color in the ScrollBar component's down arrow. -->
- <s:GradientEntry id="arrowFill2" color="0" alpha="0.8" />
- </s:RadialGradient>
- </s:fill>
- </s:Path>
-
-</s:SparkSkin>
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/ScrollBarUpButtonSkin.mxml b/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/ScrollBarUpButtonSkin.mxml
deleted file mode 100644
index 38071f2..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/ScrollBarUpButtonSkin.mxml
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.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.
-
--->
-
-<!--- The default skin class for up button of the Spark ScrollBar component.
-
- @see spark.components.supportClasses.ScrollBarBase
- @see spark.components.HScrollBar
- @see spark.components.VScrollBar
-
- @langversion 3.0
- @playerversion Flash 10
- @playerversion AIR 1.5
- @productversion Flex 4
--->
-<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:fb="http://ns.adobe.com/flashbuilder/2009">
-
- <fx:Metadata>
- <![CDATA[
- /**
- * @copy spark.skins.spark.ApplicationSkin#hostComponent
- */
- [HostComponent("spark.components.Button")]
- ]]>
- </fx:Metadata>
-
- <fx:Script fb:purpose="styling">
- /* Define the skin elements that should not be colorized.
- For scroll bar buttons, the graphics are colorized but the arrow is not. */
- static private const exclusions:Array = ["arrow"];
-
- /**
- * @private
- */
- override public function get colorizeExclusions():Array {return exclusions;}
-
- /* Define the symbol fill items that should be colored by the "symbolColor" style. */
- static private const symbols:Array = ["arrowFill1", "arrowFill2"];
-
- /**
- * @private
- */
- override public function get symbolItems():Array {return symbols};
-
- /**
- * @private
- */
- override protected function initializationComplete():void
- {
- useChromeColor = true;
- super.initializationComplete();
- }
- </fx:Script>
-
- <s:states>
- <s:State name="up" />
- <s:State name="over" />
- <s:State name="down" />
- <s:State name="disabled" />
- </s:states>
-
- <!-- border/background -->
- <s:Rect left="0" right="0" minWidth="14" top="0" bottom="0" minHeight="17">
- <s:stroke>
- <s:SolidColorStroke color="0x686868" weight="1"/>
- </s:stroke>
- <s:fill>
- <s:SolidColor color="0xF9F9F9" color.down="0xDEEBFF" />
- </s:fill>
- </s:Rect>
-
- <!-- fill -->
- <s:Rect left="1" right="1" top="1" bottom="1">
- <s:fill>
- <s:LinearGradient>
- <s:GradientEntry color="0xFFFFFF"
- color.over="0xBBBBBB"
- color.down="0xD6D6D6"
- alpha="0.85"
- alpha.down="1" />
- <s:GradientEntry color="0xE7E7E7"
- color.over="0x9FA0A1"
- color.down="0x888888"
- alpha="0.85"
- alpha.down="1" />
- </s:LinearGradient>
- </s:fill>
- </s:Rect>
-
- <!-- highlight -->
- <s:Rect left="1" top="1" bottom="1" width="6">
- <s:fill>
- <s:SolidColor color="0xFFFFFF"
- alpha="0.75"
- alpha.over="0.22"
- alpha.down="0.22" />
- </s:fill>
- </s:Rect>
-
- <!-- arrow -->
- <!--- Defines the appearance of the up arrow in the ScrollBar component. -->
- <s:Path horizontalCenter="0" verticalCenter="-1" id="arrow"
- data="M 3.5 0.0 L 7.0 7.0 L 0.0 7.0 L 3.5 0.0">
- <s:fill>
- <s:RadialGradient rotation="90" focalPointRatio="1">
- <!--- @private
- Defines the first fill color in the ScrollBar component's up arrow. -->
- <s:GradientEntry id="arrowFill1" color="0" alpha="0.65" />
- <!--- @private
- Defines the second fill color in the ScrollBar component's up arrow. -->
- <s:GradientEntry id="arrowFill2" color="0" alpha="0.8" />
- </s:RadialGradient>
- </s:fill>
- </s:Path>
-</s:SparkSkin>
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/fullScreen/PlayPauseButtonSkin.mxml b/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/fullScreen/PlayPauseButtonSkin.mxml
deleted file mode 100644
index 4b47d00..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/fullScreen/PlayPauseButtonSkin.mxml
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<!--- The default skin class for the play/pause button of a Spark VideoPlayer
- component while in one of the <code>fullScreen</code> skin states.
-
- @see spark.components.VideoPlayer
-
- @langversion 3.0
- @playerversion Flash 10
- @playerversion AIR 1.5
- @productversion Flex 4
--->
-<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
- alpha.disabledStates="0.5">
-
- <!-- host component -->
- <fx:Metadata>
- /**
- * @copy spark.skins.spark.ApplicationSkin#hostComponent
- */
- [HostComponent("spark.components.ToggleButton")]
- </fx:Metadata>
-
- <!-- states -->
- <s:states>
- <s:State name="up" />
- <s:State name="over" stateGroups="overStates" />
- <s:State name="down" stateGroups="downStates" />
- <s:State name="disabled" stateGroups="disabledStates" />
- <s:State name="upAndSelected" stateGroups="selectedStates, selectedUpStates" />
- <s:State name="overAndSelected" stateGroups="overStates, selectedStates" />
- <s:State name="downAndSelected" stateGroups="downStates, selectedStates" />
- <s:State name="disabledAndSelected" stateGroups="selectedUpStates, disabledStates, selectedStates" />
- </s:states>
-
- <!-- layer 1: fill -->
- <s:Rect left="1" right="1" top="1" bottom="1">
- <s:fill>
- <s:LinearGradient rotation="90">
- <s:GradientEntry color="0x585858"
- color.overStates="0x676767"
- color.downStates="0x2C2C2C"
- alpha="0.55" />
- <s:GradientEntry color="0x1E1E1E"
- color.overStates="0x363636"
- color.downStates="0x585858"
- alpha="0.55" />
- </s:LinearGradient>
- </s:fill>
- </s:Rect>
-
- <!-- layer 2: One pixel stroke inside border -->
- <s:Rect left="1" right="1" top="1" bottom="1">
- <s:stroke>
- <s:LinearGradientStroke weight="1" rotation="90">
- <s:GradientEntry color="0xFFFFFF" alpha="0.12" />
- <s:GradientEntry color="0xFFFFFF" alpha="0.09" />
- </s:LinearGradientStroke>
- </s:stroke>
- </s:Rect>
-
- <!-- layer 3: border - put on top of the fill so it doesn't disappear when scale is less than 1 -->
- <s:Rect left="0" right="0" top="0" bottom="0" width="38" height="24">
- <s:stroke>
- <s:SolidColorStroke color="0x222222" alpha="0.66" />
- </s:stroke>
- </s:Rect>
-
- <!--- Defines the play symbol. -->
- <s:Group horizontalCenter="0" verticalCenter="0" excludeFrom="selectedStates" id="playSymbol">
- <!-- triangle -->
- <s:Path winding="evenOdd" data="M 1 0 L 1 13 L 8 7 L 1 0 Z">
- <s:fill>
- <s:SolidColor color="0xFFFFFF" alpha="0.75"/>
- </s:fill>
- </s:Path>
-
- <!-- triangle drop shadow on bottom/right -->
- <s:Line xFrom="1" xTo="7" yFrom="13" yTo="7">
- <s:stroke>
- <s:SolidColorStroke color="0x000000" alpha="0.33" />
- </s:stroke>
- </s:Line>
-
- <!-- line on left of triangle -->
- <s:Line x="0" yFrom="0" yTo="13">
- <s:stroke>
- <s:SolidColorStroke color="0x000000" alpha="0.33" />
- </s:stroke>
- </s:Line>
- </s:Group>
-
- <!--- Defines the pause symbol. -->
- <s:Group horizontalCenter="0" verticalCenter="0" includeIn="selectedStates" id="pauseSymbol">
-
- <!-- big line on left -->
- <s:Rect left="0" top="0" height="10" width="3">
- <s:fill>
- <s:SolidColor color="0xFFFFFF" alpha="0.75"/>
- </s:fill>
- </s:Rect>
-
- <!-- big line on right -->
- <s:Rect left="4" top="0" height="10" width="3">
- <s:fill>
- <s:SolidColor color="0xFFFFFF" alpha="0.75"/>
- </s:fill>
- </s:Rect>
-
- <!-- drop shadows -->
- <s:Line xFrom="0" xTo="3" y="11">
- <s:stroke>
- <s:SolidColorStroke color="0x404040" />
- </s:stroke>
- </s:Line>
- <s:Line xFrom="4" xTo="7" y="11">
- <s:stroke>
- <s:SolidColorStroke color="0x404040" />
- </s:stroke>
- </s:Line>
- </s:Group>
-
-</s:Skin>
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/fullScreen/ScrubBarSkin.mxml b/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/fullScreen/ScrubBarSkin.mxml
deleted file mode 100644
index 1bc0e87..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/fullScreen/ScrubBarSkin.mxml
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<!--- The default skin class for the scrub bar of a Spark VideoPlayer
- component while in one of the <code>fullScreen</code> skin states.
-
- @see spark.components.VideoPlayer
-
- @langversion 3.0
- @playerversion Flash 10
- @playerversion AIR 1.5
- @productversion Flex 4
--->
-<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
- minHeight="14" minWidth="60"
- alpha.disabled="0.5">
-
- <fx:Metadata>
- /**
- * @copy spark.skins.spark.ApplicationSkin#hostComponent
- */
- [HostComponent("spark.components.mediaClasses.ScrubBar")]
- </fx:Metadata>
-
- <s:states>
- <s:State name="normal" />
- <s:State name="disabled" />
- </s:states>
-
- <fx:Declarations>
- <!--- Defines the appearance of the ScrubBar skin's data tip. To customize the data tip's appearance, create a custom ScrubBarSkin class. -->
- <fx:Component id="dataTip" className="DataTipClass">
- <s:DataRenderer minHeight="24" minWidth="40" y="-34">
- <s:RectangularDropShadow id="shadow" distance="3"
- angle="90" color="#999999" left="0" top="0" right="0" bottom="0"/>
-
- <s:Rect top="0" left="0" right="0" bottom="0">
- <s:fill>
- <s:SolidColor color="0x000000" alpha=".9"/>
- </s:fill>
- </s:Rect>
-
- <s:Label id="labelDisplay" text="{data}"
- horizontalCenter="0" verticalCenter="1"
- left="5" right="5" top="5" bottom="5"
- textAlign="center" verticalAlign="middle"
- fontWeight="normal" color="white" fontSize="11">
- </s:Label>
- </s:DataRenderer>
- </fx:Component>
- </fx:Declarations>
-
- <!--- The skin pat that defines the video timeline. The timeline shows the current playhead location
- in the video, the amount of the video previously played, and the loaded in part of the video. -->
- <s:Button id="track" left="0" right="0" top="0" height="11"
- skinClass="spark.skins.spark.mediaClasses.fullScreen.ScrubBarTrackSkin" />
-
- <!--- @copy spark.components.mediaClasses.ScrubBar#loadedRangeArea -->
- <s:Group id="loadedRangeArea" x="0" y="0" height="11" includeInLayout="false">
-
- <!-- inset 7 and 6 pixels because that's thumbSize/2 -->
- <s:Group left="7" right="6" top="0" bottom="0" minWidth="0">
-
- <!-- fill -->
- <s:Rect left="0" right="0" top="0" bottom="0">
- <s:fill>
- <s:LinearGradient rotation="90">
- <s:GradientEntry color="0xFFFFFF" alpha="0.33"/>
- <s:GradientEntry color="0xE1E1E1" alpha="0.33"/>
- </s:LinearGradient>
- </s:fill>
- </s:Rect>
-
- <!-- black line on top -->
- <!-- set width to 100%, maxWidth=1, minWidth=0 b/c only want this line to show up
- if there's room for it -->
- <s:Rect right="0" left="0" top="0">
- <s:fill>
- <s:SolidColor color="0x000000" alpha=".18"/>
- </s:fill>
- </s:Rect>
-
- </s:Group>
- </s:Group>
-
- <!--- @copy spark.components.mediaClasses.ScrubBar#playedArea -->
- <s:Group id="playedArea" x="0" y="0" height="11" includeInLayout="false">
-
- <!-- inset 7 and 6 pixels because that's thumbSize/2 -->
- <s:Group left="7" right="6" top="0" bottom="0" minWidth="0">
-
- <!-- border -->
- <s:Rect left="0" right="0" top="0" bottom="0" minWidth="0">
- <s:fill>
- <s:SolidColor color="0x000000" alpha="0.85" />
- </s:fill>
- </s:Rect>
-
- <!-- fill -->
- <s:Rect left="1" right="1" top="1" bottom="1">
- <s:fill>
- <s:LinearGradient rotation="90">
- <s:GradientEntry color="0xEBECF2"/>
- <s:GradientEntry color="0xD2D3D8"/>
- </s:LinearGradient>
- </s:fill>
- </s:Rect>
-
- </s:Group>
- </s:Group>
-
- <!--- A skin part that defines a button that can be dragged along the track to increase or decrease
- the playhead location in the video. -->
- <s:Button id="thumb" x="0" y="0" width="14" height="19" includeInLayout="false"
- skinClass="spark.skins.spark.mediaClasses.fullScreen.ScrubBarThumbSkin" />
-
-</s:Skin>
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/fullScreen/VolumeBarSkin.mxml b/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/fullScreen/VolumeBarSkin.mxml
deleted file mode 100644
index 6168ae5..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/fullScreen/VolumeBarSkin.mxml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<!--- The default skin class for the volume bar of a Spark VideoPlayer
- component while in one of the <code>fullScreen</code> skin states.
-
- @see spark.components.VideoPlayer
-
- @langversion 3.0
- @playerversion Flash 10
- @playerversion AIR 1.5
- @productversion Flex 4
--->
-<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" alpha.disabled=".5">
-
- <!-- host component -->
- <fx:Metadata>
- /**
- * @copy spark.skins.spark.ApplicationSkin#hostComponent
- */
- [HostComponent("spark.components.mediaClasses.VolumeBar")]
- </fx:Metadata>
-
- <s:states>
- <s:State name="normal" />
- <s:State name="open" />
- <s:State name="disabled" />
- </s:states>
-
- <!--- The PopUpAnchor control that contains the drop-down slider control. -->
- <s:PopUpAnchor id="popup" displayPopUp.normal="false" displayPopUp.open="true" includeIn="open"
- left="0" right="0" top="0" bottom="0" popUpPosition="above">
-
- <!--- @copy spark.components.mediaClasses.VolumeBar#dropDown -->
- <s:Group id="dropDown" width="38" height="84" horizontalCenter="0">
-
- <!-- dropshadow for the dropdown -->
- <s:Rect left="0" top="0" right="0" bottom="0">
- <s:filters>
- <s:DropShadowFilter knockout="true" blurX="20" blurY="20" alpha="0.32" distance="11" angle="90" />
- </s:filters>
- <s:fill>
- <s:SolidColor color="0x000000" />
- </s:fill>
- </s:Rect>
-
- <!-- background for the popup -->
- <s:Rect left="0" right="0" top="0" bottom="0">
- <s:fill>
- <s:SolidColor color="0x424242" />
- </s:fill>
- <s:stroke>
- <s:SolidColorStroke color="0x000000" alpha="0.55" />
- </s:stroke>
- </s:Rect>
-
- <!--- The skin pat that defines the drop-down slider track. -->
- <s:Button id="track" horizontalCenter="0" top="6" bottom="7"
- skinClass="spark.skins.spark.mediaClasses.fullScreen.VolumeBarTrackSkin" />
-
- <!--- The skin pat that defines the thumb in the drop-down slider track. -->
- <s:Button id="thumb" horizontalCenter="0" width="11" height="11"
- skinClass="spark.skins.spark.mediaClasses.fullScreen.VolumeBarThumbSkin" />
- </s:Group>
- </s:PopUpAnchor>
-
- <!--- @copy spark.components.mediaClasses.VolumeBar#muteButton -->
- <s:MuteButton id="muteButton" left="0" right="0" top="0" bottom="0" focusEnabled="false"
- skinClass="spark.skins.spark.mediaClasses.fullScreen.MuteButtonSkin" />
-
-</s:Skin>
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/normal/PlayPauseButtonSkin.mxml b/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/normal/PlayPauseButtonSkin.mxml
deleted file mode 100644
index 28e8707..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/normal/PlayPauseButtonSkin.mxml
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<!--- The default skin class for the play/pause button of a Spark VideoPlayer component
- in the normal skin state. The normal skin state means the component is not in
- one of the <code>fullScreen</code> skin states.
-
- @see spark.components.VideoPlayer
-
- @langversion 3.0
- @playerversion Flash 10
- @playerversion AIR 1.5
- @productversion Flex 4
--->
-<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabledStates="0.5">
-
- <!-- host component -->
- <fx:Metadata>
- /**
- * @copy spark.skins.spark.ApplicationSkin#hostComponent
- */
- [HostComponent("spark.components.ToggleButton")]
- </fx:Metadata>
-
- <fx:Script fb:purpose="styling">
- /* Define the skin elements that should not be colorized. */
- static private const exclusions:Array = ["playSymbol", "pauseSymbol"];
-
- /**
- * @private
- */
- override public function get colorizeExclusions():Array {return exclusions;}
-
- /* Define the symbol fill items that should be colored by the "symbolColor" style.*/
- static private const symbols:Array = ["playSymbolFill", "pauseSymbolFill1_1", "pauseSymbolFill1_2",
- "pauseSymbolFill1_3", "pauseSymbolFill1_4", "pauseSymbolFill1_5",
- "pauseSymbolFill2_1", "pauseSymbolFill2_2", "pauseSymbolFill2_3",
- "pauseSymbolFill2_4", "pauseSymbolFill2_5"];
-
- /**
- * @private
- */
- override public function get symbolItems():Array {return symbols};
-
- /**
- * @private
- */
- override protected function initializationComplete():void
- {
- useChromeColor = true;
- super.initializationComplete();
- }
- </fx:Script>
-
- <!-- states -->
- <s:states>
- <s:State name="up" />
- <s:State name="over" stateGroups="overStates" />
- <s:State name="down" stateGroups="downStates" />
- <s:State name="disabled" stateGroups="disabledStates" />
- <s:State name="upAndSelected" stateGroups="selectedStates, selectedUpStates" />
- <s:State name="overAndSelected" stateGroups="overStates, selectedStates" />
- <s:State name="downAndSelected" stateGroups="downStates, selectedStates" />
- <s:State name="disabledAndSelected" stateGroups="selectedUpStates, disabledStates, selectedStates" />
- </s:states>
-
- <!-- layer 1: fill -->
- <s:Rect left="1" right="1" top="1" bottom="1">
- <s:fill>
- <s:LinearGradient rotation="90">
- <s:GradientEntry color="0xFFFFFF"
- color.overStates="0xCACACA"
- color.downStates="0xA8A8A8" />
- <s:GradientEntry color="0xDCDCDC"
- color.overStates="0x8D8D8D"
- color.downStates="0x6B6B6B"/>
- </s:LinearGradient>
- </s:fill>
- </s:Rect>
-
- <!-- layer 2: One pixel stroke inside border (exclude in downStates) -->
- <s:Rect left="1" right="1" top="1" bottom="1" excludeFrom="downStates">
- <s:stroke>
- <s:LinearGradientStroke weight="1" rotation="90">
- <s:GradientEntry color="0xFEFEFE" alpha.overStates="0.22" />
- <s:GradientEntry color="0xEAEAEA" alpha.overStates="0.22" />
- </s:LinearGradientStroke>
- </s:stroke>
- </s:Rect>
-
- <!-- layer 3: fill highlight (exclude in downStates) -->
- <s:Rect left="1" right="1" top="1" height="11" excludeFrom="downStates">
- <s:fill>
- <s:SolidColor color="0xFFFFFF"
- alpha="0.3"
- alpha.overStates="0.12" />
- </s:fill>
- </s:Rect>
-
- <!-- layer 4: downstate inset border (include only in downStates) -->
- <s:Rect left="1" top="1" right="1" height="1" includeIn="downStates">
- <s:fill>
- <s:SolidColor color="0x000000" alpha="0.4" />
- </s:fill>
- </s:Rect>
- <s:Rect left="1" top="2" right="1" height="1" includeIn="downStates">
- <s:fill>
- <s:SolidColor color="0x000000" alpha="0.12" />
- </s:fill>
- </s:Rect>
- <s:Rect left="1" top="1" bottom="1" width="1" includeIn="downStates">
- <s:fill>
- <s:SolidColor color="0x000000" alpha="0.12" />
- </s:fill>
- </s:Rect>
- <s:Rect right="1" top="1" bottom="1" width="1" includeIn="downStates">
- <s:fill>
- <s:SolidColor color="0x000000" alpha="0.12" />
- </s:fill>
- </s:Rect>
-
- <!-- layer 5: border - put on top of the fill so it doesn't disappear when scale is less than 1 -->
- <s:Rect left="0" right="0" top="0" bottom="0" width="38" height="24">
- <s:stroke>
- <s:SolidColorStroke color="0x131313" />
- </s:stroke>
- </s:Rect>
-
- <!--- Defines the play symbol. -->
- <s:Group horizontalCenter="0" verticalCenter="0" excludeFrom="selectedStates" id="playSymbol">
-
- <!-- triangle -->
- <s:Path winding="evenOdd" data="M 1 0 L 1 13 L 8 7 L 1 0 Z">
- <s:fill>
- <!--- @private -->
- <s:SolidColor color="0x555555" alpha="0.75" id="playSymbolFill"/>
- </s:fill>
- </s:Path>
-
- <!-- triangle drop shadow on bottom/right -->
- <s:Line xFrom="1" xTo="7" yFrom="0" yTo="7">
- <s:stroke>
- <s:SolidColorStroke color="0x000000" alpha="0.33" />
- </s:stroke>
- </s:Line>
-
- <!-- line on left of triangle -->
- <s:Line x="0" yFrom="0" yTo="13">
- <s:stroke>
- <s:SolidColorStroke color="0x000000" alpha="0.5" />
- </s:stroke>
- </s:Line>
- </s:Group>
-
- <!--- Defines the pause symbol. -->
- <s:Group horizontalCenter="0" verticalCenter="0" includeIn="selectedStates" id="pauseSymbol">
-
- <!-- big line on left -->
- <s:Rect left="0" top="0" height="11" width="3">
- <s:fill>
- <s:LinearGradient rotation="90">
- <!--- @private -->
- <s:GradientEntry color="0x252525" alpha="0.75" ratio="0.1" id="pauseSymbolFill1_1"/>
- <!--- @private -->
- <s:GradientEntry color="0x404040" alpha="0.75" ratio="0.2" id="pauseSymbolFill1_2"/>
- <!--- @private -->
- <s:GradientEntry color="0x4B4B4B" alpha="0.75" ratio="0.55" id="pauseSymbolFill1_3"/>
- <!--- @private -->
- <s:GradientEntry color="0x424242" alpha="0.75" ratio="0.9" id="pauseSymbolFill1_4"/>
- <!--- @private -->
- <s:GradientEntry color="0xC4C4C4" alpha="0.75" ratio="1.0" id="pauseSymbolFill1_5"/>
- </s:LinearGradient>
- </s:fill>
- </s:Rect>
-
- <!-- big line on right -->
- <s:Rect left="4" top="0" height="11" width="3">
- <s:fill>
- <s:LinearGradient rotation="90">
- <!--- @private -->
- <s:GradientEntry color="0x252525" alpha="0.75" ratio="0.1" id="pauseSymbolFill2_1"/>
- <!--- @private -->
- <s:GradientEntry color="0x404040" alpha="0.75" ratio="0.2" id="pauseSymbolFill2_2"/>
- <!--- @private -->
- <s:GradientEntry color="0x4B4B4B" alpha="0.75" ratio="0.55" id="pauseSymbolFill2_3"/>
- <!--- @private -->
- <s:GradientEntry color="0x424242" alpha="0.75" ratio="0.9" id="pauseSymbolFill2_4"/>
- <!--- @private -->
- <s:GradientEntry color="0xC4C4C4" alpha="0.75" ratio="1.0" id="pauseSymbolFill2_5"/>
- </s:LinearGradient>
- </s:fill>
- </s:Rect>
-
- </s:Group>
-</s:SparkSkin>
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/normal/ScrubBarSkin.mxml b/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/normal/ScrubBarSkin.mxml
deleted file mode 100644
index 36413ce..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/normal/ScrubBarSkin.mxml
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<!--- The default skin class for the scrub bar of a Spark VideoPlayer component
- in the normal skin state. The normal skin state means the component is not in
- one of the <code>fullScreen</code> skin states.
-
- @see spark.components.VideoPlayer
-
- @langversion 3.0
- @playerversion Flash 10
- @playerversion AIR 1.5
- @productversion Flex 4
--->
-<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:fb="http://ns.adobe.com/flashbuilder/2009" minHeight="14" minWidth="60"
- alpha.disabled="0.5">
-
- <fx:Metadata>
- /**
- * @copy spark.skins.spark.ApplicationSkin#hostComponent
- */
- [HostComponent("spark.components.mediaClasses.ScrubBar")]
- </fx:Metadata>
-
- <fx:Script fb:purpose="styling">
- /* Define the skin elements that should not be colorized. */
- static private const exclusions:Array = ["track", "thumb"];
-
- /**
- * @private
- */
- override public function get colorizeExclusions():Array {return exclusions;}
-
- /**
- * @private
- */
- override protected function initializationComplete():void
- {
- useChromeColor = true;
- super.initializationComplete();
- }
- </fx:Script>
-
- <s:states>
- <s:State name="normal" />
- <s:State name="disabled" />
- </s:states>
-
- <fx:Declarations>
- <!--- Defines the appearance of the ScrubBar skin's data tip. To customize the data tip's appearance, create a custom ScrubBarSkin class. -->
- <fx:Component id="dataTip">
- <s:DataRenderer minHeight="24" minWidth="40" y="-34">
- <s:RectangularDropShadow id="shadow" distance="3"
- angle="90" color="#999999" left="0" top="0" right="0" bottom="0"/>
-
- <s:Rect top="0" left="0" right="0" bottom="0">
- <s:fill>
- <s:SolidColor color="0x000000" alpha=".9"/>
- </s:fill>
- </s:Rect>
-
- <s:Label id="labelDisplay" text="{data}"
- horizontalCenter="0" verticalCenter="1"
- left="5" right="5" top="5" bottom="5"
- textAlign="center" verticalAlign="middle"
- fontWeight="normal" color="white" fontSize="11">
- </s:Label>
- </s:DataRenderer>
- </fx:Component>
- </fx:Declarations>
-
- <!--- The skin pat that defines the video timeline. The timeline shows the current playhead location
- in the video, the amount of the video previously played, and the loaded in part of the video. -->
- <s:Button id="track" left="0" right="0" top="0" height="11"
- skinClass="spark.skins.spark.mediaClasses.normal.ScrubBarTrackSkin" />
-
- <!--- @copy spark.components.mediaClasses.ScrubBar#loadedRangeArea -->
- <s:Group id="loadedRangeArea" x="0" y="0" height="11" includeInLayout="false">
-
- <!-- inset 7 and 6 pixels because that's thumbSize/2 -->
- <s:Group left="7" right="6" top="0" bottom="0" minWidth="0">
-
- <!-- fill -->
- <s:Rect left="1" right="1" top="1" bottom="1">
- <s:fill>
- <s:SolidColor color="0xD7D7D7" />
- </s:fill>
- </s:Rect>
-
- <!-- inner glow -->
- <!-- set height to 100%, maxHeight=1, minHeight=0 b/c only want this line to show up
- if there's room for it -->
- <s:Rect left="1" top="1" bottom="1" width="100%" maxWidth="1" minWidth="0">
- <s:fill>
- <s:SolidColor color="0x000000" alpha="0.12" />
- </s:fill>
- </s:Rect>
- <s:Rect left="2" right="1" top="1" height="100%" maxHeight="1" minHeight="0">
- <s:fill>
- <s:SolidColor color="0x000000" alpha="0.12" />
- </s:fill>
- </s:Rect>
-
- <!-- black line on right -->
- <!-- set width to 100%, maxWidth=1, minWidth=0 b/c only want this line to show up
- if there's room for it -->
- <s:Rect right="0" top="1" bottom="1" width="100%" maxWidth="1" minWidth="0">
- <s:fill>
- <s:SolidColor color="0x000000" alpha=".5"/>
- </s:fill>
- </s:Rect>
-
- </s:Group>
- </s:Group>
-
- <!--- @copy spark.components.mediaClasses.ScrubBar#playedArea -->
- <s:Group id="playedArea" x="0" y="0" height="11" includeInLayout="false">
-
- <!-- inset 7 and 6 pixels because that's thumbSize/2 -->
- <s:Group left="7" right="6" top="0" bottom="0" minWidth="0">
-
- <!-- inner glow -->
- <s:Rect left="1" right="1" top="1" bottom="1">
- <s:fill>
- <s:LinearGradient rotation="90">
- <s:GradientEntry color="0xFEFEFE"/>
- <s:GradientEntry color="0xECECEC"/>
- </s:LinearGradient>
- </s:fill>
- </s:Rect>
-
- <!-- fill -->
- <s:Rect left="2" right="2" top="2" bottom="2">
- <s:fill>
- <s:LinearGradient rotation="90">
- <s:GradientEntry color="0xFFFFFF" alpha="0.85"/>
- <s:GradientEntry color="0xE1E1E1" alpha="0.85"/>
- </s:LinearGradient>
- </s:fill>
- </s:Rect>
-
- <!-- black line on right -->
- <!-- set width to 100%, maxWidth=1, minWidth=0 b/c only want this line to show up
- if there's room for it -->
- <s:Rect right="0" top="1" bottom="1" width="100%" maxWidth="1" minWidth="0">
- <s:fill>
- <s:SolidColor color="0x131313"/>
- </s:fill>
- </s:Rect>
-
- </s:Group>
- </s:Group>
-
- <!--- A skin part that defines a button that can be dragged along the track to increase or decrease
- the playhead location in the video. -->
- <s:Button id="thumb" x="0" y="0" width="14" height="19" includeInLayout="false"
- skinClass="spark.skins.spark.mediaClasses.normal.ScrubBarThumbSkin" />
-
-</s:SparkSkin>
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/normal/VolumeBarSkin.mxml b/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/normal/VolumeBarSkin.mxml
deleted file mode 100644
index ef46cb4..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/skins/spark/mediaClasses/normal/VolumeBarSkin.mxml
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<!--- The default skin class for the volume bar of a Spark VideoPlayer component
- in the normal skin state. The normal skin state means the component is not in
- one of the <code>fullScreen</code> skin states.
-
- @see spark.components.VideoPlayer
-
- @langversion 3.0
- @playerversion Flash 10
- @playerversion AIR 1.5
- @productversion Flex 4
--->
-<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabled=".5">
-
- <!-- host component -->
- <fx:Metadata>
- /**
- * @copy spark.skins.spark.ApplicationSkin#hostComponent
- */
- [HostComponent("spark.components.mediaClasses.VolumeBar")]
- </fx:Metadata>
-
- <fx:Script fb:purpose="styling">
- /* Define the skin elements that should not be colorized. */
- static private const exclusions:Array = ["muteButton", "track", "thumb"];
-
- /**
- * @private
- */
- override public function get colorizeExclusions():Array {return exclusions;}
-
- /**
- * @private
- */
- override protected function initializationComplete():void
- {
- useChromeColor = true;
- super.initializationComplete();
- }
- </fx:Script>
-
- <s:states>
- <s:State name="normal" />
- <s:State name="open" />
- <s:State name="disabled" />
- </s:states>
-
- <!--- The PopUpAnchor control that contains the drop-down slider control. -->
- <s:PopUpAnchor id="popup" displayPopUp.normal="false" displayPopUp.open="true" includeIn="open"
- left="0" right="0" top="0" bottom="0" popUpPosition="above" itemDestructionPolicy="auto">
-
- <!--- @copy spark.components.mediaClasses.VolumeBar#dropDown -->
- <s:Group id="dropDown" width="38" height="84" horizontalCenter="0">
-
- <!-- dropshadow for the dropdown -->
- <s:Rect left="0" top="0" right="0" bottom="0">
- <s:filters>
- <s:DropShadowFilter knockout="true" blurX="20" blurY="20" alpha="0.32" distance="11" angle="90" />
- </s:filters>
- <s:fill>
- <s:SolidColor color="0x000000" />
- </s:fill>
- </s:Rect>
-
- <!-- background for the popup -->
- <s:Rect left="0" right="0" top="0" bottom="0">
- <s:fill>
- <s:LinearGradient rotation="90">
- <s:GradientEntry color="0xFFFFFF"/>
- <s:GradientEntry color="0xDCDCDC"/>
- </s:LinearGradient>
- </s:fill>
- <s:stroke>
- <s:SolidColorStroke color="0x000000" />
- </s:stroke>
- </s:Rect>
-
- <!--- The skin pat that defines the drop-down slider track. -->
- <s:Button id="track" horizontalCenter="0" top="6" bottom="7"
- skinClass="spark.skins.spark.mediaClasses.normal.VolumeBarTrackSkin" />
-
- <!--- The skin pat that defines the thumb in the drop-down slider track. -->
- <s:Button id="thumb" horizontalCenter="0" width="11" height="11"
- skinClass="spark.skins.spark.mediaClasses.normal.VolumeBarThumbSkin" />
- </s:Group>
- </s:PopUpAnchor>
-
- <!--- @copy spark.components.mediaClasses.VolumeBar#muteButton -->
- <s:MuteButton id="muteButton" left="0" right="0" top="0" bottom="0" focusEnabled="false"
- skinClass="spark.skins.spark.mediaClasses.normal.MuteButtonSkin" />
-
-</s:SparkSkin>
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/styles/metadata/BasicInheritingTextStyles.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/styles/metadata/BasicInheritingTextStyles.as
deleted file mode 100644
index 3b5c679..0000000
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/styles/metadata/BasicInheritingTextStyles.as
+++ /dev/null
@@ -1,606 +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.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-/**
- * Specifies the baseline to which the dominant baseline aligns.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.alignmentBaseline</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#alignmentBaseline
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="alignmentBaseline", type="String", enumeration="useDominantBaseline,roman,ascent,descent,ideographicTop,ideographicCenter,ideographicBottom", inherit="yes")]
-
-/**
- * Amount to shift the baseline.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.baselineShift.</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#baselineShift
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="baselineShift", type="Object", inherit="yes")]
-
-/**
- * The type of CFF hinting used for this text.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.cffHinting.</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#cffHinting
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="cffHinting", type="String", enumeration="horizontalStem,none", inherit="yes")]
-
-/**
- * Color of the text.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.color.</b></p>
- *
- * <p><b>For the Mobile theme, if using StyleableTextField,
- * see spark.components.supportClasses.StyleableTextField Style color,
- * and if using StyleableStageText,
- * see spark.components.supportClasses.StyleableStageText Style color.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#color
- * @see spark.components.supportClasses.StyleableTextField#style:color
- * @see spark.components.supportClasses.StyleableStageText#style:color
- *
- * @default 0x000000
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="color", type="uint", format="Color", inherit="yes")]
-
-/**
- * The type of digit case used for this text.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.digitCase.</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#digitCase
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="digitCase", type="String", enumeration="default,lining,oldStyle", inherit="yes")]
-
-/**
- * Type of digit width used for this text.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.digitWidth.</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#digitWidth
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="digitWidth", type="String", enumeration="default,proportional,tabular", inherit="yes")]
-
-/**
- * Specifies the default bidirectional embedding level of the text.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.direction.</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#direction
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="direction", type="String", enumeration="ltr,rtl", inherit="yes")]
-
-/**
- * Specifies which element baseline snaps to the <code>alignmentBaseline</code> to
- * determine the vertical position of the element on the line.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.dominantBaseline.</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#dominantBaseline
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="dominantBaseline", type="String", enumeration="auto,roman,ascent,descent,ideographicTop,ideographicCenter,ideographicBottom", inherit="yes")]
-
-/**
- * The name of the font to use, or a comma-separated list of font names.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.fontFamily.</b></p>
- *
- * <p><b>For the Mobile theme, if using StyleableTextField,
- * see spark.components.supportClasses.StyleableTextField Style fontFamily,
- * and if using StyleableStageText,
- * see spark.components.supportClasses.StyleableStageText Style fontFamily.</b></p>
- *
- * <p>The default value for the Spark theme is <code>Arial</code>.
- * The default value for the Mobile theme is <code>_sans</code>.</p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#fontFamily
- * @see spark.components.supportClasses.StyleableStageText#style:fontFamily
- * @see spark.components.supportClasses.StyleableTextField#style:fontFamily
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="fontFamily", type="String", inherit="yes")]
-
-/**
- * Font lookup to use.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.fontLookup</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#fontLookup
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="fontLookup", type="String", enumeration="auto,device,embeddedCFF", inherit="yes")]
-
-/**
- * Height of the text, in pixels.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.fontSize</b></p>
- *
- * <p><b>For the Mobile theme, if using StyleableTextField,
- * see spark.components.supportClasses.StyleableTextField Style fontSize,
- * and if using StyleableStageText,
- * see spark.components.supportClasses.StyleableStageText Style fontSize.</b></p>
- *
- * <p>The default value for the Spark theme is <code>12</code>.
- * The default value for the Mobile theme is <code>24</code>.</p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#fontSize
- * @see spark.components.supportClasses.StyleableStageText#style:fontSize
- * @see spark.components.supportClasses.StyleableTextField#style:fontSize
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="fontSize", type="Number", format="Length", inherit="yes", minValue="1.0", maxValue="720.0")]
-
-/**
- * Determines whether the text is italic font.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.fontStyle</b></p>
- *
- * <p><b>For the Mobile theme, if using StyleableTextField,
- * see spark.components.supportClasses.StyleableTextField Style fontStyle,
- * and if using StyleableStageText,
- * see spark.components.supportClasses.StyleableStageText Style fontStyle.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#fontStyle
- * @see spark.components.supportClasses.StyleableStageText#style:fontStyle
- * @see spark.components.supportClasses.StyleableTextField#style:fontStyle
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="fontStyle", type="String", enumeration="normal,italic", inherit="yes")]
-
-/**
- * Determines whether the text is boldface.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.fontWeight</b></p>
- *
- * <p><b>For the Mobile theme, if using StyleableTextField,
- * see spark.components.supportClasses.StyleableTextField Style fontWeight,
- * and if using StyleableStageText,
- * see spark.components.supportClasses.StyleableStageText Style fontWeight.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#fontWeight
- * @see spark.components.supportClasses.StyleableStageText#style:fontWeight
- * @see spark.components.supportClasses.StyleableTextField#style:fontWeight
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="fontWeight", type="String", enumeration="normal,bold", inherit="yes")]
-
-/**
- * Rule used to justify text in a paragraph.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.justificationRule</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#justificationRule
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="justificationRule", type="String", enumeration="auto,space,eastAsian", inherit="yes")]
-
-/**
- * The style used for justification of the paragraph.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.justificationStyle</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#justificationStyle
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="justificationStyle", type="String", enumeration="auto,prioritizeLeastAdjustment,pushInKinsoku,pushOutOnly", inherit="yes")]
-
-/**
- * The style used for justification of the paragraph.
- *
- * <p>Kerning is enabled by default for Spark components, but is disabled by default for MX components.
- * Spark components interpret <code>default</code> as <code>auto</code>,
- * while MX components interpret <code>default</code> as <code>false</code>.</p>
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.kerning</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#kerning
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="kerning", type="String", enumeration="auto,on,off", inherit="yes")]
-
-/**
- * Additional vertical space between lines of text.
- *
- * <p><b>For the Spark theme, this is not supported.</b> See <code>lineHeight</code>.</p>
- *
- * <p><b>For the Mobile theme, if using StyleableTextField,
- * see spark.components.supportClasses.StyleableStageText Style fontWeight
- * and if using StyleableStageText, this is not supported.</b></p>
- *
- * @see spark.components.supportClasses.StyleableTextField#style:leading
- * @see #style:lineHeight
- *
- * @langversion 3.0
- * @playerversion Flash 10.1
- * @playerversion AIR 2.0
- * @productversion Flex 4.5
- */
-//[Style(name="leading", type="Number", format="Length", inherit="yes", theme="mobile")]
-
-/**
- * The number of additional pixels to appear between each character.
- *
- * <p><b>For the Spark theme, this is not supported.</b> See <code>trackingLeft</code>
- * and <code>trackingRight</code>.</p>
- *
- * <p><b>For the Mobile theme, if using StyleableTextField,
- * see spark.components.supportClasses.StyleableTextField.letterSpacing
- * and if using StyleableStageText, this is not supported.</b></p>
- *
- * @see spark.components.supportClasses.StyleableTextField#style:letterSpacing
- * @see #style:trackingLeft
- * @see #style:trackingRight
- *
- * @langversion 3.0
- * @playerversion Flash 10.1
- * @playerversion AIR 2.0
- * @productversion Flex 4.5
- */
-//[Style(name="letterSpacing", type="Number", inherit="yes", theme="mobile")]
-
-/**
- * Controls which of the ligatures that are defined in the font may be used in the text.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.ligatureLevel</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#ligatureLevel
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="ligatureLevel", type="String", enumeration="common,minimum,uncommon,exotic", inherit="yes")]
-
-/**
- * Leading controls for the text.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.lineHeight.</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b> See <code>leading</code>.</p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#lineHeight
- * @see #style:leading
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-[Style(name="lineHeight", type="Object", inherit="yes")]
-
-/**
- * If true, applies strikethrough, a line drawn through the middle of the text.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.lineThrough</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#lineThrough
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="lineThrough", type="Boolean", inherit="yes")]
-
-/**
- * The locale of the text.
- * Controls case transformations and shaping.
- * Uses standard locale identifiers as described in Unicode Technical Standard #35.
- * For example "en", "en_US" and "en-US" are all English, "ja" is Japanese.
- *
- * <p>The default value is undefined. This property inherits its value from an ancestor; if
- * still undefined, it inherits from the global <code>locale</code> style.
- * During the application initialization, if the global <code>locale</code> style is undefined,
- * then the default value is set to "en".</p>
- *
- * <p>When using the Spark formatters and globalization classes, you can set this style on the
- * root application to the value of the <code>LocaleID.DEFAULT</code> constant.
- * Those classes will then use the client operating system's international preferences.</p>
- *
- * @default undefined
- * @see http://www.unicode.org/reports/tr35/
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="locale", type="String", inherit="yes")]
-
-/**
- * The rendering mode used for this text which applies only to embedded fonts.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.renderingMode</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#renderingMode
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="renderingMode", type="String", enumeration="cff,normal", inherit="yes")]
-
-/**
- * Alignment of text within a container.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.textAlign</b></p>
- *
- * <p><b>For the Mobile theme, if using StyleableTextField,
- * see spark.components.supportClasses.StyleableTextField Style textAlign,
- * and if using StyleableStageText,
- * see spark.components.supportClasses.StyleableStageText Style textAlign.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#textAlign
- * @see spark.components.supportClasses.StyleableStageText#style:textAlign
- * @see spark.components.supportClasses.StyleableTextField#style:textAlign
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="textAlign", type="String", enumeration="start,end,left,right,center,justify", inherit="yes")]
-
-/**
- * Alignment of the last line in the paragraph relative to the container in justified text.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.textAlignLast</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#textAlignLast
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="textAlignLast", type="String", enumeration="start,end,left,right,center,justify", inherit="yes")]
-
-/**
- * Alpha (transparency) value for the text.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.textAlpha</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#textAlpha
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="textAlpha", type="Number", inherit="yes", minValue="0.0", maxValue="1.0")]
-
-/**
- * Determines whether the text is underlined.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.textDecoration</b></p>
- *
- * <p><b>For the Mobile theme, if using StyleableTextField,
- * see spark.components.supportClasses.StyleableTextField Style textDecoration,
- * and if using StyleableStageText, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#textDecoration
- * @see spark.components.supportClasses.StyleableTextField#style:textDecoration
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="textDecoration", type="String", enumeration="none,underline", inherit="yes")]
-
-/**
- * Specifies options for justifying text.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.textJustify</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#textJustify
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="textJustify", type="String", enumeration="interWord,distribute", inherit="yes")]
-
-/**
- * The amount of tracking (manual kerning) to be applied to the left of each character.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.trackingLeft</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#trackingLeft
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="trackingLeft", type="Object", inherit="yes")]
-
-/**
- * The amount of tracking (manual kerning) to be applied to the right of each character.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.trackingRight</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#trackingRight
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="trackingRight", type="Object", inherit="yes")]
-
-/**
- * The type of typographic case used for this text.
- *
- * <p><b>For the Spark theme, see
- * flashx.textLayout.formats.ITextLayoutFormat.typographicCase</b></p>
- *
- * <p><b>For the Mobile theme, this is not supported.</b></p>
- *
- * @see flashx.textLayout.formats.ITextLayoutFormat#typographicCase
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Flex 4
- */
-//[Style(name="typographicCase", type="String", enumeration="default,capsToSmallCaps,uppercase,lowercase,lowercaseToSmallCaps", inherit="yes")]
\ No newline at end of file