/* This file contains proprietary software owned by Motorola Mobility, Inc.
No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
*/ //////////////////////////////////////////////////////////////////////// // var Montage = require("montage/core/core").Montage, Component = require("montage/ui/component").Component, MaterialsModel = require("js/models/materials-model").MaterialsModel, NJUtils = require("js/lib/NJUtils").NJUtils, GLWorld = require("js/lib/drawing/world").World; //////////////////////////////////////////////////////////////////////// // exports.webGlDocumentHelper = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // hasTemplate: { value: false }, //////////////////////////////////////////////////////////////////// //This is set when the design view is ready, for local reference iframe: { value: null }, //////////////////////////////////////////////////////////////////// // _glData: { value: null }, //////////////////////////////////////////////////////////////////// // glData: { // get: function() { // var elt = this.iframe.contentWindow.document.body; // if (elt) { var matLib = MaterialsModel.exportMaterials(); this._glData = [matLib]; this.collectGLData(this.iframe.contentWindow.document, this._glData ); } else { this._glData = null } // return this._glData; }, // set: function(value) { // var elt = this.iframe.contentWindow.document.body; // if (elt) { /* // Use this code to test the runtime version of WebGL var cdm = new NinjaCvsRt.CanvasDataManager(); cdm.loadGLData(elt, value, null ); */ // var i, nWorlds= value.length; // for (i = 0; i < nWorlds; i++) { // get the data for the next canvas var importStr = value[i], id, jObj, index = importStr.indexOf(';'), matLibStr, matLibObj, startIndex, endIndex, canvas, useWebGL, world; // determine if it is the new (JSON) or old style format if ((importStr[0] === 'v') && (index < 24)) { // JSON format. pull off the importStr = importStr.substr(index+1); jObj = JSON.parse(importStr); id = jObj.id; } else { // at this point the data could be either the materials library or // an old style world. We can determine which by converting the string // to an object via JSON.parse. That operation will fail if the string // is an old style world. matLibStr = 'materialLibrary;'; index = importStr.indexOf(matLibStr); if (index == 0) { importStr = importStr.substr(matLibStr.length); matLibObj = JSON.parse(importStr); MaterialsModel.importMaterials(matLibObj); } else { startIndex = importStr.indexOf("id: "); if (startIndex >= 0) { endIndex = importStr.indexOf("\n", startIndex); if (endIndex > 0) id = importStr.substring(startIndex+4, endIndex); } } } // if (id != null) { // canvas = this.findCanvasWithID(id, elt); // if (canvas) { // if (canvas.elementModel) { if (canvas.elementModel.shapeModel.GLWorld) { canvas.elementModel.shapeModel.GLWorld.clearTree(); } // if (jObj) { useWebGL = jObj.webGL; world = new GLWorld(canvas, useWebGL); world.importJSON(jObj); } // this.buildShapeModel(canvas.elementModel, world); } } } } } } }, //////////////////////////////////////////////////////////////////// // findCanvasWithID: { value: function(id, elt) { // var i, child, nKids, foundElt, cid = elt.getAttribute("data-RDGE-id"); // if (cid == id) return elt; // if (elt.children) { nKids = elt.children.length; for (i=0; i