/*-- Copyright 2009-2010 by Stefan Rusterholz. All rights reserved. You can choose between MIT and BSD-3-Clause license. License file will be added later. --*/ /** * mixin cc.Codec.Base64 */ cc.Codec.Base64 = {name:'Jacob__Codec__Base64'}; cc.Codec.Base64._keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; /** *

* cc.Codec.Base64.decode(input[, unicode=false]) -> String (http://en.wikipedia.org/wiki/Base64). *

* @function * @param {String} input The base64 encoded string to decode * @return {String} Decodes a base64 encoded String * @example * //decode string * cc.Codec.Base64.decode("U29tZSBTdHJpbmc="); // => "Some String" */ cc.Codec.Base64.decode = function Jacob__Codec__Base64__decode(input) { var output = [], chr1, chr2, chr3, enc1, enc2, enc3, enc4, i = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = this._keyStr.indexOf(input.charAt(i++)); enc2 = this._keyStr.indexOf(input.charAt(i++)); enc3 = this._keyStr.indexOf(input.charAt(i++)); enc4 = this._keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output.push(String.fromCharCode(chr1)); if (enc3 != 64) { output.push(String.fromCharCode(chr2)); } if (enc4 != 64) { output.push(String.fromCharCode(chr3)); } } output = output.join(''); return output; }; /** *

* Converts an input string encoded in base64 to an array of integers whose
* values represent the decoded string's characters' bytes. *

* @function * @param {String} input The String to convert to an array of Integers * @param {Number} bytes * @return {Array} * @example * //decode string to array * var decodeArr = cc.Codec.Base64.decodeAsArray("U29tZSBTdHJpbmc="); */ cc.Codec.Base64.decodeAsArray = function Jacob__Codec__Base64___decodeAsArray(input, bytes) { var dec = this.decode(input), ar = [], i, j, len; for (i = 0, len = dec.length / bytes; i < len; i++) { ar[i] = 0; for (j = bytes - 1; j >= 0; --j) { ar[i] += dec.charCodeAt((i * bytes) + j) << (j * 8); } } return ar; }; cc.uint8ArrayToUint32Array = function(uint8Arr){ if(uint8Arr.length % 4 != 0) return null; var arrLen = uint8Arr.length /4; var retArr = window.Uint32Array? new Uint32Array(arrLen) : []; for(var i = 0; i < arrLen; i++){ var offset = i * 4; retArr[i] = uint8Arr[offset] + uint8Arr[offset + 1] * (1 << 8) + uint8Arr[offset + 2] * (1 << 16) + uint8Arr[offset + 3] * (1<<24); } return retArr; };