| Index: charted/lib/svg/shapes/arc.dart
|
| diff --git a/charted/lib/svg/shapes/arc.dart b/charted/lib/svg/shapes/arc.dart
|
| deleted file mode 100644
|
| index 78797b10e1c4f2bfc0e3e42a9cc33ceaab499edc..0000000000000000000000000000000000000000
|
| --- a/charted/lib/svg/shapes/arc.dart
|
| +++ /dev/null
|
| @@ -1,131 +0,0 @@
|
| -//
|
| -// Copyright 2014 Google Inc. All rights reserved.
|
| -//
|
| -// Use of this source code is governed by a BSD-style
|
| -// license that can be found in the LICENSE file or at
|
| -// https://developers.google.com/open-source/licenses/bsd
|
| -//
|
| -
|
| -part of charted.svg.shapes;
|
| -
|
| -///
|
| -/// [SvgArc] provides a data-driven way to create path descriptions
|
| -/// that can be used to draw arcs - like those used in pie-charts.
|
| -///
|
| -class SvgArc implements SvgShape {
|
| - static const _OFFSET = -HALF_PI;
|
| - static const _MAX = TAU - EPSILON;
|
| -
|
| - /// [innerRadiusCallback] is called to get inner radius of the arc.
|
| - /// As with other callbacks, [innerRadiusCallback] is passed data, index
|
| - /// and element in the context.
|
| - final SelectionCallback<num> innerRadiusCallback;
|
| -
|
| - /// [outerRadiusCallback] is called to get outer radius of the arc.
|
| - /// As with other callbacks, [outerRadiusCallback] is passed data, index
|
| - /// and element in the context.
|
| - final SelectionCallback<num> outerRadiusCallback;
|
| -
|
| - /// [startAngleCallback] is called to get the start angle of the arc.
|
| - /// As with other callbacks, [startAngleCallback] is passed data, index
|
| - /// and element in the context.
|
| - final SelectionCallback<num> startAngleCallback;
|
| -
|
| - /// [endAngleCallback] is called to get the start angle of the arc.
|
| - /// As with other callbacks, [endAngleCallback] is passed data, index
|
| - /// and element in the context.
|
| - final SelectionCallback<num> endAngleCallback;
|
| -
|
| - SvgArc({
|
| - this.innerRadiusCallback : defaultInnerRadiusCallback,
|
| - this.outerRadiusCallback: defaultOuterRadiusCallback,
|
| - this.startAngleCallback: defaultStartAngleCallback,
|
| - this.endAngleCallback: defaultEndAngleCallback
|
| - });
|
| -
|
| - String path(d, int i, Element e) {
|
| - var ir = innerRadiusCallback(d, i, e),
|
| - or = outerRadiusCallback(d, i, e),
|
| - start = startAngleCallback(d, i, e) + _OFFSET,
|
| - end = endAngleCallback(d, i, e) + _OFFSET,
|
| - sa = math.min(start, end),
|
| - ea = math.max(start, end),
|
| - delta = ea - sa;
|
| -
|
| - if (delta > _MAX) {
|
| - return ir > 0
|
| - ? "M0,$or" "A$or,$or 0 1,1 0,-$or" "A$or,$or 0 1,1 0,$or"
|
| - "M0,$ir" "A$ir,$ir 0 1,0 0,-$ir" "A$ir,$ir 0 1,0 0,$ir" "Z"
|
| - : "M0,$or" "A$or,$or 0 1,1 0,-$or" "A$or,$or 0 1,1 0,$or" "Z";
|
| - }
|
| -
|
| - var ss = math.sin(sa),
|
| - se = math.sin(ea),
|
| - cs = math.cos(sa),
|
| - ce = math.cos(ea),
|
| - df = delta < PI ? 0 : 1;
|
| -
|
| - return ir > 0
|
| - ? "M${or * cs},${or * ss}" "A$or,$or 0 $df,1 ${or * ce},${or * se}"
|
| - "L${ir * ce},${ir * se}" "A$ir,$ir 0 $df,0 ${ir * cs},${ir * ss}"
|
| - "Z"
|
| - : "M${or * cs},${or * ss}" "A$or,$or 0 $df,1 ${or * ce},${or * se}"
|
| - "L0,0" "Z";
|
| - }
|
| -
|
| - List centroid(d, int i, Element e) {
|
| - var r = (innerRadiusCallback(d, i, e) + outerRadiusCallback(d, i, e)) / 2,
|
| - a = (startAngleCallback(d, i, e) + endAngleCallback(d, i, e)) / 2 -
|
| - math.PI / 2;
|
| - return [math.cos(a) * r, math.sin(a) * r];
|
| - }
|
| -
|
| - /// Default [innerRadiusCallback] returns data.innerRadius
|
| - static num defaultInnerRadiusCallback(d, i, e) =>
|
| - d is! SvgArcData || d.innerRadius == null ? 0 : d.innerRadius;
|
| -
|
| - /// Default [outerRadiusCallback] returns data.outerRadius
|
| - static num defaultOuterRadiusCallback(d, i, e) =>
|
| - d is! SvgArcData || d.outerRadius == null ? 0 : d.outerRadius;
|
| -
|
| - /// Default [startAngleCallback] returns data.startAngle
|
| - static num defaultStartAngleCallback(d, i, e) =>
|
| - d is! SvgArcData || d.startAngle == null ? 0 : d.startAngle;
|
| -
|
| - /// Default [endAngleCallback] that returns data.endAngle
|
| - static num defaultEndAngleCallback(d, i, e) =>
|
| - d is! SvgArcData || d.endAngle == null ? 0 : d.endAngle;
|
| -}
|
| -
|
| -/// Value type for SvgArc as used by default property accessors in SvgArc
|
| -class SvgArcData {
|
| - dynamic data;
|
| - num value;
|
| - num innerRadius;
|
| - num outerRadius;
|
| - num startAngle;
|
| - num endAngle;
|
| -
|
| - SvgArcData(this.data, this.value,
|
| - this.startAngle, this.endAngle, [
|
| - this.innerRadius = 0, this.outerRadius = 100 ]);
|
| -}
|
| -
|
| -
|
| -/// Returns the interpolator between two [SvgArcData] [a] and [b].
|
| -///
|
| -/// The interpolator will interpolate the older innerRadius and outerRadius with
|
| -/// newer ones, as well as older startAngle and endAngle with newer ones.
|
| -Interpolator interpolateSvgArcData(SvgArcData a, SvgArcData b) {
|
| - var ast = a.startAngle,
|
| - aen = a.endAngle,
|
| - ai = a.innerRadius,
|
| - ao = a.outerRadius,
|
| - bst = b.startAngle - ast,
|
| - ben = b.endAngle - aen,
|
| - bi = b.innerRadius - ai,
|
| - bo = b.outerRadius - ao;
|
| -
|
| - return (t) => new SvgArcData(b.data, b.value,
|
| - (ast + bst * t), (aen + ben * t), (ai + bi * t), (ao + bo * t));
|
| -}
|
|
|