aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes/RDGE/GLGeomObj.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/helper-classes/RDGE/GLGeomObj.js')
-rwxr-xr-xjs/helper-classes/RDGE/GLGeomObj.js278
1 files changed, 0 insertions, 278 deletions
diff --git a/js/helper-classes/RDGE/GLGeomObj.js b/js/helper-classes/RDGE/GLGeomObj.js
deleted file mode 100755
index c1ee01ba..00000000
--- a/js/helper-classes/RDGE/GLGeomObj.js
+++ /dev/null
@@ -1,278 +0,0 @@
1/* <copyright>
2This 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/>
4(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
5</copyright> */
6
7///////////////////////////////////////////////////////////////////////
8// Class GLGeomObj
9// Super class for all geometry classes
10///////////////////////////////////////////////////////////////////////
11function GLGeomObj()
12{
13 ///////////////////////////////////////////////////////////////////////
14 // Constants
15 ///////////////////////////////////////////////////////////////////////
16 this.GEOM_TYPE_RECTANGLE = 1;
17 this.GEOM_TYPE_CIRCLE = 2;
18 this.GEOM_TYPE_LINE = 3;
19 this.GEOM_TYPE_PATH = 4;
20 this.GEOM_TYPE_CUBIC_BEZIER = 5;
21 this.GEOM_TYPE_UNDEFINED = -1;
22
23 // Needed for calculating dashed/dotted strokes
24 this.DASH_LENGTH = 0.15;
25 this.DOT_LENGTH = 0.05;
26 this.GAP_LENGTH = 0.05;
27
28 ///////////////////////////////////////////////////////////////////////
29 // Instance variables
30 ///////////////////////////////////////////////////////////////////////
31 this._matrix = Matrix.I(4);
32
33 this._next = undefined;
34 this._prev = undefined;
35 this._child = undefined;
36 this._parent = undefined;
37
38 this.m_world = null;
39
40 // stroke and fill colors
41 this._strokeColor = [0,0,0,0];
42 this._fillColor = [0,0,0,0];
43
44 // stroke and fill materials
45 this._fillMaterial;
46 this._strokeMaterial;
47
48 // array of primitives - used in RDGE
49 this._primArray = [];
50 this._materialNodeArray = [];
51 this._materialArray = [];
52 this._materialTypeArray = [];
53
54 // the transform node used by RDGE
55 this._trNode = null;
56
57
58 ///////////////////////////////////////////////////////////////////////
59 // Property accessors
60 ///////////////////////////////////////////////////////////////////////
61 this.setWorld = function( world ) { this.m_world = world; }
62 this.getWorld = function() { return this.m_world; }
63
64 this.getMatrix = function() { return this._matrix.slice(0); }
65 this.setMatrix = function(m) { this._matrix = m.slice(0); }
66
67 this.setNext = function( next ) { this._next = next; }
68 this.getNext = function() { return this._next; }
69 this.setPrev = function( prev ) { this._prev = prev; }
70 this.getPrev = function() { return this._prev; }
71 this.setChild = function( child ) { this._child = child; }
72 this.getChild = function() { return this._child; }
73 this.setParent = function( parent ) { this._parent = parent; }
74 this.getParent = function() { return this._parent; }
75
76 this.geomType = function() { return this.GEOM_TYPE_UNDEFINED; }
77
78 this.getPrimitiveArray = function() { return this._primArray; }
79 this.getMaterialNodeArray = function() { return this._materialNodeArray; }
80 this.getMaterialArray = function() { return this._materialArray; }
81
82 this.getTransformNode = function() { return this._trNode; }
83 this.setTransformNode = function(t) { this._trNode = t; }
84
85 ///////////////////////////////////////////////////////////////////////
86 // Methods
87 ///////////////////////////////////////////////////////////////////////
88 this.setMaterialColor = function(c, type)
89 {
90 if (type == "fill")
91 this._fillColor = c.slice(0);
92 else
93 this._strokeColor = c.slice(0);
94 if (this._materialArray && this._materialTypeArray)
95 {
96 var nMats = this._materialArray.length;
97 if (nMats === this._materialTypeArray.length)
98 {
99 for (var i=0; i<nMats; i++)
100 {
101 if (this._materialTypeArray[i] == type)
102 this._materialArray[i].setProperty( "color", c.slice(0) );
103 }
104 }
105 }
106
107 var world = this.getWorld();
108 if (world) world.restartRenderLoop();
109 }
110
111 this.setFillColor = function(c) { this.setMaterialColor(c, "fill"); }
112 this.setStrokeColor = function(c) { this.setMaterialColor(c, "stroke"); }
113
114 this.makeStrokeMaterial = function()
115 {
116 var strokeMaterial;
117 if (this.getStrokeMaterial())
118 strokeMaterial = this.getStrokeMaterial().dup();
119 else
120 strokeMaterial = new FlatMaterial();
121
122 if (strokeMaterial)
123 {
124 strokeMaterial.init( this.getWorld() );
125 if(this._strokeColor)
126 {
127 strokeMaterial.setProperty("color", this._strokeColor);
128 }
129 }
130
131 this._materialArray.push( strokeMaterial );
132 this._materialTypeArray.push( "stroke" );
133
134 return strokeMaterial;
135 }
136
137 this.makeFillMaterial = function()
138 {
139 var fillMaterial;
140 if (this.getFillMaterial())
141 fillMaterial = this.getFillMaterial().dup();
142 else
143 fillMaterial = new FlatMaterial();
144
145 if (fillMaterial)
146 {
147 fillMaterial.init( this.getWorld() );
148 //if(!this.getFillMaterial() && this._fillColor)
149 if (this._fillColor)
150 {
151 fillMaterial.setProperty("color", this._fillColor);
152 }
153 }
154
155 this._materialArray.push( fillMaterial );
156 this._materialTypeArray.push( "fill" );
157
158 return fillMaterial;
159 }
160
161
162 this.translate = function(v)
163 {
164 var mat = Matrix.Translation( v );
165 //var mat2 = mat.multiply( this._matrix );
166 //this._matrix = mat2;
167 glmat4.multiply(mat, this._matrix, this._matrix);
168 }
169
170 this.transform = function( mat )
171 {
172 if (mat)
173 {
174 //this._matrix = mat.multiply( this._matrix );
175 glmat4.multiply(mat, this._matrix, this._matrix);
176 }
177 }
178
179 this.setMatrix = function(mat)
180 {
181 var gl = this.getWorld().getGLContext();
182 if (gl)
183 {
184 gl.uniformMatrix4fv(this.getWorld().getShaderProgram().mvMatrixUniform, false, new Float32Array(mat));
185 }
186 }
187
188 this.buildBuffers = function()
189 {
190 // this function must be overridden by the base class
191 alert( "GLGeomObj.buildBuffers must be overridden by base class" );
192 }
193
194 this.render = function()
195 {
196 alert( "GLGeomObj.render method must be overridden by sub class" );
197 }
198
199 this.collidesWithPoint = function( x, y )
200 {
201 alert( "GLGeomObj.collidesWithPoint method must be overridden by sub class" );
202 }
203
204
205 this.getNearPoint = function( pt, dir )
206 {
207 // the alert is not displayed. Objects may choose not to implement this method.
208 //alert( "GLGeomObj.getNearPoint method must be overridden by sub class" );
209 }
210
211 this.getNearVertex = function( pt, dir )
212 {
213 // this should be overridden by objects (such as rectangles) that have corners
214 }
215
216 this.containsPoint = function( pt, dir )
217 {
218 // the alert is not displayed. Objects may choose not to implement this method.
219 //alert( "GLGeomObj.containsPoint method must be overridden by sub class" );
220 }
221
222 this.getPropertyFromString = function( prop, str )
223 {
224 var index = str.indexOf( prop );
225 if (index < 0) throw new Error( "property " + prop + " not found in string: " + str);
226
227 var rtnStr = str.substr( index+prop.length );
228 index = rtnStr.indexOf( "\n" );
229 if (index >= 0)
230 rtnStr = rtnStr.substr(0, index);
231
232