move more UIBase to HTML
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/7af78c10 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/7af78c10 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/7af78c10 Branch: refs/heads/feature/mdl Commit: 7af78c10981886b14f7f067b5083b756beccad86 Parents: 6622b25 Author: Alex Harui <aha...@apache.org> Authored: Fri Oct 28 23:17:40 2016 -0700 Committer: Alex Harui <aha...@apache.org> Committed: Tue Nov 1 07:55:20 2016 -0700 ---------------------------------------------------------------------- .../src/main/flex/org/apache/flex/svg/Circle.as | 119 ---- .../flex/org/apache/flex/svg/CompoundGraphic.as | 584 ------------------- .../main/flex/org/apache/flex/svg/Ellipse.as | 171 ------ .../flex/org/apache/flex/svg/GraphicShape.as | 233 -------- .../src/main/flex/org/apache/flex/svg/Path.as | 133 ----- .../src/main/flex/org/apache/flex/svg/Rect.as | 156 ----- .../src/main/flex/org/apache/flex/svg/Text.as | 150 ----- .../src/main/flex/org/apache/flex/svg/Circle.as | 119 ++++ .../flex/org/apache/flex/svg/CompoundGraphic.as | 584 +++++++++++++++++++ .../main/flex/org/apache/flex/svg/Ellipse.as | 171 ++++++ .../flex/org/apache/flex/svg/GraphicShape.as | 233 ++++++++ .../src/main/flex/org/apache/flex/svg/Path.as | 133 +++++ .../src/main/flex/org/apache/flex/svg/Rect.as | 156 +++++ .../src/main/flex/org/apache/flex/svg/Text.as | 150 +++++ 14 files changed, 1546 insertions(+), 1546 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7af78c10/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Circle.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Circle.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Circle.as deleted file mode 100644 index 07cc3d5..0000000 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Circle.as +++ /dev/null @@ -1,119 +0,0 @@ -/** - * Licensed 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.svg -{ - import org.apache.flex.graphics.ICircle; - - COMPILE::SWF - { - import flash.display.Graphics; - import flash.geom.Point; - import flash.geom.Rectangle; - } - COMPILE::JS - { - import org.apache.flex.core.WrappedHTMLElement; - } - - public class Circle extends GraphicShape implements ICircle - { - /** - * constructor. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.7 - */ - public function Circle(cx:Number=0, cy:Number=0, r:Number=0) - { - x = cx; - y = cy; - radius = r; - } - - private var _radius:Number; - - public function get radius():Number - { - return _radius; - } - - public function set radius(value:Number):void - { - _radius = value; - } - - COMPILE::JS - private var _circle:WrappedHTMLElement; - - /** - * Draw the circle. - * @param cx The x location of the center of the circle - * @param cy The y location of the center of the circle. - * @param radius The radius of the circle. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - * @flexjsignorecoercion SVGCircleElement - */ - public function drawCircle(cx:Number, cy:Number, radius):void - { - COMPILE::SWF - { - $sprite.graphics.clear(); - applyStroke(); - beginFill(new Rectangle(cx,cy,radius*2, radius*2),new Point(cx-radius,cy-radius)); - $sprite.graphics.drawCircle(cx+radius,cy+radius,radius); - endFill(); - } - COMPILE::JS - { - var style:String = getStyleStr(); - - if (_circle == null) { - _circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle') as WrappedHTMLElement; - _circle.flexjs_wrapper = this; - element.appendChild(_circle); - } - _circle.setAttribute('style', style); - if (stroke) - { - _circle.setAttribute('cx', radius + stroke.weight); - _circle.setAttribute('cy', radius + stroke.weight); - } - else - { - _circle.setAttribute('cx', radius); - _circle.setAttribute('cy', radius); - } - - _circle.setAttribute('r', radius); - - resize(x-radius, y-radius, (_circle as SVGCircleElement).getBBox()); - - } - } - - override protected function draw():void - { - drawCircle(0, 0, radius); - } - - } -} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7af78c10/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as deleted file mode 100644 index 351f871..0000000 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/CompoundGraphic.as +++ /dev/null @@ -1,584 +0,0 @@ -/** - * Licensed 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.svg -{ - import org.apache.flex.graphics.ICompoundGraphic; - import org.apache.flex.graphics.IFill; - import org.apache.flex.graphics.IStroke; - import org.apache.flex.graphics.PathBuilder; - import org.apache.flex.graphics.SolidColor; - - COMPILE::SWF - { - import flash.display.GraphicsPath; - import flash.display.Shape; - import flash.display.Sprite; - import flash.geom.Point; - import flash.geom.Rectangle; - import flash.text.TextFieldType; - - import org.apache.flex.core.CSSTextField; - import org.apache.flex.graphics.utils.PathHelper; - } - COMPILE::JS - { - import org.apache.flex.core.WrappedHTMLElement; - } - - /** - * CompoundGraphic is a surface on which you can - * draw various graphic elements such as Rect, Circle, - * Ellipse, Path etc. - * Use this class if you want to draw multiple graphic - * shapes on a single container. - * - */ - public class CompoundGraphic extends GraphicShape implements ICompoundGraphic - { - private var _textFill:IFill; - - public function get textFill():IFill - { - return _textFill; - } - /** - * The color of the text. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion FlexJS 0.0 - */ - public function set textFill(value:IFill):void - { - _textFill = value; - } - - private var _textStroke:IStroke; - - public function get textStroke():IStroke - { - return _textStroke; - } - /** - * The stroke color of the text. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion FlexJS 0.0 - */ - public function set textStroke(value:IStroke):void - { - _textStroke = value; - } - - /** - * Removes all of the drawn elements of the container. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0.3 - */ - public function removeAllElements():void - { - clear(); - } - - /** - * Clears all of the drawn path data. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.7.0 - */ - public function clear():void - { - COMPILE::SWF - { - $sprite.graphics.clear(); - $sprite.removeChildren(); - } - COMPILE::JS - { - var svg:HTMLElement = element; - while (svg.lastChild) { - svg.removeChild(svg.lastChild); - } - } - } - - /** - * Draw the rectangle. - * @param x The x position of the top-left corner of the rectangle. - * @param y The y position of the top-left corner. - * @param width The width of the rectangle. - * @param height The height of the rectangle. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0.3 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - */ - public function drawRect(x:Number, y:Number, width:Number, height:Number):void - { - COMPILE::SWF - { - applyStroke(); - beginFill(new Rectangle(x, y, width, height), new Point(x,y) ); - $sprite.graphics.drawRect(x, y, width, height); - endFill(); - } - COMPILE::JS - { - drawRoundRect(x, y, width, height, NaN); - } - } - - /** - * Draws a rounded rectangle. - * Note: The radius values are different than the Flash API of the same name. Flash uses diameter instead of radius. - * @param x The x position of the top-left corner of the rectangle. - * @param y The y position of the top-left corner. - * @param width The width of the rectangle. - * @param height The height of the rectangle. - * @param radiusX The horizontal radius of the rounded corners (in pixels). - * @param radiusY The vertical radius of the rounded corners (in pixels). Optional; if no value is specified, the default value matches that provided for the <code>radiusX</code> parameter. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0.3 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - */ - public function drawRoundRect(x:Number, y:Number, width:Number, height:Number, radiusX:Number, radiusY:Number = NaN):void - { - COMPILE::SWF - { - applyStroke(); - beginFill(new Rectangle(x,y,width,height), new Point(x,y)); - radiusX *=2; - radiusY = isNaN(radiusY) ? radiusY : radiusY*2; - $sprite.graphics.drawRoundRect(x,y,width,height,radiusX,radiusY); - endFill(); - } - COMPILE::JS - { - if(isNaN(radiusY)) - radiusY = radiusX; - - var style:String = getStyleStr(); - var rect:WrappedHTMLElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect') as WrappedHTMLElement; - rect.flexjs_wrapper = this; - rect.style.left = x; - rect.style.top = y; - rect.setAttribute('style', style); - rect.setAttribute('x', x); - rect.setAttribute('y', y); - rect.setAttribute('width', width); - rect.setAttribute('height', height); - if(!isNaN(radiusX)) - { - rect.setAttribute('rx', radiusX); - rect.setAttribute('ry', radiusY); - } - element.appendChild(rect); - } - - } - - /** - * Draw the ellipse. - * @param x The x position of the top-left corner of the bounding box of the ellipse. - * @param y 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 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0.3 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - */ - public function drawEllipse(x:Number, y:Number, width:Number, height:Number):void - { - COMPILE::SWF - { - applyStroke(); - beginFill(new Rectangle(x,y,width,height), new Point(x,y)); - $sprite.graphics.drawEllipse(x,y,width,height); - endFill(); - } - COMPILE::JS - { - var style:String = getStyleStr(); - var ellipse:WrappedHTMLElement = document.createElementNS('http://www.w3.org/2000/svg', 'ellipse') as WrappedHTMLElement; - ellipse.flexjs_wrapper = this; - ellipse.style.left = x; - ellipse.style.top = y; - ellipse.setAttribute('style', style); - ellipse.setAttribute('cx', x + width / 2); - ellipse.setAttribute('cy', y + height / 2); - ellipse.setAttribute('rx', width / 2); - ellipse.setAttribute('ry', height / 2); - element.appendChild(ellipse); - } - } - - /** - * Draw the circle. - * @param x The x location of the center of the circle - * @param y The y location of the center of the circle. - * @param radius The radius of the circle. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - */ - public function drawCircle(x:Number, y:Number, radius:Number):void - { - COMPILE::SWF - { - applyStroke(); - beginFill(new Rectangle(x,y,radius*2, radius*2),new Point(x-radius,y-radius)); - $sprite.graphics.drawCircle(x,y,radius); - endFill(); - } - COMPILE::JS - { - var style:String = getStyleStr(); - var circle:WrappedHTMLElement = document.createElementNS('http://www.w3.org/2000/svg', 'ellipse') as WrappedHTMLElement; - circle.flexjs_wrapper = this; - circle.style.left = x; - circle.style.top = y; - circle.setAttribute('style', style); - circle.setAttribute('cx', x); - circle.setAttribute('cy', y); - circle.setAttribute('rx', radius); - circle.setAttribute('ry', radius); - element.appendChild(circle); - - } - } - - /** - * Draw the path. - * @param data A PathBuilder object containing a vector of drawing commands. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - */ - public function drawPathCommands(data:PathBuilder):void - { - drawStringPath(data.getPathString()); - } - - /** - * Draw the path. - * @param data A string containing a compact represention of the path segments. - * The value is a space-delimited string describing each path segment. Each - * segment entry has a single character which denotes the segment type and - * two or more segment parameters. - * - * If the segment command is upper-case, the parameters are absolute values. - * If the segment command is lower-case, the parameters are relative values. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - */ - public function drawStringPath(data:String):void - { - COMPILE::SWF - { - applyStroke(); - var bounds:Rectangle = PathHelper.getBounds(data); - beginFill(bounds,bounds.topLeft); - var graphicsPath:GraphicsPath = PathHelper.getSegments(data); - $sprite.graphics.drawPath(graphicsPath.commands, graphicsPath.data); - endFill(); - } - COMPILE::JS - { - var style:String = getStyleStr(); - var path:WrappedHTMLElement = document.createElementNS('http://www.w3.org/2000/svg', 'path') as WrappedHTMLElement; - path.flexjs_wrapper = this; - path.style.left = 0; - path.style.top = 0; - path.setAttribute('style', style); - path.setAttribute('d', data); - element.appendChild(path); - } - } - - public function drawLine():void - { - - } - - public function drawPolygon():void - { - - } - - - /** - * Draws a rounded rectangle using the size of a radius to draw the rounded corners. - * You must set the line style, fill, or both - * on the Graphics object before - * you call the <code>drawRoundRectComplex()</code> method - * by calling the <code>linestyle()</code>, - * <code>lineGradientStyle()</code>, <code>beginFill()</code>, - * <code>beginGradientFill()</code>, or - * <code>beginBitmapFill()</code> method. - * - * @param x The horizontal position relative to the - * registration point of the parent display object, in pixels. - * - * @param y The vertical position relative to the - * registration point of the parent display object, in pixels. - * - * @param width The width of the round rectangle, in pixels. - * - * @param height The height of the round rectangle, in pixels. - * - * @param topLeftRadius The radius of the upper-left corner, in pixels. - * - * @param topRightRadius The radius of the upper-right corner, in pixels. - * - * @param bottomLeftRadius The radius of the bottom-left corner, in pixels. - * - * @param bottomRightRadius The radius of the bottom-right corner, in pixels. - * - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion Flex 3 - */ - public function drawRoundRectComplex(x:Number, y:Number, - width:Number, height:Number, - topLeftRadius:Number, topRightRadius:Number, - bottomLeftRadius:Number, bottomRightRadius:Number):void - { - COMPILE::SWF - { - applyStroke(); - beginFill(new Rectangle(x,y,width,height), new Point(x,y)); - $sprite.graphics.drawRoundRectComplex(x,y,width,height,topLeftRadius,topRightRadius,bottomLeftRadius,bottomRightRadius); - endFill(); - } - COMPILE::JS - { - var builder:PathBuilder = new PathBuilder(); - builder.drawRoundRectComplex(x, y, width, height, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius); - drawStringPath(builder.getPathString()); - } - - - } - - /** - * Draws a rounded rectangle using the size of individual x and y radii to - * draw the rounded corners. - * You must set the line style, fill, or both - * on the Graphics object before - * you call the <code>drawRoundRectComplex2()</code> method - * by calling the <code>linestyle()</code>, - * <code>lineGradientStyle()</code>, <code>beginFill()</code>, - * <code>beginGradientFill()</code>, or - * <code>beginBitmapFill()</code> method. - * - * @param graphics The Graphics object that draws the rounded rectangle. - * - * @param x The horizontal position relative to the - * registration point of the parent display object, in pixels. - * - * @param y The vertical position relative to the - * registration point of the parent display object, in pixels. - * - * @param width The width of the round rectangle, in pixels. - * - * @param height The height of the round rectangle, in pixels. - * - * @param radiusX The default radiusX to use, if corner-specific values are not specified. - * This value must be specified. - * - * @param radiusY The default radiusY to use, if corner-specific values are not specified. - * If 0, the value of radiusX is used. - * - * @param topLeftRadiusX The x radius of the upper-left corner, in pixels. If NaN, - * the value of radiusX is used. - * - * @param topLeftRadiusY The y radius of the upper-left corner, in pixels. If NaN, - * the value of topLeftRadiusX is used. - * - * @param topRightRadiusX The x radius of the upper-right corner, in pixels. If NaN, - * the value of radiusX is used. - * - * @param topRightRadiusY The y radius of the upper-right corner, in pixels. If NaN, - * the value of topRightRadiusX is used. - * - * @param bottomLeftRadiusX The x radius of the bottom-left corner, in pixels. If NaN, - * the value of radiusX is used. - * - * @param bottomLeftRadiusY The y radius of the bottom-left corner, in pixels. If NaN, - * the value of bottomLeftRadiusX is used. - * - * @param bottomRightRadiusX The x radius of the bottom-right corner, in pixels. If NaN, - * the value of radiusX is used. - * - * @param bottomRightRadiusY The y radius of the bottom-right corner, in pixels. If NaN, - * the value of bottomRightRadiusX is used. - * - * - * @langversion 3.0 - * @playerversion Flash 10 - * @playerversion AIR 1.5 - * @productversion Flex 4 - */ - public function drawRoundRectComplex2(x:Number, y:Number, - width:Number, height:Number, - radiusX:Number, radiusY:Number, - topLeftRadiusX:Number, topLeftRadiusY:Number, - topRightRadiusX:Number, topRightRadiusY:Number, - bottomLeftRadiusX:Number, bottomLeftRadiusY:Number, - bottomRightRadiusX:Number, bottomRightRadiusY:Number):void - { - var builder:PathBuilder = new PathBuilder(); - builder.drawRoundRectComplex2(x, y, width, height, radiusX, radiusY,topLeftRadiusX, topLeftRadiusY,topRightRadiusX, topRightRadiusY,bottomLeftRadiusX, bottomLeftRadiusY,bottomRightRadiusX, bottomRightRadiusY); - - COMPILE::SWF - { - applyStroke(); - beginFill(new Rectangle(x,y,width,height), new Point(x,y)); - builder.draw($sprite.graphics); - endFill(); - } - COMPILE::JS - { - drawStringPath(builder.getPathString()); - } - } - - /* - What about these? - beginBitmapFill - beginFill - beginGradientFill - beginShaderFill - drawGraphicsData - drawRoundRect - drawTriangles - */ - - /** - * Draw a string of characters. - * @param value The string to draw. - * @param x The x location of the center of the circle - * @param y The y location of the center of the circle. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - * @flexjsignorecoercion Text - * @flexjsignorecoercion Node - */ - public function drawText(value:String, x:Number, y:Number):Object - { - COMPILE::SWF - { - var textField:CSSTextField = new CSSTextField(); - $sprite.addChild(textField); - - textField.selectable = false; - textField.type = TextFieldType.DYNAMIC; - textField.mouseEnabled = false; - textField.autoSize = "left"; - textField.text = value; - - var color:SolidColor = textFill as SolidColor; - if (color) { - textField.textColor = color.color; - textField.alpha = color.alpha; - } - - textField.x = x; - textField.y = y + textField.textHeight/4; - - return textField; - - } - COMPILE::JS - { - var style:String = getTxtStyleStr(); - var text:WrappedHTMLElement = document.createElementNS('http://www.w3.org/2000/svg', 'text') as WrappedHTMLElement; - text.flexjs_wrapper = this; - text.style.left = x; - text.style.top = y; - text.setAttribute('style', style); - text.setAttribute('x', x); - text.setAttribute('y', y + 15); - var textNode:Text = document.createTextNode(value) as Text; - text.appendChild(textNode as Node); - element.appendChild(text); - return text; - } - } - - /** - * @return {string} The style attribute. - */ - COMPILE::JS - public function getTxtStyleStr():String - { - var fillStr:String; - if (textFill) - { - fillStr = textFill.addFillAttrib(this); - } - else - { - fillStr = 'fill:none'; - } - - var strokeStr:String; - if (textStroke) - { - strokeStr = textStroke.addStrokeAttrib(this); - } - else - { - strokeStr = 'stroke:none'; - } - return fillStr + ';' + strokeStr; - - - } - - } -} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7af78c10/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Ellipse.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Ellipse.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Ellipse.as deleted file mode 100644 index 2cfd95e..0000000 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Ellipse.as +++ /dev/null @@ -1,171 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// -package org.apache.flex.svg -{ - import org.apache.flex.graphics.IEllipse; - - COMPILE::SWF - { - import flash.geom.Point; - import flash.geom.Rectangle; - } - COMPILE::JS - { - import org.apache.flex.core.WrappedHTMLElement; - } - - public class Ellipse extends GraphicShape implements IEllipse - { - /** - * constructor. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.7 - */ - public function Ellipse(cx:Number=0, cy:Number=0, rx:Number=0, ry:Number=0) - { - x = cx; - y = cy; - 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 - * @productversion FlexJS 0.7 - */ - public function get rx():Number - { - return _rx; - } - - public function set rx(value:Number):void - { - _rx = value; - } - - private var _ry:Number; - - /** - * The vertical radius of the ellipse. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion FlexJS 0.7 - */ - public function get ry():Number - { - return _ry; - } - - public function set ry(value:Number):void - { - _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 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - * @flexjsignorecoercion SVGEllipseElement - */ - public function drawEllipse(xp:Number, yp:Number):void - { - COMPILE::SWF - { - $sprite.graphics.clear(); - applyStroke(); - beginFill(new Rectangle(xp, yp, width, height), new Point(xp,yp)); - $sprite.graphics.drawEllipse(xp,yp,width,height); - endFill(); - } - COMPILE::JS - { - var style:String = getStyleStr(); - if (_ellipse == null) { - _ellipse = document.createElementNS('http://www.w3.org/2000/svg', 'ellipse') as WrappedHTMLElement; - _ellipse.flexjs_wrapper = this; - element.appendChild(_ellipse); - } - _ellipse.setAttribute('style', style); - if (stroke) - { - _ellipse.setAttribute('cx', rx + stroke.weight); - _ellipse.setAttribute('cy', ry + stroke.weight); - } - else - { - _ellipse.setAttribute('cx', rx); - _ellipse.setAttribute('cy', ry); - } - _ellipse.setAttribute('rx', rx); - _ellipse.setAttribute('ry', ry); - - resize(x, y, (_ellipse as SVGEllipseElement).getBBox()); - - } - } - - override protected function draw():void - { - drawEllipse(0, 0); - } - - } -} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7af78c10/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as deleted file mode 100644 index 8f9e326..0000000 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/GraphicShape.as +++ /dev/null @@ -1,233 +0,0 @@ -/** - * Licensed 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.svg -{ - COMPILE::SWF - { - 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; - import org.apache.flex.graphics.IGraphicShape; - - public class GraphicShape extends UIBase implements IGraphicShape - { - - private var _fill:IFill; - private var _stroke:IStroke; - - public function get stroke():IStroke - { - return _stroke; - } - - /** - * A solid color fill. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion FlexJS 0.0 - */ - public function set stroke(value:IStroke):void - { - _stroke = value; - } - - public function get fill():IFill - { - return _fill; - } - /** - * A solid color fill. - * - * @langversion 3.0 - * @playerversion Flash 9 - * @playerversion AIR 1.1 - * @productversion FlexJS 0.0 - */ - public function set fill(value:IFill):void - { - _fill = value; - } - - /** - * Constructor - * - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - */ - public function GraphicShape() - { - super(); - } - - /** - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - */ - COMPILE::JS - override protected function createElement():IFlexJSElement - { - element = document.createElementNS('http://www.w3.org/2000/svg', 'svg') as WrappedHTMLElement; - element.flexjs_wrapper = this; - element.style.left = 0; - element.style.top = 0; - //element.offsetParent = null; - positioner = element; - positioner.style.position = 'relative'; - - return element; - } - - - COMPILE::SWF - protected function applyStroke():void - { - if(stroke) - { - stroke.apply($sprite.graphics); - } - } - - COMPILE::SWF - protected function beginFill(targetBounds:Rectangle,targetOrigin:Point):void - { - if(fill) - { - fill.begin($sprite.graphics, targetBounds,targetOrigin); - } - } - - COMPILE::SWF - protected function endFill():void - { - if(fill) - { - fill.end($sprite.graphics); - } - } - - /** - * This is where the drawing methods get called from - */ - protected function draw():void - { - //Overwrite in subclass - } - - override public function addedToParent():void - { - super.addedToParent(); - draw(); - COMPILE::JS - { - element.style.overflow = 'visible'; - } - } - - /** - * @return {string} The style attribute. - */ - COMPILE::JS - public function getStyleStr():String - { - var fillStr:String; - if (fill) - { - fillStr = fill.addFillAttrib(this); - } - else - { - fillStr = 'fill:none'; - } - - var strokeStr:String; - if (stroke) - { - strokeStr = stroke.addStrokeAttrib(this); - } - else - { - strokeStr = 'stroke:none'; - } - - - return fillStr + ';' + strokeStr; - } - - COMPILE::JS - override protected function setClassName(value:String):void - { - element.setAttribute('class', value); - } - - - /** - * @param x X position. - * @param y Y position. - * @param bbox The bounding box of the svg element. - */ - COMPILE::JS - public function resize(x:Number, y:Number, bbox:SVGRect):void - { - var useWidth:Number = Math.max(this.width, bbox.width); - var useHeight:Number = Math.max(this.height, bbox.height); - - element.style.position = 'absolute'; - if (!isNaN(x)) element.style.top = x; - if (!isNaN(y)) element.style.left = y; - element.style.width = useWidth; - element.style.height = useHeight; - element.style.left = x; - element.style.top = y; - } - - COMPILE::JS - private var _x:Number; - COMPILE::JS - private var _y:Number; - COMPILE::JS - private var _xOffset:Number; - COMPILE::JS - private var _yOffset:Number; - - /** - * @param x X position. - * @param y Y position. - * @param xOffset offset from x position. - * @param yOffset offset from y position. - */ - COMPILE::JS - public function setPosition(x:Number, y:Number, xOffset:Number, yOffset:Number):void - { - _x = x; - _y = y; - _xOffset = xOffset; - _yOffset = yOffset; - element.style.left = xOffset; - element.style.top = yOffset; - } - } -} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7af78c10/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Path.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Path.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Path.as deleted file mode 100644 index 3369e47..0000000 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Path.as +++ /dev/null @@ -1,133 +0,0 @@ -/** - * Licensed 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.svg -{ - import org.apache.flex.graphics.IPath; - import org.apache.flex.graphics.PathBuilder; - - COMPILE::SWF - { - import flash.display.GraphicsPath; - import flash.geom.Point; - import flash.geom.Rectangle; - import org.apache.flex.graphics.utils.PathHelper; - } - COMPILE::JS - { - import org.apache.flex.core.WrappedHTMLElement; - } - - - public class Path extends GraphicShape implements IPath - { - - private var _data:String; - - public function get data():String - { - return _data; - } - - public function set data(value:String):void - { - _data = value; - _pathCommands = null; - } - - private var _pathCommands:PathBuilder; - - public function get pathCommands():PathBuilder - { - return _pathCommands; - } - - public function set pathCommands(value:PathBuilder):void - { - _pathCommands = value; - _data = _pathCommands.getPathString(); - } - - - COMPILE::JS - private var _path:WrappedHTMLElement; - - /** - * Draw the path. - * @param data A PathBuilder object containing a vector of drawing commands. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - */ - public function drawPathCommands(xp:Number,yp:Number,data:PathBuilder):void - { - drawStringPath(xp,yp,data.getPathString()); - } - - /** - * Draw the path. - * @param data A string containing a compact represention of the path segments. - * The value is a space-delimited string describing each path segment. Each - * segment entry has a single character which denotes the segment type and - * two or more segment parameters. - * - * If the segment command is upper-case, the parameters are absolute values. - * If the segment command is lower-case, the parameters are relative values. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - */ - public function drawStringPath(xp:Number,yp:Number,data:String):void - { - COMPILE::SWF - { - $sprite.graphics.clear(); - applyStroke(); - var bounds:Rectangle = PathHelper.getBounds(data); - this.width = bounds.width; - this.height = bounds.height; - beginFill(bounds,new Point(bounds.left + xp, bounds.top + yp) ); - var graphicsPath:GraphicsPath = PathHelper.getSegments(data,xp,yp); - $sprite.graphics.drawPath(graphicsPath.commands, graphicsPath.data); - endFill(); - } - COMPILE::JS - { - if (data == null || data.length === 0) return; - var style:String = getStyleStr(); - if (_path == null) { - _path = document.createElementNS('http://www.w3.org/2000/svg', 'path') as WrappedHTMLElement; - _path.flexjs_wrapper = this; - element.appendChild(_path); - } - _path.setAttribute('style', style); - _path.setAttribute('d', data); - - resize(x, y, _path['getBBox']()); - - } - } - - override protected function draw():void - { - drawStringPath(0, 0, data); - } - } -} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7af78c10/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Rect.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Rect.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Rect.as deleted file mode 100644 index 14f153e..0000000 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Rect.as +++ /dev/null @@ -1,156 +0,0 @@ -/** - * Licensed 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.svg -{ - import org.apache.flex.graphics.IRect; - - COMPILE::SWF - { - import flash.geom.Point; - import flash.geom.Rectangle; - } - COMPILE::JS - { - import org.apache.flex.core.WrappedHTMLElement; - } - - public class Rect extends GraphicShape implements IRect - { - /** - * constructor. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.7 - */ - public function Rect(x:Number=0, y:Number=0, width:Number=0, height:Number=0,rx:Number=NaN,ry:Number=NaN) - { - this.x = x; - this.y = y; - this.width = width; - this.height = height; - this.rx = rx; - this.ry = ry; - } - - COMPILE::JS - private var _rect:WrappedHTMLElement; - - private var _rx:Number; - - /** - * The x axis radius for rounded corners - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.7 - */ - public function get rx():Number - { - return _rx; - } - - public function set rx(value:Number):void - { - _rx = value; - } - - private var _ry:Number; - - /** - * The y axis radius for rounded corners - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.7 - * - */ - public function get ry():Number - { - return _ry; - } - - public function set ry(value:Number):void - { - _ry = value; - } - - /** - * Draw the rectangle. - * @param xp The x position of the top-left corner of the rectangle. - * @param yp The y position of the top-left corner. - * @param width The width of the rectangle. - * @param height The height of the rectangle. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - */ - public function drawRect(xp:Number, yp:Number, width:Number, height:Number):void - { - COMPILE::SWF - { - $sprite.graphics.clear(); - applyStroke(); - beginFill(new Rectangle(xp, yp, width, height), new Point(xp,yp)); - if(isNaN(rx)) - $sprite.graphics.drawRect(0, 0, width, height); - else - { - var dx:Number = rx*2; - var dy:Number = isNaN(ry) ? ry : ry*2; - $sprite.graphics.drawRoundRect(0, 0, width, height,dx ,dy); - } - endFill(); - } - COMPILE::JS - { - var style:String = this.getStyleStr(); - - if (_rect == null) { - _rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect') as WrappedHTMLElement; - _rect.flexjs_wrapper = this; - element.appendChild(_rect); - } - _rect.setAttribute('style', style); - if (stroke) - { - _rect.setAttribute('x', stroke.weight / 2); - _rect.setAttribute('y', stroke.weight / 2); - } - else - { - _rect.setAttribute('x', 0); - _rect.setAttribute('y', 0); - } - _rect.setAttribute('width', width); - _rect.setAttribute('height', height); - - resize(x, y, _rect['getBBox']()); - } - } - - override protected function draw():void - { - drawRect(0,0,width,height); - } - - } -} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7af78c10/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as deleted file mode 100644 index 51b8135..0000000 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/Text.as +++ /dev/null @@ -1,150 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// -package org.apache.flex.svg -{ - import org.apache.flex.graphics.IText; - import org.apache.flex.graphics.SolidColor; - - COMPILE::SWF - { - 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 - * value of color and alpha. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * // TODO (aharui) ignore imports of external linkage interfaces? - * @flexjsignoreimport SVGLocatable - */ - public class Text extends GraphicShape implements IText - { - /** - * constructor. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function Text() - { - super(); - - COMPILE::SWF - { - _textField = new CSSTextField(); - $sprite.addChild(_textField); - } - } - - - COMPILE::SWF - private var _textField:CSSTextField; - - COMPILE::JS - private var _text:WrappedHTMLElement; - - /** - * @copy org.apache.flex.core.ITextModel#textField - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - COMPILE::SWF - public function get textField() : CSSTextField - { - return _textField; - } - - /** - * Draws text at the given point. - * @param value The string to draw. - * @param xt The x position of the top-left corner of the rectangle. - * @param yt The y position of the top-left corner. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement - * @flexjsignorecoercion Text - * @flexjsignorecoercion Node - * @flexjsignorecoercion SVGLocatable - */ - public function drawText(value:String, xt:Number, yt:Number):void - { - COMPILE::SWF - { - textField.selectable = false; - textField.type = TextFieldType.DYNAMIC; - 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; - } - COMPILE::JS - { - var style:String = this.getStyleStr(); - if (_text == null) { - _text = document.createElementNS('http://www.w3.org/2000/svg', 'text') as WrappedHTMLElement; - _text.flexjs_wrapper = this; - element.appendChild(_text); - } - else { - _text.removeChild(_text.childNodes[0]); - } - _text.setAttribute('style', style); - _text.setAttribute('x', xt); - _text.setAttribute('y', yt); - var textNode:Text = document.createTextNode(value) as Text; - _text.appendChild(textNode as Node); - - resize(x, y, (_text as SVGLocatable).getBBox()); - - } - } - - COMPILE::JS - override protected function draw():void - { - - } - - } -} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7af78c10/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 new file mode 100644 index 0000000..07cc3d5 --- /dev/null +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Circle.as @@ -0,0 +1,119 @@ +/** + * Licensed 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.svg +{ + import org.apache.flex.graphics.ICircle; + + COMPILE::SWF + { + import flash.display.Graphics; + import flash.geom.Point; + import flash.geom.Rectangle; + } + COMPILE::JS + { + import org.apache.flex.core.WrappedHTMLElement; + } + + public class Circle extends GraphicShape implements ICircle + { + /** + * constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7 + */ + public function Circle(cx:Number=0, cy:Number=0, r:Number=0) + { + x = cx; + y = cy; + radius = r; + } + + private var _radius:Number; + + public function get radius():Number + { + return _radius; + } + + public function set radius(value:Number):void + { + _radius = value; + } + + COMPILE::JS + private var _circle:WrappedHTMLElement; + + /** + * Draw the circle. + * @param cx The x location of the center of the circle + * @param cy The y location of the center of the circle. + * @param radius The radius of the circle. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement + * @flexjsignorecoercion SVGCircleElement + */ + public function drawCircle(cx:Number, cy:Number, radius):void + { + COMPILE::SWF + { + $sprite.graphics.clear(); + applyStroke(); + beginFill(new Rectangle(cx,cy,radius*2, radius*2),new Point(cx-radius,cy-radius)); + $sprite.graphics.drawCircle(cx+radius,cy+radius,radius); + endFill(); + } + COMPILE::JS + { + var style:String = getStyleStr(); + + if (_circle == null) { + _circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle') as WrappedHTMLElement; + _circle.flexjs_wrapper = this; + element.appendChild(_circle); + } + _circle.setAttribute('style', style); + if (stroke) + { + _circle.setAttribute('cx', radius + stroke.weight); + _circle.setAttribute('cy', radius + stroke.weight); + } + else + { + _circle.setAttribute('cx', radius); + _circle.setAttribute('cy', radius); + } + + _circle.setAttribute('r', radius); + + resize(x-radius, y-radius, (_circle as SVGCircleElement).getBBox()); + + } + } + + override protected function draw():void + { + drawCircle(0, 0, radius); + } + + } +} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7af78c10/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/CompoundGraphic.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/CompoundGraphic.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/CompoundGraphic.as new file mode 100644 index 0000000..351f871 --- /dev/null +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/CompoundGraphic.as @@ -0,0 +1,584 @@ +/** + * Licensed 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.svg +{ + import org.apache.flex.graphics.ICompoundGraphic; + import org.apache.flex.graphics.IFill; + import org.apache.flex.graphics.IStroke; + import org.apache.flex.graphics.PathBuilder; + import org.apache.flex.graphics.SolidColor; + + COMPILE::SWF + { + import flash.display.GraphicsPath; + import flash.display.Shape; + import flash.display.Sprite; + import flash.geom.Point; + import flash.geom.Rectangle; + import flash.text.TextFieldType; + + import org.apache.flex.core.CSSTextField; + import org.apache.flex.graphics.utils.PathHelper; + } + COMPILE::JS + { + import org.apache.flex.core.WrappedHTMLElement; + } + + /** + * CompoundGraphic is a surface on which you can + * draw various graphic elements such as Rect, Circle, + * Ellipse, Path etc. + * Use this class if you want to draw multiple graphic + * shapes on a single container. + * + */ + public class CompoundGraphic extends GraphicShape implements ICompoundGraphic + { + private var _textFill:IFill; + + public function get textFill():IFill + { + return _textFill; + } + /** + * The color of the text. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion FlexJS 0.0 + */ + public function set textFill(value:IFill):void + { + _textFill = value; + } + + private var _textStroke:IStroke; + + public function get textStroke():IStroke + { + return _textStroke; + } + /** + * The stroke color of the text. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion FlexJS 0.0 + */ + public function set textStroke(value:IStroke):void + { + _textStroke = value; + } + + /** + * Removes all of the drawn elements of the container. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0.3 + */ + public function removeAllElements():void + { + clear(); + } + + /** + * Clears all of the drawn path data. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ + public function clear():void + { + COMPILE::SWF + { + $sprite.graphics.clear(); + $sprite.removeChildren(); + } + COMPILE::JS + { + var svg:HTMLElement = element; + while (svg.lastChild) { + svg.removeChild(svg.lastChild); + } + } + } + + /** + * Draw the rectangle. + * @param x The x position of the top-left corner of the rectangle. + * @param y The y position of the top-left corner. + * @param width The width of the rectangle. + * @param height The height of the rectangle. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0.3 + * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement + */ + public function drawRect(x:Number, y:Number, width:Number, height:Number):void + { + COMPILE::SWF + { + applyStroke(); + beginFill(new Rectangle(x, y, width, height), new Point(x,y) ); + $sprite.graphics.drawRect(x, y, width, height); + endFill(); + } + COMPILE::JS + { + drawRoundRect(x, y, width, height, NaN); + } + } + + /** + * Draws a rounded rectangle. + * Note: The radius values are different than the Flash API of the same name. Flash uses diameter instead of radius. + * @param x The x position of the top-left corner of the rectangle. + * @param y The y position of the top-left corner. + * @param width The width of the rectangle. + * @param height The height of the rectangle. + * @param radiusX The horizontal radius of the rounded corners (in pixels). + * @param radiusY The vertical radius of the rounded corners (in pixels). Optional; if no value is specified, the default value matches that provided for the <code>radiusX</code> parameter. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0.3 + * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement + */ + public function drawRoundRect(x:Number, y:Number, width:Number, height:Number, radiusX:Number, radiusY:Number = NaN):void + { + COMPILE::SWF + { + applyStroke(); + beginFill(new Rectangle(x,y,width,height), new Point(x,y)); + radiusX *=2; + radiusY = isNaN(radiusY) ? radiusY : radiusY*2; + $sprite.graphics.drawRoundRect(x,y,width,height,radiusX,radiusY); + endFill(); + } + COMPILE::JS + { + if(isNaN(radiusY)) + radiusY = radiusX; + + var style:String = getStyleStr(); + var rect:WrappedHTMLElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect') as WrappedHTMLElement; + rect.flexjs_wrapper = this; + rect.style.left = x; + rect.style.top = y; + rect.setAttribute('style', style); + rect.setAttribute('x', x); + rect.setAttribute('y', y); + rect.setAttribute('width', width); + rect.setAttribute('height', height); + if(!isNaN(radiusX)) + { + rect.setAttribute('rx', radiusX); + rect.setAttribute('ry', radiusY); + } + element.appendChild(rect); + } + + } + + /** + * Draw the ellipse. + * @param x The x position of the top-left corner of the bounding box of the ellipse. + * @param y 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 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0.3 + * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement + */ + public function drawEllipse(x:Number, y:Number, width:Number, height:Number):void + { + COMPILE::SWF + { + applyStroke(); + beginFill(new Rectangle(x,y,width,height), new Point(x,y)); + $sprite.graphics.drawEllipse(x,y,width,height); + endFill(); + } + COMPILE::JS + { + var style:String = getStyleStr(); + var ellipse:WrappedHTMLElement = document.createElementNS('http://www.w3.org/2000/svg', 'ellipse') as WrappedHTMLElement; + ellipse.flexjs_wrapper = this; + ellipse.style.left = x; + ellipse.style.top = y; + ellipse.setAttribute('style', style); + ellipse.setAttribute('cx', x + width / 2); + ellipse.setAttribute('cy', y + height / 2); + ellipse.setAttribute('rx', width / 2); + ellipse.setAttribute('ry', height / 2); + element.appendChild(ellipse); + } + } + + /** + * Draw the circle. + * @param x The x location of the center of the circle + * @param y The y location of the center of the circle. + * @param radius The radius of the circle. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement + */ + public function drawCircle(x:Number, y:Number, radius:Number):void + { + COMPILE::SWF + { + applyStroke(); + beginFill(new Rectangle(x,y,radius*2, radius*2),new Point(x-radius,y-radius)); + $sprite.graphics.drawCircle(x,y,radius); + endFill(); + } + COMPILE::JS + { + var style:String = getStyleStr(); + var circle:WrappedHTMLElement = document.createElementNS('http://www.w3.org/2000/svg', 'ellipse') as WrappedHTMLElement; + circle.flexjs_wrapper = this; + circle.style.left = x; + circle.style.top = y; + circle.setAttribute('style', style); + circle.setAttribute('cx', x); + circle.setAttribute('cy', y); + circle.setAttribute('rx', radius); + circle.setAttribute('ry', radius); + element.appendChild(circle); + + } + } + + /** + * Draw the path. + * @param data A PathBuilder object containing a vector of drawing commands. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement + */ + public function drawPathCommands(data:PathBuilder):void + { + drawStringPath(data.getPathString()); + } + + /** + * Draw the path. + * @param data A string containing a compact represention of the path segments. + * The value is a space-delimited string describing each path segment. Each + * segment entry has a single character which denotes the segment type and + * two or more segment parameters. + * + * If the segment command is upper-case, the parameters are absolute values. + * If the segment command is lower-case, the parameters are relative values. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement + */ + public function drawStringPath(data:String):void + { + COMPILE::SWF + { + applyStroke(); + var bounds:Rectangle = PathHelper.getBounds(data); + beginFill(bounds,bounds.topLeft); + var graphicsPath:GraphicsPath = PathHelper.getSegments(data); + $sprite.graphics.drawPath(graphicsPath.commands, graphicsPath.data); + endFill(); + } + COMPILE::JS + { + var style:String = getStyleStr(); + var path:WrappedHTMLElement = document.createElementNS('http://www.w3.org/2000/svg', 'path') as WrappedHTMLElement; + path.flexjs_wrapper = this; + path.style.left = 0; + path.style.top = 0; + path.setAttribute('style', style); + path.setAttribute('d', data); + element.appendChild(path); + } + } + + public function drawLine():void + { + + } + + public function drawPolygon():void + { + + } + + + /** + * Draws a rounded rectangle using the size of a radius to draw the rounded corners. + * You must set the line style, fill, or both + * on the Graphics object before + * you call the <code>drawRoundRectComplex()</code> method + * by calling the <code>linestyle()</code>, + * <code>lineGradientStyle()</code>, <code>beginFill()</code>, + * <code>beginGradientFill()</code>, or + * <code>beginBitmapFill()</code> method. + * + * @param x The horizontal position relative to the + * registration point of the parent display object, in pixels. + * + * @param y The vertical position relative to the + * registration point of the parent display object, in pixels. + * + * @param width The width of the round rectangle, in pixels. + * + * @param height The height of the round rectangle, in pixels. + * + * @param topLeftRadius The radius of the upper-left corner, in pixels. + * + * @param topRightRadius The radius of the upper-right corner, in pixels. + * + * @param bottomLeftRadius The radius of the bottom-left corner, in pixels. + * + * @param bottomRightRadius The radius of the bottom-right corner, in pixels. + * + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function drawRoundRectComplex(x:Number, y:Number, + width:Number, height:Number, + topLeftRadius:Number, topRightRadius:Number, + bottomLeftRadius:Number, bottomRightRadius:Number):void + { + COMPILE::SWF + { + applyStroke(); + beginFill(new Rectangle(x,y,width,height), new Point(x,y)); + $sprite.graphics.drawRoundRectComplex(x,y,width,height,topLeftRadius,topRightRadius,bottomLeftRadius,bottomRightRadius); + endFill(); + } + COMPILE::JS + { + var builder:PathBuilder = new PathBuilder(); + builder.drawRoundRectComplex(x, y, width, height, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius); + drawStringPath(builder.getPathString()); + } + + + } + + /** + * Draws a rounded rectangle using the size of individual x and y radii to + * draw the rounded corners. + * You must set the line style, fill, or both + * on the Graphics object before + * you call the <code>drawRoundRectComplex2()</code> method + * by calling the <code>linestyle()</code>, + * <code>lineGradientStyle()</code>, <code>beginFill()</code>, + * <code>beginGradientFill()</code>, or + * <code>beginBitmapFill()</code> method. + * + * @param graphics The Graphics object that draws the rounded rectangle. + * + * @param x The horizontal position relative to the + * registration point of the parent display object, in pixels. + * + * @param y The vertical position relative to the + * registration point of the parent display object, in pixels. + * + * @param width The width of the round rectangle, in pixels. + * + * @param height The height of the round rectangle, in pixels. + * + * @param radiusX The default radiusX to use, if corner-specific values are not specified. + * This value must be specified. + * + * @param radiusY The default radiusY to use, if corner-specific values are not specified. + * If 0, the value of radiusX is used. + * + * @param topLeftRadiusX The x radius of the upper-left corner, in pixels. If NaN, + * the value of radiusX is used. + * + * @param topLeftRadiusY The y radius of the upper-left corner, in pixels. If NaN, + * the value of topLeftRadiusX is used. + * + * @param topRightRadiusX The x radius of the upper-right corner, in pixels. If NaN, + * the value of radiusX is used. + * + * @param topRightRadiusY The y radius of the upper-right corner, in pixels. If NaN, + * the value of topRightRadiusX is used. + * + * @param bottomLeftRadiusX The x radius of the bottom-left corner, in pixels. If NaN, + * the value of radiusX is used. + * + * @param bottomLeftRadiusY The y radius of the bottom-left corner, in pixels. If NaN, + * the value of bottomLeftRadiusX is used. + * + * @param bottomRightRadiusX The x radius of the bottom-right corner, in pixels. If NaN, + * the value of radiusX is used. + * + * @param bottomRightRadiusY The y radius of the bottom-right corner, in pixels. If NaN, + * the value of bottomRightRadiusX is used. + * + * + * @langversion 3.0 + * @playerversion Flash 10 + * @playerversion AIR 1.5 + * @productversion Flex 4 + */ + public function drawRoundRectComplex2(x:Number, y:Number, + width:Number, height:Number, + radiusX:Number, radiusY:Number, + topLeftRadiusX:Number, topLeftRadiusY:Number, + topRightRadiusX:Number, topRightRadiusY:Number, + bottomLeftRadiusX:Number, bottomLeftRadiusY:Number, + bottomRightRadiusX:Number, bottomRightRadiusY:Number):void + { + var builder:PathBuilder = new PathBuilder(); + builder.drawRoundRectComplex2(x, y, width, height, radiusX, radiusY,topLeftRadiusX, topLeftRadiusY,topRightRadiusX, topRightRadiusY,bottomLeftRadiusX, bottomLeftRadiusY,bottomRightRadiusX, bottomRightRadiusY); + + COMPILE::SWF + { + applyStroke(); + beginFill(new Rectangle(x,y,width,height), new Point(x,y)); + builder.draw($sprite.graphics); + endFill(); + } + COMPILE::JS + { + drawStringPath(builder.getPathString()); + } + } + + /* + What about these? + beginBitmapFill + beginFill + beginGradientFill + beginShaderFill + drawGraphicsData + drawRoundRect + drawTriangles + */ + + /** + * Draw a string of characters. + * @param value The string to draw. + * @param x The x location of the center of the circle + * @param y The y location of the center of the circle. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement + * @flexjsignorecoercion Text + * @flexjsignorecoercion Node + */ + public function drawText(value:String, x:Number, y:Number):Object + { + COMPILE::SWF + { + var textField:CSSTextField = new CSSTextField(); + $sprite.addChild(textField); + + textField.selectable = false; + textField.type = TextFieldType.DYNAMIC; + textField.mouseEnabled = false; + textField.autoSize = "left"; + textField.text = value; + + var color:SolidColor = textFill as SolidColor; + if (color) { + textField.textColor = color.color; + textField.alpha = color.alpha; + } + + textField.x = x; + textField.y = y + textField.textHeight/4; + + return textField; + + } + COMPILE::JS + { + var style:String = getTxtStyleStr(); + var text:WrappedHTMLElement = document.createElementNS('http://www.w3.org/2000/svg', 'text') as WrappedHTMLElement; + text.flexjs_wrapper = this; + text.style.left = x; + text.style.top = y; + text.setAttribute('style', style); + text.setAttribute('x', x); + text.setAttribute('y', y + 15); + var textNode:Text = document.createTextNode(value) as Text; + text.appendChild(textNode as Node); + element.appendChild(text); + return text; + } + } + + /** + * @return {string} The style attribute. + */ + COMPILE::JS + public function getTxtStyleStr():String + { + var fillStr:String; + if (textFill) + { + fillStr = textFill.addFillAttrib(this); + } + else + { + fillStr = 'fill:none'; + } + + var strokeStr:String; + if (textStroke) + { + strokeStr = textStroke.addStrokeAttrib(this); + } + else + { + strokeStr = 'stroke:none'; + } + return fillStr + ';' + strokeStr; + + + } + + } +} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7af78c10/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 new file mode 100644 index 0000000..2cfd95e --- /dev/null +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Ellipse.as @@ -0,0 +1,171 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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.svg +{ + import org.apache.flex.graphics.IEllipse; + + COMPILE::SWF + { + import flash.geom.Point; + import flash.geom.Rectangle; + } + COMPILE::JS + { + import org.apache.flex.core.WrappedHTMLElement; + } + + public class Ellipse extends GraphicShape implements IEllipse + { + /** + * constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7 + */ + public function Ellipse(cx:Number=0, cy:Number=0, rx:Number=0, ry:Number=0) + { + x = cx; + y = cy; + 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 + * @productversion FlexJS 0.7 + */ + public function get rx():Number + { + return _rx; + } + + public function set rx(value:Number):void + { + _rx = value; + } + + private var _ry:Number; + + /** + * The vertical radius of the ellipse. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion FlexJS 0.7 + */ + public function get ry():Number + { + return _ry; + } + + public function set ry(value:Number):void + { + _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 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement + * @flexjsignorecoercion SVGEllipseElement + */ + public function drawEllipse(xp:Number, yp:Number):void + { + COMPILE::SWF + { + $sprite.graphics.clear(); + applyStroke(); + beginFill(new Rectangle(xp, yp, width, height), new Point(xp,yp)); + $sprite.graphics.drawEllipse(xp,yp,width,height); + endFill(); + } + COMPILE::JS + { + var style:String = getStyleStr(); + if (_ellipse == null) { + _ellipse = document.createElementNS('http://www.w3.org/2000/svg', 'ellipse') as WrappedHTMLElement; + _ellipse.flexjs_wrapper = this; + element.appendChild(_ellipse); + } + _ellipse.setAttribute('style', style); + if (stroke) + { + _ellipse.setAttribute('cx', rx + stroke.weight); + _ellipse.setAttribute('cy', ry + stroke.weight); + } + else + { + _ellipse.setAttribute('cx', rx); + _ellipse.setAttribute('cy', ry); + } + _ellipse.setAttribute('rx', rx); + _ellipse.setAttribute('ry', ry); + + resize(x, y, (_ellipse as SVGEllipseElement).getBBox()); + + } + } + + override protected function draw():void + { + drawEllipse(0, 0); + } + + } +}