| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // @dart = 2.6 |
| part of dart.ui; |
| |
| /// Linearly interpolate between two numbers. |
| double/*!*/ lerpDouble(num/*?*/ a, num/*?*/ b, double/*!*/ t) { |
| if (a == null && b == null) |
| return null; |
| a ??= 0.0; |
| b ??= 0.0; |
| return a + (b - a) * t as double; |
| } |
| |
| /// Linearly interpolate between two doubles. |
| /// |
| /// Same as [lerpDouble] but specialized for non-null `double` type. |
| double/*!*/ _lerpDouble(double/*!*/ a, double/*!*/ b, double/*!*/ t) { |
| return a + (b - a) * t; |
| } |
| |
| /// Linearly interpolate between two integers. |
| /// |
| /// Same as [lerpDouble] but specialized for non-null `int` type. |
| double/*!*/ _lerpInt(int/*!*/ a, int/*!*/ b, double/*!*/ t) { |
| return a + (b - a) * t; |
| } |
| |
| /// Same as [num.clamp] but specialized for non-null [int]. |
| int/*!*/ _clampInt(int/*!*/ value, int/*!*/ min, int/*!*/ max) { |
| assert(min <= max); |
| if (value < min) { |
| return min; |
| } else if (value > max) { |
| return max; |
| } else { |
| return value; |
| } |
| } |