aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xjs/components/tools-properties/brush-properties.reel/brush-properties.html25
-rwxr-xr-xjs/components/tools-properties/brush-properties.reel/brush-properties.js30
-rwxr-xr-xjs/controllers/elements/shapes-controller.js62
-rwxr-xr-xjs/data/pi/pi-data.js141
-rwxr-xr-xjs/lib/geom/brush-stroke.js245
-rwxr-xr-xjs/lib/geom/sub-path.js16
-rw-r--r--js/tools/BrushTool.js41
-rwxr-xr-xjs/tools/PenTool.js33
8 files changed, 467 insertions, 126 deletions
diff --git a/js/components/tools-properties/brush-properties.reel/brush-properties.html b/js/components/tools-properties/brush-properties.reel/brush-properties.html
index 608111bd..98442164 100755
--- a/js/components/tools-properties/brush-properties.reel/brush-properties.html
+++ b/js/components/tools-properties/brush-properties.reel/brush-properties.html
@@ -33,7 +33,8 @@
33 "maxValue": 100, 33 "maxValue": 100,
34 "value": 100, 34 "value": 100,
35 "decimalPlace": 10, 35 "decimalPlace": 10,
36 "acceptableUnits" : ["px", "pt"] 36 "acceptableUnits" : ["%"],
37 "units" : "%"
37 } 38 }
38 }, 39 },
39 40
@@ -46,7 +47,20 @@
46 "maxValue": 90, 47 "maxValue": 90,
47 "value": 0, 48 "value": 0,
48 "decimalPlace": 10, 49 "decimalPlace": 10,
49 "acceptableUnits" : ["px", "pt"] 50 "acceptableUnits" : ["deg."],
51 "units" : "deg."
52 }
53 },
54
55 "smoothingAmountHT": {
56 "module": "js/components/hottext.reel",
57 "name": "HotText",
58 "properties": {
59 "element": {"#": "smoothingAmount"},
60 "minValue": 0,
61 "maxValue": 100,
62 "value": 0,
63 "decimalPlace": 10
50 } 64 }
51 }, 65 },
52 66
@@ -58,8 +72,10 @@
58 "_strokeSize": {"@": "strokeSizeHT"}, 72 "_strokeSize": {"@": "strokeSizeHT"},
59 "_strokeHardness": {"@": "strokeHardnessHT"}, 73 "_strokeHardness": {"@": "strokeHardnessHT"},
60 "_doSmoothing": {"#": "doSmoothing"}, 74 "_doSmoothing": {"#": "doSmoothing"},
75 "_smoothingAmount": {"@": "smoothingAmountHT"},
61 "_useCalligraphic":{"#": "useCalligraphic"}, 76 "_useCalligraphic":{"#": "useCalligraphic"},
62 "_strokeAngle": {"@": "strokeAngleHT"} 77 "_strokeAngle": {"@": "strokeAngleHT"},
78 "_angleLabel": {"#": "angleLabel"}
63 } 79 }
64 } 80 }
65 } 81 }
@@ -75,8 +91,9 @@
75 <label class="label"> Hardness:</label> 91 <label class="label"> Hardness:</label>
76 <div id="strokeHardness" class="label"></div> 92 <div id="strokeHardness" class="label"></div>
77 <label class="label"><input id="doSmoothing" type="checkbox" name="doSmoothingControl" class="checkBoxAlign"/>Smoothing</label> 93 <label class="label"><input id="doSmoothing" type="checkbox" name="doSmoothingControl" class="checkBoxAlign"/>Smoothing</label>
94 <div id="smoothingAmount" class="label"></div>
78 <label class="label"><input id="useCalligraphic" type="checkbox" name="useCalligraphicControl" class="checkBoxAlign"/>Calligraphic</label> 95 <label class="label"><input id="useCalligraphic" type="checkbox" name="useCalligraphicControl" class="checkBoxAlign"/>Calligraphic</label>
79 <label class="label"> Angle:</label> 96 <label class="label" id="angleLabel"> Angle:</label>
80 <div id="strokeAngle" class="label"></div> 97 <div id="strokeAngle" class="label"></div>
81 98
82 </div> 99 </div>
diff --git a/js/components/tools-properties/brush-properties.reel/brush-properties.js b/js/components/tools-properties/brush-properties.reel/brush-properties.js
index e6faa0f0..fdcd50f8 100755
--- a/js/components/tools-properties/brush-properties.reel/brush-properties.js
+++ b/js/components/tools-properties/brush-properties.reel/brush-properties.js
@@ -9,6 +9,33 @@ var Component = require("montage/ui/component").Component;
9var ToolProperties = require("js/components/tools-properties/tool-properties").ToolProperties; 9var ToolProperties = require("js/components/tools-properties/tool-properties").ToolProperties;
10 10
11exports.BrushProperties = Montage.create(ToolProperties, { 11exports.BrushProperties = Montage.create(ToolProperties, {
12 _subPrepare: {
13 value: function() {
14 this.handleChange(null);
15 this._useCalligraphic.addEventListener("change", this, false);
16 this._doSmoothing.addEventListener("change", this, false);
17 }
18 },
19 handleChange: {
20 value: function(event) {
21 if(this._useCalligraphic.checked) {
22 this._strokeAngle.element.style["display"] = "";
23 this._strokeAngle.visible = true;
24 this._angleLabel.style["display"] = "";
25 } else {
26 this._strokeAngle.element.style["display"] = "none";
27 this._strokeAngle.visible = false;
28 this._angleLabel.style["display"] = "none";
29 }
30 if(this._doSmoothing.checked) {
31 this._smoothingAmount.element.style["display"] = "";
32 this._smoothingAmount.visible = true;
33 } else {
34 this._smoothingAmount.element.style["display"] = "none";
35 this._smoothingAmount.visible = false;
36 }
37 }
38 },
12 strokeSize: { 39 strokeSize: {
13 get: function() { return this._strokeSize; } 40 get: function() { return this._strokeSize; }
14 }, 41 },
@@ -18,6 +45,9 @@ exports.BrushProperties = Montage.create(ToolProperties, {
18 doSmoothing:{ 45 doSmoothing:{
19 get: function() {return this._doSmoothing.checked; } 46 get: function() {return this._doSmoothing.checked; }
20 }, 47 },
48 smoothingAmount:{
49 get: function() {return this._smoothingAmount;}
50 },
21 useCalligraphic: { 51 useCalligraphic: {
22 get: function() {return this._useCalligraphic.checked;} 52 get: function() {return this._useCalligraphic.checked;}
23 }, 53 },
diff --git a/js/controllers/elements/shapes-controller.js b/js/controllers/elements/shapes-controller.js
index d72d9c14..b5e63514 100755
--- a/js/controllers/elements/shapes-controller.js
+++ b/js/controllers/elements/shapes-controller.js
@@ -100,6 +100,31 @@ exports.ShapesController = Montage.create(CanvasController, {
100 el.elementModel.shapeModel.GLWorld.render(); 100 el.elementModel.shapeModel.GLWorld.render();
101 } 101 }
102 break; 102 break;
103 case "strokeHardness":
104 this.setShapeProperty(el, "strokeHardness", value);
105 el.elementModel.shapeModel.GLGeomObj.setStrokeHardness(val);
106 el.elementModel.shapeModel.GLWorld.render();
107 break;
108 case "strokeSmoothing":
109 this.setShapeProperty(el, "strokeSmoothing", value);
110 el.elementModel.shapeModel.GLGeomObj.setSmoothingAmount(val);
111 el.elementModel.shapeModel.GLWorld.render();
112 break;
113 case "doSmoothing":
114 this.setShapeProperty(el, "doSmoothing", value);
115 el.elementModel.shapeModel.GLGeomObj.setDoSmoothing(value);
116 el.elementModel.shapeModel.GLWorld.render();
117 break;
118 case "isCalligraphic":
119 this.setShapeProperty(el, "isCalligraphic", value);
120 el.elementModel.shapeModel.GLGeomObj.setStrokeUseCalligraphic(value);
121 el.elementModel.shapeModel.GLWorld.render();
122 break;
123 case "strokeAngle":
124 this.setShapeProperty(el, "strokeAngle", value);
125 el.elementModel.shapeModel.GLGeomObj.setStrokeAngle(Math.PI * -val/180);
126 el.elementModel.shapeModel.GLWorld.render();
127 break;
103 default: 128 default:
104 CanvasController.setProperty(el, p, value); 129 CanvasController.setProperty(el, p, value);
105 } 130 }
@@ -119,6 +144,43 @@ exports.ShapesController = Montage.create(CanvasController, {
119 case "background": 144 case "background":
120 case "useWebGl": 145 case "useWebGl":
121 return this.getShapeProperty(el, p); 146 return this.getShapeProperty(el, p);
147 case "strokeHardness":
148 if (el.elementModel && el.elementModel.shapeModel){
149 return el.elementModel.shapeModel.GLGeomObj.getStrokeHardness();;
150 } else {
151 return null;
152 }
153 break;
154 case "doSmoothing":
155 if (el.elementModel && el.elementModel.shapeModel){
156 return el.elementModel.shapeModel.GLGeomObj.getDoSmoothing();;
157 } else {
158 return null;
159 }
160 break;
161 case "strokeSmoothing":
162 if (el.elementModel && el.elementModel.shapeModel){
163 return el.elementModel.shapeModel.GLGeomObj.getSmoothingAmount();;
164 } else {
165 return null;
166 }
167 break;
168 case "isCalligraphic":
169 if (el.elementModel && el.elementModel.shapeModel){
170 return el.elementModel.shapeModel.GLGeomObj.getStrokeUseCalligraphic();;
171 } else {
172 return null;
173 }
174 break;
175 case "strokeAngle":
176 if (el.elementModel && el.elementModel.shapeModel){
177 return el.elementModel.shapeModel.GLGeomObj.getStrokeAngle();;