You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2014/10/24 21:39:46 UTC
[2/3] git commit: [flex-asjs] [refs/heads/develop] - Added
graphics-optimized versions of itemRenderers to use SVG more efficiently.
Added graphics-optimized versions of itemRenderers to use SVG more efficiently.
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/047b3a37
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/047b3a37
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/047b3a37
Branch: refs/heads/develop
Commit: 047b3a372055168763668de3b2bca48f361c86f3
Parents: ecd88a1
Author: Peter Ent <pe...@apache.org>
Authored: Fri Oct 24 15:38:42 2014 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Fri Oct 24 15:38:42 2014 -0400
----------------------------------------------------------------------
.../as/projects/FlexJSJX/basic-manifest.xml | 5 +
.../as/projects/FlexJSJX/src/FlexJSJXClasses.as | 5 +
.../optimized/SVGBoxItemRenderer.as | 207 ++++++++++++++
.../optimized/SVGChartDataGroup.as | 157 +++++++++++
.../optimized/SVGLineSegmentItemRenderer.as | 201 +++++++++++++
.../optimized/SVGWedgeItemRenderer.as | 281 +++++++++++++++++++
.../src/org/apache/flex/core/IContentView.js | 103 +++++++
7 files changed, 959 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/047b3a37/frameworks/as/projects/FlexJSJX/basic-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/basic-manifest.xml b/frameworks/as/projects/FlexJSJX/basic-manifest.xml
index f35189b..bab814f 100644
--- a/frameworks/as/projects/FlexJSJX/basic-manifest.xml
+++ b/frameworks/as/projects/FlexJSJX/basic-manifest.xml
@@ -52,6 +52,11 @@
<component id="LineChartLinearVsLinearLayout" class="org.apache.flex.charts.beads.layouts.LineChartLinearVsLinearLayout" />
<component id="VerticalColumnLayout" class="org.apache.flex.html.beads.layouts.VerticalColumnLayout" />
+ <component id="SVGChartDataGroup" class="org.apache.flex.charts.supportClasses.optimized.SVGChartDataGroup"/>
+ <component id="SVGBoxItemRenderer" class="org.apache.flex.charts.supportClasses.optimized.SVGBoxItemRenderer"/>
+ <component id="SVGWedgeItemRenderer" class="org.apache.flex.charts.supportClasses.optimized.SVGWedgeItemRenderer"/>
+ <component id="SVGLineSegmentItemRenderer" class="org.apache.flex.charts.supportClasses.optimized.SVGLineSegmentItemRenderer"/>
+
<component id="Fade" class="org.apache.flex.effects.Fade"/>
<component id="Move" class="org.apache.flex.effects.Move"/>
<component id="Resize" class="org.apache.flex.effects.Resize"/>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/047b3a37/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as b/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as
index 19a1fcb..2c8c944 100644
--- a/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as
+++ b/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as
@@ -27,6 +27,7 @@ package
*/
internal class FlexJSJXClasses
{
+
import org.apache.flex.charts.beads.ChartItemRendererFactory; ChartItemRendererFactory;
import org.apache.flex.charts.beads.DataItemRendererFactoryForSeriesData; DataItemRendererFactoryForSeriesData;
import org.apache.flex.charts.beads.HorizontalCategoryAxisBead; HorizontalCategoryAxisBead;
@@ -46,6 +47,10 @@ internal class FlexJSJXClasses
import org.apache.flex.charts.supportClasses.BoxItemRenderer; BoxItemRenderer;
import org.apache.flex.charts.supportClasses.LineSegmentItemRenderer; LineSegmentItemRenderer;
import org.apache.flex.charts.supportClasses.WedgeItemRenderer; WedgeItemRenderer;
+ import org.apache.flex.charts.supportClasses.optimized.SVGChartDataGroup; SVGChartDataGroup;
+ import org.apache.flex.charts.supportClasses.optimized.SVGBoxItemRenderer; SVGBoxItemRenderer;
+ import org.apache.flex.charts.supportClasses.optimized.SVGWedgeItemRenderer; SVGWedgeItemRenderer;
+ import org.apache.flex.charts.supportClasses.optimized.SVGLineSegmentItemRenderer; SVGLineSegmentItemRenderer;
import org.apache.flex.effects.Tween; Tween;
import org.apache.flex.effects.Move; Move;
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/047b3a37/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGBoxItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGBoxItemRenderer.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGBoxItemRenderer.as
new file mode 100644
index 0000000..a85b554
--- /dev/null
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGBoxItemRenderer.as
@@ -0,0 +1,207 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.charts.supportClasses.optimized
+{
+ import org.apache.flex.charts.core.IChartItemRenderer;
+ import org.apache.flex.charts.core.IChartSeries;
+ import org.apache.flex.core.graphics.GraphicsContainer;
+ import org.apache.flex.core.graphics.IFill;
+ import org.apache.flex.core.graphics.IStroke;
+ import org.apache.flex.core.graphics.SolidColor;
+ import org.apache.flex.core.graphics.SolidColorStroke;
+ import org.apache.flex.html.supportClasses.DataItemRenderer;
+
+ /**
+ * The SVGBoxItemRenderer draws its graphics directly into a SVGChartDataGroup
+ * (GraphicsContainer).
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public class SVGBoxItemRenderer extends DataItemRenderer implements IChartItemRenderer
+ {
+ /**
+ * constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function SVGBoxItemRenderer()
+ {
+ super();
+ }
+
+ private var _series:IChartSeries;
+
+ /**
+ * The series to which this itemRenderer instance belongs. Or, the series
+ * being presented.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get series():IChartSeries
+ {
+ return _series;
+ }
+ public function set series(value:IChartSeries):void
+ {
+ _series = value;
+ }
+
+ private var _yField:String = "y";
+
+ /**
+ * The name of the field containing the value for the Y axis.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get yField():String
+ {
+ return _yField;
+ }
+ public function set yField(value:String):void
+ {
+ _yField = value;
+ }
+
+ private var _xField:String = "x";
+
+ /**
+ * The name of the field containing the value for the X axis.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get xField():String
+ {
+ return _xField;
+ }
+ public function set xField(value:String):void
+ {
+ _xField = value;
+ }
+
+ private var _fill:IFill;
+
+ /**
+ * The color used to fill the interior of the box.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get fill():IFill
+ {
+ return _fill;
+ }
+ public function set fill(value:IFill):void
+ {
+ _fill = value;
+ }
+
+ private var _stroke:IStroke;
+
+ /**
+ * The outline of the box.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get stroke():IStroke
+ {
+ return _stroke;
+ }
+ public function set stroke(value:IStroke):void
+ {
+ _stroke = value;
+ }
+
+ /**
+ * @copy org.apache.flex.supportClasses.UIItemRendererBase#data
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function set data(value:Object):void
+ {
+ super.data = value;
+ drawBar();
+ }
+
+ /**
+ * @copy org.apache.flex.core.UIBase#width
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function set width(value:Number):void
+ {
+ super.width = value;
+ drawBar();
+ }
+
+ /**
+ * @copy org.apache.flex.core.UIBase#height
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function set height(value:Number):void
+ {
+ super.height = value;
+ drawBar();
+ }
+
+ /**
+ * @private
+ */
+ protected function drawBar():void
+ {
+ if ((this.width > 0) && (this.height > 0))
+ {
+ var hsdg:SVGChartDataGroup = this.itemRendererParent as SVGChartDataGroup;
+
+ hsdg.fill = fill;
+ hsdg.stroke = stroke;
+ hsdg.drawRect(this.x, this.y, this.width, this.height);
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/047b3a37/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGChartDataGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGChartDataGroup.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGChartDataGroup.as
new file mode 100644
index 0000000..c1a48d1
--- /dev/null
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGChartDataGroup.as
@@ -0,0 +1,157 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.charts.supportClasses.optimized
+{
+ import org.apache.flex.charts.core.IChartDataGroup;
+ import org.apache.flex.charts.core.IChartItemRenderer;
+ import org.apache.flex.charts.core.IChartSeries;
+ import org.apache.flex.core.IContentView;
+ import org.apache.flex.core.IItemRenderer;
+ import org.apache.flex.core.IItemRendererParent;
+ import org.apache.flex.core.UIBase;
+ import org.apache.flex.core.graphics.GraphicsContainer;
+ import org.apache.flex.events.Event;
+
+ /**
+ * The SVGChartDataGroup serves as the drawing canvas for SVG itemRenderers. Rather than having
+ * individual itemRenderer objects in the display list, this class provides a canvas where the
+ * itemRenderers can draw directly using the flex.core.graphics package.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public class SVGChartDataGroup extends GraphicsContainer implements IItemRendererParent, IContentView, IChartDataGroup
+ {
+ /**
+ * constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function SVGChartDataGroup()
+ {
+ super();
+
+ _children = new Array();
+
+ addEventListener("widthChanged", resizeContainer);
+ addEventListener("heightChanged", resizeContainer);
+ }
+
+ private var _children:Array;
+
+ /**
+ * @copy org.apache.flex.core.IItemRendererParent#getItemRendererForIndex()
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function getItemRendererForIndex(index:int):IItemRenderer
+ {
+ if (index < 0 || index >= _children.length) return null;
+ return _children[index] as IItemRenderer;
+ }
+
+ /**
+ * Returns the itemRenderer that matches both the series and child index. A null return is
+ * valid since some charts have optional itemRenderers for their series.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function getItemRendererForSeriesAtIndex(series:IChartSeries, index:int):IChartItemRenderer
+ {
+ var n:int = _children.length;
+ for(var i:int=0; i < n; i++)
+ {
+ var child:IChartItemRenderer = _children[i] as IChartItemRenderer;
+ if (child && child.series == series) {
+ if (index == 0) return child;
+ --index;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @copy org.apache.flex.core.IItemRendererParent#removeAllElements()
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function removeAllElements():void
+ {
+ _children = new Array();
+ }
+
+ /**
+ * Overrides the addElement function to set the element into an internal
+ * list.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function addElement(value:Object):void
+ {
+ _children.push(value);
+
+ var base:UIBase = value as UIBase;
+ base.addedToParent();
+ }
+
+ /**
+ * Overrides the addElementAt function to set the element into an internal
+ * list.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function addElementAt(value:Object, index:int):void
+ {
+ if (index >= _children.length) _children.push(value);
+ else _children.splice(index, 0, value);
+
+ var base:UIBase = value as UIBase;
+ base.addedToParent();
+ }
+
+ /**
+ * @private
+ */
+ private function resizeContainer(event:Event) : void
+ {
+ // might need to do something with this
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/047b3a37/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGLineSegmentItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGLineSegmentItemRenderer.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGLineSegmentItemRenderer.as
new file mode 100644
index 0000000..7f030d2
--- /dev/null
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGLineSegmentItemRenderer.as
@@ -0,0 +1,201 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.charts.supportClasses.optimized
+{
+ import org.apache.flex.charts.core.IChartSeries;
+ import org.apache.flex.core.graphics.GraphicsContainer;
+ import org.apache.flex.core.graphics.IStroke;
+ import org.apache.flex.core.graphics.Path;
+ import org.apache.flex.core.graphics.SolidColorStroke;
+ import org.apache.flex.html.supportClasses.DataItemRenderer;
+ import org.apache.flex.charts.supportClasses.ILineSegmentItemRenderer;
+
+ /**
+ * The SVGLineSegmentItemRenderer draws its graphics directly into a SVGChartDataGroup (a
+ * GraphicsContainer).
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public class SVGLineSegmentItemRenderer extends DataItemRenderer implements ILineSegmentItemRenderer
+ {
+ /**
+ * constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function SVGLineSegmentItemRenderer()
+ {
+ super();
+ }
+
+ private var _series:IChartSeries;
+
+ /**
+ * The series to which this itemRenderer instance belongs. Or, the series
+ * being presented.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get series():IChartSeries
+ {
+ return _series;
+ }
+ public function set series(value:IChartSeries):void
+ {
+ _series = value;
+ }
+
+ private var _points:Array;
+
+ /**
+ * The points of the vertices.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get points():Array
+ {
+ return _points;
+ }
+ public function set points(value:Array):void
+ {
+ _points = value;
+ drawLine();
+ }
+
+ private var _stroke:IStroke;
+
+ public function get stroke():IStroke
+ {
+ return _stroke;
+ }
+ public function set stroke(value:IStroke):void
+ {
+ _stroke = value;
+ drawLine();
+ }
+
+ /**
+ * @copy org.apache.flex.supportClasses.UIItemRendererBase#data
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function set data(value:Object):void
+ {
+ super.data = value;
+ }
+
+ /**
+ * The name of the field containing the value for the Y axis. This is not implemented by this class.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get yField():String
+ {
+ return null;
+ }
+ public function set yField(value:String):void
+ {
+ }
+
+ /**
+ * The name of the field containing the value for the X axis. This is not implemented by this class.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get xField():String
+ {
+ return null;
+ }
+ public function set xField(value:String):void
+ {
+ }
+
+ private var _fillColor:uint;
+
+ /**
+ * The color used to fill the interior of the box.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get fillColor():uint
+ {
+ return _fillColor;
+ }
+ public function set fillColor(value:uint):void
+ {
+ _fillColor = value;
+ }
+
+ /**
+ * @private
+ */
+ protected function drawLine():void
+ {
+ if (points != null)
+ {
+ var graphicsContainer:GraphicsContainer = this.itemRendererParent as GraphicsContainer;
+
+ if (stroke == null) {
+ var solidColorStroke:SolidColorStroke = new SolidColorStroke();
+ solidColorStroke.color = 0x000088;
+ solidColorStroke.weight = 1;
+ solidColorStroke.alpha = 1;
+ _stroke = solidColorStroke;
+ }
+
+ graphicsContainer.stroke = stroke;
+ graphicsContainer.fill = null;
+
+ var pathString:String = "";
+
+ for (var i:int=0; i < points.length; i++) {
+ var point:Object = points[i];
+ if (i == 0) pathString += "M "+point.x+" "+point.y+" ";
+ else pathString += "L "+point.x+" "+point.y+" ";
+ }
+
+ graphicsContainer.drawPath(pathString);
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/047b3a37/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGWedgeItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGWedgeItemRenderer.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGWedgeItemRenderer.as
new file mode 100644
index 0000000..1fc58a6
--- /dev/null
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGWedgeItemRenderer.as
@@ -0,0 +1,281 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.charts.supportClasses.optimized
+{
+ import org.apache.flex.charts.core.IChartSeries;
+ import org.apache.flex.core.graphics.GraphicsContainer;
+ import org.apache.flex.core.graphics.IFill;
+ import org.apache.flex.core.graphics.IStroke;
+ import org.apache.flex.core.graphics.Path;
+ import org.apache.flex.html.supportClasses.DataItemRenderer;
+ import org.apache.flex.charts.supportClasses.IWedgeItemRenderer;
+
+ /**
+ * The SVGWedgeItemRenderer draws its graphics directly into a SVGChartDataGroup
+ * (a GraphicsContainer).
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public class SVGWedgeItemRenderer extends DataItemRenderer implements IWedgeItemRenderer
+ {
+ /**
+ * constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function SVGWedgeItemRenderer()
+ {
+ super();
+ }
+
+ private var _series:IChartSeries;
+
+ /**
+ * The series to which this itemRenderer instance belongs. Or, the series
+ * being presented.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get series():IChartSeries
+ {
+ return _series;
+ }
+ public function set series(value:IChartSeries):void
+ {
+ _series = value;
+ }
+
+ private var _centerX:Number;
+
+ /**
+ * The X coordinate of the center of the pie.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get centerX():Number
+ {
+ return _centerX;
+ }
+ public function set centerX(value:Number):void
+ {
+ _centerX = value;
+ drawWedgeInternal();
+ }
+
+ private var _centerY:Number;
+
+ /**
+ * The Y coordinate of the center of the pie.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get centerY():Number
+ {
+ return _centerY;
+ }
+ public function set centerY(value:Number):void
+ {
+ _centerY = value;
+ drawWedgeInternal();
+ }
+
+ private var _startAngle:Number;
+
+ /**
+ * The starting angle (radians) of the wedge.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get startAngle():Number
+ {
+ return _startAngle;
+ }
+ public function set startAngle(value:Number):void
+ {
+ _startAngle = value;
+ drawWedgeInternal();
+ }
+
+ private var _arc:Number;
+
+ /**
+ * The sweep (radians) of the wedge, relative to the startAngle.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get arc():Number
+ {
+ return _arc;
+ }
+ public function set arc(value:Number):void
+ {
+ _arc = value;
+ drawWedgeInternal();
+ }
+
+ private var _radius:Number;
+
+ /**
+ * The radius of the pie.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get radius():Number
+ {
+ return _radius;
+ }
+ public function set radius(value:Number):void
+ {
+ _radius = value;
+ drawWedgeInternal();
+ }
+
+ private var _fill:IFill;
+
+ /**
+ * The color used to fill the interior of the box.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get fill():IFill
+ {
+ return _fill;
+ }
+ public function set fill(value:IFill):void
+ {
+ _fill = value;
+ }
+
+ private var _stroke:IStroke;
+
+ /**
+ * The outline of the box.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get stroke():IStroke
+ {
+ return _stroke;
+ }
+ public function set stroke(value:IStroke):void
+ {
+ _stroke = value;
+ }
+
+ /**
+ * @private
+ */
+ private function drawWedgeInternal():void
+ {
+ if ( !isNaN(centerX) && !isNaN(centerY) && !isNaN(startAngle) && !isNaN(arc) && !isNaN(radius) ) {
+ drawWedge(centerX, centerY, startAngle, arc, radius, radius, false);
+ }
+ }
+
+ /**
+ * @private
+ *
+ * Draw a wedge of a circle
+ * @param graphics the graphics object to draw into
+ * @param x the x center of the circle
+ * @param y the y center of the circle
+ * @param startAngle start angle (radians)
+ * @param arc sweep angle (radians)
+ * @param radius radius of the circle
+ * @param yRadius vertical radius (or radius if none given)
+ * @param continueFlag if true, uses a moveTo call to start drawing at the start point of the circle; else continues drawing using only lineTo and curveTo
+ *
+ */
+ public function drawWedge(x:Number, y:Number,
+ startAngle:Number, arc:Number,
+ radius:Number, yRadius:Number = NaN,
+ continueFlag:Boolean = false):void
+ {
+ var graphicsContainer:GraphicsContainer = this.itemRendererParent as GraphicsContainer;
+
+ var x1:Number = x + radius * Math.cos(startAngle);
+ var y1:Number = y + radius * Math.sin(startAngle);
+ var x2:Number = x + radius * Math.cos(startAngle + arc);
+ var y2:Number = y + radius * Math.sin(startAngle + arc);
+
+ var pathString:String = 'M' + x + ' ' + y + ' L' + x1 + ' ' + y1 + ' A' + radius + ' ' + radius +
+ ' 0 0 1 ' + x2 + ' ' + y2 + ' z';
+
+ graphicsContainer.fill = fill;
+ graphicsContainer.stroke = stroke;
+ graphicsContainer.drawPath(pathString);
+ }
+
+ /*
+ * Ignored by WedgeItemRenderer
+ */
+
+ /**
+ * @private
+ */
+ public function get xField():String
+ {
+ return null;
+ }
+ public function set xField(value:String):void
+ {
+ }
+
+ /**
+ * @private
+ */
+ public function get yField():String
+ {
+ return null;
+ }
+ public function set yField(value:String):void
+ {
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/047b3a37/frameworks/js/FlexJS/src/org/apache/flex/core/IContentView.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/IContentView.js b/frameworks/js/FlexJS/src/org/apache/flex/core/IContentView.js
new file mode 100644
index 0000000..d326978
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/IContentView.js
@@ -0,0 +1,103 @@
+/**
+ * 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.
+ */
+
+/**
+ * org.apache.flex.core.IContentView
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org.apache.flex.core.IContentView');
+
+
+
+/**
+ * @interface
+ */
+org.apache.flex.core.IContentView = function() {
+};
+
+
+/**
+ * @return {number} x position.
+ */
+org.apache.flex.core.IContentView.prototype.get_x = function() {};
+
+
+/**
+ * @param {number} value x position.
+ */
+org.apache.flex.core.IContentView.prototype.set_x = function(value) {};
+
+
+/**
+ * @return {number} y position.
+ */
+org.apache.flex.core.IContentView.prototype.get_y = function() {};
+
+
+/**
+ * @param {number} value y position.
+ */
+org.apache.flex.core.IContentView.prototype.set_y = function(value) {};
+
+
+/**
+ * @return {number} Component width.
+ */
+org.apache.flex.core.IContentView.prototype.get_width = function() {};
+
+
+/**
+ * @param {number} value Component width.
+ */
+org.apache.flex.core.IContentView.prototype.set_width = function(value) {};
+
+
+/**
+ * @return {number} Component height.
+ */
+org.apache.flex.core.IContentView.prototype.get_height = function() {};
+
+
+/**
+ * @param {number} value Component height.
+ */
+org.apache.flex.core.IContentView.prototype.set_height = function(value) {};
+
+
+/**
+ * Adds a new element to component.
+ * @param {Object} value The child element being added.
+ */
+org.apache.flex.core.IContentView.prototype.addElement = function(value) {};
+
+
+/**
+ * Removes all of the component's children.
+ * @return {void}
+ */
+org.apache.flex.core.IContentView.prototype.removeAllElements = function() {};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.core.IContentView.prototype.FLEXJS_CLASS_INFO = {
+ names: [{ name: 'IContentView', qName: 'org.apache.flex.core.IContentView'}]
+};