aboutsummaryrefslogtreecommitdiff
path: root/js/lib/geom/brush-stroke.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/lib/geom/brush-stroke.js')
-rwxr-xr-xjs/lib/geom/brush-stroke.js1352
1 files changed, 741 insertions, 611 deletions
diff --git a/js/lib/geom/brush-stroke.js b/js/lib/geom/brush-stroke.js
index 6facdd5d..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,710 +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
181 this.getStrokeMaterial = function () { 176BrushStroke.prototype.setStrokeWidth = function (w) {
182 return this._strokeMaterial; 177 this._strokeWidth = w;
183 }; 178 if (this._strokeWidth<1) {
179 this._strokeWidth = 1;
180 }
181 this._isDirty=true;
182};
183/*
184BrushStroke.prototype.getStrokeMaterial = function () {
185 return this._strokeMaterial;
186};
187
188BrushStroke.prototype.setStrokeMaterial = function (m) {
189 this._strokeMaterial = m; this._isDirty = true;
190};
191*/
192BrushStroke.prototype.getStrokeColor = function () {
193 return null;//return this._strokeColor;
194};
195
196BrushStroke.prototype.setStrokeColor = function (c) {
197 //this._strokeColor = c; this._isDirty = true;
198};
199
200BrushStroke.prototype.setFillColor = function(c){
201 this._strokeColor = c; this._isDirty = true;
202};