From 723ea402b74efa0424b96c7e125c8ebb2b72410c Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Mon, 26 Mar 2012 17:36:27 -0700 Subject: Fixed issue with WebGL materials not working after file-save or chrome-preview. Also fixed Raiders material not showing in the PI or working during Chrome Preview. Signed-off-by: Nivesh Rajbhandari --- js/lib/geom/geom-obj.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'js/lib/geom/geom-obj.js') diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js index a87bdbf5..3c4e4bbf 100755 --- a/js/lib/geom/geom-obj.js +++ b/js/lib/geom/geom-obj.js @@ -302,6 +302,7 @@ var GeomObj = function GLGeomObj() { case "deform": case "water": case "paris": + case "raiders": case "tunnel": case "reliefTunnel": case "squareTunnel": @@ -375,6 +376,7 @@ var GeomObj = function GLGeomObj() { case "deform": case "water": case "paris": + case "raiders": case "tunnel": case "reliefTunnel": case "squareTunnel": -- cgit v1.2.3 From 903b01b9d0501e6f974034273385a0517107b1e3 Mon Sep 17 00:00:00 2001 From: Pushkar Joshi Date: Tue, 27 Mar 2012 12:42:42 -0700 Subject: File IO for the brush stroke AND changing the data type of brush stroke from GEOM_TYPE_CUBIC_BEZIER to GEOM_TYPE_BRUSH_STROKE --- js/lib/geom/geom-obj.js | 1 + 1 file changed, 1 insertion(+) (limited to 'js/lib/geom/geom-obj.js') diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js index a87bdbf5..be80f1e4 100755 --- a/js/lib/geom/geom-obj.js +++ b/js/lib/geom/geom-obj.js @@ -19,6 +19,7 @@ var GeomObj = function GLGeomObj() { this.GEOM_TYPE_LINE = 3; this.GEOM_TYPE_PATH = 4; this.GEOM_TYPE_CUBIC_BEZIER = 5; + this.GEOM_TYPE_BRUSH_STROKE = 6; this.GEOM_TYPE_UNDEFINED = -1; // Needed for calculating dashed/dotted strokes -- cgit v1.2.3 From 5b4f6b1618cf571a6bce5a631f976a008e04a64e Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Thu, 29 Mar 2012 15:52:08 -0700 Subject: Updated shapes to always check for its stroke and fill colors and materials instead of relying on the shapeModel cache because it can get out of sync. Signed-off-by: Nivesh Rajbhandari --- js/lib/geom/geom-obj.js | 82 +++++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 40 deletions(-) (limited to 'js/lib/geom/geom-obj.js') diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js index 3c4e4bbf..df4a018d 100755 --- a/js/lib/geom/geom-obj.js +++ b/js/lib/geom/geom-obj.js @@ -141,54 +141,56 @@ var GeomObj = function GLGeomObj() { this.setMaterialColor = function(c, type) { var i = 0, nMats = 0; - if(c.gradientMode) { - // Gradient support - if (this._materialArray && this._materialTypeArray) { - nMats = this._materialArray.length; - } + if(c) { + if(c.gradientMode) { + // Gradient support + if (this._materialArray && this._materialTypeArray) { + nMats = this._materialArray.length; + } - var stops = [], - colors = c.color; + var stops = [], + colors = c.color; - var len = colors.length; - // TODO - Current shaders only support 4 color stops - if(len > 4) { - len = 4; - } + var len = colors.length; + // TODO - Current shaders only support 4 color stops + if(len > 4) { + len = 4; + } - for(var n=0; n --- js/lib/geom/geom-obj.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'js/lib/geom/geom-obj.js') diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js index ce06498d..44daa291 100755 --- a/js/lib/geom/geom-obj.js +++ b/js/lib/geom/geom-obj.js @@ -196,6 +196,24 @@ var GeomObj = function GLGeomObj() { } } } + } else { + if (type === "fill") { + this._fillColor = null; + } else { + this._strokeColor = null; + } + + if (this._materialArray && this._materialTypeArray) { + nMats = this._materialArray.length; + if (nMats === this._materialTypeArray.length) { + for (i=0; i 4) { + if (len > 4) { len = 4; } - for(var n=0; n 0) - { - var arr = []; + this.exportMaterialsJSON = function () { + var jObj; + if (this._materialArray && this._materialNodeArray && this.getWorld().isWebGL()) { + var nMats = this._materialArray.length; + if (nMats > 0) { + var arr = []; - for (var i=0; i= 0) { - rtnStr = rtnStr.substr(0, index); + var rtnStr = str.substr(index + prop.length); + index = rtnStr.indexOf("\n"); + if (index >= 0) { + rtnStr = rtnStr.substr(0, index); } - return rtnStr; - }; + return rtnStr; + }; // Gradient stops for rgba(255,0,0,1) at 0%; rgba(0,255,0,1) at 33%; rgba(0,0,255,1) at 100% will return // 255,0,0,1@0;0,255,0,1@33;0,0,255,1@100 - this.gradientToString = function(colors) { + this.gradientToString = function (colors) { var rtnStr = ""; - if(colors && colors.length) { - var c = colors[0], + if (colors && colors.length) { + var c = colors[0], len = colors.length; rtnStr += String(c.value.r + "," + c.value.g + "," + c.value.b + "," + c.value.a + "@" + c.position); - for(var i=1; i --- js/lib/geom/geom-obj.js | 358 ++++++++++++++++++++++++------------------------ 1 file changed, 179 insertions(+), 179 deletions(-) (limited to 'js/lib/geom/geom-obj.js') diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js index 56cf7c98..2cde8a75 100755 --- a/js/lib/geom/geom-obj.js +++ b/js/lib/geom/geom-obj.js @@ -1,8 +1,8 @@ /* -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. -
*/ + 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 MaterialsModel = require("js/models/materials-model").MaterialsModel; @@ -14,19 +14,19 @@ var GeomObj = function GLGeomObj() { /////////////////////////////////////////////////////////////////////// // Constants /////////////////////////////////////////////////////////////////////// - this.GEOM_TYPE_RECTANGLE = 1; - this.GEOM_TYPE_CIRCLE = 2; - this.GEOM_TYPE_LINE = 3; - this.GEOM_TYPE_PATH = 4; - this.GEOM_TYPE_CUBIC_BEZIER = 5; - this.GEOM_TYPE_BRUSH_STROKE = 6; - this.GEOM_TYPE_UNDEFINED = -1; + this.GEOM_TYPE_RECTANGLE = 1; + this.GEOM_TYPE_CIRCLE = 2; + this.GEOM_TYPE_LINE = 3; + this.GEOM_TYPE_PATH = 4; + this.GEOM_TYPE_CUBIC_BEZIER = 5; + this.GEOM_TYPE_BRUSH_STROKE = 6; + this.GEOM_TYPE_UNDEFINED = -1; // Needed for calculating dashed/dotted strokes this.DASH_LENGTH = 0.15; this.DOT_LENGTH = 0.05; this.GAP_LENGTH = 0.05; - + /////////////////////////////////////////////////////////////////////// // Instance variables /////////////////////////////////////////////////////////////////////// @@ -40,74 +40,74 @@ var GeomObj = function GLGeomObj() { this.m_world = null; // stroke and fill colors - this._strokeColor = [0,0,0,0]; - this._fillColor = [0,0,0,0]; + this._strokeColor = [0, 0, 0, 0]; + this._fillColor = [0, 0, 0, 0]; - // stroke and fill materials - this._fillMaterial = null; - this._strokeMaterial = null; + // stroke and fill materials + this._fillMaterial = null; + this._strokeMaterial = null; - // array of primitives - used in RDGE - this._primArray = []; - this._materialNodeArray = []; - this._materialArray = []; - this._materialTypeArray = []; + // array of primitives - used in RDGE + this._primArray = []; + this._materialNodeArray = []; + this._materialArray = []; + this._materialTypeArray = []; - // the transform node used by RDGE - this._trNode = null; + // the transform node used by RDGE + this._trNode = null; /////////////////////////////////////////////////////////////////////// // Property accessors /////////////////////////////////////////////////////////////////////// - this.setWorld = function( world ) { + this.setWorld = function (world) { this.m_world = world; }; - this.getWorld = function() { + this.getWorld = function () { return this.m_world; }; - this.getMatrix = function() { + this.getMatrix = function () { return this._matrix.slice(0); }; - this.setMatrix = function(m) { + this.setMatrix = function (m) { this._matrix = m.slice(0); }; - this.setNext = function( next ) { + this.setNext = function (next) { this._next = next; }; - this.getNext = function() { + this.getNext = function () { return this._next; }; - this.setPrev = function( prev ) { + this.setPrev = function (prev) { this._prev = prev; }; - this.getPrev = function() { + this.getPrev = function () { return this._prev; }; - this.setChild = function( child ) { + this.setChild = function (child) { this._child = child; }; - this.getChild = function() { + this.getChild = function () { return this._child; }; - this.setParent = function( parent ) { + this.setParent = function (parent) { this._parent = parent; }; - this.getParent = function() { + this.getParent = function () { return this._parent; }; - this.geomType = function() { + this.geomType = function () { return this.GEOM_TYPE_UNDEFINED; }; @@ -115,7 +115,7 @@ var GeomObj = function GLGeomObj() { return this._primArray; }; - this.getMaterialNodeArray = function() { + this.getMaterialNodeArray = function () { return this._materialNodeArray; }; @@ -123,29 +123,29 @@ var GeomObj = function GLGeomObj() { return this._materialArray; }; - this.getTransformNode = function() { + this.getTransformNode = function () { return this._trNode; }; - this.setTransformNode = function(t) { + this.setTransformNode = function (t) { this._trNode = t; }; - this.setFillColor = function(c) { + this.setFillColor = function (c) { this.setMaterialColor(c, "fill"); }; - this.setStrokeColor = function(c) { + this.setStrokeColor = function (c) { this.setMaterialColor(c, "stroke"); }; /////////////////////////////////////////////////////////////////////// // Methods /////////////////////////////////////////////////////////////////////// - this.setMaterialColor = function(c, type) { + this.setMaterialColor = function (c, type) { var i = 0, nMats = 0; - if(c) { - if(c.gradientMode) { + if (c) { + if (c.gradientMode) { // Gradient support if (this._materialArray && this._materialTypeArray) { nMats = this._materialArray.length; @@ -156,21 +156,21 @@ var GeomObj = function GLGeomObj() { var len = colors.length; // TODO - Current shaders only support 4 color stops - if(len > 4) { + if (len > 4) { len = 4; } - for(var n=0; n 0) { - var arr = []; + var arr = []; for (var i = 0; i < nMats; i++) { - var matObj = - { - 'materialNodeName' : this._materialNodeArray[i].name, - 'material' : this._materialArray[i].exportJSON(), - 'type' : this._materialTypeArray[i] - } - arr.push( matObj ); - } - - jObj = - { - 'nMaterials' : nMats, - 'materials' : arr - }; - } - } - - return jObj; - } + var matObj = + { + 'materialNodeName':this._materialNodeArray[i].name, + 'material':this._materialArray[i].exportJSON(), + 'type':this._materialTypeArray[i] + } + arr.push(matObj); + } + + jObj = + { + 'nMaterials':nMats, + 'materials':arr + }; + } + } + + return jObj; + } this.importMaterialsJSON = function (jObj) { - this._materialArray = []; - this._materialTypeArray = []; + this._materialArray = []; + this._materialTypeArray = []; - if (!jObj) return; + if (!jObj) return; - var nMaterials = jObj.nMaterials; - var matArray = jObj.materials; + var nMaterials = jObj.nMaterials; + var matArray = jObj.materials; for (var i = 0; i < nMaterials; i++) { - var mat; - var matObj = matArray[i].material; - var shaderName = matObj.material; + var mat; + var matObj = matArray[i].material; + var shaderName = matObj.material; switch (shaderName) { - case "flat": - case "radialGradient": - case "linearGradient": - case "bumpMetal": - case "uber": - case "plasma": - case "deform": - case "water": - case "paris": - case "raiders": - case "tunnel": - case "reliefTunnel": - case "squareTunnel": - case "twist": - case "fly": - case "julia": - case "mandel": - case "star": - case "zinvert": - case "keleidoscope": - case "radialBlur": - case "pulse": - mat = MaterialsModel.getMaterialByShader( shaderName ); - if (mat) mat = mat.dup(); - break; - - default: - console.log( "material type: " + shaderName + " is not supported" ); - break; - } + case "flat": + case "radialGradient": + case "linearGradient": + case "bumpMetal": + case "uber": + case "plasma": + case "deform": + case "water": + case "paris": + case "raiders": + case "tunnel": + case "reliefTunnel": + case "squareTunnel": + case "twist": + case "fly": + case "julia": + case "mandel": + case "star": + case "zinvert": + case "keleidoscope": + case "radialBlur": + case "pulse": + mat = MaterialsModel.getMaterialByShader(shaderName); + if (mat) mat = mat.dup(); + break; + + default: + console.log("material type: " + shaderName + " is not supported"); + break; + } if (mat) { - mat.importJSON( matObj ); - this._materialArray.push( mat ); - this._materialTypeArray.push( matObj.type ); - var type = matArray[i].type; - if (type == "fill") this._fillMaterial = mat; - else this._strokeMaterial = mat; - } - } - }; - - this.translate = function(v) { - var mat = Matrix.Translation( v ); + mat.importJSON(matObj); + this._materialArray.push(mat); + this._materialTypeArray.push(matObj.type); + var type = matArray[i].type; + if (type == "fill") this._fillMaterial = mat; + else this._strokeMaterial = mat; + } + } + }; + + this.translate = function (v) { + var mat = Matrix.Translation(v); //var mat2 = mat.multiply( this._matrix ); //this._matrix = mat2; - glmat4.multiply(mat, this._matrix, this._matrix); + glmat4.multiply(mat, this._matrix, this._matrix); }; - this.transform = function( mat ) { + this.transform = function (mat) { if (mat) { //this._matrix = mat.multiply( this._matrix ); - glmat4.multiply(mat, this._matrix, this._matrix); - } + glmat4.multiply(mat, this._matrix, this._matrix); + } }; - this.setMatrix = function(mat) { + this.setMatrix = function (mat) { var gl = this.getWorld().getGLContext(); if (gl) { gl.uniformMatrix4fv(this.getWorld().getShaderProgram().mvMatrixUniform, false, new Float32Array(mat)); } }; - this.buildBuffers = function() { + this.buildBuffers = function () { // this function must be overridden by the base class - alert( "GLGeomObj.buildBuffers must be overridden by base class" ); + alert("GLGeomObj.buildBuffers must be overridden by base class"); }; - this.render = function() { - alert( "GLGeomObj.render method must be overridden by sub class" ); + this.render = function () { + alert("GLGeomObj.render method must be overridden by sub class"); }; - this.collidesWithPoint = function( x, y ) { - alert( "GLGeomObj.collidesWithPoint method must be overridden by sub class" ); + this.collidesWithPoint = function (x, y) { + alert("GLGeomObj.collidesWithPoint method must be overridden by sub class"); }; - this.getNearPoint = function( pt, dir ) { - // the alert is not displayed. Objects may choose not to implement this method. + this.getNearPoint = function (pt, dir) { + // the alert is not displayed. Objects may choose not to implement this method. //alert( "GLGeomObj.getNearPoint method must be overridden by sub class" ); }; - this.getNearVertex = function( pt, dir ) { - // this should be overridden by objects (such as rectangles) that have corners - }; + this.getNearVertex = function (pt, dir) { + // this should be overridden by objects (such as rectangles) that have corners + }; - this.containsPoint = function( pt, dir ) { - // the alert is not displayed. Objects may choose not to implement this method. + this.containsPoint = function (pt, dir) { + // the alert is not displayed. Objects may choose not to implement this method. //alert( "GLGeomObj.containsPoint method must be overridden by sub class" ); }; - this.getPropertyFromString = function( prop, str ) { - var index = str.indexOf( prop ); - if (index < 0) throw new Error( "property " + prop + " not found in string: " + str); + this.getPropertyFromString = function (prop, str) { + var index = str.indexOf(prop); + if (index < 0) throw new Error("property " + prop + " not found in string: " + str); - var rtnStr = str.substr( index+prop.length ); - index = rtnStr.indexOf( "\n" ); - if (index >= 0) { - rtnStr = rtnStr.substr(0, index); + var rtnStr = str.substr(index + prop.length); + index = rtnStr.indexOf("\n"); + if (index >= 0) { + rtnStr = rtnStr.substr(0, index); } - return rtnStr; - }; + return rtnStr; + }; // Gradient stops for rgba(255,0,0,1) at 0%; rgba(0,255,0,1) at 33%; rgba(0,0,255,1) at 100% will return // 255,0,0,1@0;0,255,0,1@33;0,0,255,1@100 - this.gradientToString = function(colors) { + this.gradientToString = function (colors) { var rtnStr = ""; - if(colors && colors.length) { - var c = colors[0], + if (colors && colors.length) { + var c = colors[0], len = colors.length; rtnStr += String(c.value.r + "," + c.value.g + "," + c.value.b + "," + c.value.a + "@" + c.position); - for(var i=1; i --- js/lib/geom/geom-obj.js | 3 +++ 1 file changed, 3 insertions(+) (limited to 'js/lib/geom/geom-obj.js') diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js index 2cde8a75..f2991bdb 100755 --- a/js/lib/geom/geom-obj.js +++ b/js/lib/geom/geom-obj.js @@ -47,6 +47,9 @@ var GeomObj = function GLGeomObj() { this._fillMaterial = null; this._strokeMaterial = null; + // Shapes (such as lines) that don't support fill should set this to false + this.canFill = true; + // array of primitives - used in RDGE this._primArray = []; this._materialNodeArray = []; -- cgit v1.2.3