UNPKG

node-easel

Version:

node wrapper for EaselJS, utilizing node-canvas.

98 lines (89 loc) 3.24 kB
/* * IndexOf * Visit http://createjs.com/ for documentation, updates and examples. * * Copyright (c) 2010 gskinner.com, inc. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ /** * @module CreateJS */ // namespace: this.createjs = this.createjs||{}; /** * @class Utility Methods */ (function() { "use strict"; /* * Employs Duff's Device to make a more performant implementation of indexOf. * see http://jsperf.com/duffs-indexof/2 * #method indexOf * @param {Array} array Array to search for searchElement * @param searchElement Element to search array for. * @return {Number} The position of the first occurrence of a specified value searchElement in the passed in array ar. * @constructor */ /* replaced with simple for loop for now, perhaps will be researched further createjs.indexOf = function (ar, searchElement) { var l = ar.length; var n = (l * 0.125) ^ 0; // 0.125 == 1/8, using multiplication because it's faster in some browsers // ^0 floors result for (var i = 0; i < n; i++) { if(searchElement === ar[i*8]) { return (i*8);} if(searchElement === ar[i*8+1]) { return (i*8+1);} if(searchElement === ar[i*8+2]) { return (i*8+2);} if(searchElement === ar[i*8+3]) { return (i*8+3);} if(searchElement === ar[i*8+4]) { return (i*8+4);} if(searchElement === ar[i*8+5]) { return (i*8+5);} if(searchElement === ar[i*8+6]) { return (i*8+6);} if(searchElement === ar[i*8+7]) { return (i*8+7);} } var n = l % 8; for (var i = 0; i < n; i++) { if (searchElement === ar[l-n+i]) { return l-n+i; } } return -1; } */ /** * Finds the first occurrence of a specified value searchElement in the passed in array, and returns the index of * that value. Returns -1 if value is not found. * * var i = createjs.indexOf(myArray, myElementToFind); * * @method indexOf * @param {Array} array Array to search for searchElement * @param searchElement Element to find in array. * @return {Number} The first index of searchElement in array. */ createjs.indexOf = function (array, searchElement){ for (var i = 0,l=array.length; i < l; i++) { if (searchElement === array[i]) { return i; } } return -1; } }());