Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Side by Side Diff: packages/charted/lib/core/scales/linear_scale.dart

Issue 1521693002: Roll Observatory deps (charted -> ^0.3.0) (Closed) Base URL: https://chromium.googlesource.com/external/github.com/dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « packages/charted/lib/core/scales.dart ('k') | packages/charted/lib/core/scales/log_scale.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // 1 //
2 // Copyright 2014 Google Inc. All rights reserved. 2 // Copyright 2014 Google Inc. All rights reserved.
3 // 3 //
4 // Use of this source code is governed by a BSD-style 4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file or at 5 // license that can be found in the LICENSE file or at
6 // https://developers.google.com/open-source/licenses/bsd 6 // https://developers.google.com/open-source/licenses/bsd
7 // 7 //
8 part of charted.core.scales; 8 part of charted.core.scales;
9 9
10 class LinearScale implements Scale { 10 class LinearScale implements Scale {
(...skipping 22 matching lines...) Expand all
33 _rounded = source._rounded { 33 _rounded = source._rounded {
34 _reset(); 34 _reset();
35 } 35 }
36 36
37 void _reset({bool nice: false}) { 37 void _reset({bool nice: false}) {
38 if (nice) { 38 if (nice) {
39 _domain = ScaleUtils.nice( 39 _domain = ScaleUtils.nice(
40 _domain, ScaleUtils.niceStep(_linearTickRange().step)); 40 _domain, ScaleUtils.niceStep(_linearTickRange().step));
41 } 41 }
42 42
43 Function linear = math.min(_domain.length, _range.length) > 2 ? 43 Function linear = math.min(_domain.length, _range.length) > 2
44 ScaleUtils.polylinearScale : ScaleUtils.bilinearScale; 44 ? ScaleUtils.polylinearScale
45 : ScaleUtils.bilinearScale;
45 46
46 Function uninterpolator = clamp ? uninterpolateClamp : uninterpolateNumber; 47 Function uninterpolator = clamp ? uninterpolateClamp : uninterpolateNumber;
47 InterpolatorGenerator interpolator = 48 InterpolatorGenerator interpolator =
48 _rounded ? createRoundedNumberInterpolator : createNumberInterpolator; 49 _rounded ? createRoundedNumberInterpolator : createNumberInterpolator;
49 50
50 _invert = 51 _invert = linear(_range, _domain, uninterpolator, createNumberInterpolator);
51 linear(_range, _domain, uninterpolator, createNumberInterpolator);
52 _scale = linear(_domain, _range, uninterpolator, interpolator); 52 _scale = linear(_domain, _range, uninterpolator, interpolator);
53 } 53 }
54 54
55 @override 55 @override
56 set range(Iterable value) { 56 set range(Iterable value) {
57 assert(value != null); 57 assert(value != null);
58 _range = value; 58 _range = value;
59 _reset(); 59 _reset();
60 } 60 }
61 61
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 @override 128 @override
129 num scale(num value) => _scale(value); 129 num scale(num value) => _scale(value);
130 130
131 @override 131 @override
132 num invert(num value) => _invert(value); 132 num invert(num value) => _invert(value);
133 133
134 Range _linearTickRange([Extent extent]) { 134 Range _linearTickRange([Extent extent]) {
135 if (extent == null) { 135 if (extent == null) {
136 extent = ScaleUtils.extent(_domain); 136 extent = ScaleUtils.extent(_domain);
137 } 137 }
138 var span = extent.max - extent.min, 138 var span = extent.max - extent.min;
139 step = 139 if (span == 0) {
140 math.pow(10, (math.log(span / _ticksCount) / math.LN10).floor()), 140 span = 1.0; // [span / _ticksCount] should never be equal zero.
141 err = _ticksCount / span * step; 141 }
142 var step = math.pow(10, (math.log(span / _ticksCount) / math.LN10).floor());
143 var err = _ticksCount / span * step;
142 144
143 // Filter ticks to get closer to the desired count. 145 // Filter ticks to get closer to the desired count.
144 if (err <= .15) { 146 if (err <= .15) {
145 step *= 10; 147 step *= 10;
146 } 148 } else if (err <= .35) {
147 else if (err <= .35) {
148 step *= 5; 149 step *= 5;
149 } 150 } else if (err <= .75) {
150 else if (err <= .75) {
151 step *= 2; 151 step *= 2;
152 } 152 }
153 153
154 return new Range((extent.min / step).ceil() * step, 154 return new Range((extent.min / step).ceil() * step,
155 (extent.max / step).floor() * step + step * 0.5, step); 155 (extent.max / step).floor() * step + step * 0.5, step);
156 } 156 }
157 157
158 @override 158 @override
159 FormatFunction createTickFormatter([String formatStr]) { 159 FormatFunction createTickFormatter([String formatStr]) {
160 int precision(value) { 160 int precision(value) {
161 return -(math.log(value) / math.LN10 + .01).floor(); 161 return -(math.log(value) / math.LN10 + .01).floor();
162 } 162 }
163 Range tickRange = _linearTickRange(); 163 Range tickRange = _linearTickRange();
164 if (formatStr == null) { 164 if (formatStr == null) {
165 formatStr = ".${precision(tickRange.step)}f"; 165 formatStr = ".${precision(tickRange.step)}f";
166 } 166 }
167 NumberFormat formatter = new NumberFormat(new EnUsLocale()); 167 NumberFormat formatter = new NumberFormat(new EnUsLocale());
168 return formatter.format(formatStr); 168 return formatter.format(formatStr);
169 } 169 }
170 170
171 @override 171 @override
172 LinearScale clone() => new LinearScale._clone(this); 172 LinearScale clone() => new LinearScale._clone(this);
173 } 173 }
OLDNEW
« no previous file with comments | « packages/charted/lib/core/scales.dart ('k') | packages/charted/lib/core/scales/log_scale.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698