diff --git a/src/basic/Point.js b/src/basic/Point.js index b554c195..d79042ab 100644 --- a/src/basic/Point.js +++ b/src/basic/Point.js @@ -353,15 +353,25 @@ var Point = this.Point = Base.extend({ }, /** - * Checks if the vector represented by this point is parallel (collinear) to + * Checks if the vector represented by this point is colinear (parallel) to * another vector. * * @param point the vector to check against * @return {@true if it is parallel} */ - isParallel: function(point) { - // TODO: Tolerance seems rather high! - return Math.abs(this.x / point.x - this.y / point.y) < 0.00001; + isColinear: function(point) { + return this.cross(point) < Numerical.TOLERANCE; + }, + + /** + * Checks if the vector represented by this point is orthogonal + * (perpendicular) to another vector. + * + * @param point the vector to check against + * @return {@true if it is orthogonal} + */ + isOrthogonal: function(point) { + return this.dot(point) < Numerical.TOLERANCE; }, /** diff --git a/src/path/Path.js b/src/path/Path.js index d8cd911e..f90a3d76 100644 --- a/src/path/Path.js +++ b/src/path/Path.js @@ -107,24 +107,19 @@ var Path = this.Path = PathItem.extend({ segment = Segment.read(arguments, 1); return segment ? this._add(segment, index) : null; }, + + // TODO: Port back to Sg + removeSegment: function(index) { + var segment = this._segments[index] + return segment && segment.remove() ? segment : null; + }, - remove: function() { - if (!arguments.length) { - // remove() - this.base(); - } else if (arguments.length == 1) { - if (arguments[0].point) { - // remove(segment) - arguments[0].remove(); - } else { - // remove(index) - this._segments[arguments[0]].remove(); - } - } else { - // remove(fromIndex, toIndex) - for(var i = arguments[1], l = arguments[0]; i >= l; i--) - this._segments[i].remove(); - } + // TODO: Port back to Sg + removeSegments: function(from, to) { + var i = Base.pick(to, this._segments.length - 1), + from = from || 0; + while (i >= from) + this.removeSegment(i--); }, isSelected: function() { diff --git a/src/path/Segment.js b/src/path/Segment.js index 326307d8..7de08259 100644 --- a/src/path/Segment.js +++ b/src/path/Segment.js @@ -208,8 +208,10 @@ var Segment = this.Segment = Base.extend({ remove: function() { if (this._path) { this._path._segments.splice(this.getIndex(), 1); - if (this.isSelected()) + if (this._selectionState) { this._path._selectedSegmentCount--; + this._selectionState = 0; + } return true; } return false; diff --git a/test/tests/Path.js b/test/tests/Path.js index 7a2f2de7..8a308ca5 100644 --- a/test/tests/Path.js +++ b/test/tests/Path.js @@ -63,13 +63,13 @@ test('path.remove()', function() { path.add(20, 0); path.add(30, 0); - path.remove(0); + path.removeSegment(0); equals(path.segments.length, 3); - path.remove(path.segments[0]); + path.removeSegment(0); equals(path.segments.length, 2); - path.remove(0, 1); + path.removeSegments(0, 1); equals(path.segments.length, 0); path.remove();