diff options
author | hwc487 | 2012-07-09 16:08:02 -0700 |
---|---|---|
committer | hwc487 | 2012-07-09 16:08:02 -0700 |
commit | 5085d0f67df89a21715308956004164597a6ba79 (patch) | |
tree | 2c896163143a66331205a39b0a3b1b45d51bf12a /js/lib/geom | |
parent | 51f1691f792dbda9b740ded8aa0457c9406db156 (diff) | |
parent | 84b3327bd92faafab7954b5eb64c7abe24a3fe13 (diff) | |
download | ninja-5085d0f67df89a21715308956004164597a6ba79.tar.gz |
Merge branch 'master' of github.com:Motorola-Mobility/ninja-internal into GridFixes
Conflicts:
js/helper-classes/3D/StageLine.js
Diffstat (limited to 'js/lib/geom')
-rwxr-xr-x | js/lib/geom/anchor-point.js | 12 | ||||
-rwxr-xr-x | js/lib/geom/brush-stroke.js | 6 | ||||
-rwxr-xr-x | js/lib/geom/circle.js | 298 | ||||
-rwxr-xr-x | js/lib/geom/geom-obj.js | 65 | ||||
-rwxr-xr-x | js/lib/geom/line.js | 123 | ||||
-rwxr-xr-x | js/lib/geom/rectangle.js | 1187 | ||||
-rw-r--r-- | js/lib/geom/shape-primitive.js | 463 | ||||
-rwxr-xr-x | js/lib/geom/sub-path.js | 4 |
8 files changed, 1258 insertions, 900 deletions
diff --git a/js/lib/geom/anchor-point.js b/js/lib/geom/anchor-point.js index a1fcfc0d..72eebd0d 100755 --- a/js/lib/geom/anchor-point.js +++ b/js/lib/geom/anchor-point.js | |||
@@ -30,14 +30,14 @@ POSSIBILITY OF SUCH DAMAGE. | |||
30 | 30 | ||
31 | ///////////////////////////////////////////// | 31 | ///////////////////////////////////////////// |
32 | // Class GLAnchorPoint | 32 | // Class GLAnchorPoint |
33 | // GL representation of a point clicked | 33 | // GL representation of a point clicked |
34 | // and dragged during pen tool | 34 | // and dragged during pen tool |
35 | // | 35 | // |
36 | // | 36 | // |
37 | ///////////////////////////////////////////// | 37 | ///////////////////////////////////////////// |
38 | var GLAnchorPoint = function GLAnchorPoint() { | 38 | var GLAnchorPoint = function GLAnchorPoint() { |
39 | ///////////////////////////////////////// | 39 | ///////////////////////////////////////// |
40 | // Instance variables | 40 | // Instance variables |
41 | ///////////////////////////////////////// | 41 | ///////////////////////////////////////// |
42 | this._x = 0.0; | 42 | this._x = 0.0; |
43 | this._y = 0.0; | 43 | this._y = 0.0; |
@@ -99,7 +99,7 @@ GLAnchorPoint.prototype.translateNextFromPrev = function (tx, ty, tz) { | |||
99 | if (totalTransSq < 0.0000001) { | 99 | if (totalTransSq < 0.0000001) { |
100 | return; | 100 | return; |
101 | } | 101 | } |
102 | 102 | ||
103 | // *** compute the rotation of the prev vector *** | 103 | // *** compute the rotation of the prev vector *** |
104 | var oldP = [this._prevX + tx - this._x, this._prevY + ty - this._y, this._prevZ + tz - this._z]; | 104 | var oldP = [this._prevX + tx - this._x, this._prevY + ty - this._y, this._prevZ + tz - this._z]; |
105 | var newP = [this._prevX - this._x, this._prevY - this._y, this._prevZ - this._z]; | 105 | var newP = [this._prevX - this._x, this._prevY - this._y, this._prevZ - this._z]; |
@@ -133,7 +133,7 @@ GLAnchorPoint.prototype.translatePrevFromNext = function (tx, ty, tz) { | |||
133 | if (totalTransSq < 0.0000001) { | 133 | if (totalTransSq < 0.0000001) { |
134 | return; | 134 | return; |
135 | } | 135 | } |
136 | 136 | ||
137 | // *** compute the rotation of the next vector *** | 137 | // *** compute the rotation of the next vector *** |
138 | var oldN = [this._nextX + tx - this._x, this._nextY + ty - this._y, this._nextZ + tz - this._z]; | 138 | var oldN = [this._nextX + tx - this._x, this._nextY + ty - this._y, this._nextZ + tz - this._z]; |
139 | var newN = [this._nextX - this._x, this._nextY - this._y, this._nextZ - this._z]; | 139 | var newN = [this._nextX - this._x, this._nextY - this._y, this._nextZ - this._z]; |
diff --git a/js/lib/geom/brush-stroke.js b/js/lib/geom/brush-stroke.js index e553a1c6..6365d14c 100755 --- a/js/lib/geom/brush-stroke.js +++ b/js/lib/geom/brush-stroke.js | |||
@@ -52,7 +52,7 @@ var BrushStroke = function GLBrushStroke() { | |||
52 | this._BBoxMax = [0, 0, 0]; | 52 | this._BBoxMax = [0, 0, 0]; |
53 | this._isDirty = true; | 53 | this._isDirty = true; |
54 | this._isInit = false; | 54 | this._isInit = false; |
55 | 55 | ||
56 | //the HTML5 canvas that holds this brush stroke | 56 | //the HTML5 canvas that holds this brush stroke |
57 | this._canvas = null; | 57 | this._canvas = null; |
58 | //flag indicating whether or not to freeze the size and position of canvas | 58 | //flag indicating whether or not to freeze the size and position of canvas |
@@ -312,7 +312,7 @@ BrushStroke.prototype.setWidth = function (newW) { | |||
312 | } | 312 | } |
313 | var minWidth = 1+this._strokeWidth; | 313 | var minWidth = 1+this._strokeWidth; |
314 | if (newW<minWidth) { | 314 | if (newW<minWidth) { |
315 | newW=minWidth; | 315 | newW=minWidth; |
316 | } | 316 | } |
317 | 317 | ||
318 | if (oldCanvasWidth<minWidth) { | 318 | if (oldCanvasWidth<minWidth) { |
@@ -731,7 +731,7 @@ BrushStroke.prototype.drawToContext = function(ctx, drawStageWorldPts, stageWorl | |||
731 | w = world.getViewportWidth(); | 731 | w = world.getViewportWidth(); |
732 | h = world.getViewportHeight(); | 732 | h = world.getViewportHeight(); |
733 | } | 733 | } |
734 | 734 | ||
735 | if (this._strokeUseCalligraphic) { | 735 | if (this._strokeUseCalligraphic) { |
736 | //build the stamp for the brush stroke | 736 | //build the stamp for the brush stroke |
737 | var t=0; | 737 | var t=0; |
diff --git a/js/lib/geom/circle.js b/js/lib/geom/circle.js index 39cde514..53847631 100755 --- a/js/lib/geom/circle.js +++ b/js/lib/geom/circle.js | |||
@@ -31,14 +31,14 @@ POSSIBILITY OF SUCH DAMAGE. | |||
31 | var GeomObj = require("js/lib/geom/geom-obj").GeomObj; | 31 | var GeomObj = require("js/lib/geom/geom-obj").GeomObj; |
32 | var ShapePrimitive = require("js/lib/geom/shape-primitive").ShapePrimitive; | 32 | var ShapePrimitive = require("js/lib/geom/shape-primitive").ShapePrimitive; |
33 | var MaterialsModel = require("js/models/materials-model").MaterialsModel; | 33 | var MaterialsModel = require("js/models/materials-model").MaterialsModel; |
34 | var drawUtils = require("js/helper-classes/3D/draw-utils").DrawUtils; | 34 | var drawUtils = require("js/helper-classes/3D/draw-utils").DrawUtils; |
35 | var vecUtils = require("js/helper-classes/3D/vec-utils").VecUtils; | 35 | var vecUtils = require("js/helper-classes/3D/vec-utils").VecUtils; |
36 | 36 | ||
37 | /////////////////////////////////////////////////////////////////////// | 37 | /////////////////////////////////////////////////////////////////////// |
38 | // Class GLCircle | 38 | // Class GLCircle |
39 | // GL representation of a circle. | 39 | // GL representation of a circle. |
40 | // Derived from class GLGeomObj | 40 | // Derived from class GLGeomObj |
41 | // The position and dimensions of the stroke, fill, and inner Radius should be in pixels | 41 | // The position and dimensions of the stroke, fill, and inner Radius should be in pixels |
42 | /////////////////////////////////////////////////////////////////////// | 42 | /////////////////////////////////////////////////////////////////////// |
43 | exports.Circle = Object.create(GeomObj, { | 43 | exports.Circle = Object.create(GeomObj, { |
44 | 44 | ||
@@ -57,7 +57,7 @@ exports.Circle = Object.create(GeomObj, { | |||
57 | _strokeStyle: { value : "Solid", writable: true }, | 57 | _strokeStyle: { value : "Solid", writable: true }, |
58 | _aspectRatio: { value : 1.0, writable: true }, | 58 | _aspectRatio: { value : 1.0, writable: true }, |
59 | 59 | ||
60 | init: { | 60 | init: { |
61 | value: function(world, xOffset, yOffset, width, height, strokeSize, strokeColor, fillColor, innerRadius, strokeMaterial, fillMaterial, strokeStyle) { | 61 | value: function(world, xOffset, yOffset, width, height, strokeSize, strokeColor, fillColor, innerRadius, strokeMaterial, fillMaterial, strokeStyle) { |
62 | if(arguments.length > 0) { | 62 | if(arguments.length > 0) { |
63 | this._width = width; | 63 | this._width = width; |
@@ -85,14 +85,28 @@ exports.Circle = Object.create(GeomObj, { | |||
85 | } else { | 85 | } else { |
86 | this._strokeMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ).dup(); | 86 | this._strokeMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ).dup(); |
87 | } | 87 | } |
88 | if (strokeColor && this._strokeMaterial.hasProperty( "color" )) this._strokeMaterial.setProperty( "color", this._strokeColor ); | 88 | |
89 | if(strokeColor) { | ||
90 | if(this._strokeMaterial.hasProperty("color")) { | ||
91 | this._strokeMaterial.setProperty( "color", this._strokeColor ); | ||
92 | } else if (this._strokeMaterial && (this._strokeMaterial.gradientType === this._strokeColor.gradientMode)) { | ||
93 | this._strokeMaterial.setGradientData(this._strokeColor.color); | ||
94 | } | ||
95 | } | ||
89 | 96 | ||
90 | if(fillMaterial) { | 97 | if(fillMaterial) { |
91 | this._fillMaterial = fillMaterial.dup(); | 98 | this._fillMaterial = fillMaterial.dup(); |
92 | } else { | 99 | } else { |
93 | this._fillMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ).dup(); | 100 | this._fillMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ).dup(); |
94 | } | 101 | } |
95 | if (fillColor && this._fillMaterial.hasProperty( "color" )) this._fillMaterial.setProperty( "color", this._fillColor ); | 102 | |
103 | if(fillColor) { | ||
104 | if(this._fillMaterial.hasProperty("color")) { | ||
105 | this._fillMaterial.setProperty( "color", this._fillColor ); | ||
106 | } else if (this._fillMaterial && (this._fillMaterial.gradientType === this._fillColor.gradientMode)) { | ||
107 | this._fillMaterial.setGradientData(this._fillColor.color); | ||
108 | } | ||
109 | } | ||
96 | } | 110 | } |
97 | }, | 111 | }, |
98 | 112 | ||
@@ -203,7 +217,7 @@ exports.Circle = Object.create(GeomObj, { | |||
203 | }, | 217 | }, |
204 | 218 | ||
205 | /////////////////////////////////////////////////////////////////////// | 219 | /////////////////////////////////////////////////////////////////////// |
206 | // update the "color of the material | 220 | // update the "color of the material |
207 | getFillColor: { | 221 | getFillColor: { |
208 | value: function() { | 222 | value: function() { |
209 | return this._fillColor; | 223 | return this._fillColor; |
@@ -251,15 +265,15 @@ exports.Circle = Object.create(GeomObj, { | |||
251 | 265 | ||
252 | // get the normalized device coordinates (NDC) for | 266 | // get the normalized device coordinates (NDC) for |
253 | // all position and dimensions. | 267 | // all position and dimensions. |
254 | var vpw = world.getViewportWidth(), vph = world.getViewportHeight(); | 268 | var vpw = world.getViewportWidth(), vph = world.getViewportHeight(); |
255 | var xNDC = 2*this._xOffset/vpw, yNDC = -2*this._yOffset/vph, | 269 | var xNDC = 2*this._xOffset/vpw, yNDC = -2*this._yOffset/vph, |
256 | xRadNDC = this._width/vpw, yRadNDC = this._height/vph, | 270 | xRadNDC = this._width/vpw, yRadNDC = this._height/vph, |
257 | xStrokeNDC = 2*this._strokeWidth/vpw, yStrokeNDC = 2*this._strokeWidth/vph, | 271 | xStrokeNDC = 2*this._strokeWidth/vpw, yStrokeNDC = 2*this._strokeWidth/vph, |
258 | xInnRadNDC = this._innerRadius*xRadNDC, yInnRadNDC = this._innerRadius*yRadNDC; | 272 | xInnRadNDC = this._innerRadius*xRadNDC, yInnRadNDC = this._innerRadius*yRadNDC; |
259 | 273 | ||
260 | var aspect = world.getAspect(); | 274 | var aspect = world.getAspect(); |
261 | var zn = world.getZNear(), zf = world.getZFar(); | 275 | var zn = world.getZNear(), zf = world.getZFar(); |
262 | var t = zn * Math.tan(world.getFOV() * Math.PI / 360.0), | 276 | var t = zn * Math.tan(world.getFOV() * Math.PI / 360.0), |
263 | b = -t, | 277 | b = -t, |
264 | r = aspect*t, | 278 | r = aspect*t, |
265 | l = -r; | 279 | l = -r; |
@@ -308,7 +322,8 @@ exports.Circle = Object.create(GeomObj, { | |||
308 | innerStrokeScaleMat[0] = xInnRad - xStroke; | 322 | innerStrokeScaleMat[0] = xInnRad - xStroke; |
309 | innerStrokeScaleMat[5] = yInnRad - yStroke; | 323 | innerStrokeScaleMat[5] = yInnRad - yStroke; |
310 | 324 | ||
311 | var fillPrim, strokePrim0, strokePrim1; | 325 | var i; |
326 | var fillPrimArray, strokePrim0Array, strokePrim1Array; | ||
312 | var fillMaterial, strokeMaterial0, strokeMaterial2; | 327 | var fillMaterial, strokeMaterial0, strokeMaterial2; |
313 | 328 | ||
314 | this._primArray = []; | 329 | this._primArray = []; |
@@ -321,43 +336,49 @@ exports.Circle = Object.create(GeomObj, { | |||
321 | if(this._strokeWidth > 0) { | 336 | if(this._strokeWidth > 0) { |
322 | var numStrokes = 1; | 337 | var numStrokes = 1; |
323 | if(this._innerRadius !== 0) { | 338 | if(this._innerRadius !== 0) { |
324 | strokeMaterial0 = this.makeStrokeMaterial(); | 339 | strokeMaterial0 = this.makeStrokeMaterial(); |
325 | strokePrim0 = this.generateOvalRing(x, y, reverseRotMat, innerStrokeScaleMat, innerRadiusScaleMat, nTriangles, strokeMaterial0); | 340 | strokePrim0Array = this.generateOvalRing(x, y, reverseRotMat, innerStrokeScaleMat, innerRadiusScaleMat, nTriangles, strokeMaterial0); |
326 | } | 341 | } |
327 | 342 | ||
328 | strokeMaterial2 = this.makeStrokeMaterial(); | 343 | strokeMaterial2 = this.makeStrokeMaterial(); |
329 | strokePrim1 = this.generateOvalRing(x, y, reverseRotMat, fillScaleMat, strokeScaleMat, nTriangles, strokeMaterial2); | 344 | strokePrim1Array = this.generateOvalRing(x, y, reverseRotMat, fillScaleMat, strokeScaleMat, nTriangles, strokeMaterial2); |
330 | } | 345 | } |
331 | 346 | ||
332 | if (strokePrim0) { |