Repository: flex-asjs Updated Branches: refs/heads/develop b2243a0b3 -> e88fe7ff4
Cleaned up drawing APIs I removed drawPath in favor of two separate drawStringPath and drawPathCommands methods. drawPathCommands will probably be the best way to draw paths using canvas, but either way should work. Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/e88fe7ff Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/e88fe7ff Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/e88fe7ff Branch: refs/heads/develop Commit: e88fe7ff4b2d49b4aed145cc7616a95c0d10eddc Parents: b2243a0 Author: Harbs <ha...@in-tools.com> Authored: Tue Jul 26 12:32:57 2016 +0300 Committer: Harbs <ha...@in-tools.com> Committed: Tue Jul 26 12:32:57 2016 +0300 ---------------------------------------------------------------------- .../flex/charts/optimized/SVGChartAxisGroup.as | 4 +- .../optimized/SVGLineSegmentItemRenderer.as | 2 +- .../charts/optimized/SVGWedgeItemRenderer.as | 2 +- .../charts/supportClasses/ChartAxisGroup.as | 6 +- .../charts/supportClasses/WedgeItemRenderer.as | 2 +- .../apache/flex/graphics/ICompoundGraphic.as | 3 +- .../org/apache/flex/graphics/PathBuilder.as | 5 +- .../flex/org/apache/flex/svg/CompoundGraphic.as | 21 +++- .../src/main/flex/org/apache/flex/svg/Path.as | 126 ++++++++++++------- .../flex/html/beads/DecrementButtonView.as | 2 +- .../flex/html/beads/IncrementButtonView.as | 2 +- 11 files changed, 113 insertions(+), 62 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e88fe7ff/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartAxisGroup.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartAxisGroup.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartAxisGroup.as index bff0849..1c8b6a2 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartAxisGroup.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGChartAxisGroup.as @@ -115,7 +115,7 @@ package org.apache.flex.charts.optimized public function drawTickMarks( originX:Number, originY:Number, width:Number, height:Number, marks:String, tickStroke:IStroke ):void { stroke = tickStroke; - drawPath(marks); + drawStringPath(marks); } /** @@ -136,7 +136,7 @@ package org.apache.flex.charts.optimized { stroke = lineStroke; var pathLine:String = "M " + String(originX) + " " + String(originY) + " l "+String(width)+" "+String(height); - drawPath(pathLine); + drawStringPath(pathLine); } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e88fe7ff/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGLineSegmentItemRenderer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGLineSegmentItemRenderer.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGLineSegmentItemRenderer.as index d271474..697c611 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGLineSegmentItemRenderer.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGLineSegmentItemRenderer.as @@ -198,7 +198,7 @@ package org.apache.flex.charts.optimized else pathString += "L "+point.x+" "+point.y+" "; } - graphicsContainer.drawPath(pathString); + graphicsContainer.drawStringPath(pathString); } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e88fe7ff/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGWedgeItemRenderer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGWedgeItemRenderer.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGWedgeItemRenderer.as index e61fd7d..cefd46d 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGWedgeItemRenderer.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/optimized/SVGWedgeItemRenderer.as @@ -249,7 +249,7 @@ package org.apache.flex.charts.optimized graphicsContainer.fill = fill; graphicsContainer.stroke = stroke; - graphicsContainer.drawPath(pathString); + graphicsContainer.drawStringPath(pathString); } /* http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e88fe7ff/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/supportClasses/ChartAxisGroup.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/supportClasses/ChartAxisGroup.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/supportClasses/ChartAxisGroup.as index 2a85372..670130c 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/supportClasses/ChartAxisGroup.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/supportClasses/ChartAxisGroup.as @@ -149,7 +149,7 @@ package org.apache.flex.charts.supportClasses tickPath.height = this.height; addElement(tickPath); tickPath.stroke = tickStroke; - tickPath.drawPath( 0, 0, marks ); + tickPath.drawStringPath( 0, 0, marks ); } /** @@ -175,8 +175,8 @@ package org.apache.flex.charts.supportClasses axisPath.height = this.height; addElement(axisPath); axisPath.stroke = lineStroke; - var pathLine:String = "M " + String(originX) + " " + String(originY) + " l "+String(width)+" "+String(height); - axisPath.drawPath(0, 0, pathLine); + var pathLine:String = "M " + originX + " " + originY + " l "+width+" "+height; + axisPath.drawStringPath(0, 0, pathLine); } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e88fe7ff/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/supportClasses/WedgeItemRenderer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/supportClasses/WedgeItemRenderer.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/supportClasses/WedgeItemRenderer.as index c4aee25..6918f35 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/supportClasses/WedgeItemRenderer.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/supportClasses/WedgeItemRenderer.as @@ -317,7 +317,7 @@ package org.apache.flex.charts.supportClasses filledPath.fill = fill; } - filledPath.drawPath(0, 0, filledPath.data); + filledPath.drawStringPath(0, 0, filledPath.data); } /* http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e88fe7ff/frameworks/projects/Graphics/src/main/flex/org/apache/flex/graphics/ICompoundGraphic.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/graphics/ICompoundGraphic.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/graphics/ICompoundGraphic.as index 20f7a74..164dea6 100644 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/graphics/ICompoundGraphic.as +++ b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/graphics/ICompoundGraphic.as @@ -20,7 +20,8 @@ package org.apache.flex.graphics function drawRect(x:Number, y:Number, width:Number, height:Number):void; function drawEllipse(x:Number, y:Number, width:Number, height:Number):void; function drawCircle(x:Number, y:Number, radius:Number):void; - function drawPath(data:String):void; + function drawStringPath(data:String):void; + function drawPathCommands(data:PathBuilder):void function drawText(value:String, x:Number, y:Number):Object; function get textFill():IFill; function set textFill(value:IFill):void; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e88fe7ff/frameworks/projects/Graphics/src/main/flex/org/apache/flex/graphics/PathBuilder.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/graphics/PathBuilder.as b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/graphics/PathBuilder.as index 3b376c7..e5702cf 100644 --- a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/graphics/PathBuilder.as +++ b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/graphics/PathBuilder.as @@ -14,7 +14,10 @@ package org.apache.flex.graphics { - import flash.display.Graphics; + COMPILE::SWF + { + import flash.display.Graphics; + } public class PathBuilder { http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e88fe7ff/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 index e5efffe..a57cb5a 100644 --- 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 @@ -279,6 +279,21 @@ package org.apache.flex.svg /** * 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 @@ -293,7 +308,7 @@ package org.apache.flex.svg * @productversion FlexJS 0.0 * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement */ - public function drawPath(data:String):void + public function drawStringPath(data:String):void { COMPILE::SWF { @@ -380,7 +395,7 @@ package org.apache.flex.svg { var builder:PathBuilder = new PathBuilder(); builder.drawRoundRectComplex(x, y, width, height, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius); - drawPath(builder.getPathString()); + drawStringPath(builder.getPathString()); } @@ -465,7 +480,7 @@ package org.apache.flex.svg } COMPILE::JS { - drawPath(builder.getPathString()); + drawStringPath(builder.getPathString()); } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e88fe7ff/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 index ac5d023..6ca59ab 100644 --- 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 @@ -14,6 +14,8 @@ package org.apache.flex.svg { + import org.apache.flex.graphics.PathBuilder; + COMPILE::SWF { import flash.display.GraphicsPath; @@ -21,49 +23,79 @@ package org.apache.flex.svg import flash.geom.Rectangle; import org.apache.flex.graphics.utils.PathHelper; } - COMPILE::JS + COMPILE::JS { import org.apache.flex.core.WrappedHTMLElement; } - public class Path extends GraphicShape - { + public class Path extends GraphicShape + { + + private var _data:String; + + public function get data():String + { + return _data; + } - private var _data:String; + public function set data(value:String):void + { + _data = value; + _pathCommands = null; + } + + private var _pathCommands:PathBuilder; - public function get data():String - { - return _data; - } + public function get pathCommands():PathBuilder + { + return _pathCommands; + } - public function set data(value:String):void - { - _data = value; - } - - COMPILE::JS - private var _path:WrappedHTMLElement; + public function set pathCommands(value:PathBuilder):void + { + _pathCommands = value; + _data = _pathCommands.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 drawPath(xp:Number,yp:Number,data:String):void - { - COMPILE::SWF + + 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 { graphics.clear(); applyStroke(); @@ -79,22 +111,22 @@ package org.apache.flex.svg { 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); + 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 - { - drawPath(0, 0, data); - } - } + override protected function draw():void + { + drawStringPath(0, 0, data); + } + } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e88fe7ff/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DecrementButtonView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DecrementButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DecrementButtonView.as index fd3ee2e..19026ce 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DecrementButtonView.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DecrementButtonView.as @@ -88,7 +88,7 @@ package org.apache.flex.html.beads _arrow.setWidthAndHeight(xm, ym, true); _arrow.y = 2; _arrow.x = 0; - _arrow.drawPath(0, 0, "M "+String(xm)+" "+String(ym)+" L "+String(xm-8)+" 2 "+String(xm+8)+" 2 "+String(xm)+" "+String(ym)+" Z"); + _arrow.drawStringPath(0, 0, "M "+xm+" "+ym+" L "+(xm-8)+" 2 "+(xm+8)+" 2 "+xm+" "+ym+" Z"); } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e88fe7ff/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/IncrementButtonView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/IncrementButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/IncrementButtonView.as index 8f27064..de1296b 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/IncrementButtonView.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/IncrementButtonView.as @@ -88,7 +88,7 @@ package org.apache.flex.html.beads _arrow.setWidthAndHeight(xm, ym, true); _arrow.y = 2; _arrow.x = 0; - _arrow.drawPath(0, 0, "M "+String(xm)+" 2 L "+String(xm-8)+" "+String(ym)+" L "+String(xm+8)+" "+String(ym)+" Z"); + _arrow.drawStringPath(0, 0, "M "+xm+" 2 L "+(xm-8)+" "+ym+" L "+(xm+8)+" "+ym+" Z"); } } }