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/circle.js | 15 +++++++++ js/lib/geom/geom-obj.js | 82 +++++++++++++++++++++++++----------------------- js/lib/geom/line.js | 8 +++++ js/lib/geom/rectangle.js | 15 +++++++++ 4 files changed, 80 insertions(+), 40 deletions(-) (limited to 'js/lib/geom') diff --git a/js/lib/geom/circle.js b/js/lib/geom/circle.js index d48bf98b..ee3e2abd 100755 --- a/js/lib/geom/circle.js +++ b/js/lib/geom/circle.js @@ -633,6 +633,21 @@ var Circle = function GLCircle() { this._strokeStyle = jObj.strokeStyle; var strokeMaterialName = jObj.strokeMat; var fillMaterialName = jObj.fillMat; + + var strokeMat = MaterialsModel.getMaterial( strokeMaterialName ); + if (!strokeMat) { + console.log( "object material not found in library: " + strokeMaterialName ); + strokeMat = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); + } + this._strokeMaterial = strokeMat; + + var fillMat = MaterialsModel.getMaterial( fillMaterialName ); + if (!fillMat) { + console.log( "object material not found in library: " + fillMaterialName ); + fillMat = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); + } + this._fillMaterial = fillMat; + this.importMaterialsJSON( jObj.materials ); }; 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/circle.js | 4 ++-- js/lib/geom/line.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'js/lib/geom') diff --git a/js/lib/geom/circle.js b/js/lib/geom/circle.js index ee3e2abd..f74d4e57 100755 --- a/js/lib/geom/circle.js +++ b/js/lib/geom/circle.js @@ -42,8 +42,8 @@ var Circle = function GLCircle() { this._strokeWidth = strokeSize; this._innerRadius = innerRadius; - if (strokeColor) this._strokeColor = strokeColor; - if (fillColor) this._fillColor = fillColor; + this._strokeColor = strokeColor; + this._fillColor = fillColor; this._strokeStyle = strokeStyle; } diff --git a/js/lib/geom/line.js b/js/lib/geom/line.js index 2b2434f5..f3806fac 100755 --- a/js/lib/geom/line.js +++ b/js/lib/geom/line.js @@ -44,7 +44,7 @@ var Line = function GLLine( world, xOffset, yOffset, width, height, slope, strok this._slope = slope; this._strokeWidth = strokeSize; - if (strokeColor) this._strokeColor = strokeColor.slice(); + this._strokeColor = strokeColor; this._strokeStyle = strokeStyle; this._scaleX = (world.getViewportWidth())/(world.getViewportHeight()); -- cgit v1.2.3 From c4e83a61311db75c7a1c307553262e77ecaae662 Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Mon, 2 Apr 2012 13:16:27 -0700 Subject: IKNinna-1409 - Should dirty document when changing shape properties. IKNinja-1391 - Shapes need to support no-color. Signed-off-by: Nivesh Rajbhandari --- js/lib/geom/geom-obj.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'js/lib/geom') 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 this._BBoxMax[0]) return false; diff --git a/js/lib/geom/circle.js b/js/lib/geom/circle.js index e8c94b64..4bf37474 100755 --- a/js/lib/geom/circle.js +++ b/js/lib/geom/circle.js @@ -636,100 +636,6 @@ var Circle = function GLCircle() { this.importMaterialsJSON( jObj.materials ); }; - - this.export = function() - { - var rtnStr = "type: " + this.geomType() + "\n"; - - rtnStr += "xoff: " + this._xOffset + "\n"; - rtnStr += "yoff: " + this._yOffset + "\n"; - rtnStr += "width: " + this._width + "\n"; - rtnStr += "height: " + this._height + "\n"; - rtnStr += "strokeWidth: " + this._strokeWidth + "\n"; - rtnStr += "innerRadius: " + this._innerRadius + "\n"; - rtnStr += "strokeStyle: " + this._strokeStyle + "\n"; - - if(this._strokeColor.gradientMode) { - rtnStr += "strokeGradientMode: " + this._strokeColor.gradientMode + "\n"; - rtnStr += "strokeColor: " + this.gradientToString(this._strokeColor.color) + "\n"; - } else { - rtnStr += "strokeColor: " + String(this._strokeColor) + "\n"; - } - - if(this._fillColor.gradientMode) { - rtnStr += "fillGradientMode: " + this._fillColor.gradientMode + "\n"; - rtnStr += "fillColor: " + this.gradientToString(this._fillColor.color) + "\n"; - } else { - rtnStr += "fillColor: " + String(this._fillColor) + "\n"; - } - - rtnStr += "strokeMat: "; - if (this._strokeMaterial) { - rtnStr += this._strokeMaterial.getName(); - } else { - rtnStr += MaterialsModel.getDefaultMaterialName(); - } - - rtnStr += "\n"; - - rtnStr += "fillMat: "; - if (this._fillMaterial) { - rtnStr += this._fillMaterial.getName(); - } else { - rtnStr += MaterialsModel.getDefaultMaterialName(); - } - rtnStr += "\n"; - - rtnStr += this.exportMaterials(); - - return rtnStr; - }; - - this.import = function( importStr ) { - this._xOffset = Number( this.getPropertyFromString( "xoff: ", importStr ) ); - this._yOffset = Number( this.getPropertyFromString( "yoff: ", importStr ) ); - this._width = Number( this.getPropertyFromString( "width: ", importStr ) ); - this._height = Number( this.getPropertyFromString( "height: ", importStr ) ); - this._strokeWidth = Number( this.getPropertyFromString( "strokeWidth: ", importStr ) ); - this._innerRadius = Number( this.getPropertyFromString( "innerRadius: ", importStr ) ); - this._strokeStyle = this.getPropertyFromString( "strokeStyle: ", importStr ); - var strokeMaterialName = this.getPropertyFromString( "strokeMat: ", importStr ); - var fillMaterialName = this.getPropertyFromString( "fillMat: ", importStr ); - if(importStr.indexOf("fillGradientMode: ") < 0) { - this._fillColor = eval( "[" + this.getPropertyFromString( "fillColor: ", importStr ) + "]" ); - } else { - this._fillColor = {}; - this._fillColor.gradientMode = this.getPropertyFromString( "fillGradientMode: ", importStr ); - this._fillColor.color = this.stringToGradient(this.getPropertyFromString( "fillColor: ", importStr )); - } - - if(importStr.indexOf("strokeGradientMode: ") < 0) - { - this._strokeColor = eval( "[" + this.getPropertyFromString( "strokeColor: ", importStr ) + "]" ); - } else { - this._strokeColor = {}; - this._strokeColor.gradientMode = this.getPropertyFromString( "strokeGradientMode: ", importStr ); - this._strokeColor.color = this.stringToGradient(this.getPropertyFromString( "strokeColor: ", importStr )); - } - - var strokeMat = MaterialsModel.getMaterial( strokeMaterialName ); - if (!strokeMat) { - console.log( "object material not found in library: " + strokeMaterialName ); - strokeMat = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); - } - - this._strokeMaterial = strokeMat; - - var fillMat = MaterialsModel.getMaterial( fillMaterialName ); - if (!fillMat) { - console.log( "object material not found in library: " + fillMaterialName ); - fillMat = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); - } - this._fillMaterial = fillMat; - - this.importMaterials( importStr ); - }; - this.collidesWithPoint = function( x, y ) { // if(x < this._xOffset) return false; // if(x > (this._xOffset + this._width)) return false; diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js index f1aa9f8a..bb5b4a9a 100755 --- a/js/lib/geom/geom-obj.js +++ b/js/lib/geom/geom-obj.js @@ -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,109 +40,111 @@ 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; }; - this.getPrimitiveArray = function() { return this._primArray; + this.getPrimitiveArray = function () { + return this._primArray; }; - this.getMaterialNodeArray = function() { + this.getMaterialNodeArray = function () { return this._materialNodeArray; }; - this.getMaterialArray = function() { return this._materialArray; + this.getMaterialArray = function () { + 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.gradientMode) { + if (c.gradientMode) { // Gradient support if (this._materialArray && this._materialTypeArray) { nMats = this._materialArray.length; @@ -153,21 +155,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 = []; + 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') 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