added missing semicolons. Suspecting several leaking global vars, I'll investigate later

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@2387 eee81c28-f429-11dd-99c0-75d572ba1ddd
master
Bruno Heridet 2013-02-14 13:11:01 +00:00
parent edcc7edec6
commit 6afcd9da2b
2 changed files with 142 additions and 142 deletions

View File

@ -217,14 +217,14 @@ svgedit.history.RemoveElementCommand.prototype.apply = function(handler) {
// Function: RemoveElementCommand.unapply
// Re-adds the new element
svgedit.history.RemoveElementCommand.prototype.unapply = function(handler) {
svgedit.history.RemoveElementCommand.prototype.unapply = function(handler) {
if (handler) {
handler.handleHistoryEvent(svgedit.history.HistoryEventTypes.BEFORE_UNAPPLY, this);
}
svgedit.transformlist.removeElementFromListMap(this.elem);
if(this.nextSibling == null) {
if(window.console) console.log('Error: reference element was lost');
if (this.nextSibling == null) {
if (window.console) console.log('Error: reference element was lost');
}
this.parent.insertBefore(this.elem, this.nextSibling);
@ -243,7 +243,7 @@ svgedit.history.RemoveElementCommand.prototype.elements = function() {
// Class: svgedit.history.ChangeElementCommand
// implements svgedit.history.HistoryCommand
// History command to make a change to an element.
// History command to make a change to an element.
// Usually an attribute change, but can also be textcontent.
//
// Parameters:
@ -277,7 +277,7 @@ svgedit.history.ChangeElementCommand.prototype.apply = function(handler) {
}
var bChangedTransform = false;
for(var attr in this.newValues ) {
for (var attr in this.newValues ) {
if (this.newValues[attr]) {
if (attr == "#text") this.elem.textContent = this.newValues[attr];
else if (attr == "#href") svgedit.utilities.setHref(this.elem, this.newValues[attr]);
@ -297,7 +297,7 @@ svgedit.history.ChangeElementCommand.prototype.apply = function(handler) {
}
// relocate rotational transform, if necessary
if(!bChangedTransform) {
if (!bChangedTransform) {
var angle = svgedit.utilities.getRotationAngle(this.elem);
if (angle) {
var bbox = elem.getBBox();
@ -325,7 +325,7 @@ svgedit.history.ChangeElementCommand.prototype.unapply = function(handler) {
}
var bChangedTransform = false;
for(var attr in this.oldValues ) {
for (var attr in this.oldValues ) {
if (this.oldValues[attr]) {
if (attr == "#text") this.elem.textContent = this.oldValues[attr];
else if (attr == "#href") svgedit.utilities.setHref(this.elem, this.oldValues[attr]);
@ -340,7 +340,7 @@ svgedit.history.ChangeElementCommand.prototype.unapply = function(handler) {
if (attr == "transform") { bChangedTransform = true; }
}
// relocate rotational transform, if necessary
if(!bChangedTransform) {
if (!bChangedTransform) {
var angle = svgedit.utilities.getRotationAngle(this.elem);
if (angle) {
var bbox = elem.getBBox();
@ -453,7 +453,7 @@ svgedit.history.BatchCommand.prototype.addSubCommand = function(cmd) {
// Function: svgedit.history.BatchCommand.isEmpty
// Returns a boolean indicating whether or not the batch command is empty
svgedit.history.BatchCommand.prototype.isEmpty = function() {
return this.stack.length == 0;
return this.stack.length === 0;
};
@ -471,7 +471,7 @@ svgedit.history.UndoManager = function(historyEventHandler) {
this.undoChangeStackPointer = -1;
this.undoableChangeStack = [];
};
// Function: svgedit.history.UndoManager.resetUndoStack
// Resets the undo stack, effectively clearing the undo/redo history
svgedit.history.UndoManager.prototype.resetUndoStack = function() {
@ -480,30 +480,30 @@ svgedit.history.UndoManager.prototype.resetUndoStack = function() {
};
// Function: svgedit.history.UndoManager.getUndoStackSize
// Returns:
// Returns:
// Integer with the current size of the undo history stack
svgedit.history.UndoManager.prototype.getUndoStackSize = function() {
return this.undoStackPointer;
};
// Function: svgedit.history.UndoManager.getRedoStackSize
// Returns:
// Returns:
// Integer with the current size of the redo history stack
svgedit.history.UndoManager.prototype.getRedoStackSize = function() {
return this.undoStack.length - this.undoStackPointer;
};
// Function: svgedit.history.UndoManager.getNextUndoCommandText
// Returns:
// Returns:
// String associated with the next undo command
svgedit.history.UndoManager.prototype.getNextUndoCommandText = function() {
svgedit.history.UndoManager.prototype.getNextUndoCommandText = function() {
return this.undoStackPointer > 0 ? this.undoStack[this.undoStackPointer-1].getText() : "";
};
// Function: svgedit.history.UndoManager.getNextRedoCommandText
// Returns:
// Returns:
// String associated with the next redo command
svgedit.history.UndoManager.prototype.getNextRedoCommandText = function() {
svgedit.history.UndoManager.prototype.getNextRedoCommandText = function() {
return this.undoStackPointer < this.undoStack.length ? this.undoStack[this.undoStackPointer].getText() : "";
};
@ -516,7 +516,7 @@ svgedit.history.UndoManager.prototype.undo = function() {
}
};
// Function: svgedit.history.UndoManager.redo
// Function: svgedit.history.UndoManager.redo
// Performs a redo step
svgedit.history.UndoManager.prototype.redo = function() {
if (this.undoStackPointer < this.undoStack.length && this.undoStack.length > 0) {
@ -524,18 +524,18 @@ svgedit.history.UndoManager.prototype.redo = function() {
cmd.apply(this.handler_);
}
};
// Function: svgedit.history.UndoManager.addCommandToHistory
// Adds a command object to the undo history stack
//
// Parameters:
// Parameters:
// cmd - The command object to add
svgedit.history.UndoManager.prototype.addCommandToHistory = function(cmd) {
// FIXME: we MUST compress consecutive text changes to the same element
// (right now each keystroke is saved as a separate command that includes the
// entire text contents of the text element)
// TODO: consider limiting the history that we store here (need to do some slicing)
// if our stack pointer is not at the end, then we have to remove
// all commands after the pointer and insert the new command
if (this.undoStackPointer < this.undoStack.length && this.undoStack.length > 0) {
@ -553,7 +553,7 @@ svgedit.history.UndoManager.prototype.addCommandToHistory = function(cmd) {
// pop the elements and old values off the stack, gets the current values
// from the DOM and uses all of these to construct the undo-able command.
//
// Parameters:
// Parameters:
// attrName - The name of the attribute being changed
// elems - Array of DOM elements being changed
svgedit.history.UndoManager.prototype.beginUndoableChange = function(attrName, elems) {
@ -578,7 +578,7 @@ svgedit.history.UndoManager.prototype.beginUndoableChange = function(attrName, e
// change since beginUndoableChange was called. The command can then
// be added to the command history
//
// Returns:
// Returns:
// Batch command object with resulting changes
svgedit.history.UndoManager.prototype.finishUndoableChange = function() {
var p = this.undoChangeStackPointer--;

View File

@ -58,7 +58,7 @@ var editorContext_ = null;
svgedit.path.init = function(editorContext) {
editorContext_ = editorContext;
pathFuncs = [0,'ClosePath'];
var pathFuncsStrs = ['Moveto', 'Lineto', 'CurvetoCubic', 'CurvetoQuadratic', 'Arc',
'LinetoHorizontal', 'LinetoVertical','CurvetoCubicSmooth','CurvetoQuadraticSmooth'];
@ -72,19 +72,19 @@ svgedit.path.insertItemBefore = function(elem, newseg, index) {
// Support insertItemBefore on paths for FF2
var list = elem.pathSegList;
if(svgedit.browser.supportsPathInsertItemBefore()) {
if (svgedit.browser.supportsPathInsertItemBefore()) {
list.insertItemBefore(newseg, index);
return;
}
var len = list.numberOfItems;
var arr = [];
for(var i=0; i<len; i++) {
for (var i=0; i<len; i++) {
var cur_seg = list.getItem(i);
arr.push(cur_seg)
arr.push(cur_seg);
}
list.clear();
for(var i=0; i<len; i++) {
if(i == index) { //index+1
for (var i=0; i<len; i++) {
if (i == index) { //index+1
list.appendItem(newseg);
}
list.appendItem(arr[i]);
@ -95,7 +95,7 @@ svgedit.path.insertItemBefore = function(elem, newseg, index) {
svgedit.path.ptObjToArr = function(type, seg_item) {
var arr = segData[type], len = arr.length;
var out = Array(len);
for(var i=0; i<len; i++) {
for (var i=0; i<len; i++) {
out[i] = seg_item[arr[i]];
}
return out;
@ -107,7 +107,7 @@ svgedit.path.getGripPt = function(seg, alt_pt) {
y: alt_pt? alt_pt.y : seg.item.y
}, path = seg.path;
if(path.matrix) {
if (path.matrix) {
var pt = svgedit.math.transformPoint(out.x, out.y, path.matrix);
out = pt;
}
@ -122,9 +122,9 @@ svgedit.path.getPointFromGrip = function(pt, path) {
var out = {
x: pt.x,
y: pt.y
}
};
if(path.matrix) {
if (path.matrix) {
var pt = svgedit.math.transformPoint(out.x, out.y, path.imatrix);
out.x = pt.x;
out.y = pt.y;
@ -159,10 +159,10 @@ svgedit.path.addPointGrip = function(index, x, y) {
var grip = $('#pathpointgrip_'+index);
grip.dblclick(function() {
if(svgedit.path.path) svgedit.path.path.setSegType();
if (svgedit.path.path) svgedit.path.path.setSegType();
});
}
if(x && y) {
if (x && y) {
// set up the point grip element and display it
svgedit.utilities.assignAttributes(pointGrip, {
'cx': x,
@ -185,8 +185,8 @@ svgedit.path.getGripContainer = function() {
svgedit.path.addCtrlGrip = function(id) {
var pointGrip = svgedit.utilities.getElem("ctrlpointgrip_"+id);
if(pointGrip) return pointGrip;
if (pointGrip) return pointGrip;
pointGrip = document.createElementNS(svgns, "circle");
svgedit.utilities.assignAttributes(pointGrip, {
'id': "ctrlpointgrip_" + id,
@ -205,7 +205,7 @@ svgedit.path.addCtrlGrip = function(id) {
svgedit.path.getCtrlLine = function(id) {
var ctrlLine = svgedit.utilities.getElem("ctrlLine_"+id);
if(ctrlLine) return ctrlLine;
if (ctrlLine) return ctrlLine;
ctrlLine = document.createElementNS(svgns, "line");
svgedit.utilities.assignAttributes(ctrlLine, {
@ -222,7 +222,7 @@ svgedit.path.getPointGrip = function(seg, update) {
var index = seg.index;
var pointGrip = svgedit.path.addPointGrip(index);
if(update) {
if (update) {
var pt = svgedit.path.getGripPt(seg);
svgedit.utilities.assignAttributes(pointGrip, {
'cx': pt.x,
@ -237,8 +237,8 @@ svgedit.path.getPointGrip = function(seg, update) {
svgedit.path.getControlPoints = function(seg) {
var item = seg.item;
var index = seg.index;
if(!("x1" in item) || !("x2" in item)) return null;
var cpt = {};
if (!("x1" in item) || !("x2" in item)) return null;
var cpt = {};
var pointGripContainer = svgedit.path.getGripContainer();
// Note that this is intentionally not seg.prev.item
@ -246,7 +246,7 @@ svgedit.path.getControlPoints = function(seg) {
var seg_items = [prev, item];
for(var i=1; i<3; i++) {
for (var i=1; i<3; i++) {
var id = index + 'c' + i;
var ctrlLine = cpt['c' + i + '_line'] = svgedit.path.getCtrlLine(id);
@ -283,19 +283,19 @@ svgedit.path.replacePathSeg = function(type, index, pts, elem) {
var func = 'createSVGPathSeg' + pathFuncs[type];
var seg = path[func].apply(path, pts);
if(svgedit.browser.supportsPathReplaceItem()) {
if (svgedit.browser.supportsPathReplaceItem()) {
path.pathSegList.replaceItem(seg, index);
} else {
var segList = path.pathSegList;
var len = segList.numberOfItems;
var arr = [];
for(var i=0; i<len; i++) {
for (var i=0; i<len; i++) {
var cur_seg = segList.getItem(i);
arr.push(cur_seg)
arr.push(cur_seg);
}
segList.clear();
for(var i=0; i<len; i++) {
if(i == index) {
for (var i=0; i<len; i++) {
if (i == index) {
segList.appendItem(seg);
} else {
segList.appendItem(arr[i]);
@ -307,7 +307,7 @@ svgedit.path.replacePathSeg = function(type, index, pts, elem) {
svgedit.path.getSegSelector = function(seg, update) {
var index = seg.index;
var segLine = svgedit.utilities.getElem("segline_" + index);
if(!segLine) {
if (!segLine) {
var pointGripContainer = svgedit.path.getGripContainer();
// create segline
segLine = document.createElementNS(svgns, "path");
@ -321,11 +321,11 @@ svgedit.path.getSegSelector = function(seg, update) {
'd': 'M0,0 0,0'
});
pointGripContainer.appendChild(segLine);
}
}
if(update) {
if (update) {
var prev = seg.prev;
if(!prev) {
if (!prev) {
segLine.setAttribute("display", "none");
return segLine;
}
@ -335,7 +335,7 @@ svgedit.path.getSegSelector = function(seg, update) {
svgedit.path.replacePathSeg(2, 0, [pt.x, pt.y], segLine);
var pts = svgedit.path.ptObjToArr(seg.type, seg.item, true);
for(var i=0; i < pts.length; i+=2) {
for (var i=0; i < pts.length; i+=2) {
var pt = svgedit.path.getGripPt(seg, {x:pts[i], y:pts[i+1]});
pts[i] = pt.x;
pts[i+1] = pt.y;
@ -362,20 +362,20 @@ svgedit.path.smoothControlPoints = this.smoothControlPoints = function(ct1, ct2,
y1 = ct1.y - pt.y,
x2 = ct2.x - pt.x,
y2 = ct2.y - pt.y;
if ( (x1 != 0 || y1 != 0) && (x2 != 0 || y2 != 0) ) {
var anglea = Math.atan2(y1,x1),
angleb = Math.atan2(y2,x2),
r1 = Math.sqrt(x1*x1+y1*y1),
r2 = Math.sqrt(x2*x2+y2*y2),
nct1 = editorContext_.getSVGRoot().createSVGPoint(),
nct2 = editorContext_.getSVGRoot().createSVGPoint();
nct2 = editorContext_.getSVGRoot().createSVGPoint();
if (anglea < 0) { anglea += 2*Math.PI; }
if (angleb < 0) { angleb += 2*Math.PI; }
var angleBetween = Math.abs(anglea - angleb),
angleDiff = Math.abs(Math.PI - angleBetween)/2;
var new_anglea, new_angleb;
if (anglea - angleb > 0) {
new_anglea = angleBetween < Math.PI ? (anglea + angleDiff) : (anglea - angleDiff);
@ -385,13 +385,13 @@ svgedit.path.smoothControlPoints = this.smoothControlPoints = function(ct1, ct2,
new_anglea = angleBetween < Math.PI ? (anglea - angleDiff) : (anglea + angleDiff);
new_angleb = angleBetween < Math.PI ? (angleb + angleDiff) : (angleb - angleDiff);
}
// rotate the points
nct1.x = r1 * Math.cos(new_anglea) + pt.x;
nct1.y = r1 * Math.sin(new_anglea) + pt.y;
nct2.x = r2 * Math.cos(new_angleb) + pt.x;
nct2.y = r2 * Math.sin(new_angleb) + pt.y;
return [nct1, nct2];
}
return undefined;
@ -402,7 +402,7 @@ svgedit.path.Segment = function(index, item) {
this.index = index;
this.item = item;
this.type = item.pathSegType;
this.ctrlpts = [];
this.ptgrip = null;
this.segsel = null;
@ -420,7 +420,7 @@ svgedit.path.Segment.prototype.selectCtrls = function(y) {
};
svgedit.path.Segment.prototype.show = function(y) {
if(this.ptgrip) {
if (this.ptgrip) {
this.ptgrip.setAttribute("display", y ? "inline" : "none");
this.segsel.setAttribute("display", y ? "inline" : "none");
// Show/hide all control points if available
@ -429,10 +429,10 @@ svgedit.path.Segment.prototype.show = function(y) {
};
svgedit.path.Segment.prototype.select = function(y) {
if(this.ptgrip) {
if (this.ptgrip) {
this.ptgrip.setAttribute("stroke", y ? "#0FF" : "#00F");
this.segsel.setAttribute("display", y ? "inline" : "none");
if(this.ctrlpts) {
if (this.ctrlpts) {
this.selectCtrls(y);
}
this.selected = y;
@ -446,7 +446,7 @@ svgedit.path.Segment.prototype.addGrip = function() {
};
svgedit.path.Segment.prototype.update = function(full) {
if(this.ptgrip) {
if (this.ptgrip) {
var pt = svgedit.path.getGripPt(this);
svgedit.utilities.assignAttributes(this.ptgrip, {
'cx': pt.x,
@ -455,13 +455,13 @@ svgedit.path.Segment.prototype.update = function(full) {
svgedit.path.getSegSelector(this, true);
if(this.ctrlpts) {
if(full) {
if (this.ctrlpts) {
if (full) {
this.item = svgedit.path.path.elem.pathSegList.getItem(this.index);
this.type = this.item.pathSegType;
}
svgedit.path.getControlPoints(this);
}
}
// this.segsel.setAttribute("display", y?"inline":"none");
}
};
@ -469,7 +469,7 @@ svgedit.path.Segment.prototype.update = function(full) {
svgedit.path.Segment.prototype.move = function(dx, dy) {
var item = this.item;
if(this.ctrlpts) {
if (this.ctrlpts) {
var cur_pts = [item.x += dx, item.y += dy,
item.x1, item.y1, item.x2 += dx, item.y2 += dy];
} else {
@ -477,14 +477,14 @@ svgedit.path.Segment.prototype.move = function(dx, dy) {
}
svgedit.path.replacePathSeg(this.type, this.index, cur_pts);
if(this.next && this.next.ctrlpts) {
if (this.next && this.next.ctrlpts) {
var next = this.next.item;
var next_pts = [next.x, next.y,
next.x1 += dx, next.y1 += dy, next.x2, next.y2];
svgedit.path.replacePathSeg(this.next.type, this.next.index, next_pts);
}
if(this.mate) {
if (this.mate) {
// The last point of a closed subpath has a "mate",
// which is the "M" segment of the subpath
var item = this.mate.item;
@ -494,7 +494,7 @@ svgedit.path.Segment.prototype.move = function(dx, dy) {
}
this.update(true);
if(this.next) this.next.update(true);
if (this.next) this.next.update(true);
};
svgedit.path.Segment.prototype.setLinked = function(num) {
@ -502,12 +502,12 @@ svgedit.path.Segment.prototype.setLinked = function(num) {
if (num == 2) {
anum = 1;
seg = this.next;
if(!seg) return;
if (!seg) return;
pt = this.item;
} else {
anum = 2;
seg = this.prev;
if(!seg) return;
if (!seg) return;
pt = seg.item;
}
@ -547,7 +547,7 @@ svgedit.path.Segment.prototype.setType = function(new_type, pts) {
};
svgedit.path.Path = function(elem) {
if(!elem || elem.tagName !== "path") {
if (!elem || elem.tagName !== "path") {
throw "svgedit.path.Path constructed without a <path> element";
}
@ -568,25 +568,25 @@ svgedit.path.Path.prototype.init = function() {
this.segs = [];
this.selected_pts = [];
this.first_seg = null;
// Set up segs array
for(var i=0; i < len; i++) {
for (var i=0; i < len; i++) {
var item = segList.getItem(i);
var segment = new svgedit.path.Segment(i, item);
segment.path = this;
this.segs.push(segment);
}
}
var segs = this.segs;
var start_i = null;
for(var i=0; i < len; i++) {
var seg = segs[i];
for (var i=0; i < len; i++) {
var seg = segs[i];
var next_seg = (i+1) >= len ? null : segs[i+1];
var prev_seg = (i-1) < 0 ? null : segs[i-1];
if(seg.type === 2) {
if(prev_seg && prev_seg.type !== 1) {
if (seg.type === 2) {
if (prev_seg && prev_seg.type !== 1) {
// New sub-path, last one is open,
// so add a grip to last sub-path's first point
var start_seg = segs[start_i];
@ -596,20 +596,20 @@ svgedit.path.Path.prototype.init = function() {
}
// Remember that this is a starter seg
start_i = i;
} else if(next_seg && next_seg.type === 1) {
} else if (next_seg && next_seg.type === 1) {
// This is the last real segment of a closed sub-path
// Next is first seg after "M"
seg.next = segs[start_i+1];
// First seg after "M"'s prev is this
seg.next.prev = seg;
seg.mate = segs[start_i];
seg.addGrip();
if(this.first_seg == null) {
if (this.first_seg == null) {
this.first_seg = seg;
}
} else if(!next_seg) {
if(seg.type !== 1) {
} else if (!next_seg) {
if (seg.type !== 1) {
// Last seg, doesn't close so add a grip
// to last sub-path's first point
var start_seg = segs[start_i];
@ -618,17 +618,17 @@ svgedit.path.Path.prototype.init = function() {
start_seg.addGrip();
seg.addGrip();
if(!this.first_seg) {
if (!this.first_seg) {
// Open path, so set first as real first and add grip
this.first_seg = segs[start_i];
}
}
} else if(seg.type !== 1){
} else if (seg.type !== 1){
// Regular segment, so add grip and its "next"
seg.addGrip();
// Don't set its "next" if it's an "M"
if(next_seg && next_seg.type !== 2) {
if (next_seg && next_seg.type !== 2) {
seg.next = next_seg;
seg.next.prev = seg;
}
@ -638,17 +638,17 @@ svgedit.path.Path.prototype.init = function() {
};
svgedit.path.Path.prototype.eachSeg = function(fn) {
var len = this.segs.length
for(var i=0; i < len; i++) {
var len = this.segs.length;
for (var i=0; i < len; i++) {
var ret = fn.call(this.segs[i], i);
if(ret === false) break;
if (ret === false) break;
}
};
svgedit.path.Path.prototype.addSeg = function(index) {
// Adds a new segment
var seg = this.segs[index];
if(!seg.prev) return;
if (!seg.prev) return;
var prev = seg.prev;
var newseg;
@ -684,25 +684,24 @@ svgedit.path.Path.prototype.addSeg = function(index) {
svgedit.path.Path.prototype.deleteSeg = function(index) {
var seg = this.segs[index];
var list = this.elem.pathSegList;
seg.show(false);
var next = seg.next;
if(seg.mate) {
if (seg.mate) {
// Make the next point be the "M" point
var pt = [next.item.x, next.item.y];
svgedit.path.replacePathSeg(2, next.index, pt);
// Reposition last node
svgedit.path.replacePathSeg(4, seg.index, pt);
list.removeItem(seg.mate.index);
} else if(!seg.prev) {
} else if (!seg.prev) {
// First node of open path, make next point the M
var item = seg.item;
var pt = [next.item.x, next.item.y];
svgedit.path.replacePathSeg(2, seg.next.index, pt);
list.removeItem(index);
} else {
list.removeItem(index);
}
@ -712,31 +711,32 @@ svgedit.path.Path.prototype.subpathIsClosed = function(index) {
var closed = false;
// Check if subpath is already open
svgedit.path.path.eachSeg(function(i) {
if(i <= index) return true;
if(this.type === 2) {
if (i <= index) return true;
if (this.type === 2) {
// Found M first, so open
return false;
} else if(this.type === 1) {
}
if (this.type === 1) {
// Found Z first, so closed
closed = true;
return false;
}
});
return closed;
};
svgedit.path.Path.prototype.removePtFromSelection = function(index) {
var pos = this.selected_pts.indexOf(index);
if(pos == -1) {
if (pos == -1) {
return;
}
}
this.segs[index].select(false);
this.selected_pts.splice(pos, 1);
};
svgedit.path.Path.prototype.clearSelection = function() {
this.eachSeg(function(i) {
this.eachSeg(function() {
// 'this' is the segment here
this.select(false);
});
@ -753,13 +753,13 @@ svgedit.path.Path.prototype.show = function(y) {
// 'this' is the segment here
this.show(y);
});
if(y) {
if (y) {
this.selectPt(this.first_seg.index);
}
return this;
};
// Move selected points
// Move selected points
svgedit.path.Path.prototype.movePts = function(d_x, d_y) {
var i = this.selected_pts.length;
while(i--) {
@ -771,7 +771,7 @@ svgedit.path.Path.prototype.movePts = function(d_x, d_y) {
svgedit.path.Path.prototype.moveCtrl = function(d_x, d_y) {
var seg = this.segs[this.selected_pts[0]];
seg.moveCtrl(this.dragctrl, d_x, d_y);
if(link_control_pts) {
if (link_control_pts) {
seg.setLinked(this.dragctrl);
}
};
@ -782,23 +782,23 @@ svgedit.path.Path.prototype.setSegType = function(new_type) {
var text;
while(i--) {
var sel_pt = this.selected_pts[i];
// Selected seg
var cur = this.segs[sel_pt];
var prev = cur.prev;
if(!prev) continue;
if(!new_type) { // double-click, so just toggle
if (!prev) continue;
if (!new_type) { // double-click, so just toggle
text = "Toggle Path Segment Type";
// Toggle segment to curve/straight line
var old_type = cur.type;
new_type = (old_type == 6) ? 4 : 6;
}
}
new_type = new_type-0;
var cur_x = cur.item.x;
var cur_y = cur.item.y;
var prev_x = prev.item.x;
@ -806,7 +806,7 @@ svgedit.path.Path.prototype.setSegType = function(new_type) {
var points;
switch ( new_type ) {
case 6:
if(cur.olditem) {
if (cur.olditem) {
var old = cur.olditem;
points = [cur_x,cur_y, old.x1,old.y1, old.x2,old.y2];
} else {
@ -829,12 +829,12 @@ svgedit.path.Path.prototype.setSegType = function(new_type) {
break;
case 4:
points = [cur_x,cur_y];
// Store original prevve segment nums
cur.olditem = cur.item;
break;
}
cur.setType(new_type, points);
}
svgedit.path.path.endChanges(text);
@ -842,19 +842,19 @@ svgedit.path.Path.prototype.setSegType = function(new_type) {
svgedit.path.Path.prototype.selectPt = function(pt, ctrl_num) {
this.clearSelection();
if(pt == null) {
if (pt == null) {
this.eachSeg(function(i) {
// 'this' is the segment here.
if(this.prev) {
if (this.prev) {
pt = i;
}
});
}
this.addPtsToSelection(pt);
if(ctrl_num) {
if (ctrl_num) {
this.dragctrl = ctrl_num;
if(link_control_pts) {
if (link_control_pts) {
this.segs[pt].setLinked(ctrl_num);
}
}
@ -863,7 +863,7 @@ svgedit.path.Path.prototype.selectPt = function(pt, ctrl_num) {
// Update position of all points
svgedit.path.Path.prototype.update = function() {
var elem = this.elem;
if(svgedit.utilities.getRotationAngle(elem)) {
if (svgedit.utilities.getRotationAngle(elem)) {
this.matrix = svgedit.math.getMatrix(elem);
this.imatrix = this.matrix.inverse();
} else {
@ -881,34 +881,34 @@ svgedit.path.Path.prototype.update = function() {
svgedit.path.getPath_ = function(elem) {
var p = pathData[elem.id];
if(!p) p = pathData[elem.id] = new svgedit.path.Path(elem);
if (!p) p = pathData[elem.id] = new svgedit.path.Path(elem);
return p;
};
svgedit.path.removePath_ = function(id) {
if(id in pathData) delete pathData[id];
if (id in pathData) delete pathData[id];
};
var getRotVals = function(x, y) {
dx = x - oldcx;
dy = y - oldcy;
// rotate the point around the old center
r = Math.sqrt(dx*dx + dy*dy);
theta = Math.atan2(dy,dx) + angle;
dx = r * Math.cos(theta) + oldcx;
dy = r * Math.sin(theta) + oldcy;
// dx,dy should now hold the actual coordinates of each
// point after being rotated
// now we want to rotate them around the new center in the reverse direction
dx -= newcx;
dy -= newcy;
r = Math.sqrt(dx*dx + dy*dy);
theta = Math.atan2(dy,dx) - angle;
return {'x':(r * Math.cos(theta) + newcx)/1,
'y':(r * Math.sin(theta) + newcy)/1};
};
@ -923,7 +923,7 @@ var getRotVals = function(x, y) {
svgedit.path.recalcRotatedPath = function() {
var current_path = svgedit.path.path.elem;
var angle = svgedit.utilities.getRotationAngle(current_path, true);
if(!angle) return;
if (!angle) return;
// selectedBBoxes[0] = svgedit.path.path.oldbbox;
var box = svgedit.utilities.getBBox(current_path),
oldbox = svgedit.path.path.oldbbox,//selectedBBoxes[0],
@ -931,27 +931,27 @@ svgedit.path.recalcRotatedPath = function() {
oldcy = oldbox.y + oldbox.height/2,
newcx = box.x + box.width/2,
newcy = box.y + box.height/2,
// un-rotate the new center to the proper position
dx = newcx - oldcx,
dy = newcy - oldcy,
r = Math.sqrt(dx*dx + dy*dy),
theta = Math.atan2(dy,dx) + angle;
newcx = r * Math.cos(theta) + oldcx;
newcy = r * Math.sin(theta) + oldcy;
var list = current_path.pathSegList,
i = list.numberOfItems;
while (i) {
i -= 1;
var seg = list.getItem(i),
type = seg.pathSegType;
if(type == 1) continue;
if (type == 1) continue;
var rvals = getRotVals(seg.x,seg.y),
points = [rvals.x, rvals.y];
if(seg.x1 != null && seg.x2 != null) {
if (seg.x1 != null && seg.x2 != null) {
c_vals1 = getRotVals(seg.x1, seg.y1);
c_vals2 = getRotVals(seg.x2, seg.y2);
points.splice(points.length, 0, c_vals1.x , c_vals1.y, c_vals2.x, c_vals2.y);
@ -959,10 +959,10 @@ svgedit.path.recalcRotatedPath = function() {
svgedit.path.replacePathSeg(type, i, points);
} // loop for each point
box = svgedit.utilities.getBBox(current_path);
box = svgedit.utilities.getBBox(current_path);
// selectedBBoxes[0].x = box.x; selectedBBoxes[0].y = box.y;
// selectedBBoxes[0].width = box.width; selectedBBoxes[0].height = box.height;
// now we must set the new transform to be rotated around the new center
var R_nc = svgroot.createSVGTransform(),
tlist = svgedit.transformlist.getTransformList(current_path);