aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/components/tools-properties/pen-properties.reel/pen-properties.html22
-rw-r--r--js/components/tools-properties/pen-properties.reel/pen-properties.js18
-rw-r--r--js/helper-classes/RDGE/GLAnchorPoint.js230
-rw-r--r--js/helper-classes/RDGE/GLBrushStroke.js1
-rw-r--r--js/helper-classes/RDGE/GLSubpath.js2312
-rw-r--r--js/tools/PenTool.js358
6 files changed, 1132 insertions, 1809 deletions
diff --git a/js/components/tools-properties/pen-properties.reel/pen-properties.html b/js/components/tools-properties/pen-properties.reel/pen-properties.html
index 7af35a03..74a3a747 100644
--- a/js/components/tools-properties/pen-properties.reel/pen-properties.html
+++ b/js/components/tools-properties/pen-properties.reel/pen-properties.html
@@ -12,12 +12,25 @@
12 <script type="text/montage-serialization"> 12 <script type="text/montage-serialization">
13 { 13 {
14 14
15 "strokeSizeHT": {
16 "module": "js/components/hottextunit.reel",
17 "name": "HotTextUnit",
18 "properties": {
19 "element": {"#": "strokeSize"},
20 "minValue": 1,
21 "maxValue": 100,
22 "value": 1,
23 "decimalPlace": 10,
24 "acceptableUnits" : ["px", "pt"]
25 }
26 },
27
15 "owner": { 28 "owner": {
16 "module": "js/components/tools-properties/pen-properties.reel", 29 "module": "js/components/tools-properties/pen-properties.reel",
17 "name": "PenProperties", 30 "name": "PenProperties",
18 "properties": { 31 "properties": {
19 "element": {"#": "penProperties"}, 32 "element": {"#": "penProperties"},
20 "reset": {"#": "resetPenTool"} 33 "_strokeSize": {"@": "strokeSizeHT"}
21 } 34 }
22 } 35 }
23 } 36 }
@@ -26,9 +39,12 @@
26 </head> 39 </head>
27 40
28 <body> 41 <body>
29 <div id="penProperties" class="subToolHolderPanel"> 42 <div id="penProperties" class="subToolHolderPanel">
30 <button id="resetPenTool" tabindex="0" class="montage-button" aria-role="button" aria-busy="false">Reset</button> 43 <div id="strokesContainer" class="leftLabel" style="margin-left:25px; padding-top: 3px;">
44 <label class="label"> Stroke:</label>
45 <div id="strokeSize" class="label"></div>
31 </div> 46 </div>
47 </div>
32 </body> 48 </body>
33 49
34</html> \ No newline at end of file 50</html> \ No newline at end of file
diff --git a/js/components/tools-properties/pen-properties.reel/pen-properties.js b/js/components/tools-properties/pen-properties.reel/pen-properties.js
index ec8efa69..b57f9a6f 100644
--- a/js/components/tools-properties/pen-properties.reel/pen-properties.js
+++ b/js/components/tools-properties/pen-properties.reel/pen-properties.js
@@ -5,24 +5,10 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
5</copyright> */ 5</copyright> */
6 6
7var Montage = require("montage/core/core").Montage; 7var Montage = require("montage/core/core").Montage;
8var Component = require("montage/ui/component").Component;
9var defaultEventManager = require("montage/core/event/event-manager").defaultEventManager;
10var ToolProperties = require("js/components/tools-properties/tool-properties").ToolProperties; 8var ToolProperties = require("js/components/tools-properties/tool-properties").ToolProperties;
11 9
12exports.PenProperties = Montage.create(ToolProperties, { 10exports.PenProperties = Montage.create(ToolProperties, {
13 reset: { value: null }, 11 strokeSize: {
14 12 get: function() { return this._strokeSize; }
15 _subPrepare: {
16 value: function() {
17 this.reset.addEventListener("click", this, false);
18 }
19 },
20
21 handleClick: {
22 value: function(event) {
23 var newEvent = document.createEvent( "CustomEvent" );
24 newEvent.initCustomEvent( "resetPenTool", false, true );
25 defaultEventManager.dispatchEvent( newEvent );
26 }
27 } 13 }
28}); \ No newline at end of file 14}); \ No newline at end of file
diff --git a/js/helper-classes/RDGE/GLAnchorPoint.js b/js/helper-classes/RDGE/GLAnchorPoint.js
index 496b6f60..6b4af072 100644
--- a/js/helper-classes/RDGE/GLAnchorPoint.js
+++ b/js/helper-classes/RDGE/GLAnchorPoint.js
@@ -26,125 +26,125 @@ function GLAnchorPoint() {
26 this._nextX = 0.0; 26 this._nextX = 0.0;
27 this._nextY = 0.0; 27 this._nextY = 0.0;
28 this._nextZ = 0.0; 28 this._nextZ = 0.0;
29 29}
30 // *********** setters ************ 30 // *********** setters ************
31 this.setPos = function (x, y, z) { this._x = x; this._y = y; this._z = z; } 31GLAnchorPoint.prototype.setPos = function (x, y, z) { this._x = x; this._y = y; this._z = z; }
32 this.setPrevPos = function (x, y, z) { this._prevX = x; this._prevY = y; this._prevZ = z; } 32GLAnchorPoint.prototype.setPrevPos = function (x, y, z) { this._prevX = x; this._prevY = y; this._prevZ = z; }
33 this.setNextPos = function (x, y, z) { this._nextX = x; this._nextY = y; this._nextZ = z; } 33GLAnchorPoint.prototype.setNextPos = function (x, y, z) { this._nextX = x; this._nextY = y; this._nextZ = z; }
34
35 this.setPrevFromNext = function () {
36 //set the previous control point by reflecting the next control point
37 var dispX = this._nextX - this._x;
38 var dispY = this._nextY - this._y;
39 var dispZ = this._nextZ - this._z;
40
41 this._prevX = this._x - dispX;
42 this._prevY = this._y - dispY;
43 this._prevZ = this._z - dispZ;
44 }
45 this.setNextFromPrev = function () {
46 //set the previous control point by reflecting the next control point
47 var dispX = this._prevX - this._x;
48 var dispY = this._prevY - this._y;
49 var dispZ = this._prevZ - this._z;
50
51 this._nextX = this._x - dispX;
52 this._nextY = this._y - dispY;
53 this._nextZ = this._z - dispZ;
54 }
55 34
56 //translate the next point from the translation that was applied to the prev. point 35GLAnchorPoint.prototype.setPrevFromNext = function () {
57 this.translateNextFromPrev = function (tx, ty, tz) { 36 //set the previous control point by reflecting the next control point
58 // *** compute the rotation of the prev vector *** 37 var dispX = this._nextX - this._x;
59 var oldP = Vector.create([this._prevX + tx - this._x, this._prevY + ty - this._y, this._prevZ + tz - this._z]); 38 var dispY = this._nextY - this._y;
60 var newP = Vector.create([this._prevX - this._x, this._prevY - this._y, this._prevZ - this._z]); 39 var dispZ = this._nextZ - this._z;
61 //compute angle between the two vectors
62 var axis = Vector.create([0, 0, 0]);
63 var angle = MathUtils.getAxisAngleBetween3DVectors(oldP, newP, axis);
64 if (angle === 0)
65 return;
66
67 // *** compute the vector from anchor to next
68 var oldN = Vector.create([this._nextX - this._x, this._nextY - this._y, this._nextZ - this._z]);
69 var rotMat = Matrix.Rotation(-angle, axis);
70 var newN = MathUtils.transformVector(oldN, rotMat);
71
72 //TEMP for some situations the axis angle computation returns NaNs
73 if (isNaN(newN[0]) || isNaN(newN[1]) || isNaN(newN[2])) {
74 return;
75 }
76 //end TEMP
77 this._nextX = this._x + newN[0];
78 this._nextY = this._y + newN[1];
79 this._nextZ = this._z + newN[2];
80 }
81 //translate the next point from the translation that was applied to the prev. point
82 this.translatePrevFromNext = function (tx, ty, tz) {
83 // *** compute the rotation of the next vector ***
84 var oldN = Vector.create([this._nextX + tx - this._x, this._nextY + ty - this._y, this._nextZ + tz - this._z]);
85 var newN = Vector.create([this._nextX - this._x, this._nextY - this._y, this._nextZ - this._z]);
86 //compute angle between the two vectors
87 var axis = Vector.create([0, 0, 0]);
88 var angle = MathUtils.getAxisAngleBetween3DVectors(oldN, newN, axis);
89 if (angle === 0)
90 return;
91
92 // *** compute the vector from anchor to prev
93 var oldP = Vector.create([this._prevX - this._x, this._prevY - this._y, this._prevZ - this._z]);
94 var rotMat = Matrix.Rotation(-angle, axis);
95 var newP = MathUtils.transformVector(oldP, rotMat);
96
97 //TEMP for some situations the axis angle computation returns NaNs
98 if (isNaN(newP[0]) || isNaN(newP[1]) || isNaN(newP[2])) {
99 return;
100 }
101 //end TEMP
102 this._prevX = this._x + newP[0];
103 this._prevY = this._y + newP[1];
104 this._prevZ = this._z + newP[2];
105 }
106 40
41 this._prevX = this._x - dispX;
42 this._prevY = this._y - dispY;
43 this._prevZ = this._z - dispZ;
44}
45GLAnchorPoint.prototype.setNextFromPrev = function () {
46 //set the previous control point by reflecting the next control point
47 var dispX = this._prevX - this._x;
48 var dispY = this._prevY - this._y;
49 var dispZ = this._prevZ - this._z;
107 50
108 // ******* modifiers ******* 51 this._nextX = this._x - dispX;
109 this.translatePrev = function (x, y, z) { 52 this._nextY = this._y - dispY;
110 this._prevX += x; this._prevY += y; this._prevZ += z; 53 this._nextZ = this._z - dispZ;
111 } 54}
112 this.translateNext = function (x, y, z) { 55
113 this._nextX += x; this._nextY += y; this._nextZ += z; 56//translate the next point from the translation that was applied to the prev. point
114 } 57GLAnchorPoint.prototype.translateNextFromPrev = function (tx, ty, tz) {
115 this.translate = function (x, y, z) { 58 // *** compute the rotation of the prev vector ***
116 this._x += x; this._y += y; this._z += z; 59 var oldP = Vector.create([this._prevX + tx - this._x, this._prevY + ty - this._y, this._prevZ + tz - this._z]);
117 } 60 var newP = Vector.create([this._prevX - this._x, this._prevY - this._y, this._prevZ - this._z]);
118 this.translateAll = function (x, y, z) { 61 //compute angle between the two vectors
119</