aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes/RDGE/GLSubpath.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/helper-classes/RDGE/GLSubpath.js')
-rwxr-xr-xjs/helper-classes/RDGE/GLSubpath.js64
1 files changed, 59 insertions, 5 deletions
diff --git a/js/helper-classes/RDGE/GLSubpath.js b/js/helper-classes/RDGE/GLSubpath.js
index 3200cf59..7beb11b9 100755
--- a/js/helper-classes/RDGE/GLSubpath.js
+++ b/js/helper-classes/RDGE/GLSubpath.js
@@ -178,6 +178,65 @@ function GLSubpath() {
178 } //render() 178 } //render()
179 179
180 this.geomType = function () { return this.GEOM_TYPE_CUBIC_BEZIER; } 180 this.geomType = function () { return this.GEOM_TYPE_CUBIC_BEZIER; }
181
182
183 this.setWidth = function (newW) {
184 //todo this doesn't work in cases where the newW is zero or if the previous width was 0/1 (i.e. the path had become degenerate in width)
185 //todo same as above for the setHeight function below
186 //scale the contents of this subpath to lie within this width
187 //determine the scale factor by comparing with the old width
188 var oldWidth = this._BBoxMax[0]-this._BBoxMin[0];
189 if (oldWidth<1){
190 oldWidth=1;
191 }
192 var scaleX = newW/oldWidth;
193 if (scaleX===1){
194 return; //no need to do anything
195 }
196
197 //scale the anchor point positions such that the width of the bbox is the newW
198 var origX = this._BBoxMin[0];
199 var numAnchors = this._Anchors.length;
200 for (var i=0;i<numAnchors;i++){
201 //compute the distance from the bboxMin
202 var oldW = this._Anchors[i].getPosX() - origX;
203 var prevW = this._Anchors[i].getPrevX() - origX;
204 var nextW = this._Anchors[i].getNextX() - origX;
205
206 this._Anchors[i].setPos(origX + oldW*scaleX,this._Anchors[i].getPosY(),this._Anchors[i].getPosZ());
207 this._Anchors[i].setPrevPos(origX + prevW*scaleX,this._Anchors[i].getPrevY(),this._Anchors[i].getPrevZ());
208 this._Anchors[i].setNextPos(origX + nextW*scaleX,this._Anchors[i].getNextY(),this._Anchors[i].getNextZ());
209 }
210 this.makeDirty();
211 }
212 this.setHeight = function (newH) {
213 //scale the contents of this subpath to lie within this height
214 //determine the scale factor by comparing with the old height
215 var oldHeight = this._BBoxMax[1]-this._BBoxMin[1];
216 if (oldHeight<1){
217 oldHeight=1;
218 }
219 var scaleY = newH/oldHeight;
220 if (scaleY===1){
221 return; //no need to do anything
222 }
223
224 //scale the anchor point positions such that the height of the bbox is the newH
225 var origY = this._BBoxMin[1];
226 var numAnchors = this._Anchors.length;
227 for (var i=0;i<numAnchors;i++){
228 //compute the distance from the bboxMin
229 var oldW = this._Anchors[i].getPosY() - origY;
230 var prevW = this._Anchors[i].getPrevY() - origY;
231 var nextW = this._Anchors[i].getNextY() - origY;
232
233 this._Anchors[i].setPos(this._Anchors[i].getPosX(), origY + oldW*scaleY,this._Anchors[i].getPosZ());
234 this._Anchors[i].setPrevPos(this._Anchors[i].getPrevX(), origY + prevW*scaleY,this._Anchors[i].getPrevZ());
235 this._Anchors[i].setNextPos(this._Anchors[i].getNextX(), origY + nextW*scaleY,this._Anchors[i].getNextZ());
236 }
237 this.makeDirty();
238 }
239
181} //function GLSubpath ...class definition 240} //function GLSubpath ...class definition
182 241
183 242
@@ -573,11 +632,6 @@ GLSubpath.prototype.setFillMaterial = function(m){ this._fillMaterial = m;}
573GLSubpath.prototype.getFillColor = function() {return this._fillColor;} 632GLSubpath.prototype.getFillColor = function() {return this._fillColor;}
574GLSubpath.prototype.setFillColor = function(c){this._fillColor = c;} 633GLSubpath.prototype.setFillColor = function(c){this._fillColor = c;}
575 634
576GLSubpath.prototype.setWidth = function () {//NO-OP for now
577}
578GLSubpath.prototype.setHeight = function () {//NO-OP for now
579}
580
581GLSubpath.prototype.copyFromSubpath = function (subpath) { 635GLSubpath.prototype.copyFromSubpath = function (subpath) {
582 this.clearAllAnchors(); 636 this.clearAllAnchors();
583 for (var i = 0; i < subpath.getNumAnchors(); i++) { 637 for (var i = 0; i < subpath.getNumAnchors(); i++) {