Repository: flex-asjs Updated Branches: refs/heads/tlf 3b3097de4 -> f589a57f3
Added fix for Firefox bug. Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/f589a57f Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/f589a57f Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/f589a57f Branch: refs/heads/tlf Commit: f589a57f3bafba3f904a00b11fa72de6a39d133d Parents: 3b3097d Author: Harbs <[email protected]> Authored: Sun May 7 09:46:16 2017 +0300 Committer: Harbs <[email protected]> Committed: Sun May 7 09:46:16 2017 +0300 ---------------------------------------------------------------------- .../src/main/flex/org/apache/flex/svg/Circle.as | 30 ++++-- .../main/flex/org/apache/flex/svg/Ellipse.as | 70 ++++++++----- .../org/apache/flex/svg/GraphicContainer.as | 103 ++++++++++--------- .../flex/org/apache/flex/svg/GraphicShape.as | 58 ++++++++--- .../src/main/flex/org/apache/flex/svg/Path.as | 17 ++- .../src/main/flex/org/apache/flex/svg/Rect.as | 22 +++- .../src/main/flex/org/apache/flex/svg/Text.as | 48 +++++---- .../src/main/flex/org/apache/flex/svg/Circle.as | 9 +- .../main/flex/org/apache/flex/svg/Ellipse.as | 7 +- .../org/apache/flex/svg/GraphicContainer.as | 25 ++--- .../flex/org/apache/flex/svg/GraphicShape.as | 16 ++- .../src/main/flex/org/apache/flex/svg/Path.as | 3 +- .../src/main/flex/org/apache/flex/svg/Rect.as | 2 +- .../src/main/flex/org/apache/flex/svg/Text.as | 7 +- 14 files changed, 259 insertions(+), 158 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Circle.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Circle.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Circle.as index f76b5c8..77511a3 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Circle.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Circle.as @@ -15,18 +15,20 @@ package org.apache.flex.svg { import org.apache.flex.graphics.ICircle; + import org.apache.flex.graphics.IDrawable; COMPILE::SWF { + import flash.display.Graphics; import flash.geom.Point; - import flash.geom.Rectangle; + import flash.geom.Rectangle; } COMPILE::JS { import org.apache.flex.core.WrappedHTMLElement; } - public class Circle extends GraphicShape implements ICircle + public class Circle extends GraphicShape implements ICircle, IDrawable { /** * constructor. @@ -54,7 +56,7 @@ package org.apache.flex.svg { _radius = value; } - + COMPILE::JS private var _circle:WrappedHTMLElement; @@ -78,10 +80,10 @@ package org.apache.flex.svg graphics.clear(); applyStroke(); beginFill(new Rectangle(cx,cy,radius*2, radius*2),new Point(cx-radius,cy-radius)); - graphics.drawCircle(cx,cy,radius); + graphics.drawCircle(cx+radius,cy+radius,radius); endFill(); } - COMPILE::JS + COMPILE::JS { var style:String = getStyleStr(); @@ -101,18 +103,24 @@ package org.apache.flex.svg _circle.setAttribute('cx', radius); _circle.setAttribute('cy', radius); } - + _circle.setAttribute('r', radius); - - resize(x-radius, y-radius, (_circle as SVGCircleElement).getBBox()); + + //resize(x-radius, y-radius, (_circle as SVGCircleElement).getBBox()); + resize(x-radius, y-radius, getBBox(_circle)); } } - - override protected function draw():void + + override protected function drawImpl():void { drawCircle(0, 0, radius); } - + + public function draw():void + { + drawImpl(); + } + } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Ellipse.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Ellipse.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Ellipse.as index c2fbabc..2ccf505 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Ellipse.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Ellipse.as @@ -18,19 +18,20 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.flex.svg { + import org.apache.flex.graphics.IDrawable; import org.apache.flex.graphics.IEllipse; COMPILE::SWF { import flash.geom.Point; - import flash.geom.Rectangle; + import flash.geom.Rectangle; } COMPILE::JS { import org.apache.flex.core.WrappedHTMLElement; } - public class Ellipse extends GraphicShape implements IEllipse + public class Ellipse extends GraphicShape implements IEllipse, IDrawable { /** * constructor. @@ -47,12 +48,12 @@ package org.apache.flex.svg this.rx = rx; this.ry = ry; } - + private var _rx:Number; /** * The horizontal radius of the ellipse. - * + * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 @@ -68,11 +69,11 @@ package org.apache.flex.svg _rx = value; } - private var _ry:Number; + private var _ry:Number; /** * The vertical radius of the ellipse. - * + * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 @@ -88,16 +89,33 @@ package org.apache.flex.svg _ry = value; } - + override public function get width():Number + { + return _rx*2; + } + + override public function set width(value:Number):void + { + _rx = value/2; + } + + override public function get height():Number + { + return _ry*2; + } + + override public function set height(value:Number):void + { + _ry = value/2; + } + COMPILE::JS private var _ellipse:WrappedHTMLElement; - + /** * Draw the ellipse. * @param xp The x position of the top-left corner of the bounding box of the ellipse. * @param yp The y position of the top-left corner of the bounding box of the ellipse. - * @param width The width of the ellipse. - * @param height The height of the ellipse. * * @langversion 3.0 * @playerversion Flash 10.2 @@ -114,7 +132,7 @@ package org.apache.flex.svg applyStroke(); beginFill(new Rectangle(xp, yp, width, height), new Point(xp,yp)); graphics.drawEllipse(xp,yp,width,height); - endFill(); + endFill(); } COMPILE::JS { @@ -127,26 +145,32 @@ package org.apache.flex.svg _ellipse.setAttribute('style', style); if (stroke) { - _ellipse.setAttribute('cx', width / 2 + stroke.weight); - _ellipse.setAttribute('cy', height / 2 + stroke.weight); + _ellipse.setAttribute('cx', rx + stroke.weight); + _ellipse.setAttribute('cy', ry + stroke.weight); } else { - _ellipse.setAttribute('cx', width / 2); - _ellipse.setAttribute('cy', height / 2); + _ellipse.setAttribute('cx', rx); + _ellipse.setAttribute('cy', ry); } - _ellipse.setAttribute('rx', width / 2); - _ellipse.setAttribute('ry', height / 2); - - resize(x, y, (_ellipse as SVGEllipseElement).getBBox()); + _ellipse.setAttribute('rx', rx); + _ellipse.setAttribute('ry', ry); + + //resize(x, y, (_ellipse as SVGEllipseElement).getBBox()); + resize(x, y, getBBox(_ellipse)); } } - - override protected function draw():void + + override protected function drawImpl():void { - drawEllipse(0, 0); + drawEllipse(0, 0); } - + + public function draw():void + { + drawImpl(); + } + } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/GraphicContainer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/GraphicContainer.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/GraphicContainer.as index 8e8498f..0cd57e2 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/GraphicContainer.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/GraphicContainer.as @@ -13,7 +13,8 @@ */ package org.apache.flex.svg { - import org.apache.flex.core.ContainerBase; + import org.apache.flex.core.GroupBase; + import org.apache.flex.core.IChild; import org.apache.flex.core.IFlexJSElement; import org.apache.flex.core.ITransformHost; @@ -21,13 +22,12 @@ package org.apache.flex.svg { import org.apache.flex.core.IContainer; import org.apache.flex.core.UIBase; - import org.apache.flex.core.IChild; } [DefaultProperty("mxmlContent")] COMPILE::SWF - public class GraphicContainer extends ContainerBase + public class GraphicContainer extends GroupBase implements ITransformHost { public function GraphicContainer() { @@ -35,39 +35,44 @@ package org.apache.flex.svg } } - + COMPILE::JS - public class GraphicContainer extends UIBase implements IContainer + public class GraphicContainer extends GroupBase implements ITransformHost { - private var graphicGroup:ContainerBase; - + private var graphicGroup:GroupBase; + public function GraphicContainer() { super(); } - + /** * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement */ override protected function createElement():org.apache.flex.core.WrappedHTMLElement { element = document.createElementNS('http://www.w3.org/2000/svg', 'svg') as org.apache.flex.core.WrappedHTMLElement; - + positioner = element; - + // absolute positioned children need a non-null // position value in the parent. It might // get set to 'absolute' if the container is // also absolutely positioned - positioner.style.position = 'relative'; + //positioner.style.position = 'relative'; element.flexjs_wrapper = this; - + graphicGroup = new GraphicGroup(); super.addElement(graphicGroup); return element; } - + COMPILE::JS + override protected function setClassName(value:String):void + { + element.setAttribute('class', value); + } + override public function get transformElement():org.apache.flex.core.WrappedHTMLElement { return graphicGroup.element; @@ -75,7 +80,7 @@ package org.apache.flex.svg /** * @copy org.apache.flex.core.IParent#getElementAt() - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -84,11 +89,11 @@ package org.apache.flex.svg override public function getElementAt(index:int):IChild { return graphicGroup.getElementAt(index); - } - + } + /** * @copy org.apache.flex.core.IParent#addElement() - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -100,10 +105,10 @@ package org.apache.flex.svg if (dispatchEvent) this.dispatchEvent(new Event("childrenAdded")); } - + /** * @copy org.apache.flex.core.IParent#addElementAt() - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -115,10 +120,10 @@ package org.apache.flex.svg if (dispatchEvent) this.dispatchEvent(new Event("childrenAdded")); } - + /** * @copy org.apache.flex.core.IParent#removeElement() - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -130,23 +135,10 @@ package org.apache.flex.svg if (dispatchEvent) this.dispatchEvent(new Event("childrenRemoved")); } - - /** - * @copy org.apache.flex.core.IContainer#childrenAdded() - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function childrenAdded():void - { - dispatchEvent(new Event("childrenAdded")); - } - + /** * @copy org.apache.flex.core.IParent#getElementIndex() - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -156,11 +148,11 @@ package org.apache.flex.svg { return graphicGroup.getElementIndex(c); } - - + + /** * The number of elements in the parent. - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -170,12 +162,29 @@ package org.apache.flex.svg { return graphicGroup.numElements; } + + COMPILE::JS + override public function set x(value:Number):void + { + super.x = value; + // Needed for SVG inside SVG + element.setAttribute("x", value); + } + + COMPILE::JS + override public function set y(value:Number):void + { + super.y = value; + // Needed for SVG inside SVG + element.setAttribute("y", value); + } + } } -import org.apache.flex.core.ContainerBase; +import org.apache.flex.core.GroupBase; -class GraphicGroup extends ContainerBase +class GraphicGroup extends GroupBase { /** * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement @@ -184,21 +193,21 @@ class GraphicGroup extends ContainerBase override protected function createElement():org.apache.flex.core.WrappedHTMLElement { element = document.createElementNS('http://www.w3.org/2000/svg', 'g') as org.apache.flex.core.WrappedHTMLElement; - + positioner = element; - + // absolute positioned children need a non-null // position value in the parent. It might // get set to 'absolute' if the container is // also absolutely positioned - positioner.style.position = 'relative'; + //positioner.style.position = 'relative'; element.flexjs_wrapper = this; - + /*addEventListener('childrenAdded', runLayoutHandler); addEventListener('elementRemoved', runLayoutHandler);*/ - + return element; } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/GraphicShape.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/GraphicShape.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/GraphicShape.as index eb1acc1..73d8dfe 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/GraphicShape.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/GraphicShape.as @@ -16,14 +16,18 @@ package org.apache.flex.svg { COMPILE::SWF { - import flash.geom.Point; - import flash.geom.Rectangle; + import flash.display.Graphics; + import flash.display.Sprite; + import flash.geom.Point; + import flash.geom.Rectangle; + import org.apache.flex.core.WrappedSprite; } COMPILE::JS { import org.apache.flex.core.WrappedHTMLElement; } + import org.apache.flex.core.IFlexJSElement; import org.apache.flex.core.UIBase; import org.apache.flex.graphics.IFill; import org.apache.flex.graphics.IStroke; @@ -31,6 +35,7 @@ package org.apache.flex.svg public class GraphicShape extends UIBase implements IGraphicShape { + private var _fill:IFill; private var _stroke:IStroke; @@ -78,7 +83,7 @@ package org.apache.flex.svg { super(); } - + /** * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement */ @@ -87,14 +92,26 @@ package org.apache.flex.svg { element = document.createElementNS('http://www.w3.org/2000/svg', 'svg') as WrappedHTMLElement; element.flexjs_wrapper = this; - element.style.left = "0px"; - element.style.top = "0px"; //element.offsetParent = null; positioner = element; - positioner.style.position = 'relative'; - + //positioner.style.position = 'relative'; + return element; } + + /** + * @private + * @flexjsignorecoercion SVGRect + */ + COMPILE::JS + protected function getBBox(svgElement:WrappedHTMLElement):Object + { + try { + return svgElement['getBBox'](); + } catch (err) { + return {x: 0, y:0, width:this.width, height:this.height}; + } + } COMPILE::SWF @@ -127,18 +144,15 @@ package org.apache.flex.svg /** * This is where the drawing methods get called from */ - protected function draw():void + protected function drawImpl():void { //Overwrite in subclass } override public function addedToParent():void { - COMPILE::SWF - { - super.addedToParent(); - } - draw(); + super.addedToParent(); + drawImpl(); COMPILE::JS { element.style.overflow = 'visible'; @@ -175,6 +189,12 @@ package org.apache.flex.svg return fillStr + ';' + strokeStr; } + COMPILE::JS + override protected function setClassName(value:String):void + { + element.setAttribute('class', value); + } + /** * @param x X position. @@ -182,7 +202,7 @@ package org.apache.flex.svg * @param bbox The bounding box of the svg element. */ COMPILE::JS - public function resize(x:Number, y:Number, bbox:SVGRect):void + public function resize(x:Number, y:Number, bbox:Object):void { var useWidth:Number = Math.max(this.width, bbox.width); var useHeight:Number = Math.max(this.height, bbox.height); @@ -190,8 +210,14 @@ package org.apache.flex.svg element.style.position = 'absolute'; if (!isNaN(x)) element.style.top = x + "px"; if (!isNaN(y)) element.style.left = y + "px"; + // element.setAttribute("width", useWidth); + // element.setAttribute("height", useHeight); element.style.width = useWidth; element.style.height = useHeight; + // Needed for SVG inside SVG + element.setAttribute("x", x); + element.setAttribute("y", y); + //Needed for SVG inside DOM elements element.style.left = x + "px"; element.style.top = y + "px"; } @@ -218,6 +244,10 @@ package org.apache.flex.svg _y = y; _xOffset = xOffset; _yOffset = yOffset; + // Needed for SVG inside SVG + element.setAttribute("x", xOffset); + element.setAttribute("y", yOffset); + //Needed for SVG inside DOM elements element.style.left = xOffset + "px"; element.style.top = yOffset + "px"; } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Path.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Path.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Path.as index fe6b74a..2d882a3 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Path.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Path.as @@ -14,6 +14,7 @@ package org.apache.flex.svg { + import org.apache.flex.graphics.IDrawable; import org.apache.flex.graphics.IPath; import org.apache.flex.graphics.PathBuilder; @@ -30,7 +31,7 @@ package org.apache.flex.svg } - public class Path extends GraphicShape implements IPath + public class Path extends GraphicShape implements IPath, IDrawable { private var _data:String; @@ -45,7 +46,7 @@ package org.apache.flex.svg _data = value; _pathCommands = null; } - + private var _pathCommands:PathBuilder; public function get pathCommands():PathBuilder @@ -59,7 +60,7 @@ package org.apache.flex.svg _data = _pathCommands.getPathString(); } - + COMPILE::JS private var _path:WrappedHTMLElement; @@ -120,14 +121,20 @@ package org.apache.flex.svg _path.setAttribute('style', style); _path.setAttribute('d', data); - resize(x, y, _path['getBBox']()); + //resize(x, y, _path['getBBox']()); + resize(x, y, getBBox(_path)); } } - override protected function draw():void + override protected function drawImpl():void { drawStringPath(0, 0, data); } + + public function draw():void + { + drawImpl(); + } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Rect.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Rect.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Rect.as index 64f888d..09ce190 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Rect.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Rect.as @@ -14,6 +14,7 @@ package org.apache.flex.svg { + import org.apache.flex.graphics.IDrawable; import org.apache.flex.graphics.IRect; COMPILE::SWF @@ -26,7 +27,7 @@ package org.apache.flex.svg import org.apache.flex.core.WrappedHTMLElement; } - public class Rect extends GraphicShape implements IRect + public class Rect extends GraphicShape implements IRect, IDrawable { /** * constructor. @@ -111,12 +112,12 @@ package org.apache.flex.svg applyStroke(); beginFill(new Rectangle(xp, yp, width, height), new Point(xp,yp)); if(isNaN(rx)) - graphics.drawRect(x, y, width, height); + graphics.drawRect(0, 0, width, height); else { var dx:Number = rx*2; var dy:Number = isNaN(ry) ? ry : ry*2; - graphics.drawRoundRect(x, y, width, height,dx ,dy); + graphics.drawRoundRect(0, 0, width, height,dx ,dy); } endFill(); } @@ -143,14 +144,25 @@ package org.apache.flex.svg _rect.setAttribute('width', width); _rect.setAttribute('height', height); - resize(x, y, _rect['getBBox']()); + resize(x, y, getBBox(_rect)); } } - override protected function draw():void + COMPILE::JS + override public function get transformElement():WrappedHTMLElement + { + return _rect; + } + + override protected function drawImpl():void { drawRect(0,0,width,height); } + + public function draw():void + { + drawImpl(); + } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Text.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Text.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Text.as index 278dcc0..0b5c907 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Text.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/svg/Text.as @@ -18,21 +18,22 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.flex.svg { + import org.apache.flex.graphics.IDrawable; import org.apache.flex.graphics.IText; import org.apache.flex.graphics.SolidColor; COMPILE::SWF { - import flash.text.TextFieldType; - import org.apache.flex.core.CSSTextField; + import flash.text.TextFieldType; + import org.apache.flex.core.CSSTextField; } COMPILE::JS { import org.apache.flex.core.WrappedHTMLElement; } - + /** - * Draws a string of characters at a specific location using the stroke + * Draws a string of characters at a specific location using the fill * value of color and alpha. * * @langversion 3.0 @@ -42,7 +43,7 @@ package org.apache.flex.svg * // TODO (aharui) ignore imports of external linkage interfaces? * @flexjsignoreimport SVGLocatable */ - public class Text extends GraphicShape implements IText + public class Text extends GraphicShape implements IText, IDrawable { /** * constructor. @@ -55,14 +56,14 @@ package org.apache.flex.svg public function Text() { super(); - + COMPILE::SWF { _textField = new CSSTextField(); - addChild(_textField); + addChild(_textField); } } - + private var _text:String; public function get text():String { @@ -75,13 +76,13 @@ package org.apache.flex.svg COMPILE::SWF private var _textField:CSSTextField; - + COMPILE::JS private var _textElem:WrappedHTMLElement; - + /** * @copy org.apache.flex.core.ITextModel#textField - * + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -92,7 +93,7 @@ package org.apache.flex.svg { return _textField; } - + /** * Draws text at the given point. * @param value The string to draw. @@ -117,15 +118,15 @@ package org.apache.flex.svg textField.mouseEnabled = false; textField.autoSize = "left"; textField.text = value; - + var color:SolidColor = fill as SolidColor; if (color) { textField.textColor = color.color; textField.alpha = color.alpha; } - + textField.x = xt; - textField.y = yt; + textField.y = yt; } COMPILE::JS { @@ -143,17 +144,22 @@ package org.apache.flex.svg _textElem.setAttribute('y', yt); var textNode:Text = document.createTextNode(value) as Text; _textElem.appendChild(textNode as Node); - - resize(x, y, (_textElem as SVGLocatable).getBBox()); + + //resize(x, y, (_textElem as SVGLocatable).getBBox()); + resize(x, y, getBBox(_textElem)); } } - - COMPILE::JS - override protected function draw():void + + override protected function drawImpl():void { - drawText(text, x, y); + drawText(text,x,y); } + public function draw():void + { + drawImpl(); + } + } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Circle.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Circle.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Circle.as index 8f8876a..c256ff8 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Circle.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Circle.as @@ -103,14 +103,15 @@ package org.apache.flex.svg _circle.setAttribute('cx', radius); _circle.setAttribute('cy', radius); } - + _circle.setAttribute('r', radius); - - resize(x-radius, y-radius, (_circle as SVGCircleElement).getBBox()); + + //resize(x-radius, y-radius, (_circle as SVGCircleElement).getBBox()); + resize(x-radius, y-radius, getBBox(_circle)); } } - + override protected function drawImpl():void { drawCircle(0, 0, radius); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Ellipse.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Ellipse.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Ellipse.as index 2c25c61..a71a150 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Ellipse.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Ellipse.as @@ -155,12 +155,13 @@ package org.apache.flex.svg } _ellipse.setAttribute('rx', rx); _ellipse.setAttribute('ry', ry); - - resize(x, y, (_ellipse as SVGEllipseElement).getBBox()); + + //resize(x, y, (_ellipse as SVGEllipseElement).getBBox()); + resize(x, y, getBBox(_ellipse)); } } - + override protected function drawImpl():void { drawEllipse(0, 0); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicContainer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicContainer.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicContainer.as index 6b05fea..0cd57e2 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicContainer.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicContainer.as @@ -13,7 +13,7 @@ */ package org.apache.flex.svg { - import org.apache.flex.core.ContainerBase; + import org.apache.flex.core.GroupBase; import org.apache.flex.core.IChild; import org.apache.flex.core.IFlexJSElement; import org.apache.flex.core.ITransformHost; @@ -27,7 +27,7 @@ package org.apache.flex.svg [DefaultProperty("mxmlContent")] COMPILE::SWF - public class GraphicContainer extends ContainerBase implements ITransformHost + public class GraphicContainer extends GroupBase implements ITransformHost { public function GraphicContainer() { @@ -37,9 +37,9 @@ package org.apache.flex.svg } COMPILE::JS - public class GraphicContainer extends UIBase implements ITransformHost, IContainer + public class GraphicContainer extends GroupBase implements ITransformHost { - private var graphicGroup:ContainerBase; + private var graphicGroup:GroupBase; public function GraphicContainer() { @@ -137,19 +137,6 @@ package org.apache.flex.svg } /** - * @copy org.apache.flex.core.IContainer#childrenAdded() - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function childrenAdded():void - { - dispatchEvent(new Event("childrenAdded")); - } - - /** * @copy org.apache.flex.core.IParent#getElementIndex() * * @langversion 3.0 @@ -195,9 +182,9 @@ package org.apache.flex.svg } } -import org.apache.flex.core.ContainerBase; +import org.apache.flex.core.GroupBase; -class GraphicGroup extends ContainerBase +class GraphicGroup extends GroupBase { /** * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicShape.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicShape.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicShape.as index da8d0a9..3ae1485 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicShape.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicShape.as @@ -98,6 +98,20 @@ package org.apache.flex.svg return element; } + + /** + * @private + * @flexjsignorecoercion SVGRect + */ + COMPILE::JS + protected function getBBox(svgElement:WrappedHTMLElement):Object + { + try { + return svgElement['getBBox'](); + } catch (err) { + return {x: 0, y:0, width:this.width, height:this.height}; + } + } COMPILE::SWF @@ -188,7 +202,7 @@ package org.apache.flex.svg * @param bbox The bounding box of the svg element. */ COMPILE::JS - public function resize(x:Number, y:Number, bbox:SVGRect):void + public function resize(x:Number, y:Number, bbox:Object):void { var useWidth:Number = Math.max(this.width, bbox.width); var useHeight:Number = Math.max(this.height, bbox.height); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Path.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Path.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Path.as index 4134b55..14d01b0 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Path.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Path.as @@ -121,7 +121,8 @@ package org.apache.flex.svg _path.setAttribute('style', style); _path.setAttribute('d', data); - resize(x, y, _path['getBBox']()); + //resize(x, y, _path['getBBox']()); + resize(x, y, getBBox(_path)); } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Rect.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Rect.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Rect.as index 889f76d..4791208 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Rect.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Rect.as @@ -144,7 +144,7 @@ package org.apache.flex.svg _rect.setAttribute('width', width); _rect.setAttribute('height', height); - resize(x, y, _rect['getBBox']()); + resize(x, y, getBBox(_rect)); } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f589a57f/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Text.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Text.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Text.as index ba03ccf..d4cfd1d 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Text.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Text.as @@ -144,12 +144,13 @@ package org.apache.flex.svg _textElem.setAttribute('y', yt); var textNode:Text = document.createTextNode(value) as Text; _textElem.appendChild(textNode as Node); - - resize(x, y, (_textElem as SVGLocatable).getBBox()); + + //resize(x, y, (_textElem as SVGLocatable).getBBox()); + resize(x, y, getBBox(_textElem)); } } - + override protected function drawImpl():void { drawText(text,x,y);
