diff options
Diffstat (limited to 'js/helper-classes/RDGE/GLGeomObj.js')
-rwxr-xr-x | js/helper-classes/RDGE/GLGeomObj.js | 278 |
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> | ||
2 | This file contains proprietary software owned by Motorola Mobility, Inc.<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. | ||
5 | </copyright> */ | ||
6 | |||
7 | /////////////////////////////////////////////////////////////////////// | ||
8 | // Class GLGeomObj | ||
9 | // Super class for all geometry classes | ||
10 | /////////////////////////////////////////////////////////////////////// | ||
11 | function 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 | return rtnStr; | ||
233 | } | ||