Repository: flex-asjs
Updated Branches:
  refs/heads/refactor-sprite a1b8ce133 -> c5a470bf8


Added Binary to Images


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

Branch: refs/heads/refactor-sprite
Commit: c5a470bf88377d5e68a9cbd5c429ad430afe0a03
Parents: a1b8ce1
Author: Harbs <ha...@in-tools.com>
Authored: Mon Aug 8 17:48:01 2016 +0300
Committer: Harbs <ha...@in-tools.com>
Committed: Mon Aug 8 17:48:01 2016 +0300

----------------------------------------------------------------------
 .../src/products/ProductItemRenderer.as         |  2 +-
 .../projects/Core/src/main/flex/CoreClasses.as  |  1 +
 .../flex/org/apache/flex/core/IImageModel.as    | 17 +++++-
 .../main/flex/org/apache/flex/utils/URLUtils.as | 59 ++++++++++++++++++++
 .../src/main/flex/org/apache/flex/html/Image.as | 29 ++++++++--
 .../org/apache/flex/html/beads/ImageView.as     | 26 +++++++--
 .../apache/flex/html/beads/models/ImageModel.as | 46 ++++++++++++---
 .../src/products/ProductItemRenderer.as         |  2 +-
 .../src/products/ProductItemRenderer.as         |  2 +-
 9 files changed, 162 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c5a470bf/examples/flexjs/DataGridExample/src/products/ProductItemRenderer.as
----------------------------------------------------------------------
diff --git 
a/examples/flexjs/DataGridExample/src/products/ProductItemRenderer.as 
b/examples/flexjs/DataGridExample/src/products/ProductItemRenderer.as
index 4edc5b7..0a954b0 100644
--- a/examples/flexjs/DataGridExample/src/products/ProductItemRenderer.as
+++ b/examples/flexjs/DataGridExample/src/products/ProductItemRenderer.as
@@ -48,7 +48,7 @@ package products
                {
                        super.data = value;
                        
-                       image.source = value.image;
+                       image.url = value.image;
                }
                
                override public function adjustSize():void

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c5a470bf/frameworks/projects/Core/src/main/flex/CoreClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/CoreClasses.as 
b/frameworks/projects/Core/src/main/flex/CoreClasses.as
index 11061f5..1e8622b 100644
--- a/frameworks/projects/Core/src/main/flex/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/flex/CoreClasses.as
@@ -141,6 +141,7 @@ internal class CoreClasses
        import org.apache.flex.utils.Timer; Timer;
        import org.apache.flex.utils.UIDUtil; UIDUtil;
        import org.apache.flex.utils.UIUtils; UIUtils;
+       import org.apache.flex.utils.URLUtils; URLUtils;
 
        import org.apache.flex.core.ClassFactory; ClassFactory;
     import org.apache.flex.states.AddItems; AddItems;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c5a470bf/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IImageModel.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IImageModel.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IImageModel.as
index 1551d0f..a810d71 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IImageModel.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/IImageModel.as
@@ -19,6 +19,7 @@
 package org.apache.flex.core
 {
        import org.apache.flex.events.IEventDispatcher;
+    import org.apache.flex.utils.BinaryData;
 
     /**
      *  The IImageModel interface describes the minimum set of properties
@@ -42,7 +43,19 @@ package org.apache.flex.core
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-               function get source():String;
-               function set source(value:String):void;
+               function get url():String;
+               function set url(value:String):void;
+
+        /**
+         *  The BinaryData of the image.
+         *  This is used to set the image using binary content retrieved using 
HTTP requests or File APIs.
+         * 
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.7
+         */
+        function get binary():BinaryData;
+        function set binary(value:BinaryData):void;
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c5a470bf/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/URLUtils.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/URLUtils.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/URLUtils.as
new file mode 100644
index 0000000..d7ac18a
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/URLUtils.as
@@ -0,0 +1,59 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.utils
+{
+       /**
+        *  The URLUtils class is a collection of static functions that wrap 
dealing with object URLs in the browser.
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.7
+        */
+       COMPILE::JS
+       public class URLUtils
+       {
+               /**
+                * Creates an object URL for of a blob or a file
+                * @param  blobOrFile:* The blob of file
+                * @param  win:*=null   The active window can be optionally 
specified
+                * @return              The object URL
+                */
+               public static function 
createObjectURL(blobOrFile:*,win:*=null):String
+               {
+                       win = win || window;
+                       if(win["URL"])
+                               return win["URL"].createObjectURL(blobOrFile);
+                       if(win.webkitURL)
+                               return 
win.webkitURL.createObjectURL(blobOrFile);
+
+                       return "";
+               }
+               public static function 
revokeObjectURL(objectURL:String,win:*=null):void
+               {
+                       win = win || window;
+                       if(win["URL"])
+                               win["URL"].revokeObjectURL(objectURL);
+                       if(win.webkitURL)
+                               win.webkitURL.revokeObjectURL(objectURL);
+               }
+       }
+
+}
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c5a470bf/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Image.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Image.as 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Image.as
index ae81c18..07a9a27 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Image.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/Image.as
@@ -20,6 +20,7 @@ package org.apache.flex.html
 {
        import org.apache.flex.core.IImageModel;
        import org.apache.flex.core.UIBase;
+    import org.apache.flex.utils.BinaryData;
     COMPILE::JS
     {
         import org.apache.flex.core.WrappedHTMLElement;            
@@ -31,7 +32,7 @@ package org.apache.flex.html
         *  The Image class is a component that displays a bitmap. The Image 
uses
         *  the following beads:
         * 
-        *  org.apache.flex.core.IBeadModel: the data model for the Image, 
including the source property.
+        *  org.apache.flex.core.IBeadModel: the data model for the Image, 
including the url/binary property.
         *  org.apache.flex.core.IBeadView: constructs the visual elements of 
the component.
         *  
         *  @langversion 3.0
@@ -63,13 +64,31 @@ package org.apache.flex.html
                 *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion org.apache.flex.core.IImageModel
                 */
-               public function get source():String
+               public function get url():String
                {
-                       return (model as IImageModel).source;
+                       return (model as IImageModel).url;
                }
-               public function set source(value:String):void
+               public function set url(value:String):void
                {
-                       (model as IImageModel).source = value;
+                       (model as IImageModel).url = value;
+               }
+
+               /**
+                *  The binary bitmap data.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+         *  @flexjsignorecoercion org.apache.flex.core.IImageModel
+                */
+               public function get binary():BinaryData
+               {
+                       return (model as IImageModel).binary;
+               }
+               public function set binary(value:BinaryData):void
+               {
+                       (model as IImageModel).binary = value;
                }
         
         /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c5a470bf/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
index 77c970a..8533d02 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageView.as
@@ -29,6 +29,7 @@ package org.apache.flex.html.beads
     COMPILE::JS
     {
         import goog.events;
+        import org.apache.flex.utils.URLUtils;
     }
        
        import org.apache.flex.core.BeadViewBase;
@@ -39,6 +40,7 @@ package org.apache.flex.html.beads
        import org.apache.flex.core.UIBase;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
+    import org.apache.flex.utils.BinaryData;
        
        /**
         *  The ImageView class creates the visual elements of the 
org.apache.flex.html.Image component.
@@ -68,6 +70,7 @@ package org.apache.flex.html.beads
                private var loader:Loader;
                
                private var _model:IImageModel;
+        private var _objectURL:String;
                
                /**
                 *  @copy org.apache.flex.core.IBead#strand
@@ -101,25 +104,40 @@ package org.apache.flex.html.beads
                {
             COMPILE::SWF
             {
-                if (_model.source) {
+                if (_model.url || model.binary) {
                     loader = new Loader();
                     
loader.contentLoaderInfo.addEventListener("complete",onComplete);
                     
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function 
(e:IOErrorEvent):void {
                         trace(e);
                         e.preventDefault();
                     });
-                    loader.load(new URLRequest(_model.source));
+                    if(model.url)
+                        loader.load(new URLRequest(_model.url));
+                    else
+                    loader.loadBytes(_model.binary.array);
                 }                    
             }
             COMPILE::JS
             {
-                               if (_model.source) {
+                               if (_model.url || model.binary) {
                        var host:IUIBase = _strand as IUIBase;
                        (host.element as 
HTMLImageElement).addEventListener('load',
                            loadHandler, false);
                        host.addEventListener('sizeChanged',
                            sizeChangedHandler);
-                       (host.element as HTMLImageElement).src = _model.source;
+                    var urlStr:String = _model.url;
+
+                    if(_model.binary)
+                    {
+                        if(_objectURL)
+                            URLUtils.revokeObjectURL(_objectURL);
+                    var blob:Blob = new Blob([_model.binary.array]);
+// I don't think we need to specify the type.
+//                    var blob = new Blob([response], {type: "image/png"});
+                    _objectURL = URLUtils.createObjectURL(blob);
+                        urlStr = _objectURL
+                    }
+                       (host.element as HTMLImageElement).src = urlStr;
                                }
             }
                }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c5a470bf/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/ImageModel.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/ImageModel.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/ImageModel.as
index 7742c2b..91155d9 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/ImageModel.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/ImageModel.as
@@ -22,6 +22,7 @@ package org.apache.flex.html.beads.models
        import org.apache.flex.core.IStrand;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.EventDispatcher;
+    import org.apache.flex.utils.BinaryData;
        
        /**
         *  The ImageModel class bead defines the data associated with an 
org.apache.flex.html.Image
@@ -62,26 +63,55 @@ package org.apache.flex.html.beads.models
                        _strand = value;
                }
                
-               private var _source:String;
+               private var _url:String;
                
                /**
-                *  The source of the image.
+                *  The url of the image.
                 * 
-                *  @copy org.apache.flex.core.IImageModel#source
+                *  @copy org.apache.flex.core.IImageModel#url
                 *
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
                 */
-               public function get source():String
+               public function get url():String
                {
-                       return _source;
+                       return _url;
                }
-               public function set source(value:String):void
+               public function set url(value:String):void
                {
-                       if (value != _source) {
-                               _source = value;
+                       if (value != _url) {
+                               _url = value;
+                               if(value)
+                                       _binary = null;
+                               dispatchEvent( new Event("urlChanged") );
+                       }
+               }
+
+               private var _binary:BinaryData;
+               
+               /**
+                *  The BinaryData of the image.
+                *  This is used to set the image using binary content 
retrieved using HTTP requests or File APIs.
+                * 
+                *  @copy org.apache.flex.core.IImageModel#binary
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get binary():BinaryData
+               {
+                       return _binary;
+               }
+               public function set binary(value:BinaryData):void
+               {
+                       if (value != _binary) {
+                               _binary = value;
+                               if(value)
+                                       _url = "";
                                dispatchEvent( new Event("urlChanged") );
                        }
                }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c5a470bf/manualtests/ContainerTest/src/products/ProductItemRenderer.as
----------------------------------------------------------------------
diff --git a/manualtests/ContainerTest/src/products/ProductItemRenderer.as 
b/manualtests/ContainerTest/src/products/ProductItemRenderer.as
index f7ca68b..5cb47c9 100644
--- a/manualtests/ContainerTest/src/products/ProductItemRenderer.as
+++ b/manualtests/ContainerTest/src/products/ProductItemRenderer.as
@@ -57,7 +57,7 @@ package products
                {
                        super.data = value;
                        
-                       image.source = data.image;
+                       image.url = data.image;
                        title.text = data.title;
                        detail.text = data.detail;
                }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c5a470bf/manualtests/ListsTest/src/products/ProductItemRenderer.as
----------------------------------------------------------------------
diff --git a/manualtests/ListsTest/src/products/ProductItemRenderer.as 
b/manualtests/ListsTest/src/products/ProductItemRenderer.as
index c1bab26..2983149 100644
--- a/manualtests/ListsTest/src/products/ProductItemRenderer.as
+++ b/manualtests/ListsTest/src/products/ProductItemRenderer.as
@@ -57,7 +57,7 @@ package products
                {
                        super.data = value;
                        
-                       image.source = data.image;
+                       image.url = data.image;
                        title.text = data.title;
                        detail.text = data.detail;
                }

Reply via email to