1// Copyright 2014 Google Inc. All rights reserved. 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15(function(scope, testing) { 16 17 function interpolate(from, to, f) { 18 if ((typeof from == 'number') && (typeof to == 'number')) { 19 return from * (1 - f) + to * f; 20 } 21 if ((typeof from == 'boolean') && (typeof to == 'boolean')) { 22 return f < 0.5 ? from : to; 23 } 24 25 WEB_ANIMATIONS_TESTING && console.assert( 26 Array.isArray(from) && Array.isArray(to), 27 'If interpolation arguments are not numbers or bools they must be arrays'); 28 29 if (from.length == to.length) { 30 var r = []; 31 for (var i = 0; i < from.length; i++) { 32 r.push(interpolate(from[i], to[i], f)); 33 } 34 return r; 35 } 36 throw 'Mismatched interpolation arguments ' + from + ':' + to; 37 } 38 39 scope.Interpolation = function(from, to, convertToString) { 40 return function(f) { 41 return convertToString(interpolate(from, to, f)); 42 } 43 }; 44 45 if (WEB_ANIMATIONS_TESTING) { 46 testing.interpolate = interpolate; 47 } 48 49})(webAnimations1, webAnimationsTesting); 50