diff options
Diffstat (limited to 'catapult/third_party/polymer/components/web-animations-js/src/interpolation.js')
-rw-r--r-- | catapult/third_party/polymer/components/web-animations-js/src/interpolation.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/catapult/third_party/polymer/components/web-animations-js/src/interpolation.js b/catapult/third_party/polymer/components/web-animations-js/src/interpolation.js new file mode 100644 index 00000000..ba63ed35 --- /dev/null +++ b/catapult/third_party/polymer/components/web-animations-js/src/interpolation.js @@ -0,0 +1,49 @@ +// Copyright 2014 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +(function(scope, testing) { + + function interpolate(from, to, f) { + if ((typeof from == 'number') && (typeof to == 'number')) { + return from * (1 - f) + to * f; + } + if ((typeof from == 'boolean') && (typeof to == 'boolean')) { + return f < 0.5 ? from : to; + } + + WEB_ANIMATIONS_TESTING && console.assert( + Array.isArray(from) && Array.isArray(to), + 'If interpolation arguments are not numbers or bools they must be arrays'); + + if (from.length == to.length) { + var r = []; + for (var i = 0; i < from.length; i++) { + r.push(interpolate(from[i], to[i], f)); + } + return r; + } + throw 'Mismatched interpolation arguments ' + from + ':' + to; + } + + scope.Interpolation = function(from, to, convertToString) { + return function(f) { + return convertToString(interpolate(from, to, f)); + } + }; + + if (WEB_ANIMATIONS_TESTING) { + testing.interpolate = interpolate; + } + +})(webAnimations1, webAnimationsTesting); |