aboutsummaryrefslogtreecommitdiff
path: root/js/lib/geom/geom-obj.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/lib/geom/geom-obj.js')
-rwxr-xr-xjs/lib/geom/geom-obj.js533
1 files changed, 238 insertions, 295 deletions
diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js
index f1aa9f8a..f2991bdb 100755
--- a/js/lib/geom/geom-obj.js
+++ b/js/lib/geom/geom-obj.js
@@ -1,8 +1,8 @@
1/* <copyright> 1/* <copyright>
2This file contains proprietary software owned by Motorola Mobility, Inc.<br/> 2 This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
3No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> 3 No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
4(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. 4 (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
5</copyright> */ 5 </copyright> */
6 6
7var MaterialsModel = require("js/models/materials-model").MaterialsModel; 7var MaterialsModel = require("js/models/materials-model").MaterialsModel;
8 8
@@ -14,19 +14,19 @@ var GeomObj = function GLGeomObj() {
14 /////////////////////////////////////////////////////////////////////// 14 ///////////////////////////////////////////////////////////////////////
15 // Constants 15 // Constants
16 /////////////////////////////////////////////////////////////////////// 16 ///////////////////////////////////////////////////////////////////////
17 this.GEOM_TYPE_RECTANGLE = 1; 17 this.GEOM_TYPE_RECTANGLE = 1;
18 this.GEOM_TYPE_CIRCLE = 2; 18 this.GEOM_TYPE_CIRCLE = 2;
19 this.GEOM_TYPE_LINE = 3; 19 this.GEOM_TYPE_LINE = 3;
20 this.GEOM_TYPE_PATH = 4; 20 this.GEOM_TYPE_PATH = 4;
21 this.GEOM_TYPE_CUBIC_BEZIER = 5; 21 this.GEOM_TYPE_CUBIC_BEZIER = 5;
22 this.GEOM_TYPE_BRUSH_STROKE = 6; 22 this.GEOM_TYPE_BRUSH_STROKE = 6;
23 this.GEOM_TYPE_UNDEFINED = -1; 23 this.GEOM_TYPE_UNDEFINED = -1;
24 24
25 // Needed for calculating dashed/dotted strokes 25 // Needed for calculating dashed/dotted strokes
26 this.DASH_LENGTH = 0.15; 26 this.DASH_LENGTH = 0.15;
27 this.DOT_LENGTH = 0.05; 27 this.DOT_LENGTH = 0.05;
28 this.GAP_LENGTH = 0.05; 28 this.GAP_LENGTH = 0.05;
29 29
30 /////////////////////////////////////////////////////////////////////// 30 ///////////////////////////////////////////////////////////////////////
31 // Instance variables 31 // Instance variables
32 /////////////////////////////////////////////////////////////////////// 32 ///////////////////////////////////////////////////////////////////////
@@ -40,191 +40,216 @@ var GeomObj = function GLGeomObj() {
40 this.m_world = null; 40 this.m_world = null;
41 41
42 // stroke and fill colors 42 // stroke and fill colors
43 this._strokeColor = [0,0,0,0]; 43 this._strokeColor = [0, 0, 0, 0];
44 this._fillColor = [0,0,0,0]; 44 this._fillColor = [0, 0, 0, 0];
45
46 // stroke and fill materials
47 this._fillMaterial = null;
48 this._strokeMaterial = null;
45 49
46 // stroke and fill materials 50 // Shapes (such as lines) that don't support fill should set this to false
47 this._fillMaterial = null; 51 this.canFill = true;
48 this._strokeMaterial = null;
49 52
50 // array of primitives - used in RDGE 53 // array of primitives - used in RDGE
51 this._primArray = []; 54 this._primArray = [];
52 this._materialNodeArray = []; 55 this._materialNodeArray = [];
53 this._materialArray = []; 56 this._materialArray = [];
54 this._materialTypeArray = []; 57 this._materialTypeArray = [];
55 58
56 // the transform node used by RDGE 59 // the transform node used by RDGE
57 this._trNode = null; 60 this._trNode = null;
58 61
59 /////////////////////////////////////////////////////////////////////// 62 ///////////////////////////////////////////////////////////////////////
60 // Property accessors 63 // Property accessors
61 /////////////////////////////////////////////////////////////////////// 64 ///////////////////////////////////////////////////////////////////////
62 this.setWorld = function( world ) { 65 this.setWorld = function (world) {
63 this.m_world = world; 66 this.m_world = world;
64 }; 67 };
65 68
66 this.getWorld = function() { 69 this.getWorld = function () {
67 return this.m_world; 70 return this.m_world;
68 }; 71 };
69 72
70 this.getMatrix = function() { 73 this.getMatrix = function () {
71 return this._matrix.slice(0); 74 return this._matrix.slice(0);
72 }; 75 };
73 76
74 this.setMatrix = function(m) { 77 this.setMatrix = function (m) {
75 this._matrix = m.slice(0); 78 this._matrix = m.slice(0);
76 }; 79 };
77 80
78 this.setNext = function( next ) { 81 this.setNext = function (next) {
79 this._next = next; 82 this._next = next;
80 }; 83 };
81 84
82 this.getNext = function() { 85 this.getNext = function () {
83 return this._next; 86 return this._next;
84 }; 87 };
85 88
86 this.setPrev = function( prev ) { 89 this.setPrev = function (prev) {
87 this._prev = prev; 90 this._prev = prev;
88 }; 91 };
89 92
90 this.getPrev = function() { 93 this.getPrev = function () {
91 return this._prev; 94 return this._prev;
92 }; 95 };
93 96
94 this.setChild = function( child ) { 97 this.setChild = function (child) {
95 this._child = child; 98 this._child = child;
96 }; 99 };
97 100
98 this.getChild = function() { 101 this.getChild = function () {
99 return this._child; 102 return this._child;
100 }; 103 };
101 104
102 this.setParent = function( parent ) { 105 this.setParent = function (parent) {
103 this._parent = parent; 106 this._parent = parent;
104 }; 107 };
105 108
106 this.getParent = function() { 109 this.getParent = function () {
107 return this._parent; 110 return this._parent;
108 }; 111 };
109 112
110 this.geomType = function() { 113 this.geomType = function () {
111 return this.GEOM_TYPE_UNDEFINED; 114 return this.GEOM_TYPE_UNDEFINED;
112 }; 115 };
113 116
114 this.getPrimitiveArray = function() { return this._primArray; 117 this.getPrimitiveArray = function () {
118 return this._primArray;
115 }; 119 };
116 120
117 this.getMaterialNodeArray = function() { 121 this.getMaterialNodeArray = function () {
118 return this._materialNodeArray; 122 return this._materialNodeArray;
119 }; 123 };
120 124
121 this.getMaterialArray = function() { return this._materialArray; 125 this.getMaterialArray = function () {
126 return this._materialArray;
122 }; 127 };
123 128
124 this.getTransformNode = function() { 129 this.getTransformNode = function () {
125 return this._trNode; 130 return this._trNode;
126 }; 131 };
127 132
128 this.setTransformNode = function(t) { 133 this.setTransformNode = function (t) {
129 this._trNode = t; 134 this._trNode = t;
130 }; 135 };
131 136
132 this.setFillColor = function(c) { 137 this.setFillColor = function (c) {
133 this.setMaterialColor(c, "fill"); 138 this.setMaterialColor(c, "fill");
134 }; 139 };
135 140
136 this.setStrokeColor = function(c) { 141 this.setStrokeColor = function (c) {
137 this.setMaterialColor(c, "stroke"); 142 this.setMaterialColor(c, "stroke");
138 }; 143 };
139 /////////////////////////////////////////////////////////////////////// 144 ///////////////////////////////////////////////////////////////////////
140 // Methods 145 // Methods
141 /////////////////////////////////////////////////////////////////////// 146 ///////////////////////////////////////////////////////////////////////
142 this.setMaterialColor = function(c, type) { 147 this.setMaterialColor = function (c, type) {
143 var i = 0, 148 var i = 0,
144 nMats = 0; 149 nMats = 0;
145 if(c.gradientMode) { 150 if (c) {
146 // Gradient support 151 if (c.gradientMode) {
147 if (this._materialArray && this._materialTypeArray) { 152 // Gradient support
148 nMats = this._materialArray.length; 153 if (this._materialArray && this._materialTypeArray) {
149 } 154 nMats = this._materialArray.length;
150 155 }
151 var stops = [],
152 colors = c.color;
153 156
154 var len = colors.length; 157 var stops = [],
155 // TODO - Current shaders only support 4 color stops 158 colors = c.color;
156 if(len > 4) {
157 len = 4;
158 }
159 159
160 for(var n=0; n<len; n++) { 160 var len = colors.length;
161 var position = colors[n].position/100; 161 // TODO - Current shaders only support 4 color stops
162 var cs = colors[n].value; 162 if (len > 4) {
163 var stop = [cs.r/255, cs.g/255, cs.b/255, cs.a]; 163 len = 4;
164 stops.push(stop); 164 }
165 165
166 if (nMats === this._materialTypeArray.length) { 166 for (var n = 0; n < len; n++) {
167 for (i=0; i<nMats; i++) { 167 var position = colors[n].position