You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cd...@apache.org on 2016/11/05 15:22:28 UTC
[22/54] [abbrv] git commit: [flex-asjs]
[refs/heads/feature-autobuild/example-maven-dirs] - move more UIBase to HTML
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7af78c10/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
new file mode 100644
index 0000000..8f9e326
--- /dev/null
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/GraphicShape.as
@@ -0,0 +1,233 @@
+/**
+ * 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/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
new file mode 100644
index 0000000..3369e47
--- /dev/null
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Path.as
@@ -0,0 +1,133 @@
+/**
+ * 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/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
new file mode 100644
index 0000000..14f153e
--- /dev/null
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Rect.as
@@ -0,0 +1,156 @@
+/**
+ * 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/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
new file mode 100644
index 0000000..51b8135
--- /dev/null
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/svg/Text.as
@@ -0,0 +1,150 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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
+ {
+
+ }
+
+ }
+}