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

Side by Side Diff: packages/charted/lib/core/interpolators/interpolators.dart

Issue 2213693002: Updated charted DEP to 0.4.X (Closed) Base URL: https://github.com/dart-lang/observatory_pub_packages.git@master
Patch Set: Created 4 years, 4 months 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
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 8
9 part of charted.core.interpolators; 9 part of charted.core.interpolators;
10 10
11 /// [Interpolator] accepts [t], such that 0.0 < t < 1.0 and returns 11 /// [Interpolator] accepts [t], such that 0.0 < t < 1.0 and returns
12 /// a value in a pre-defined range. 12 /// a value in a pre-defined range.
13 typedef Interpolator(num t); 13 typedef Interpolator(num t);
14 14
15 /// [InterpolatorGenerator] accepts two parameters [a], [b] and returns an 15 /// [InterpolatorGenerator] accepts two parameters [a], [b] and returns an
16 /// [Interpolator] for transitioning from [a] to [b] 16 /// [Interpolator] for transitioning from [a] to [b]
17 typedef Interpolator InterpolatorGenerator(a, b); 17 typedef Interpolator InterpolatorGenerator(a, b);
18 18
19 /// List of registered interpolators - [createInterpolatorFromRegistry] 19 /// List of registered interpolators - [createInterpolatorFromRegistry]
20 /// iterates through this list from backwards and the first non-null 20 /// iterates through this list from backwards and the first non-null
21 /// interpolate function is returned to the caller. 21 /// interpolate function is returned to the caller.
22 List<InterpolatorGenerator> _interpolators = [createInterpolatorByType]; 22 List<InterpolatorGenerator> _interpolators = [createInterpolatorByType];
23 23
24 /// Returns a default interpolator between values [a] and [b]. Unless 24 /// Returns a default interpolator between values [a] and [b]. Unless
25 /// more interpolators are added, one of the internal implementations are 25 /// more interpolators are added, one of the internal implementations are
26 /// selected by the type of [a] and [b]. 26 /// selected by the type of [a] and [b].
27 Interpolator createInterpolatorFromRegistry(a, b) { 27 Interpolator createInterpolatorFromRegistry(a, b) {
28 var fn, i = _interpolators.length; 28 Interpolator fn;
29 int i = _interpolators.length;
29 while (--i >= 0 && fn == null) { 30 while (--i >= 0 && fn == null) {
30 fn = _interpolators[i](a, b); 31 fn = _interpolators[i](a, b);
31 } 32 }
32 return fn; 33 return fn;
33 } 34 }
34 35
35 /// Creates an interpolator based on the type of [a] and [b]. 36 /// Creates an interpolator based on the type of [a] and [b].
36 /// 37 ///
37 /// Usage note: Use this method only when type of [a] and [b] are not known. 38 /// Usage note: Use this method only when type of [a] and [b] are not known.
38 /// When used, this function will prevent tree shaking of all built-in 39 /// When used, this function will prevent tree shaking of all built-in
39 /// interpolators. 40 /// interpolators.
40 Interpolator createInterpolatorByType(a, b) => (a is List && b is List) 41 Interpolator createInterpolatorByType(a, b) {
41 ? createListInterpolator(a, b) 42 if (a is List && b is List) {
42 : (a is Map && b is Map) 43 return createListInterpolator(a, b);
43 ? createMapInterpolator(a, b) 44 } else if (a is Map && b is Map) {
44 : (a is String && b is String) 45 return createMapInterpolator(a, b);
45 ? createStringInterpolator(a, b) 46 } else if (a is String && b is String) {
46 : (a is num && b is num) 47 return createStringInterpolator(a, b);
47 ? createNumberInterpolator(a, b) 48 } else if (a is num && b is num) {
48 : (a is Color && b is Color) 49 return createNumberInterpolator(a, b);
49 ? createRgbColorInterpolator(a, b) 50 } else if (a is Color && b is Color) {
50 : (t) => (t <= 0.5) ? a : b; 51 return createRgbColorInterpolator(a, b);
52 } else {
53 return (t) => (t <= 0.5) ? a : b;
54 }
55 }
51 56
52 // 57 //
53 // Implementations of InterpolatorGenerator 58 // Implementations of InterpolatorGenerator
54 // 59 //
55 60
56 /// Generate a numeric interpolator between numbers [a] and [b] 61 /// Generate a numeric interpolator between numbers [a] and [b]
57 Interpolator createNumberInterpolator(num a, num b) { 62 Interpolator createNumberInterpolator(num a, num b) {
58 b -= a; 63 b -= a;
59 return (t) => a + b * t; 64 return (t) => a + b * t;
60 } 65 }
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 Interpolator uninterpolateNumber(num a, num b) { 363 Interpolator uninterpolateNumber(num a, num b) {
359 b = 1 / (b - a); 364 b = 1 / (b - a);
360 return (x) => (x - a) * b; 365 return (x) => (x - a) * b;
361 } 366 }
362 367
363 /// Reverse interpolator for a clamped number. 368 /// Reverse interpolator for a clamped number.
364 Interpolator uninterpolateClamp(num a, num b) { 369 Interpolator uninterpolateClamp(num a, num b) {
365 b = 1 / (b - a); 370 b = 1 / (b - a);
366 return (x) => math.max(0, math.min(1, (x - a) * b)); 371 return (x) => math.max(0, math.min(1, (x - a) * b));
367 } 372 }
OLDNEW
« no previous file with comments | « packages/charted/lib/core/interpolators/easing.dart ('k') | packages/charted/lib/core/scales.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698