| Index: charted/lib/svg/shapes/line.dart
|
| diff --git a/charted/lib/svg/shapes/line.dart b/charted/lib/svg/shapes/line.dart
|
| deleted file mode 100644
|
| index 8b663ec5b0b41957e8000bcc1fc03568d4242dec..0000000000000000000000000000000000000000
|
| --- a/charted/lib/svg/shapes/line.dart
|
| +++ /dev/null
|
| @@ -1,88 +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;
|
| -
|
| -/// Function to convert a list of points to path.
|
| -typedef String LineInterpolator(Iterable<math.Point> points, int tension);
|
| -
|
| -///
|
| -/// [SvgLine] provides a data-driven way to create path descriptions
|
| -/// that can be used to draw lines.
|
| -///
|
| -class SvgLine implements SvgShape {
|
| - static const LINE_INTERPOLATOR_LINEAR = 'linear';
|
| -
|
| - static final LINE_INTERPOLATORS = {
|
| - LINE_INTERPOLATOR_LINEAR: _linear
|
| - };
|
| -
|
| - /// Callback to access/convert datum to x coordinate value.
|
| - final SelectionValueAccessor<num> xValueAccessor;
|
| -
|
| - /// Callback to access/convert datum to y coordinate value.
|
| - final SelectionValueAccessor<num> yValueAccessor;
|
| -
|
| - /// Callback that is used to determine if a value is considered valid.
|
| - /// If [isDefined] returns false at any time, the value isn't part
|
| - /// of the line - the line would be split.
|
| - final SelectionCallback<bool> isDefined;
|
| -
|
| - /// Interpolator that is used for creating the path.
|
| - final LineInterpolator interpolator;
|
| -
|
| - /// Tension of the line, as used by a few interpolators.
|
| - final int tension;
|
| -
|
| - SvgLine({
|
| - this.xValueAccessor: defaultDataToX,
|
| - this.yValueAccessor: defaultDataToY,
|
| - this.isDefined: defaultIsDefined,
|
| - this.tension: 0,
|
| - String interpolate: LINE_INTERPOLATOR_LINEAR })
|
| - : interpolator = LINE_INTERPOLATORS[interpolate] {
|
| - assert(interpolator != null);
|
| - }
|
| -
|
| - /// Generates path for drawing a line based in the selected [interpolator]
|
| - @override
|
| - String path(data, int index, Element e) {
|
| - assert(data is Iterable);
|
| - var segments = new StringBuffer(),
|
| - points = [];
|
| - for (int i = 0, len = data.length; i < len; ++i) {
|
| - final d = data.elementAt(i);
|
| - if (isDefined(d, i, e)) {
|
| - points.add(new math.Point(xValueAccessor(d, i), yValueAccessor(d, i)));
|
| - } else if (points.isNotEmpty){
|
| - segments.write('M${interpolator(points, tension)}');
|
| - points.clear();
|
| - }
|
| - }
|
| - if (points.isNotEmpty) {
|
| - segments.write('M${interpolator(points, tension)}');
|
| - }
|
| - return segments.toString();
|
| - }
|
| -
|
| - /// Default implementation of [xValueAccessor].
|
| - /// Returns the first element if [d] is an iterable, otherwise returns [d].
|
| - static num defaultDataToX(d, i) => d is Iterable ? d.first : d;
|
| -
|
| - /// Default implementation of [yValueAccessor].
|
| - /// Returns the second element if [d] is an iterable, otherwise returns [d].
|
| - static num defaultDataToY(d, i) => d is Iterable ? d.elementAt(1) : d;
|
| -
|
| - /// Default implementation of [isDefined].
|
| - /// Returns true for all non-null values of [d].
|
| - static bool defaultIsDefined(d, i, e) => d != null;
|
| -
|
| - /// Linear interpolator.
|
| - static String _linear(Iterable points, _) =>
|
| - points.map((pt) => '${pt.x},${pt.y}').join('L');
|
| -}
|
|
|