aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rwxr-xr-xjs/data/pi/pi-data.js5
-rwxr-xr-xjs/lib/geom/brush-stroke.js1423
-rw-r--r--js/tools/BrushTool.js2
3 files changed, 747 insertions, 683 deletions
diff --git a/js/data/pi/pi-data.js b/js/data/pi/pi-data.js
index 157cbc64..c6cbc3cf 100755
--- a/js/data/pi/pi-data.js
+++ b/js/data/pi/pi-data.js
@@ -703,13 +703,14 @@ exports.PiData = Montage.create( Montage, {
703 { 703 {
704 type : "color", 704 type : "color",
705 prop: "border", 705 prop: "border",
706 id : "stroke" 706 id : "stroke",
707 visible: false
707 }, 708 },
708 { 709 {
709 type : "color", 710 type : "color",
710 id : "fill", 711 id : "fill",
711 prop: "background", 712 prop: "background",
712 visible : false, 713 visible : true,
713 divider : true 714 divider : true
714 } 715 }
715 ], 716 ],
diff --git a/js/lib/geom/brush-stroke.js b/js/lib/geom/brush-stroke.js
index 09a7023c..d9c2ab53 100755
--- a/js/lib/geom/brush-stroke.js
+++ b/js/lib/geom/brush-stroke.js
@@ -45,7 +45,7 @@ var BrushStroke = function GLBrushStroke() {
45 this._strokeAmountSmoothing = 0; 45 this._strokeAmountSmoothing = 0;
46 46
47 // currently, brush does not support a fill region 47 // currently, brush does not support a fill region
48 this.canFill = false; 48 this.canFill = true;
49 49
50 //threshold that tells us whether two samples are too far apart 50 //threshold that tells us whether two samples are too far apart
51 this._MAX_SAMPLE_DISTANCE_THRESHOLD = 5; 51 this._MAX_SAMPLE_DISTANCE_THRESHOLD = 5;
@@ -65,777 +65,840 @@ var BrushStroke = function GLBrushStroke() {
65 this._planeMatInv = null; 65 this._planeMatInv = null;
66 this._planeCenter = null; 66 this._planeCenter = null;
67 this._dragPlane = null; 67 this._dragPlane = null;
68}; //BrushStroke class defition
68 69
69 ///////////////////////////////////////////////////////// 70BrushStroke.prototype = Object.create(GeomObj, {});
70 // Property Accessors/Setters
71 /////////////////////////////////////////////////////////
72 this.setCanvas = function(c) {
73 this._canvas = c;
74 }
75
76 this.setWorld = function (world) {
77 this._world = world;
78 };
79
80 this.getWorld = function () {
81 return this._world;
82 };
83
84 this.geomType = function () {
85 return this.GEOM_TYPE_BRUSH_STROKE;
86 };
87
88 this.setDrawingTool = function (tool) {
89 this._drawingTool = tool;
90 };
91
92 this.getDrawingTool = function () {
93 return this._drawingTool;
94 };
95
96 this.setPlaneMatrix = function(planeMat){
97 this._planeMat = planeMat;
98 };
99
100 this.setPlaneMatrixInverse = function(planeMatInv){
101 this._planeMatInv = planeMatInv;
102 };
103
104 this.setPlaneCenter = function(pc){
105 this._planeCenter = pc;
106 };
107
108 this.setDragPlane = function(p){
109 this._dragPlane = p;
110 };
111
112 this.getNumPoints = function () {
113 if (this._LocalPoints.length)
114 return this._LocalPoints.length;
115 else
116 return this._Points.length;
117 };
118
119 this.getPoint = function (index) {
120 return this._Points[index].slice(0);
121 };
122 71
123 this.addPoint = function (pt) { 72/////////////////////////////////////////////////////////
124 //add the point only if it is some epsilon away from the previous point 73// Property Accessors/Setters
125 var numPoints = this._Points.length; 74/////////////////////////////////////////////////////////
126 if (numPoints>0) { 75BrushStroke.prototype.setCanvas = function(c) {
127 var threshold = this._MIN_SAMPLE_DISTANCE_THRESHOLD; 76 this._canvas = c;
128 var prevPt = this._Points[numPoints-1]; 77};
129 var diffPt = [prevPt[0]-pt[0], prevPt[1]-pt[1]]; 78
130 var diffPtMag = Math.sqrt(diffPt[0]*diffPt[0] + diffPt[1]*diffPt[1]); 79BrushStroke.prototype.setWorld = function (world) {
131 if (diffPtMag>threshold){ 80 this._world = world;
132 this._Points.push(pt); 81};
133 this._isDirty=true; 82
134 this._isInit = false; 83BrushStroke.prototype.getWorld = function () {
135 } 84 return this._world;
136 } else { 85};
86
87BrushStroke.prototype.geomType = function () {
88 return this.GEOM_TYPE_BRUSH_STROKE;
89};
90
91BrushStroke.prototype.setDrawingTool = function (tool) {
92 this._drawingTool = tool;
93};
94
95BrushStroke.prototype.getDrawingTool = function () {
96 return this._drawingTool;
97};
98
99BrushStroke.prototype.setPlaneMatrix = function(planeMat){
100 this._planeMat = planeMat;
101};
102
103BrushStroke.prototype.setPlaneMatrixInverse = function(planeMatInv){
104 this._planeMatInv = planeMatInv;
105};
106
107BrushStroke.prototype.setPlaneCenter = function(pc){
108 this._planeCenter = pc;
109};
110
111BrushStroke.prototype.setDragPlane = function(p){
112 this._dragPlane = p;
113};
114
115BrushStroke.prototype.getNumPoints = function () {
116 if (this._LocalPoints.length)
117 return this._LocalPoints.length;
118 else
119 return this._Points.length;
120};
121
122BrushStroke.prototype.getPoint = function (index) {
123 return this._Points[index].slice(0);
124};
125
126BrushStroke.prototype.addPoint = function (pt) {
127 //add the point only if it is some epsilon away from the previous point
128 var numPoints = this._Points.length;
129 if (numPoints>0) {
130 var threshold = this._MIN_SAMPLE_DISTANCE_THRESHOLD;
131 var prevPt = this._Points[numPoints-1];
132 var diffPt = [prevPt[0]-pt[0], prevPt[1]-pt[1]];
133 var diffPtMag = Math.sqrt(diffPt[0]*diffPt[0] + diffPt[1]*diffPt[1]);
134 if (diffPtMag>threshold){
137 this._Points.push(pt); 135 this._Points.push(pt);
138 this._isDirty=true; 136 this._isDirty=true;
139 this._isInit = false; 137 this._isInit = false;
140 } 138 }
141 }; 139 } else {
142 140 this._Points.push(pt);
143 this.insertPoint = function(pt, index){
144 this._Points.splice(index, 0, pt);
145 this._isDirty=true; 141 this._isDirty=true;
146 this._isInit = false; 142 this._isInit = false;
147 }; 143 }
144};
148 145
149 this.isDirty = function(){ 146BrushStroke.prototype.insertPoint = function(pt, index){
150 return this._isDirty; 147 this._Points.splice(index, 0, pt);
151 }; 148 this._isDirty=true;
149 this._isInit = false;
150};
152 151
153 this.makeDirty = function(){ 152BrushStroke.prototype.isDirty = function(){
154 this._isDirty=true; 153 return this._isDirty;
155 }; 154};
156 155
157 this.getStageWorldCenter = function() { 156BrushStroke.prototype.makeDirty = function(){
158 return this._stageWorldCenter; 157 this._isDirty=true;
159 }; 158};
160 159
161 this.getBBoxMin = function () { 160BrushStroke.prototype.getStageWorldCenter = function() {
162 return this._BBoxMin; 161 return this._stageWorldCenter;
163 }; 162};
164 163
165 this.getBBoxMax = function () { 164BrushStroke.prototype.getBBoxMin = function () {
166 return this._BBoxMax; 165 return this._BBoxMin;
167 }; 166};
168 167
169 this.getStrokeWidth = function () { 168BrushStroke.prototype.getBBoxMax = function () {
170 return this._strokeWidth; 169 return this._BBoxMax;
171 }; 170};
172 171
173 this.setStrokeWidth = function (w) { 172BrushStroke.prototype.getStrokeWidth = function () {
174 this._strokeWidth = w; 173 return this._strokeWidth;
175 if (this._strokeWidth<1) { 174};
176 this._strokeWidth = 1;
177 }
178 this._isDirty=true;
179 };
180 175