paper.js/src/path/SegmentPoint.js

94 lines
2.1 KiB
JavaScript
Raw Normal View History

2011-05-08 04:59:37 -04:00
/*
* Paper.js
*
2011-05-08 04:59:37 -04:00
* This file is part of Paper.js, a JavaScript Vector Graphics Library,
* based on Scriptographer.org and designed to be largely API compatible.
* http://paperjs.org/
* http://scriptographer.org/
*
2011-05-08 04:59:37 -04:00
* Copyright (c) 2011, Juerg Lehni & Jonathan Puckey
* http://lehni.org/ & http://jonathanpuckey.com/
*
2011-07-01 06:17:45 -04:00
* Distributed under the MIT license. See LICENSE file for details.
*
2011-05-08 04:59:37 -04:00
* All rights reserved.
*/
2011-04-21 08:21:56 -04:00
/**
* @name SegmentPoint
* @class An internal version of Point that notifies its segment of each change
2011-04-21 08:21:56 -04:00
* Note: This prototype is not exported.
*
* @private
2011-04-21 08:21:56 -04:00
*/
var SegmentPoint = Point.extend({
set: function(x, y) {
this._x = x;
this._y = y;
this._owner._changed(this);
2011-04-21 08:21:56 -04:00
return this;
},
getX: function() {
return this._x;
},
setX: function(x) {
this._x = x;
this._owner._changed(this);
2011-04-21 08:21:56 -04:00
},
getY: function() {
return this._y;
},
setY: function(y) {
this._y = y;
this._owner._changed(this);
2011-04-21 08:21:56 -04:00
},
isZero: function() {
// Provide our own version of Point#isZero() that does not use the x / y
// accessors but the internal properties directly, for performance
// reasons, since it is used a lot internally.
return Numerical.isZero(this._x) && Numerical.isZero(this._y);
},
2011-04-21 12:06:06 -04:00
setSelected: function(selected) {
this._owner._setSelected(this, selected);
2011-04-21 12:06:06 -04:00
},
isSelected: function() {
return this._owner._isSelected(this);
2011-04-21 12:06:06 -04:00
},
2011-04-21 08:21:56 -04:00
statics: {
create: function(segment, key, pt) {
var point = Base.create(SegmentPoint),
x, y, selected;
if (!pt) {
x = y = 0;
} else if ((x = pt[0]) !== undefined) { // Array-like
y = pt[1];
} else {
// If not Point-like already, read Point from pt = 3rd argument
if ((x = pt.x) === undefined) {
pt = Point.read(arguments, 2);
x = pt.x;
}
y = pt.y;
selected = pt.selected;
2011-04-21 08:21:56 -04:00
}
point._x = x;
point._y = y;
point._owner = segment;
// We need to set the point on the segment before copying over the
// selected state, as otherwise this won't actually select it.
segment[key] = point;
if (selected)
point.setSelected(true);
2011-04-21 08:21:56 -04:00
return point;
}
}
});