/**
* @private
*/
Ext.define('Ext.util.Offset', {
/* Begin Definitions */
statics: {
fromObject: function(obj) {
if (obj instanceof this) {
return obj;
}
if (typeof obj === 'number') {
return new this(obj, obj);
}
if (obj.length) {
return new this(obj[0], obj[1]);
}
return new this(obj.x, obj.y);
}
},
/* End Definitions */
constructor: function(x, y) {
this.x = (x != null && !isNaN(x)) ? x : 0;
this.y = (y != null && !isNaN(y)) ? y : 0;
return this;
},
copy: function() {
return new Ext.util.Offset(this.x, this.y);
},
copyFrom: function(p) {
this.x = p.x;
this.y = p.y;
},
toString: function() {
return "Offset[" + this.x + "," + this.y + "]";
},
equals: function(offset) {
//<debug>
if (!(offset instanceof this.statics())) {
Ext.raise('Offset must be an instance of Ext.util.Offset');
}
//</debug>
return (this.x === offset.x && this.y === offset.y);
},
add: function(offset) {
//<debug>
if (!(offset instanceof this.statics())) {
Ext.raise('Offset must be an instance of Ext.util.Offset');
}
//</debug>
this.x += offset.x;
this.y += offset.y;
},
round: function(to) {
var factor;
if (!isNaN(to)) {
factor = Math.pow(10, to);
this.x = Math.round(this.x * factor) / factor;
this.y = Math.round(this.y * factor) / factor;
}
else {
this.x = Math.round(this.x);
this.y = Math.round(this.y);
}
},
isZero: function() {
return this.x === 0 && this.y === 0;
}
});