From 6e84557616240a8e5e94421d23c67c2e98349752 Mon Sep 17 00:00:00 2001 From: bradanlane Date: Wed, 14 Oct 2015 17:35:41 -0400 Subject: [PATCH 1/2] new gps / ahrs page with both data details and graphical representation using image for gps location and webgl for ahrs --- Makefile | 5 +- web/css/main.css | 65 +- web/img/map-world-medium.png | Bin 0 -> 59136 bytes web/img/world.png | Bin 0 -> 119613 bytes web/index.html | 8 +- web/js/j3di-all.js | 3344 ++++++++++++++++++++++++++++++++++ web/js/j3di-all.min.js | 2 + web/js/main.js | 54 +- web/plates/gps-help.html | 6 + web/plates/gps.html | 79 +- web/plates/js/ahrs.js | 207 +++ web/plates/js/gps.js | 128 +- web/plates/js/status.js | 2 +- web/plates/js/traffic.js | 2 +- web/plates/js/weather.js | 2 +- web/plates/settings.html | 2 +- web/plates/status.html | 4 +- 17 files changed, 3852 insertions(+), 58 deletions(-) create mode 100755 web/img/map-world-medium.png create mode 100755 web/img/world.png create mode 100755 web/js/j3di-all.js create mode 100755 web/js/j3di-all.min.js create mode 100644 web/plates/gps-help.html create mode 100644 web/plates/js/ahrs.js diff --git a/Makefile b/Makefile index d934d5af..2e5358cb 100644 --- a/Makefile +++ b/Makefile @@ -15,10 +15,13 @@ www: mkdir -p /var/www/css cp web/css/*.css /var/www/css mkdir -p /var/www/js - cp web/js/*.js /var/www/js + cp web/js/main.js /var/www/js + cp web/js/addtohomescreen.min.js /var/www/js + cp web/js/j3di-all.min.js /var/www/js mkdir -p /var/www/img cp web/img/logo*.png /var/www/img cp web/img/screen*.png /var/www/img + cp web/img/world.png /var/www/img mkdir -p /var/www/maui mkdir -p /var/www/maui/js cp web/maui/js/angular-ui-router.min.js /var/www/maui/js diff --git a/web/css/main.css b/web/css/main.css index 3b9c5a59..135b85ad 100755 --- a/web/css/main.css +++ b/web/css/main.css @@ -6,16 +6,48 @@ .weather-page {} +.gps_page {} + +.map-container { + position: relative; +} + +.world-map { + background-image: url(../img/world.png); + background-position: 1186px 591px; + margin-bottom: 4px; + /* this will be set dynamically to center map at gps location */ + /* + width: 100%; + height: 300px; +*/ +} + +.mark-position { + position: absolute; + top: 0; + left: 0; + font-size: 18px; +} + +.washout { + background-color: rgba(255, 255, 255, 0.65); + display: inline-block; + width: 100%; + text-align: center; + padding: 4px; +} + .section_invisible { display: none; } .text-normal { - font-weight:100; + font-weight: 100; } .reset-flow { - clear:both; + clear: both; } .separator { @@ -86,20 +118,23 @@ } .flight_condition_VFR { - background-color:forestgreen; - color:white; + background-color: forestgreen; + color: white; } + .flight_condition_MVFR { - background-color:blue; - color:white; + background-color: blue; + color: white; } + .flight_condition_IFR { - background-color:crimson; - color:white; + background-color: crimson; + color: white; } + .flight_condition_LIFR { - background-color:darkorchid; - color:white; + background-color: darkorchid; + color: white; } .traffic-style1 { @@ -129,16 +164,18 @@ } .bar_container { - display:inline-block; - border:1px solid #cccccc; + display: inline-block; + border: 1px solid #cccccc; width: 100%; - border-radius: 2px; - font-size: 0.75em; + border-radius: 2px; + font-size: 0.75em; } + .bar_display { padding: 1px 2px 1px 3px; } + /* *************************************************************************** everything below this comment represents tweeks to the mobile-angular-uis CSS *************************************************************************** */ diff --git a/web/img/map-world-medium.png b/web/img/map-world-medium.png new file mode 100755 index 0000000000000000000000000000000000000000..47a1004c7067c915dec941f53e5804bdedb1c548 GIT binary patch literal 59136 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 literal 0 HcmV?d00001 diff --git a/web/img/world.png b/web/img/world.png new file mode 100755 index 0000000000000000000000000000000000000000..3ead9b7286112004142dfbc1a3c37cd6594e05af GIT binary patch literal 119613 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 literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html index a867e77c..9d022712 100755 --- a/web/index.html +++ b/web/index.html @@ -39,9 +39,7 @@ @@ -57,12 +55,14 @@ - + + + diff --git a/web/js/j3di-all.js b/web/js/j3di-all.js new file mode 100755 index 00000000..dd476d13 --- /dev/null +++ b/web/js/j3di-all.js @@ -0,0 +1,3344 @@ +/* + * Copyright 2010, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/** + * @fileoverview This file contains functions every webgl program will need + * a version of one way or another. + * + * Instead of setting up a context manually it is recommended to + * use. This will check for success or failure. On failure it + * will attempt to present an approriate message to the user. + * + * gl = WebGLUtils.setupWebGL(canvas); + * + * For animated WebGL apps use of setTimeout or setInterval are + * discouraged. It is recommended you structure your rendering + * loop like this. + * + * function render() { + * window.requestAnimFrame(render, canvas); + * + * // do rendering + * ... + * } + * render(); + * + * This will call your rendering function up to the refresh rate + * of your display but will stop rendering if your app is not + * visible. + */ + +WebGLUtils = function () { + + /** + * Creates the HTLM for a failure message + * @param {string} canvasContainerId id of container of th + * canvas. + * @return {string} The html. + */ + var makeFailHTML = function (msg) { + return '' + + '' + + '
' + + '
' + + '
' + msg + '
' + + '
' + + '
'; + }; + + /** + * Mesasge for getting a webgl browser + * @type {string} + */ + var GET_A_WEBGL_BROWSER = '' + + 'This page requires a browser that supports WebGL.
' + + 'Click here to upgrade your browser.'; + + /** + * Mesasge for need better hardware + * @type {string} + */ + var OTHER_PROBLEM = '' + + "It doesn't appear your computer can support WebGL.
" + + 'Click here for more information.'; + + /** + * Creates a webgl context. If creation fails it will + * change the contents of the container of the + * tag to an error message with the correct links for WebGL. + * @param {Element} canvas. The canvas element to create a + * context from. + * @param {WebGLContextCreationAttirbutes} opt_attribs Any + * creation attributes you want to pass in. + * @return {WebGLRenderingContext} The created context. + */ + var setupWebGL = function (canvas, opt_attribs) { + function showLink(str) { + var container = canvas.parentNode; + if (container) { + container.innerHTML = makeFailHTML(str); + } + }; + + if (!window.WebGLRenderingContext) { + showLink(GET_A_WEBGL_BROWSER); + return null; + } + + var context = create3DContext(canvas, opt_attribs); + if (!context) { + showLink(OTHER_PROBLEM); + } + return context; + }; + + /** + * Creates a webgl context. + * @param {!Canvas} canvas The canvas tag to get context + * from. If one is not passed in one will be created. + * @return {!WebGLContext} The created context. + */ + var create3DContext = function (canvas, opt_attribs) { + var names = ["webgl", "experimental-webgl", "webkit-3d", "moz-webgl"]; + var context = null; + for (var ii = 0; ii < names.length; ++ii) { + try { + context = canvas.getContext(names[ii], opt_attribs); + } catch (e) {} + if (context) { + break; + } + } + return context; + }; + + return { + create3DContext: create3DContext, + setupWebGL: setupWebGL + }; +}(); + +/** + * Provides requestAnimationFrame in a cross browser way. + */ +window.requestAnimFrame = (function () { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function ( /* function FrameRequestCallback */ callback, /* DOMElement Element */ element) { + return window.setTimeout(callback, 1000 / 60); + }; +})(); + +/** + * Provides cancelAnimationFrame in a cross browser way. + */ +window.cancelAnimFrame = (function () { + return window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + window.msCancelAnimationFrame || + window.clearTimeout; +})(); + + +/* + ** Copyright (c) 2012 The Khronos Group Inc. + ** + ** Permission is hereby granted, free of charge, to any person obtaining a + ** copy of this software and/or associated documentation files (the + ** "Materials"), to deal in the Materials without restriction, including + ** without limitation the rights to use, copy, modify, merge, publish, + ** distribute, sublicense, and/or sell copies of the Materials, and to + ** permit persons to whom the Materials are 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 Materials. + ** + ** THE MATERIALS ARE 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 + ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + */ + +// Various functions for helping debug WebGL apps. + +WebGLDebugUtils = function () { + + /** + * Wrapped logging function. + * @param {string} msg Message to log. + */ + var log = function (msg) { + if (window.console && window.console.log) { + window.console.log(msg); + } + }; + + /** + * Wrapped error logging function. + * @param {string} msg Message to log. + */ + var error = function (msg) { + if (window.console && window.console.error) { + window.console.error(msg); + } else { + log(msg); + } + }; + + + /** + * Which arguments are enums based on the number of arguments to the function. + * So + * 'texImage2D': { + * 9: { 0:true, 2:true, 6:true, 7:true }, + * 6: { 0:true, 2:true, 3:true, 4:true }, + * }, + * + * means if there are 9 arguments then 6 and 7 are enums, if there are 6 + * arguments 3 and 4 are enums + * + * @type {!Object.} + */ + var glValidEnumContexts = { + // Generic setters and getters + + 'enable': { + 1: { + 0: true + } + }, + 'disable': { + 1: { + 0: true + } + }, + 'getParameter': { + 1: { + 0: true + } + }, + + // Rendering + + 'drawArrays': { + 3: { + 0: true + } + }, + 'drawElements': { + 4: { + 0: true, + 2: true + } + }, + + // Shaders + + 'createShader': { + 1: { + 0: true + } + }, + 'getShaderParameter': { + 2: { + 1: true + } + }, + 'getProgramParameter': { + 2: { + 1: true + } + }, + 'getShaderPrecisionFormat': { + 2: { + 0: true, + 1: true + } + }, + + // Vertex attributes + + 'getVertexAttrib': { + 2: { + 1: true + } + }, + 'vertexAttribPointer': { + 6: { + 2: true + } + }, + + // Textures + + 'bindTexture': { + 2: { + 0: true + } + }, + 'activeTexture': { + 1: { + 0: true + } + }, + 'getTexParameter': { + 2: { + 0: true, + 1: true + } + }, + 'texParameterf': { + 3: { + 0: true, + 1: true + } + }, + 'texParameteri': { + 3: { + 0: true, + 1: true, + 2: true + } + }, + 'texImage2D': { + 9: { + 0: true, + 2: true, + 6: true, + 7: true + }, + 6: { + 0: true, + 2: true, + 3: true, + 4: true + } + }, + 'texSubImage2D': { + 9: { + 0: true, + 6: true, + 7: true + }, + 7: { + 0: true, + 4: true, + 5: true + } + }, + 'copyTexImage2D': { + 8: { + 0: true, + 2: true + } + }, + 'copyTexSubImage2D': { + 8: { + 0: true + } + }, + 'generateMipmap': { + 1: { + 0: true + } + }, + 'compressedTexImage2D': { + 7: { + 0: true, + 2: true + } + }, + 'compressedTexSubImage2D': { + 8: { + 0: true, + 6: true + } + }, + + // Buffer objects + + 'bindBuffer': { + 2: { + 0: true + } + }, + 'bufferData': { + 3: { + 0: true, + 2: true + } + }, + 'bufferSubData': { + 3: { + 0: true + } + }, + 'getBufferParameter': { + 2: { + 0: true, + 1: true + } + }, + + // Renderbuffers and framebuffers + + 'pixelStorei': { + 2: { + 0: true, + 1: true + } + }, + 'readPixels': { + 7: { + 4: true, + 5: true + } + }, + 'bindRenderbuffer': { + 2: { + 0: true + } + }, + 'bindFramebuffer': { + 2: { + 0: true + } + }, + 'checkFramebufferStatus': { + 1: { + 0: true + } + }, + 'framebufferRenderbuffer': { + 4: { + 0: true, + 1: true, + 2: true + } + }, + 'framebufferTexture2D': { + 5: { + 0: true, + 1: true, + 2: true + } + }, + 'getFramebufferAttachmentParameter': { + 3: { + 0: true, + 1: true, + 2: true + } + }, + 'getRenderbufferParameter': { + 2: { + 0: true, + 1: true + } + }, + 'renderbufferStorage': { + 4: { + 0: true, + 1: true + } + }, + + // Frame buffer operations (clear, blend, depth test, stencil) + + 'clear': { + 1: { + 0: { + 'enumBitwiseOr': ['COLOR_BUFFER_BIT', 'DEPTH_BUFFER_BIT', 'STENCIL_BUFFER_BIT'] + } + } + }, + 'depthFunc': { + 1: { + 0: true + } + }, + 'blendFunc': { + 2: { + 0: true, + 1: true + } + }, + 'blendFuncSeparate': { + 4: { + 0: true, + 1: true, + 2: true, + 3: true + } + }, + 'blendEquation': { + 1: { + 0: true + } + }, + 'blendEquationSeparate': { + 2: { + 0: true, + 1: true + } + }, + 'stencilFunc': { + 3: { + 0: true + } + }, + 'stencilFuncSeparate': { + 4: { + 0: true, + 1: true + } + }, + 'stencilMaskSeparate': { + 2: { + 0: true + } + }, + 'stencilOp': { + 3: { + 0: true, + 1: true, + 2: true + } + }, + 'stencilOpSeparate': { + 4: { + 0: true, + 1: true, + 2: true, + 3: true + } + }, + + // Culling + + 'cullFace': { + 1: { + 0: true + } + }, + 'frontFace': { + 1: { + 0: true + } + }, + + // ANGLE_instanced_arrays extension + + 'drawArraysInstancedANGLE': { + 4: { + 0: true + } + }, + 'drawElementsInstancedANGLE': { + 5: { + 0: true, + 2: true + } + }, + + // EXT_blend_minmax extension + + 'blendEquationEXT': { + 1: { + 0: true + } + } + }; + + /** + * Map of numbers to names. + * @type {Object} + */ + var glEnums = null; + + /** + * Map of names to numbers. + * @type {Object} + */ + var enumStringToValue = null; + + /** + * Initializes this module. Safe to call more than once. + * @param {!WebGLRenderingContext} ctx A WebGL context. If + * you have more than one context it doesn't matter which one + * you pass in, it is only used to pull out constants. + */ + function init(ctx) { + if (glEnums == null) { + glEnums = {}; + enumStringToValue = {}; + for (var propertyName in ctx) { + if (typeof ctx[propertyName] == 'number') { + glEnums[ctx[propertyName]] = propertyName; + enumStringToValue[propertyName] = ctx[propertyName]; + } + } + } + } + + /** + * Checks the utils have been initialized. + */ + function checkInit() { + if (glEnums == null) { + throw 'WebGLDebugUtils.init(ctx) not called'; + } + } + + /** + * Returns true or false if value matches any WebGL enum + * @param {*} value Value to check if it might be an enum. + * @return {boolean} True if value matches one of the WebGL defined enums + */ + function mightBeEnum(value) { + checkInit(); + return (glEnums[value] !== undefined); + } + + /** + * Gets an string version of an WebGL enum. + * + * Example: + * var str = WebGLDebugUtil.glEnumToString(ctx.getError()); + * + * @param {number} value Value to return an enum for + * @return {string} The string version of the enum. + */ + function glEnumToString(value) { + checkInit(); + var name = glEnums[value]; + return (name !== undefined) ? ("gl." + name) : + ("/*UNKNOWN WebGL ENUM*/ 0x" + value.toString(16) + ""); + } + + /** + * Returns the string version of a WebGL argument. + * Attempts to convert enum arguments to strings. + * @param {string} functionName the name of the WebGL function. + * @param {number} numArgs the number of arguments passed to the function. + * @param {number} argumentIndx the index of the argument. + * @param {*} value The value of the argument. + * @return {string} The value as a string. + */ + function glFunctionArgToString(functionName, numArgs, argumentIndex, value) { + var funcInfo = glValidEnumContexts[functionName]; + if (funcInfo !== undefined) { + var funcInfo = funcInfo[numArgs]; + if (funcInfo !== undefined) { + if (funcInfo[argumentIndex]) { + if (typeof funcInfo[argumentIndex] === 'object' && + funcInfo[argumentIndex]['enumBitwiseOr'] !== undefined) { + var enums = funcInfo[argumentIndex]['enumBitwiseOr']; + var orResult = 0; + var orEnums = []; + for (var i = 0; i < enums.length; ++i) { + var enumValue = enumStringToValue[enums[i]]; + if ((value & enumValue) !== 0) { + orResult |= enumValue; + orEnums.push(glEnumToString(enumValue)); + } + } + if (orResult === value) { + return orEnums.join(' | '); + } else { + return glEnumToString(value); + } + } else { + return glEnumToString(value); + } + } + } + } + if (value === null) { + return "null"; + } else if (value === undefined) { + return "undefined"; + } else { + return value.toString(); + } + } + + /** + * Converts the arguments of a WebGL function to a string. + * Attempts to convert enum arguments to strings. + * + * @param {string} functionName the name of the WebGL function. + * @param {number} args The arguments. + * @return {string} The arguments as a string. + */ + function glFunctionArgsToString(functionName, args) { + // apparently we can't do args.join(","); + var argStr = ""; + var numArgs = args.length; + for (var ii = 0; ii < numArgs; ++ii) { + argStr += ((ii == 0) ? '' : ', ') + + glFunctionArgToString(functionName, numArgs, ii, args[ii]); + } + return argStr; + }; + + + function makePropertyWrapper(wrapper, original, propertyName) { + //log("wrap prop: " + propertyName); + wrapper.__defineGetter__(propertyName, function () { + return original[propertyName]; + }); + // TODO(gmane): this needs to handle properties that take more than + // one value? + wrapper.__defineSetter__(propertyName, function (value) { + //log("set: " + propertyName); + original[propertyName] = value; + }); + } + + // Makes a function that calls a function on another object. + function makeFunctionWrapper(original, functionName) { + //log("wrap fn: " + functionName); + var f = original[functionName]; + return function () { + //log("call: " + functionName); + var result = f.apply(original, arguments); + return result; + }; + } + + /** + * Given a WebGL context returns a wrapped context that calls + * gl.getError after every command and calls a function if the + * result is not gl.NO_ERROR. + * + * @param {!WebGLRenderingContext} ctx The webgl context to + * wrap. + * @param {!function(err, funcName, args): void} opt_onErrorFunc + * The function to call when gl.getError returns an + * error. If not specified the default function calls + * console.log with a message. + * @param {!function(funcName, args): void} opt_onFunc The + * function to call when each webgl function is called. + * You can use this to log all calls for example. + * @param {!WebGLRenderingContext} opt_err_ctx The webgl context + * to call getError on if different than ctx. + */ + function makeDebugContext(ctx, opt_onErrorFunc, opt_onFunc, opt_err_ctx) { + opt_err_ctx = opt_err_ctx || ctx; + init(ctx); + opt_onErrorFunc = opt_onErrorFunc || function (err, functionName, args) { + // apparently we can't do args.join(","); + var argStr = ""; + var numArgs = args.length; + for (var ii = 0; ii < numArgs; ++ii) { + argStr += ((ii == 0) ? '' : ', ') + + glFunctionArgToString(functionName, numArgs, ii, args[ii]); + } + error("WebGL error " + glEnumToString(err) + " in " + functionName + + "(" + argStr + ")"); + }; + + // Holds booleans for each GL error so after we get the error ourselves + // we can still return it to the client app. + var glErrorShadow = {}; + + // Makes a function that calls a WebGL function and then calls getError. + function makeErrorWrapper(ctx, functionName) { + return function () { + if (opt_onFunc) { + opt_onFunc(functionName, arguments); + } + var result = ctx[functionName].apply(ctx, arguments); + var err = opt_err_ctx.getError(); + if (err != 0) { + glErrorShadow[err] = true; + opt_onErrorFunc(err, functionName, arguments); + } + return result; + }; + } + + // Make a an object that has a copy of every property of the WebGL context + // but wraps all functions. + var wrapper = {}; + for (var propertyName in ctx) { + if (typeof ctx[propertyName] == 'function') { + if (propertyName != 'getExtension') { + wrapper[propertyName] = makeErrorWrapper(ctx, propertyName); + } else { + var wrapped = makeErrorWrapper(ctx, propertyName); + wrapper[propertyName] = function () { + var result = wrapped.apply(ctx, arguments); + return makeDebugContext(result, opt_onErrorFunc, opt_onFunc, opt_err_ctx); + }; + } + } else { + makePropertyWrapper(wrapper, ctx, propertyName); + } + } + + // Override the getError function with one that returns our saved results. + wrapper.getError = function () { + for (var err in glErrorShadow) { + if (glErrorShadow.hasOwnProperty(err)) { + if (glErrorShadow[err]) { + glErrorShadow[err] = false; + return err; + } + } + } + return ctx.NO_ERROR; + }; + + return wrapper; + } + + function resetToInitialState(ctx) { + var numAttribs = ctx.getParameter(ctx.MAX_VERTEX_ATTRIBS); + var tmp = ctx.createBuffer(); + ctx.bindBuffer(ctx.ARRAY_BUFFER, tmp); + for (var ii = 0; ii < numAttribs; ++ii) { + ctx.disableVertexAttribArray(ii); + ctx.vertexAttribPointer(ii, 4, ctx.FLOAT, false, 0, 0); + ctx.vertexAttrib1f(ii, 0); + } + ctx.deleteBuffer(tmp); + + var numTextureUnits = ctx.getParameter(ctx.MAX_TEXTURE_IMAGE_UNITS); + for (var ii = 0; ii < numTextureUnits; ++ii) { + ctx.activeTexture(ctx.TEXTURE0 + ii); + ctx.bindTexture(ctx.TEXTURE_CUBE_MAP, null); + ctx.bindTexture(ctx.TEXTURE_2D, null); + } + + ctx.activeTexture(ctx.TEXTURE0); + ctx.useProgram(null); + ctx.bindBuffer(ctx.ARRAY_BUFFER, null); + ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, null); + ctx.bindFramebuffer(ctx.FRAMEBUFFER, null); + ctx.bindRenderbuffer(ctx.RENDERBUFFER, null); + ctx.disable(ctx.BLEND); + ctx.disable(ctx.CULL_FACE); + ctx.disable(ctx.DEPTH_TEST); + ctx.disable(ctx.DITHER); + ctx.disable(ctx.SCISSOR_TEST); + ctx.blendColor(0, 0, 0, 0); + ctx.blendEquation(ctx.FUNC_ADD); + ctx.blendFunc(ctx.ONE, ctx.ZERO); + ctx.clearColor(0, 0, 0, 0); + ctx.clearDepth(1); + ctx.clearStencil(-1); + ctx.colorMask(true, true, true, true); + ctx.cullFace(ctx.BACK); + ctx.depthFunc(ctx.LESS); + ctx.depthMask(true); + ctx.depthRange(0, 1); + ctx.frontFace(ctx.CCW); + ctx.hint(ctx.GENERATE_MIPMAP_HINT, ctx.DONT_CARE); + ctx.lineWidth(1); + ctx.pixelStorei(ctx.PACK_ALIGNMENT, 4); + ctx.pixelStorei(ctx.UNPACK_ALIGNMENT, 4); + ctx.pixelStorei(ctx.UNPACK_FLIP_Y_WEBGL, false); + ctx.pixelStorei(ctx.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false); + // TODO: Delete this IF. + if (ctx.UNPACK_COLORSPACE_CONVERSION_WEBGL) { + ctx.pixelStorei(ctx.UNPACK_COLORSPACE_CONVERSION_WEBGL, ctx.BROWSER_DEFAULT_WEBGL); + } + ctx.polygonOffset(0, 0); + ctx.sampleCoverage(1, false); + ctx.scissor(0, 0, ctx.canvas.width, ctx.canvas.height); + ctx.stencilFunc(ctx.ALWAYS, 0, 0xFFFFFFFF); + ctx.stencilMask(0xFFFFFFFF); + ctx.stencilOp(ctx.KEEP, ctx.KEEP, ctx.KEEP); + ctx.viewport(0, 0, ctx.canvas.width, ctx.canvas.height); + ctx.clear(ctx.COLOR_BUFFER_BIT | ctx.DEPTH_BUFFER_BIT | ctx.STENCIL_BUFFER_BIT); + + // TODO: This should NOT be needed but Firefox fails with 'hint' + while (ctx.getError()); + } + + function makeLostContextSimulatingCanvas(canvas) { + var unwrappedContext_; + var wrappedContext_; + var onLost_ = []; + var onRestored_ = []; + var wrappedContext_ = {}; + var contextId_ = 1; + var contextLost_ = false; + var resourceId_ = 0; + var resourceDb_ = []; + var numCallsToLoseContext_ = 0; + var numCalls_ = 0; + var canRestore_ = false; + var restoreTimeout_ = 0; + + // Holds booleans for each GL error so can simulate errors. + var glErrorShadow_ = {}; + + canvas.getContext = function (f) { + return function () { + var ctx = f.apply(canvas, arguments); + // Did we get a context and is it a WebGL context? + if (ctx instanceof WebGLRenderingContext) { + if (ctx != unwrappedContext_) { + if (unwrappedContext_) { + throw "got different context" + } + unwrappedContext_ = ctx; + wrappedContext_ = makeLostContextSimulatingContext(unwrappedContext_); + } + return wrappedContext_; + } + return ctx; + } + }(canvas.getContext); + + function wrapEvent(listener) { + if (typeof (listener) == "function") { + return listener; + } else { + return function (info) { + listener.handleEvent(info); + } + } + } + + var addOnContextLostListener = function (listener) { + onLost_.push(wrapEvent(listener)); + }; + + var addOnContextRestoredListener = function (listener) { + onRestored_.push(wrapEvent(listener)); + }; + + + function wrapAddEventListener(canvas) { + var f = canvas.addEventListener; + canvas.addEventListener = function (type, listener, bubble) { + switch (type) { + case 'webglcontextlost': + addOnContextLostListener(listener); + break; + case 'webglcontextrestored': + addOnContextRestoredListener(listener); + break; + default: + f.apply(canvas, arguments); + } + }; + } + + wrapAddEventListener(canvas); + + canvas.loseContext = function () { + if (!contextLost_) { + contextLost_ = true; + numCallsToLoseContext_ = 0; + ++contextId_; + while (unwrappedContext_.getError()); + clearErrors(); + glErrorShadow_[unwrappedContext_.CONTEXT_LOST_WEBGL] = true; + var event = makeWebGLContextEvent("context lost"); + var callbacks = onLost_.slice(); + setTimeout(function () { + //log("numCallbacks:" + callbacks.length); + for (var ii = 0; ii < callbacks.length; ++ii) { + //log("calling callback:" + ii); + callbacks[ii](event); + } + if (restoreTimeout_ >= 0) { + setTimeout(function () { + canvas.restoreContext(); + }, restoreTimeout_); + } + }, 0); + } + }; + + canvas.restoreContext = function () { + if (contextLost_) { + if (onRestored_.length) { + setTimeout(function () { + if (!canRestore_) { + throw "can not restore. webglcontestlost listener did not call event.preventDefault"; + } + freeResources(); + resetToInitialState(unwrappedContext_); + contextLost_ = false; + numCalls_ = 0; + canRestore_ = false; + var callbacks = onRestored_.slice(); + var event = makeWebGLContextEvent("context restored"); + for (var ii = 0; ii < callbacks.length; ++ii) { + callbacks[ii](event); + } + }, 0); + } + } + }; + + canvas.loseContextInNCalls = function (numCalls) { + if (contextLost_) { + throw "You can not ask a lost contet to be lost"; + } + numCallsToLoseContext_ = numCalls_ + numCalls; + }; + + canvas.getNumCalls = function () { + return numCalls_; + }; + + canvas.setRestoreTimeout = function (timeout) { + restoreTimeout_ = timeout; + }; + + function isWebGLObject(obj) { + //return false; + return (obj instanceof WebGLBuffer || + obj instanceof WebGLFramebuffer || + obj instanceof WebGLProgram || + obj instanceof WebGLRenderbuffer || + obj instanceof WebGLShader || + obj instanceof WebGLTexture); + } + + function checkResources(args) { + for (var ii = 0; ii < args.length; ++ii) { + var arg = args[ii]; + if (isWebGLObject(arg)) { + return arg.__webglDebugContextLostId__ == contextId_; + } + } + return true; + } + + function clearErrors() { + var k = Object.keys(glErrorShadow_); + for (var ii = 0; ii < k.length; ++ii) { + delete glErrorShadow_[k]; + } + } + + function loseContextIfTime() { + ++numCalls_; + if (!contextLost_) { + if (numCallsToLoseContext_ == numCalls_) { + canvas.loseContext(); + } + } + } + + // Makes a function that simulates WebGL when out of context. + function makeLostContextFunctionWrapper(ctx, functionName) { + var f = ctx[functionName]; + return function () { + // log("calling:" + functionName); + // Only call the functions if the context is not lost. + loseContextIfTime(); + if (!contextLost_) { + //if (!checkResources(arguments)) { + // glErrorShadow_[wrappedContext_.INVALID_OPERATION] = true; + // return; + //} + var result = f.apply(ctx, arguments); + return result; + } + }; + } + + function freeResources() { + for (var ii = 0; ii < resourceDb_.length; ++ii) { + var resource = resourceDb_[ii]; + if (resource instanceof WebGLBuffer) { + unwrappedContext_.deleteBuffer(resource); + } else if (resource instanceof WebGLFramebuffer) { + unwrappedContext_.deleteFramebuffer(resource); + } else if (resource instanceof WebGLProgram) { + unwrappedContext_.deleteProgram(resource); + } else if (resource instanceof WebGLRenderbuffer) { + unwrappedContext_.deleteRenderbuffer(resource); + } else if (resource instanceof WebGLShader) { + unwrappedContext_.deleteShader(resource); + } else if (resource instanceof WebGLTexture) { + unwrappedContext_.deleteTexture(resource); + } + } + } + + function makeWebGLContextEvent(statusMessage) { + return { + statusMessage: statusMessage, + preventDefault: function () { + canRestore_ = true; + } + }; + } + + return canvas; + + function makeLostContextSimulatingContext(ctx) { + // copy all functions and properties to wrapper + for (var propertyName in ctx) { + if (typeof ctx[propertyName] == 'function') { + wrappedContext_[propertyName] = makeLostContextFunctionWrapper( + ctx, propertyName); + } else { + makePropertyWrapper(wrappedContext_, ctx, propertyName); + } + } + + // Wrap a few functions specially. + wrappedContext_.getError = function () { + loseContextIfTime(); + if (!contextLost_) { + var err; + while (err = unwrappedContext_.getError()) { + glErrorShadow_[err] = true; + } + } + for (var err in glErrorShadow_) { + if (glErrorShadow_[err]) { + delete glErrorShadow_[err]; + return err; + } + } + return wrappedContext_.NO_ERROR; + }; + + var creationFunctions = [ + "createBuffer", + "createFramebuffer", + "createProgram", + "createRenderbuffer", + "createShader", + "createTexture" + ]; + for (var ii = 0; ii < creationFunctions.length; ++ii) { + var functionName = creationFunctions[ii]; + wrappedContext_[functionName] = function (f) { + return function () { + loseContextIfTime(); + if (contextLost_) { + return null; + } + var obj = f.apply(ctx, arguments); + obj.__webglDebugContextLostId__ = contextId_; + resourceDb_.push(obj); + return obj; + }; + }(ctx[functionName]); + } + + var functionsThatShouldReturnNull = [ + "getActiveAttrib", + "getActiveUniform", + "getBufferParameter", + "getContextAttributes", + "getAttachedShaders", + "getFramebufferAttachmentParameter", + "getParameter", + "getProgramParameter", + "getProgramInfoLog", + "getRenderbufferParameter", + "getShaderParameter", + "getShaderInfoLog", + "getShaderSource", + "getTexParameter", + "getUniform", + "getUniformLocation", + "getVertexAttrib" + ]; + for (var ii = 0; ii < functionsThatShouldReturnNull.length; ++ii) { + var functionName = functionsThatShouldReturnNull[ii]; + wrappedContext_[functionName] = function (f) { + return function () { + loseContextIfTime(); + if (contextLost_) { + return null; + } + return f.apply(ctx, arguments); + } + }(wrappedContext_[functionName]); + } + + var isFunctions = [ + "isBuffer", + "isEnabled", + "isFramebuffer", + "isProgram", + "isRenderbuffer", + "isShader", + "isTexture" + ]; + for (var ii = 0; ii < isFunctions.length; ++ii) { + var functionName = isFunctions[ii]; + wrappedContext_[functionName] = function (f) { + return function () { + loseContextIfTime(); + if (contextLost_) { + return false; + } + return f.apply(ctx, arguments); + } + }(wrappedContext_[functionName]); + } + + wrappedContext_.checkFramebufferStatus = function (f) { + return function () { + loseContextIfTime(); + if (contextLost_) { + return wrappedContext_.FRAMEBUFFER_UNSUPPORTED; + } + return f.apply(ctx, arguments); + }; + }(wrappedContext_.checkFramebufferStatus); + + wrappedContext_.getAttribLocation = function (f) { + return function () { + loseContextIfTime(); + if (contextLost_) { + return -1; + } + return f.apply(ctx, arguments); + }; + }(wrappedContext_.getAttribLocation); + + wrappedContext_.getVertexAttribOffset = function (f) { + return function () { + loseContextIfTime(); + if (contextLost_) { + return 0; + } + return f.apply(ctx, arguments); + }; + }(wrappedContext_.getVertexAttribOffset); + + wrappedContext_.isContextLost = function () { + return contextLost_; + }; + + return wrappedContext_; + } + } + + return { + /** + * Initializes this module. Safe to call more than once. + * @param {!WebGLRenderingContext} ctx A WebGL context. If + * you have more than one context it doesn't matter which one + * you pass in, it is only used to pull out constants. + */ + 'init': init, + + /** + * Returns true or false if value matches any WebGL enum + * @param {*} value Value to check if it might be an enum. + * @return {boolean} True if value matches one of the WebGL defined enums + */ + 'mightBeEnum': mightBeEnum, + + /** + * Gets an string version of an WebGL enum. + * + * Example: + * WebGLDebugUtil.init(ctx); + * var str = WebGLDebugUtil.glEnumToString(ctx.getError()); + * + * @param {number} value Value to return an enum for + * @return {string} The string version of the enum. + */ + 'glEnumToString': glEnumToString, + + /** + * Converts the argument of a WebGL function to a string. + * Attempts to convert enum arguments to strings. + * + * Example: + * WebGLDebugUtil.init(ctx); + * var str = WebGLDebugUtil.glFunctionArgToString('bindTexture', 2, 0, gl.TEXTURE_2D); + * + * would return 'TEXTURE_2D' + * + * @param {string} functionName the name of the WebGL function. + * @param {number} numArgs The number of arguments + * @param {number} argumentIndx the index of the argument. + * @param {*} value The value of the argument. + * @return {string} The value as a string. + */ + 'glFunctionArgToString': glFunctionArgToString, + + /** + * Converts the arguments of a WebGL function to a string. + * Attempts to convert enum arguments to strings. + * + * @param {string} functionName the name of the WebGL function. + * @param {number} args The arguments. + * @return {string} The arguments as a string. + */ + 'glFunctionArgsToString': glFunctionArgsToString, + + /** + * Given a WebGL context returns a wrapped context that calls + * gl.getError after every command and calls a function if the + * result is not NO_ERROR. + * + * You can supply your own function if you want. For example, if you'd like + * an exception thrown on any GL error you could do this + * + * function throwOnGLError(err, funcName, args) { + * throw WebGLDebugUtils.glEnumToString(err) + + * " was caused by call to " + funcName; + * }; + * + * ctx = WebGLDebugUtils.makeDebugContext( + * canvas.getContext("webgl"), throwOnGLError); + * + * @param {!WebGLRenderingContext} ctx The webgl context to wrap. + * @param {!function(err, funcName, args): void} opt_onErrorFunc The function + * to call when gl.getError returns an error. If not specified the default + * function calls console.log with a message. + * @param {!function(funcName, args): void} opt_onFunc The + * function to call when each webgl function is called. You + * can use this to log all calls for example. + */ + 'makeDebugContext': makeDebugContext, + + /** + * Given a canvas element returns a wrapped canvas element that will + * simulate lost context. The canvas returned adds the following functions. + * + * loseContext: + * simulates a lost context event. + * + * restoreContext: + * simulates the context being restored. + * + * lostContextInNCalls: + * loses the context after N gl calls. + * + * getNumCalls: + * tells you how many gl calls there have been so far. + * + * setRestoreTimeout: + * sets the number of milliseconds until the context is restored + * after it has been lost. Defaults to 0. Pass -1 to prevent + * automatic restoring. + * + * @param {!Canvas} canvas The canvas element to wrap. + */ + 'makeLostContextSimulatingCanvas': makeLostContextSimulatingCanvas, + + /** + * Resets a context to the initial state. + * @param {!WebGLRenderingContext} ctx The webgl context to + * reset. + */ + 'resetToInitialState': resetToInitialState + }; + +}(); + + +/* + * Copyright (C) 2009 Apple Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// +// initWebGL +// +// Initialize the Canvas element with the passed name as a WebGL object and return the +// WebGLRenderingContext. +function initWebGL(canvasName, vshader, fshader, attribs, clearColor, clearDepth) { + var canvas = document.getElementById(canvasName); + return gl = WebGLUtils.setupWebGL(canvas); +} + +function log(msg) { + if (window.console && window.console.log) { + window.console.log(msg); + } +} + +// Load shaders with the passed names and create a program with them. Return this program +// in the 'program' property of the returned context. +// +// For each string in the passed attribs array, bind an attrib with that name at that index. +// Once the attribs are bound, link the program and then use it. +// +// Set the clear color to the passed array (4 values) and set the clear depth to the passed value. +// Enable depth testing and blending with a blend func of (SRC_ALPHA, ONE_MINUS_SRC_ALPHA) +// +// A console function is added to the context: console(string). This can be replaced +// by the caller. By default, it maps to the window.console() function on WebKit and to +// an empty function on other browsers. +// +function simpleSetup(gl, vshader, fshader, attribs, clearColor, clearDepth) { + // create our shaders + var vertexShader = loadShader(gl, vshader); + var fragmentShader = loadShader(gl, fshader); + + // Create the program object + var program = gl.createProgram(); + + // Attach our two shaders to the program + gl.attachShader(program, vertexShader); + gl.attachShader(program, fragmentShader); + + // Bind attributes + for (var i = 0; i < attribs.length; ++i) + gl.bindAttribLocation(program, i, attribs[i]); + + // Link the program + gl.linkProgram(program); + + // Check the link status + var linked = gl.getProgramParameter(program, gl.LINK_STATUS); + if (!linked && !gl.isContextLost()) { + // something went wrong with the link + var error = gl.getProgramInfoLog(program); + log("Error in program linking:" + error); + + gl.deleteProgram(program); + gl.deleteProgram(fragmentShader); + gl.deleteProgram(vertexShader); + + return null; + } + + gl.useProgram(program); + + gl.clearColor(clearColor[0], clearColor[1], clearColor[2], clearColor[3]); + gl.clearDepth(clearDepth); + + gl.enable(gl.DEPTH_TEST); + gl.enable(gl.BLEND); + gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); + + return program; +} + +// +// loadShader +// +// 'shaderId' is the id of a