Index: charted/lib/core/scales/linear_scale.dart |
diff --git a/charted/lib/core/scales/linear_scale.dart b/charted/lib/core/scales/linear_scale.dart |
deleted file mode 100644 |
index a0de8fb6c4c980259d4bd58807f1bf641a355410..0000000000000000000000000000000000000000 |
--- a/charted/lib/core/scales/linear_scale.dart |
+++ /dev/null |
@@ -1,173 +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.core.scales; |
- |
-class LinearScale implements Scale { |
- static const defaultDomain = const [0, 1]; |
- static const defaultRange = const [0, 1]; |
- |
- bool _rounded = false; |
- Iterable _domain = defaultDomain; |
- Iterable _range = defaultRange; |
- |
- int _ticksCount = 5; |
- bool _clamp = false; |
- bool _nice = false; |
- |
- Function _invert; |
- Function _scale; |
- |
- LinearScale(); |
- |
- LinearScale._clone(LinearScale source) |
- : _domain = source._domain.toList(), |
- _range = source._range.toList(), |
- _ticksCount = source._ticksCount, |
- _clamp = source._clamp, |
- _nice = source._nice, |
- _rounded = source._rounded { |
- _reset(); |
- } |
- |
- void _reset({bool nice: false}) { |
- if (nice) { |
- _domain = ScaleUtils.nice( |
- _domain, ScaleUtils.niceStep(_linearTickRange().step)); |
- } |
- |
- Function linear = math.min(_domain.length, _range.length) > 2 ? |
- ScaleUtils.polylinearScale : ScaleUtils.bilinearScale; |
- |
- Function uninterpolator = clamp ? uninterpolateClamp : uninterpolateNumber; |
- InterpolatorGenerator interpolator = |
- _rounded ? createRoundedNumberInterpolator : createNumberInterpolator; |
- |
- _invert = |
- linear(_range, _domain, uninterpolator, createNumberInterpolator); |
- _scale = linear(_domain, _range, uninterpolator, interpolator); |
- } |
- |
- @override |
- set range(Iterable value) { |
- assert(value != null); |
- _range = value; |
- _reset(); |
- } |
- |
- @override |
- Iterable get range => _range; |
- |
- @override |
- set domain(Iterable value) { |
- _domain = value; |
- _reset(nice: _nice); |
- } |
- |
- @override |
- Iterable get domain => _domain; |
- |
- @override |
- set rounded(bool value) { |
- assert(value != null); |
- if (value != null && _rounded != value) { |
- _rounded = value; |
- _reset(); |
- } |
- } |
- |
- @override |
- bool get rounded => _rounded; |
- |
- @override |
- set ticksCount(int value) { |
- assert(value != null); |
- if (value != null && _ticksCount != value) { |
- _ticksCount = value; |
- _reset(); |
- } |
- } |
- |
- @override |
- int get ticksCount => _ticksCount; |
- |
- @override |
- Iterable get ticks => _linearTickRange(); |
- |
- @override |
- set clamp(bool value) { |
- assert(value != null); |
- if (value != null && _clamp != value) { |
- _clamp = value; |
- _reset(); |
- } |
- } |
- |
- @override |
- bool get clamp => _clamp; |
- |
- @override |
- set nice(bool value) { |
- assert(value != null); |
- if (value != null && _nice != value) { |
- _nice = value; |
- _reset(nice: _nice); |
- } |
- } |
- |
- @override |
- bool get nice => _nice; |
- |
- @override |
- Extent get rangeExtent => ScaleUtils.extent(_range); |
- |
- @override |
- num scale(num value) => _scale(value); |
- |
- @override |
- num invert(num value) => _invert(value); |
- |
- Range _linearTickRange([Extent extent]) { |
- if (extent == null) { |
- extent = ScaleUtils.extent(_domain); |
- } |
- var span = extent.max - extent.min, |
- step = |
- math.pow(10, (math.log(span / _ticksCount) / math.LN10).floor()), |
- err = _ticksCount / span * step; |
- |
- // Filter ticks to get closer to the desired count. |
- if (err <= .15) { |
- step *= 10; |
- } |
- else if (err <= .35) { |
- step *= 5; |
- } |
- else if (err <= .75) { |
- step *= 2; |
- } |
- |
- return new Range((extent.min / step).ceil() * step, |
- (extent.max / step).floor() * step + step * 0.5, step); |
- } |
- |
- @override |
- FormatFunction createTickFormatter([String formatStr]) { |
- int precision(value) { |
- return -(math.log(value) / math.LN10 + .01).floor(); |
- } |
- Range tickRange = _linearTickRange(); |
- if (formatStr == null) { |
- formatStr = ".${precision(tickRange.step)}f"; |
- } |
- NumberFormat formatter = new NumberFormat(new EnUsLocale()); |
- return formatter.format(formatStr); |
- } |
- |
- @override |
- LinearScale clone() => new LinearScale._clone(this); |
-} |