You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2018/08/02 00:44:31 UTC
[royale-asjs] 28/29: spark image
This is an automated email from the ASF dual-hosted git repository.
aharui pushed a commit to branch feature/MXRoyale
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit d77bc9a5db784fd003c459befa7529ed51679ad3
Author: Alex Harui <ah...@apache.org>
AuthorDate: Wed Aug 1 16:10:42 2018 -0700
spark image
---
.../src/main/resources/spark-royale-manifest.xml | 1 +
.../src/main/royale/spark/components/Image.as | 1339 ++++++++++++++++++++
2 files changed, 1340 insertions(+)
diff --git a/frameworks/projects/SparkRoyale/src/main/resources/spark-royale-manifest.xml b/frameworks/projects/SparkRoyale/src/main/resources/spark-royale-manifest.xml
index b1faebe..0e69f14 100644
--- a/frameworks/projects/SparkRoyale/src/main/resources/spark-royale-manifest.xml
+++ b/frameworks/projects/SparkRoyale/src/main/resources/spark-royale-manifest.xml
@@ -69,6 +69,7 @@
<component id="DataGroup" class="spark.components.DataGroup"/>
<component id="VerticalLayout" class="spark.layouts.VerticalLayout"/>
<component id="BitmapImage" class="spark.primitives.BitmapImage"/>
+ <component id="Image" class="spark.components.Image"/>
<!-- Text Layout Framework (TLF) -->
<component id="a" class="org.apache.royale.textLayout.elements.LinkElement" lookupOnly="true"/>
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/Image.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/Image.as
new file mode 100644
index 0000000..74d5a38
--- /dev/null
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/Image.as
@@ -0,0 +1,1339 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 flash.events.Event;
+import flash.events.HTTPStatusEvent;
+import flash.events.IOErrorEvent;
+import flash.events.ProgressEvent;
+import flash.events.SecurityErrorEvent;
+import flash.display.BitmapData;
+
+import mx.core.mx_internal;
+import mx.events.FlexEvent;
+import mx.graphics.BitmapScaleMode;
+import mx.utils.BitFlagUtil;
+
+import spark.components.supportClasses.Range;
+ import spark.core.IContentLoader;
+*/
+import spark.components.supportClasses.SkinnableComponent;
+import spark.primitives.BitmapImage;
+
+//use namespace mx_internal;
+
+//--------------------------------------
+// SkinStates
+//--------------------------------------
+
+/**
+ * The uninitialized state of the Image control.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+[SkinState("uninitialized")]
+
+/**
+ * The preloading state of the Image control.
+ * The <code>enableLoadingState</code> style must
+ * be set to <code>true</code> to enable this component state.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Flex 4.5
+ */
+//[SkinState("loading")]
+
+/**
+ * The ready state of the Image control.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.1
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+//[SkinState("ready")]
+
+/**
+ * The invalid state of the Image control.
+ * This means that the image could not be
+ * successfully loaded.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+//[SkinState("invalid")]
+
+/**
+ * The disabled state of the Image control.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+//[SkinState("disabled")]
+
+//--------------------------------------
+// Events
+//--------------------------------------
+
+/**
+ * Dispatched when content loading is complete. This
+ * event is only dispatched for url and ByteArray based
+ * sources (those sources requiring a Loader).
+ *
+ * <p>Note that for content loaded by Loader, both
+ * <code>ready</code> and <code>complete</code> events
+ * are dispatched.</p> For other source types such as
+ * embeds, only <code>ready</code> is dispatched.
+ *
+ * @eventType flash.events.Event.COMPLETE
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+[Event(name="complete", type="flash.events.Event")]
+
+/**
+ * Dispatched when a network request is made over HTTP
+ * and Flash Player or AIR can detect the HTTP status code.
+ *
+ * @eventType flash.events.HTTPStatusEvent.HTTP_STATUS
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+[Event(name="httpStatus", type="flash.events.HTTPStatusEvent")]
+
+/**
+ * Dispatched when an input or output error occurs.
+ * @see flash.events.IOErrorEvent
+ *
+ * @eventType flash.events.IOErrorEvent.IO_ERROR
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+[Event(name="ioError", type="flash.events.IOErrorEvent")]
+
+/**
+ * Dispatched when content is loading.
+ *
+ * <p><strong>Note:</strong>
+ * The <code>progress</code> event is not guaranteed to be dispatched.
+ * The <code>complete</code> event may be received, without any
+ * <code>progress</code> events being dispatched.
+ * This can happen when the loaded content is a local file.</p>
+ *
+ * @eventType flash.events.ProgressEvent.PROGRESS
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+[Event(name="progress", type="flash.events.ProgressEvent")]
+
+/**
+ * Dispatched when content loading is complete. Unlike the
+ * <code>complete</code> event, this event is dispatched for
+ * all source types.
+ *
+ * <p>Note that for content loaded via Loader, both
+ * <code>ready</code> and <code>complete</code> events
+ * are dispatched.</p> For other source types such as
+ * embeds, only <code>ready</code> is dispatched.
+ *
+ * @eventType mx.events.FlexEvent.READY
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+[Event(name="ready", type="mx.events.FlexEvent")]
+
+/**
+ * Dispatched when a security error occurs.
+ * @see flash.events.SecurityErrorEvent
+ *
+ * @eventType flash.events.SecurityErrorEvent.SECURITY_ERROR
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+[Event(name="securityError", type="flash.events.SecurityErrorEvent")]
+
+//-----------------------------------
+// Styles
+//-----------------------------------
+
+/**
+ * The alpha value of the background for this component.
+ *
+ * @default NaN
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+//[Style(name="backgroundAlpha", type="Number", inherit="no", theme="spark, mobile", minValue="0.0", maxValue="1.0")]
+
+/**
+ * The background color for this component.
+ *
+ * @default NaN
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+//[Style(name="backgroundColor", type="uint", format="Color", inherit="no", theme="spark, mobile")]
+
+/**
+ * When <code>true</code>, enables the <code>loading</code> skin state.
+ * @default false
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 4.5
+ */
+//[Style(name="enableLoadingState", type="Boolean", inherit="no")]
+
+/**
+ * Style equivalent to BitmapImage's <code>smoothingQuality</code> property.
+ * When set to <code>BitmapSmoothingQuality.BEST</code>, the image is
+ * resampled (if data is from a trusted source) to achieve a higher quality result.
+ * If set to <code>BitmapSmoothingQuality.DEFAULT</code>, the default stage
+ * quality for scaled bitmap fills is used.
+ *
+ * @default <code>BitmapSmoothingQuality.DEFAULT</code>
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 4.5
+ */
+//[Style(name="smoothingQuality", type="String", inherit="no", enumeration="default,high")]
+
+//--------------------------------------
+// Other metadata
+//--------------------------------------
+
+//[IconFile("Image.png")]
+
+/**
+ * The Spark Image control is a skinnable component that provides a customizable
+ * loading state, chrome, and error state.
+ * The Image control lets you import JPEG, PNG, and GIF files
+ * at runtime. You can also embed any of these files at compile time
+ * by using <code>@Embed(source='filename')</code>.
+ *
+ * <p><strong>Note: </strong>Flex also includes the SWFLoader control for loading Flex applications.
+ * You typically use the Image control for loading static graphic files and SWF files,
+ * and use the SWFLoader control for loading Flex applications. The Image control
+ * is also designed to be used in custom item renderers and item editors. </p>
+ *
+ * <p><strong>Note: </strong>Flex also includes the BitmapImage class. This class is
+ * used for embedding images into skins and FXG components. </p>
+ *
+ * <p>Embedded images load immediately, because they are already part of the
+ * Flex SWF file. However, they add to the size of your application and slow down
+ * the application initialization process. Embedded images also require you to
+ * recompile your applications whenever your image files change.</p>
+ *
+ * <p>The alternative to embedding a resource is to load the resource at runtime.
+ * You can load a resource from the local file system in which the SWF file runs,
+ * or you can access a remote resource, typically though an HTTP request over a network.
+ * These images are independent of your Flex application, so you can change them without
+ * causing a recompile operation as long as the names of the modified images remain the same.
+ * The referenced images add no additional overhead to an application's initial loading time.
+ * However, you might experience a delay when you use the images and load them
+ * into Flash Player or AIR. </p>
+ *
+ * <p>The default skin provides a chromeless image skin with a generic progress
+ * bar based preloader and broken image icon to reflect invalid content.</p>
+ *
+ * <p>To use this component in a list-based component, such as a List or DataGrid,
+ * create an item renderer.
+ * For information about creating an item renderer, see
+ * <a href="http://help.adobe.com/en_US/flex/using/WS4bebcd66a74275c3-fc6548e124e49b51c4-8000.html">
+ * Custom Spark item renderers</a>. </p>
+ *
+ * <p>The Image control has the following default characteristics:</p>
+ * <table class="innertable">
+ * <tr>
+ * <th>Characteristic</th>
+ * <th>Description</th>
+ * </tr>
+ * <tr>
+ * <td>Default size</td>
+ * <td>Wide enough to hold the associated source content</td>
+ * </tr>
+ * <tr>
+ * <td>Minimum size</td>
+ * <td>0 pixels wide by 0 pixels high</td>
+ * </tr>
+ * <tr>
+ * <td>Maximum size</td>
+ * <td>10000 pixels wide and 10000 pixels high</td>
+ * </tr>
+ * <tr>
+ * <td>Default skin class</td>
+ * <td>spark.skins.spark.ImageSkin</td>
+ * </tr>
+ * </table>
+ *
+ * @mxml <p>The <code><s:Image></code> tag inherits all of the tag
+ * attributes of its superclass and adds the following tag attributes:</p>
+ *
+ * <pre>
+ * <s:Image
+ * <strong>Properties</strong>
+ * clearOnLoad="true"
+ * contentLoader="null"
+ * contentLoaderGrouping="null"
+ * fillMode="scale"
+ * horizontalAlign="center"
+ * preliminaryHeight="NaN"
+ * preliminaryWidth="NaN"
+ * scaleMode="letterbox"
+ * smooth="false"
+ * source="null
+ * verticalAlign="middle"
+ *
+ * <strong>Styles</strong>
+ * backgroundAlpha="NaN"
+ * backgroundColor="NaN"
+ * enableLoadingState="false"
+ * smoothingQuality="default"
+ *
+ * <strong>Events</strong>
+ * complete="<i>No default</i>"
+ * httpStatus="<i>No default</i>"
+ * ioError="<i>No default</i>"
+ * progress="<i>No default</i>"
+ * ready="<i>No default</i>"
+ * securityError="<i>No default</i>"
+ * />
+ * </pre>
+ *
+ * @see spark.skins.spark.ImageSkin
+ * @see mx.controls.SWFLoader
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+public class Image extends SkinnableComponent
+{
+ //--------------------------------------------------------------------------
+ //
+ // Class constants
+ //
+ //--------------------------------------------------------------------------
+ /*
+ mx_internal static const CLEAR_ON_LOAD_PROPERTY_FLAG:uint = 1 << 0;
+ mx_internal static const CONTENT_LOADER_PROPERTY_FLAG:uint = 1 << 1;
+ mx_internal static const CONTENT_LOADER_GROUPING_PROPERTY_FLAG:uint = 1 << 2;
+ mx_internal static const FILL_MODE_PROPERTY_FLAG:uint = 1 << 3;
+ mx_internal static const PRELIMINARY_WIDTH_PROPERTY_FLAG:uint = 1 << 4;
+ mx_internal static const PRELIMINARY_HEIGHT_PROPERTY_FLAG:uint = 1 << 5;
+ mx_internal static const HORIZONTAL_ALIGN_PROPERTY_FLAG:uint = 1 << 6;
+ mx_internal static const SCALE_MODE_PROPERTY_FLAG:uint = 1 << 7;
+ mx_internal static const SMOOTH_PROPERTY_FLAG:uint = 1 << 8;
+ mx_internal static const SMOOTHING_QUALITY_PROPERTY_FLAG:uint = 1 << 9;
+ mx_internal static const SOURCE_PROPERTY_FLAG:uint = 1 << 10;
+ mx_internal static const SOURCE_WIDTH_PROPERTY_FLAG:uint = 1 << 11;
+ mx_internal static const SOURCE_HEIGHT_PROPERTY_FLAG:uint = 1 << 12;
+ mx_internal static const TRUSTED_SOURCE_PROPERTY_FLAG:uint = 1 << 13;
+ mx_internal static const VERTICAL_ALIGN_PROPERTY_FLAG:uint = 1 << 14;
+ */
+
+ //--------------------------------------------------------------------------
+ //
+ // Constructor
+ //
+ //--------------------------------------------------------------------------
+
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+ public function Image()
+ {
+ super();
+ }
+
+ //--------------------------------------------------------------------------
+ //
+ // Variables
+ //
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ */
+ //protected var _loading:Boolean = false;
+
+ /**
+ * @private
+ */
+ //protected var _ready:Boolean = false;
+
+ /**
+ * @private
+ */
+ //protected var _invalid:Boolean = false;
+
+ /**
+ * @private
+ */
+ //mx_internal var imageDisplayProperties:Object =
+ // {visible: true, scaleMode: BitmapScaleMode.LETTERBOX, trustedSource: true};
+
+ //--------------------------------------------------------------------------
+ //
+ // Skin parts
+ //
+ //--------------------------------------------------------------------------
+
+ //----------------------------------
+ // imageDisplay
+ //----------------------------------
+
+ //[SkinPart(required="true")]
+
+ /**
+ * A required skin part that defines image content.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+ //public var imageDisplay:BitmapImage;
+
+ //----------------------------------
+ // progressIndicator
+ //----------------------------------
+
+ //[SkinPart(required="false")]
+
+ /**
+ * An optional skin part that displays the current loading progress.
+ * As a convenience the progressIndicator value is automatically updated
+ * with the percentage complete while loading.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+ //public var progressIndicator:Range;
+
+ //--------------------------------------------------------------------------
+ //
+ // Properties
+ //
+ //--------------------------------------------------------------------------
+
+ //----------------------------------
+ // bitmapData
+ //----------------------------------
+
+ /**
+ * @copy spark.primitives.BitmapImage#bitmapData
+ *
+ * @default null
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get bitmapData():BitmapData
+ {
+ return imageDisplay ? imageDisplay.bitmapData : null;
+ }
+ */
+
+ //----------------------------------
+ // bytesLoaded
+ //----------------------------------
+
+ /**
+ * @copy spark.primitives.BitmapImage#bytesLoaded
+ * @default NaN
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get bytesLoaded():Number
+ {
+ return imageDisplay ? imageDisplay.bytesLoaded : NaN;
+ }
+ */
+
+ //----------------------------------
+ // bytesTotal
+ //----------------------------------
+
+ /**
+ * @copy spark.primitives.BitmapImage#bytesTotal
+ * @default NaN
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get bytesTotal():Number
+ {
+ return imageDisplay ? imageDisplay.bytesTotal : NaN;
+ }
+ */
+
+ //----------------------------------
+ // clearOnLoad
+ //----------------------------------
+
+ /**
+ * @copy spark.primitives.BitmapImage#clearOnLoad
+ * @default true
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get clearOnLoad():Boolean
+ {
+ if (imageDisplay)
+ return imageDisplay.clearOnLoad;
+ else
+ return imageDisplayProperties.clearOnLoad;
+ }
+ */
+
+ /**
+ * @private
+ public function set clearOnLoad(value:Boolean):void
+ {
+ if (imageDisplay)
+ {
+ imageDisplay.clearOnLoad = value;
+ imageDisplayProperties = BitFlagUtil.update(imageDisplayProperties as uint,
+ CLEAR_ON_LOAD_PROPERTY_FLAG, true);
+ }
+ else
+ imageDisplayProperties.clearOnLoad = value;
+ }
+ */
+
+ //----------------------------------
+ // contentLoader
+ //----------------------------------
+
+ /**
+ * @copy spark.primitives.BitmapImage#contentLoader
+ * @default null
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get contentLoader():IContentLoader
+ {
+ if (imageDisplay)
+ return imageDisplay.contentLoader;
+ else
+ return imageDisplayProperties.contentLoader;
+ }
+ */
+
+ /**
+ * @private
+ public function set contentLoader(value:IContentLoader):void
+ {
+ if (imageDisplay)
+ {
+ imageDisplay.contentLoader = value;
+ imageDisplayProperties = BitFlagUtil.update(imageDisplayProperties as uint,
+ CONTENT_LOADER_PROPERTY_FLAG, true);
+ }
+ else
+ imageDisplayProperties.contentLoader = value;
+ }
+ */
+
+ //----------------------------------
+ // contentLoaderGrouping
+ //----------------------------------
+
+ /**
+ * @copy spark.primitives.BitmapImage#contentLoaderGrouping
+ * @default null
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get contentLoaderGrouping():String
+ {
+ if (imageDisplay)
+ return imageDisplay.contentLoaderGrouping;
+ else
+ return imageDisplayProperties.contentLoaderGrouping;
+ }
+ */
+
+ /**
+ * @private
+ public function set contentLoaderGrouping(value:String):void
+ {
+ if (imageDisplay)
+ {
+ imageDisplay.contentLoaderGrouping = value;
+ imageDisplayProperties = BitFlagUtil.update(imageDisplayProperties as uint,
+ CONTENT_LOADER_GROUPING_PROPERTY_FLAG, true);
+ }
+ else
+ imageDisplayProperties.contentLoaderGrouping = value;
+ }
+ */
+
+ //----------------------------------
+ // fillMode
+ //----------------------------------
+
+ [Inspectable(category="General", enumeration="clip,repeat,scale", defaultValue="scale")]
+
+ /**
+ * @copy spark.primitives.BitmapImage#fillMode
+ * @default <code>BitmapFillMode.SCALE</code>
+ *
+ * @see mx.graphics.BitmapFillMode
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get fillMode():String
+ {
+ if (imageDisplay)
+ return imageDisplay.fillMode;
+ else
+ return imageDisplayProperties.fillMode;
+ }
+ */
+
+ /**
+ * @private
+ public function set fillMode(value:String):void
+ {
+ if (imageDisplay)
+ {
+ imageDisplay.fillMode = value;
+ imageDisplayProperties = BitFlagUtil.update(imageDisplayProperties as uint,
+ FILL_MODE_PROPERTY_FLAG, true);
+ }
+ else
+ imageDisplayProperties.fillMode = value;
+ }
+ */
+
+ //----------------------------------
+ // horizontalAlign
+ //----------------------------------
+
+ [Inspectable(category="General", enumeration="left,right,center", defaultValue="center")]
+
+ /**
+ * @copy spark.primitives.BitmapImage#horizontalAlign
+ * @default <code>HorizontalAlign.CENTER</code>
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get horizontalAlign():String
+ {
+ if (imageDisplay)
+ return imageDisplay.horizontalAlign;
+ else
+ return imageDisplayProperties.horizontalAlign;
+ }
+ */
+
+ /**
+ * @private
+ public function set horizontalAlign(value:String):void
+ {
+ if (imageDisplay)
+ {
+ imageDisplay.horizontalAlign = value;
+ imageDisplayProperties = BitFlagUtil.update(imageDisplayProperties as uint,
+ HORIZONTAL_ALIGN_PROPERTY_FLAG, value != null);
+ }
+ else
+ imageDisplayProperties.horizontalAlign = value;
+ }
+ */
+
+ //----------------------------------
+ // preliminaryHeight
+ //----------------------------------
+
+ [Inspectable(category="General", defaultValue="NaN")]
+
+ /**
+ * @copy spark.primitives.BitmapImage#preliminaryHeight
+ * @default NaN
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get preliminaryHeight():Number
+ {
+ if (imageDisplay)
+ return imageDisplay.preliminaryHeight;
+ else
+ return imageDisplayProperties.preliminaryHeight;
+ }
+ */
+
+ /**
+ * @private
+ public function set preliminaryHeight(value:Number):void
+ {
+ if (imageDisplay)
+ {
+ imageDisplay.preliminaryHeight = value;
+ imageDisplayProperties = BitFlagUtil.update(imageDisplayProperties as uint,
+ PRELIMINARY_HEIGHT_PROPERTY_FLAG, true);
+ }
+ else
+ imageDisplayProperties.preliminaryHeight = value;
+ }
+ */
+
+ //----------------------------------
+ // preliminaryWidth
+ //----------------------------------
+
+ [Inspectable(category="General", defaultValue="NaN")]
+
+ /**
+ * @copy spark.primitives.BitmapImage#preliminaryWidth
+ * @default NaN
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get preliminaryWidth():Number
+ {
+ if (imageDisplay)
+ return imageDisplay.preliminaryWidth;
+ else
+ return imageDisplayProperties.preliminaryWidth;
+ }
+ */
+
+ /**
+ * @private
+ public function set preliminaryWidth(value:Number):void
+ {
+ if (imageDisplay)
+ {
+ imageDisplay.preliminaryWidth = value;
+ imageDisplayProperties = BitFlagUtil.update(imageDisplayProperties as uint,
+ PRELIMINARY_WIDTH_PROPERTY_FLAG, true);
+ }
+ else
+ imageDisplayProperties.preliminaryWidth = value;
+ }
+ */
+
+ //----------------------------------
+ // scaleMode
+ //----------------------------------
+
+ [Inspectable(category="General", enumeration="stretch,letterbox,zoom", defaultValue="letterbox")]
+
+ /**
+ * @copy spark.primitives.BitmapImage#scaleMode
+ * @default <code>BitmapScaleMode.LETTERBOX</code>
+ *
+ * @see mx.graphics.BitmapFillMode
+ * @see mx.graphics.BitmapScaleMode
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get scaleMode():String
+ {
+ if (imageDisplay)
+ return imageDisplay.scaleMode;
+ else
+ return imageDisplayProperties.scaleMode;
+ }
+ */
+
+ /**
+ * @private
+ public function set scaleMode(value:String):void
+ {
+ if (imageDisplay)
+ {
+ imageDisplay.scaleMode = value;
+ imageDisplayProperties = BitFlagUtil.update(imageDisplayProperties as uint,
+ SCALE_MODE_PROPERTY_FLAG, true);
+ }
+ else
+ imageDisplayProperties.scaleMode = value;
+ }
+ */
+
+ //----------------------------------
+ // smooth
+ //----------------------------------
+
+ [Inspectable(category="General", defaultValue="false")]
+
+ /**
+ * @copy spark.primitives.BitmapImage#smooth
+ *
+ * @default false
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function set smooth(value:Boolean):void
+ {
+ if (imageDisplay)
+ {
+ imageDisplay.smooth = value;
+ imageDisplayProperties = BitFlagUtil.update(imageDisplayProperties as uint,
+ SMOOTH_PROPERTY_FLAG, true);
+ }
+ else
+ imageDisplayProperties.smooth = value;
+ }
+ */
+
+ /**
+ * @private
+ public function get smooth():Boolean
+ {
+ if (imageDisplay)
+ return imageDisplay.smooth;
+ else
+ return imageDisplayProperties.smooth;
+ }
+ */
+
+ //----------------------------------
+ // source
+ //----------------------------------
+
+ [Bindable("sourceChanged")]
+ [Inspectable(category="General")]
+
+ /**
+ * @private
+ */
+ public function get source():Object
+ {
+ /*
+ if (imageDisplay)
+ return imageDisplay.source;
+ else
+ return imageDisplayProperties.source;
+ */
+ return null;
+ }
+
+ /**
+ * @copy spark.primitives.BitmapImage#source
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ */
+ public function set source(value:Object):void
+ {
+ if (source == value)
+ return;
+
+ /*
+ _loading = false;
+ _invalid = false;
+ _ready = false;
+
+ if (imageDisplay)
+ {
+ imageDisplay.source = value;
+ imageDisplayProperties = BitFlagUtil.update(imageDisplayProperties as uint,
+ SOURCE_PROPERTY_FLAG, value != null);
+ }
+ else
+ imageDisplayProperties.source = value;
+
+ invalidateSkinState();
+ dispatchEvent(new Event("sourceChanged"));
+ */
+ }
+
+ //----------------------------------
+ // sourceHeight
+ //----------------------------------
+
+ /**
+ * @copy spark.primitives.BitmapImage#sourceHeight
+ * @default NaN
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get sourceHeight():Number
+ {
+ if (imageDisplay)
+ return imageDisplay.sourceHeight;
+ else
+ return NaN;
+ }
+ */
+
+ //----------------------------------
+ // sourceWidth
+ //----------------------------------
+
+ /**
+ * @copy spark.primitives.BitmapImage#sourceWidth
+ * @default NaN
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get sourceWidth():Number
+ {
+ if (imageDisplay)
+ return imageDisplay.sourceWidth;
+ else
+ return NaN;
+ }
+ */
+
+ //----------------------------------
+ // trustedSource
+ //----------------------------------
+
+ /**
+ * @copy spark.primitives.BitmapImage#trustedSource
+ * @default true
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get trustedSource():Boolean
+ {
+ if (imageDisplay)
+ return imageDisplay.trustedSource;
+ else
+ return imageDisplayProperties.trustedSource;
+ }
+ */
+
+ //----------------------------------
+ // verticalAlign
+ //----------------------------------
+
+ [Inspectable(category="General", enumeration="top,bottom,middle", defaultValue="middle")]
+
+ /**
+ * @copy spark.primitives.BitmapImage#verticalAlign
+ * @default <code>HorizontalAlign.MIDDLE</code>
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 2.5
+ * @productversion Flex 4.5
+ public function get verticalAlign():String
+ {
+ if (imageDisplay)
+ return imageDisplay.verticalAlign;
+ else
+ return imageDisplayProperties.verticalAlign;
+ }
+ */
+
+ /**
+ * @private
+ public function set verticalAlign(value:String):void
+ {
+ if (imageDisplay)
+ {
+ imageDisplay.verticalAlign = value;
+ imageDisplayProperties = BitFlagUtil.update(imageDisplayProperties as uint,
+ VERTICAL_ALIGN_PROPERTY_FLAG, value != null);
+ }
+ else
+ imageDisplayProperties.verticalAlign = value;
+ }
+ */
+
+ //--------------------------------------------------------------------------
+ //
+ // Overridden methods
+ //
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ override protected function partAdded(partName:String, instance:Object):void
+ {
+ super.partAdded(partName, instance);
+
+ if (instance == imageDisplay)
+ {
+ imageDisplay.addEventListener(IOErrorEvent.IO_ERROR, imageDisplay_ioErrorHandler, false, 0, true);
+ imageDisplay.addEventListener(ProgressEvent.PROGRESS, imageDisplay_progressHandler, false, 0, true);
+ imageDisplay.addEventListener(FlexEvent.READY, imageDisplay_readyHandler, false, 0, true);
+ imageDisplay.addEventListener(Event.COMPLETE, dispatchEvent, false, 0, true);
+ imageDisplay.addEventListener(SecurityErrorEvent.SECURITY_ERROR, dispatchEvent, false, 0, true);
+ imageDisplay.addEventListener(HTTPStatusEvent.HTTP_STATUS, dispatchEvent, false, 0, true);
+
+ var newImageDisplayProperties:uint = 0;
+
+ if (imageDisplayProperties.clearOnLoad !== undefined)
+ {
+ imageDisplay.clearOnLoad = imageDisplayProperties.clearOnLoad;
+ newImageDisplayProperties = BitFlagUtil.update(newImageDisplayProperties,
+ CLEAR_ON_LOAD_PROPERTY_FLAG, true);
+ }
+
+ if (imageDisplayProperties.contentLoader !== undefined)
+ {
+ imageDisplay.contentLoader = imageDisplayProperties.contentLoader;
+ newImageDisplayProperties = BitFlagUtil.update(newImageDisplayProperties,
+ CONTENT_LOADER_PROPERTY_FLAG, true);
+ }
+
+ if (imageDisplayProperties.contentLoaderGrouping !== undefined)
+ {
+ imageDisplay.contentLoaderGrouping = imageDisplayProperties.contentLoaderGrouping;
+ newImageDisplayProperties = BitFlagUtil.update(newImageDisplayProperties,
+ CONTENT_LOADER_GROUPING_PROPERTY_FLAG, true);
+ }
+
+ if (imageDisplayProperties.fillMode !== undefined)
+ {
+ imageDisplay.fillMode = imageDisplayProperties.fillMode;
+ newImageDisplayProperties = BitFlagUtil.update(newImageDisplayProperties,
+ FILL_MODE_PROPERTY_FLAG, true);
+ }
+
+ if (imageDisplayProperties.preliminaryHeight !== undefined)
+ {
+ imageDisplay.preliminaryHeight = imageDisplayProperties.preliminaryHeight;
+ newImageDisplayProperties = BitFlagUtil.update(newImageDisplayProperties,
+ PRELIMINARY_HEIGHT_PROPERTY_FLAG, true);
+ }
+
+ if (imageDisplayProperties.preliminaryWidth !== undefined)
+ {
+ imageDisplay.preliminaryWidth = imageDisplayProperties.preliminaryWidth;
+ newImageDisplayProperties = BitFlagUtil.update(newImageDisplayProperties,
+ PRELIMINARY_WIDTH_PROPERTY_FLAG, true);
+ }
+
+ if (imageDisplayProperties.smooth !== undefined)
+ {
+ imageDisplay.smooth = imageDisplayProperties.smooth;
+ newImageDisplayProperties = BitFlagUtil.update(newImageDisplayProperties,
+ SMOOTH_PROPERTY_FLAG, true);
+ }
+
+ if (imageDisplayProperties.source !== undefined)
+ {
+ imageDisplay.source = imageDisplayProperties.source;
+ newImageDisplayProperties = BitFlagUtil.update(newImageDisplayProperties,
+ SOURCE_PROPERTY_FLAG, true);
+ }
+
+ if (imageDisplayProperties.smoothingQuality !== undefined)
+ {
+ imageDisplay.smoothingQuality = imageDisplayProperties.smoothingQuality;
+ newImageDisplayProperties = BitFlagUtil.update(newImageDisplayProperties,
+ SMOOTHING_QUALITY_PROPERTY_FLAG, true);
+ }
+
+ if (imageDisplayProperties.scaleMode !== undefined)
+ {
+ imageDisplay.scaleMode = imageDisplayProperties.scaleMode;
+ newImageDisplayProperties = BitFlagUtil.update(newImageDisplayProperties,
+ SCALE_MODE_PROPERTY_FLAG, true);
+ }
+
+ if (imageDisplayProperties.verticalAlign !== undefined)
+ {
+ imageDisplay.verticalAlign = imageDisplayProperties.verticalAlign;
+ newImageDisplayProperties = BitFlagUtil.update(newImageDisplayProperties,
+ VERTICAL_ALIGN_PROPERTY_FLAG, true);
+ }
+
+ if (imageDisplayProperties.horizontalAlign !== undefined)
+ {
+ imageDisplay.horizontalAlign = imageDisplayProperties.horizontalAlign;
+ newImageDisplayProperties = BitFlagUtil.update(newImageDisplayProperties,
+ HORIZONTAL_ALIGN_PROPERTY_FLAG, true);
+ }
+
+ imageDisplayProperties = newImageDisplayProperties;
+
+ // This mx_internal method is invoked now so that we initiate loading of our
+ // source property prior to commitProperties. If we were to just wait
+ // until commitProperties, the order that commitProperties is invoked
+ // on multiple MXML Image instances does not match child order and as
+ // such can be astonishing, especially when a queued loader is active.
+ imageDisplay.validateSource();
+ }
+ else if (instance == progressIndicator)
+ {
+ if (_loading && progressIndicator && imageDisplay)
+ progressIndicator.value = percentComplete(imageDisplay.bytesLoaded, imageDisplay.bytesTotal);
+ }
+ }
+ */
+
+ /**
+ * @private
+ override protected function partRemoved(partName:String, instance:Object):void
+ {
+ super.partRemoved(partName, instance);
+
+ if (instance == imageDisplay)
+ {
+ imageDisplay.removeEventListener(IOErrorEvent.IO_ERROR, imageDisplay_ioErrorHandler);
+ imageDisplay.removeEventListener(ProgressEvent.PROGRESS, imageDisplay_progressHandler);
+ imageDisplay.removeEventListener(FlexEvent.READY, imageDisplay_readyHandler);
+ imageDisplay.removeEventListener(Event.COMPLETE, dispatchEvent);
+ imageDisplay.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, dispatchEvent);
+ imageDisplay.removeEventListener(HTTPStatusEvent.HTTP_STATUS, dispatchEvent);
+
+ var newImageDisplayProperties:Object = {};
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, CLEAR_ON_LOAD_PROPERTY_FLAG))
+ newImageDisplayProperties.clearOnLoad = imageDisplay.clearOnLoad;
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, CONTENT_LOADER_PROPERTY_FLAG))
+ newImageDisplayProperties.contentLoader = imageDisplay.contentLoader;
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, CONTENT_LOADER_GROUPING_PROPERTY_FLAG))
+ newImageDisplayProperties.contentLoaderGrouping = imageDisplay.contentLoaderGrouping;
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, FILL_MODE_PROPERTY_FLAG))
+ newImageDisplayProperties.fillMode = imageDisplay.fillMode;
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, PRELIMINARY_HEIGHT_PROPERTY_FLAG))
+ newImageDisplayProperties.preliminaryHeight = imageDisplay.preliminaryHeight;
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, PRELIMINARY_WIDTH_PROPERTY_FLAG))
+ newImageDisplayProperties.preliminaryWidth = imageDisplay.preliminaryWidth;
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, SOURCE_PROPERTY_FLAG))
+ newImageDisplayProperties.source = imageDisplay.source;
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, SMOOTH_PROPERTY_FLAG))
+ newImageDisplayProperties.smooth = imageDisplay.smooth;
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, SMOOTHING_QUALITY_PROPERTY_FLAG))
+ newImageDisplayProperties.smoothingQuality = imageDisplay.smoothingQuality;
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, SCALE_MODE_PROPERTY_FLAG))
+ newImageDisplayProperties.scaleMode = imageDisplay.scaleMode;
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, TRUSTED_SOURCE_PROPERTY_FLAG))
+ newImageDisplayProperties.trustedSource = imageDisplay.trustedSource;
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, VERTICAL_ALIGN_PROPERTY_FLAG))
+ newImageDisplayProperties.verticalAlign = imageDisplay.verticalAlign;
+
+ if (BitFlagUtil.isSet(imageDisplayProperties as uint, HORIZONTAL_ALIGN_PROPERTY_FLAG))
+ newImageDisplayProperties.horizontalAlign = imageDisplay.horizontalAlign;
+
+ // Reset our previous image display source to null on the chance that it is busy
+ // loading something.
+ imageDisplay.source = null;
+
+ imageDisplayProperties = newImageDisplayProperties;
+ }
+ }
+ */
+
+ /**
+ * @private
+ override protected function getCurrentSkinState():String
+ {
+ var enableLoadingState:Boolean = getStyle("enableLoadingState");
+
+ if (_invalid)
+ return "invalid";
+ else if (!enabled)
+ return "disabled";
+ else if (_loading && enableLoadingState)
+ return "loading";
+ else if (imageDisplay && imageDisplay.source && _ready)
+ return "ready";
+ else
+ return "uninitialized";
+ }
+ */
+
+ /**
+ * @private
+ override public function styleChanged(styleProp:String):void
+ {
+ var allStyles:Boolean = (styleProp == null || styleProp == "styleName");
+ super.styleChanged(styleProp);
+
+ if (allStyles || styleProp == "enableLoadingState")
+ {
+ invalidateSkinState();
+ }
+
+ if (allStyles || styleProp == "smoothingQuality")
+ {
+ smoothQuality = getStyle("smoothingQuality");
+ }
+ }
+ */
+
+ //--------------------------------------------------------------------------
+ //
+ // Methods
+ //
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ * Private smoothing quality setter used to push our smoothingQuality
+ * style value to our image display instance.
+ private function set smoothQuality(value:String):void
+ {
+ if (imageDisplay)
+ {
+ imageDisplay.smoothingQuality = value;
+ imageDisplayProperties = BitFlagUtil.update(imageDisplayProperties as uint,
+ SMOOTHING_QUALITY_PROPERTY_FLAG, value != null);
+ }
+ else
+ imageDisplayProperties.smoothingQuality = value;
+ }
+ */
+
+ /**
+ * @private
+ private function percentComplete(bytesLoaded:Number, bytesTotal:Number):Number
+ {
+ var value:Number = Math.ceil((bytesLoaded / bytesTotal) * 100.0);
+ return isNaN(value) ? 0 : value;
+ }
+ */
+
+ //--------------------------------------------------------------------------
+ //
+ // Event handlers
+ //
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ private function imageDisplay_ioErrorHandler(error:IOErrorEvent):void
+ {
+ _invalid = true;
+ _loading = false;
+ invalidateSkinState();
+
+ if (hasEventListener(error.type))
+ dispatchEvent(error);
+ }
+ */
+
+ /**
+ * @private
+ private function imageDisplay_progressHandler(event:ProgressEvent):void
+ {
+ if (!_loading)
+ invalidateSkinState();
+
+ if (progressIndicator)
+ progressIndicator.value = percentComplete(event.bytesLoaded, event.bytesTotal);
+
+ _loading = true;
+
+ dispatchEvent(event);
+ }
+ */
+
+ /**
+ * @private
+ private function imageDisplay_readyHandler(event:Event):void
+ {
+ invalidateSkinState();
+ _loading = false;
+ _ready = true;
+ dispatchEvent(event);
+ }
+ */
+}
+
+}