Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id D3DA1200B59 for ; Mon, 8 Aug 2016 17:26:45 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id D245B160AB3; Mon, 8 Aug 2016 15:26:45 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id A574C160A77 for ; Mon, 8 Aug 2016 17:26:44 +0200 (CEST) Received: (qmail 71488 invoked by uid 500); 8 Aug 2016 15:26:38 -0000 Mailing-List: contact dev-help@flex.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@flex.apache.org Delivered-To: mailing list dev@flex.apache.org Received: (qmail 71475 invoked by uid 99); 8 Aug 2016 15:26:38 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 08 Aug 2016 15:26:38 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 027091A131A for ; Mon, 8 Aug 2016 15:26:38 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.179 X-Spam-Level: * X-Spam-Status: No, score=1.179 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx2-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id 7EIcndrfMI8d for ; Mon, 8 Aug 2016 15:26:33 +0000 (UTC) Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by mx2-lw-eu.apache.org (ASF Mail Server at mx2-lw-eu.apache.org) with ESMTPS id 21C5B5F476 for ; Mon, 8 Aug 2016 15:26:33 +0000 (UTC) Received: by mail-wm0-f66.google.com with SMTP id o80so16161718wme.0 for ; Mon, 08 Aug 2016 08:26:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:message-id:mime-version:subject:date:references:to:in-reply-to; bh=lHV2ZzGbqmjQHrAo7r6Dnt5kdNZdXkWv3mOCZXT+7oc=; b=wdFzTZZUobeMUXrpg0fYtF6ISzHlpHnEh7jvXUheB5IPtSVUaUPXkfHZaGjiP33cEp fQoT6ArisgegHCSRrDB+vnlZ5FqDKKX0AGpBZB0aOktxhOxyK8RxPKcBF4BOMXld4RgE Qe3+y4kmeApjQnd1PyU8tJTUKgiXTUVYWKMPhehpuKtj1Exe9hrTsNGEaJ1LoJroiODT dOjpH+6rPEcC9ndM1b+P1poOmUsKiYT/2/LLJPYQQRMyEGc9RgVEiIYxzZiuBi6z8Y6a v+xeYrIlfzymm08HOm2eL2O1Oy5670sIgTUafJ71aAyUYUcd+uvxav4hDuQq5rU59Pad CF+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:message-id:mime-version:subject:date :references:to:in-reply-to; bh=lHV2ZzGbqmjQHrAo7r6Dnt5kdNZdXkWv3mOCZXT+7oc=; b=Kx1aZ5tcoNjmLY9R9xd9ItT6Uf0bxi120kctoxd6dr0fUVR8dG0fBhFbYwoZ1ZjZcS r8YAYgdrH2uFb3bjzUrzELCF/BCKVQyYfMj+If0romnCG+ixo2h8BgIDLFS4fjcKw3pr 0SkFAW+87jzdfqTPU8GklX/MSa/FDyk3I6E9jceAworCb1dSaUsfTnDZXwirS/a3Cl1L X5iidlvTsAi0gUr0zHuQzrFzAxRtqg3QrqvrLWW+rc62kzDWLHY52ZOGrj1GYurImwjK v3GTnu3H+6Gx9csxyMAocvdyjlJvI0jtgPckN0enYxNe27y3M09cNLXe9cuN+x3tK+hS p6qw== X-Gm-Message-State: AEkooute5apk+yr92lw3xlSxIAEWYbs2xcOSYpU+kHOzb0KkwNct27ofKiYxCzZpe7MmlQ== X-Received: by 10.194.103.3 with SMTP id fs3mr86481535wjb.115.1470669992451; Mon, 08 Aug 2016 08:26:32 -0700 (PDT) Received: from [127.0.0.1] ([185.120.124.54]) by smtp.gmail.com with ESMTPSA id pm1sm33375006wjb.40.2016.08.08.08.26.30 for (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 08 Aug 2016 08:26:31 -0700 (PDT) From: Harbs Content-Type: multipart/alternative; boundary="Apple-Mail=_E66E33E5-B83A-40F3-8860-D33102DCD637" Message-Id: Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\)) Subject: Re: git commit: [flex-asjs] [refs/heads/refactor-sprite] - Added Binary to Images Date: Mon, 8 Aug 2016 18:26:27 +0300 References: To: dev@flex.apache.org In-Reply-To: X-Mailer: Apple Mail (2.1878.6) archived-at: Mon, 08 Aug 2016 15:26:46 -0000 --Apple-Mail=_E66E33E5-B83A-40F3-8860-D33102DCD637 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii I started out creating a second event, but that caused code duplication = for no reason. On Aug 8, 2016, at 6:03 PM, Piotr Zarzycki = wrote: > Hi Harbs, >=20 > I think the name of the event "urlChanged" - do not say anymore what = actually has changed.=20 > What do you think to have more general name? "imageSourceChanged" or = "imageDataChanged". Second idea is to have separate events for changed = source binary and url. >=20 > Piotr >=20 >=20 > On Mon, Aug 8, 2016, 16:48 wrote: > Repository: flex-asjs > Updated Branches: > refs/heads/refactor-sprite a1b8ce133 -> c5a470bf8 >=20 >=20 > Added Binary to Images >=20 >=20 > 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 >=20 > Branch: refs/heads/refactor-sprite > Commit: c5a470bf88377d5e68a9cbd5c429ad430afe0a03 > Parents: a1b8ce1 > Author: Harbs > Authored: Mon Aug 8 17:48:01 2016 +0300 > Committer: Harbs > Committed: Mon Aug 8 17:48:01 2016 +0300 >=20 > ---------------------------------------------------------------------- > .../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(-) > ---------------------------------------------------------------------- >=20 >=20 > = http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c5a470bf/examples/fl= exjs/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 =3D value; >=20 > - image.source =3D value.image; > + image.url =3D value.image; > } >=20 > override public function adjustSize():void >=20 > = 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; >=20 > import org.apache.flex.core.ClassFactory; ClassFactory; > import org.apache.flex.states.AddItems; AddItems; >=20 > = 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; >=20 > /** > * 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; > } > } >=20 > = 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:*=3Dnull The active window can be = optionally specified > + * @return The object URL > + */ > + public static function = createObjectURL(blobOrFile:*,win:*=3Dnull):String > + { > + win =3D 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:*=3Dnull):void > + { > + win =3D win || window; > + if(win["URL"]) > + win["URL"].revokeObjectURL(objectURL); > + if(win.webkitURL) > + = win.webkitURL.revokeObjectURL(objectURL); > + } > + } > + > +} > + >=20 > = 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 =3D value; > + (model as IImageModel).url =3D 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 =3D value; > } >=20 > /** >=20 > = 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/ImageV= iew.as = b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageV= iew.as > index 77c970a..8533d02 100644 > --- = a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageV= iew.as > +++ = b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ImageV= iew.as > @@ -29,6 +29,7 @@ package org.apache.flex.html.beads > COMPILE::JS > { > import goog.events; > + import org.apache.flex.utils.URLUtils; > } >=20 > 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; >=20 > /** > * 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; >=20 > private var _model:IImageModel; > + private var _objectURL:String; >=20 > /** > * @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 =3D 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 =3D _strand as IUIBase; > (host.element as = HTMLImageElement).addEventListener('load', > loadHandler, false); > host.addEventListener('sizeChanged', > sizeChangedHandler); > - (host.element as HTMLImageElement).src =3D = _model.source; > + var urlStr:String =3D _model.url; > + > + if(_model.binary) > + { > + if(_objectURL) > + URLUtils.revokeObjectURL(_objectURL); > + var blob:Blob =3D new = Blob([_model.binary.array]); > +// I don't think we need to specify the type. > +// var blob =3D new Blob([response], {type: = "image/png"}); > + _objectURL =3D URLUtils.createObjectURL(blob); > + urlStr =3D _objectURL > + } > + (host.element as HTMLImageElement).src =3D = urlStr; > } > } > } >=20 > = 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.a= s > ---------------------------------------------------------------------- > 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; >=20 > /** > * 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 =3D value; > } >=20 > - private var _source:String; > + private var _url:String; >=20 > /** > - * 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 !=3D _source) { > - _source =3D value; > + if (value !=3D _url) { > + _url =3D value; > + if(value) > + _binary =3D 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 !=3D _binary) { > + _binary =3D value; > + if(value) > + _url =3D ""; > dispatchEvent( new Event("urlChanged") = ); > } > } >=20 > = 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 =3D value; >=20 > - image.source =3D data.image; > + image.url =3D data.image; > title.text =3D data.title; > detail.text =3D data.detail; > } >=20 > = 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 =3D value; >=20 > - image.source =3D data.image; > + image.url =3D data.image; > title.text =3D data.title; > detail.text =3D data.detail; > } >=20 --Apple-Mail=_E66E33E5-B83A-40F3-8860-D33102DCD637--