michael@0: "use strict"; michael@0: michael@0: function parseArgs() { michael@0: var query = window.location.search.substring(1); michael@0: michael@0: var split = query.split("&"); michael@0: michael@0: var args = {} michael@0: for (var i = 0; i < split.length; i++) { michael@0: var pair = split[i].split("="); michael@0: michael@0: var key = pair[0]; michael@0: var value = true; michael@0: if (pair.length >= 2) { michael@0: eval("value = " + decodeURIComponent(pair[1]) + ";"); michael@0: } michael@0: michael@0: args[key] = value; michael@0: } michael@0: michael@0: return args; michael@0: } michael@0: michael@0: var gArgs = null; michael@0: function arg(key) { michael@0: if (gArgs === null) { michael@0: gArgs = parseArgs(); michael@0: } michael@0: michael@0: var ret = gArgs[key]; michael@0: if (ret === undefined) michael@0: ret = false; michael@0: michael@0: return ret; michael@0: } michael@0: michael@0: function initGL(canvas) { michael@0: if (arg("nogl")) michael@0: return null; michael@0: michael@0: var gl = null; michael@0: michael@0: var withAA = arg("aa"); michael@0: var withAlpha = arg("alpha"); michael@0: var withDepth = arg("depth"); michael@0: var withPremult = arg("premult"); michael@0: var withPreserve = arg("preserve"); michael@0: var withStencil = arg("stencil"); michael@0: michael@0: try { michael@0: var argDict = { michael@0: alpha: withAlpha, michael@0: depth: withDepth, michael@0: stencil: withStencil, michael@0: antialias: withAA, michael@0: premultipliedAlpha: withPremult, michael@0: preserveDrawingBuffer: withPreserve, michael@0: }; michael@0: gl = canvas.getContext("experimental-webgl", argDict); michael@0: } catch(e) {} michael@0: michael@0: return gl; michael@0: } michael@0: michael@0: function rAF(func) { michael@0: var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame; michael@0: raf(func); michael@0: } michael@0: michael@0: var MAX_WAIT_FOR_COMPOSITE_DELAY_MS = 500; michael@0: michael@0: function waitForComposite(func) { michael@0: var isDone = false; michael@0: var doneFunc = function () { michael@0: if (isDone) michael@0: return; michael@0: isDone = true; michael@0: func(); michael@0: }; michael@0: michael@0: rAF(doneFunc); michael@0: setTimeout(doneFunc, MAX_WAIT_FOR_COMPOSITE_DELAY_MS); michael@0: }