| // 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. |
| |
| part of dart.ui; |
| |
| /// Same as [num.clamp] but optimized for a non-null [double]. |
| /// |
| /// This is faster because it avoids polymorphism, boxing, and special cases for |
| /// floating point numbers. |
| // |
| // See also: //dev/benchmarks/microbenchmarks/lib/foundation/clamp.dart |
| double _clampDouble(double x, double min, double max) { |
| assert(min <= max && !max.isNaN && !min.isNaN); |
| if (x < min) { |
| return min; |
| } |
| if (x > max) { |
| return max; |
| } |
| if (x.isNaN) { |
| return max; |
| } |
| return x; |
| } |
| |
| double clampDouble(double x, double min, double max) { |
| assert(min <= max && !max.isNaN && !min.isNaN); |
| if (x < min) { |
| return min; |
| } |
| if (x > max) { |
| return max; |
| } |
| if (x.isNaN) { |
| return max; |
| } |
| return x; |
| } |
| |
| Float32List _toMatrix32(Float64List matrix64) { |
| final Float32List matrix32 = Float32List(16); |
| matrix32[15] = matrix64[15]; |
| matrix32[14] = matrix64[14]; |
| matrix32[13] = matrix64[13]; |
| matrix32[12] = matrix64[12]; |
| matrix32[11] = matrix64[11]; |
| matrix32[10] = matrix64[10]; |
| matrix32[9] = matrix64[9]; |
| matrix32[8] = matrix64[8]; |
| matrix32[7] = matrix64[7]; |
| matrix32[6] = matrix64[6]; |
| matrix32[5] = matrix64[5]; |
| matrix32[4] = matrix64[4]; |
| matrix32[3] = matrix64[3]; |
| matrix32[2] = matrix64[2]; |
| matrix32[1] = matrix64[1]; |
| matrix32[0] = matrix64[0]; |
| return matrix32; |
| } |