new haveIntersection method

This commit is contained in:
Anton Lavrenov 2018-02-06 08:55:29 +07:00
parent fa2db3ed1a
commit 52f1b91387
5 changed files with 299 additions and 360 deletions

View File

@ -10,6 +10,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
* new `Konva.Transformer` group that allow simple resize, and rotate of a shape. * new `Konva.Transformer` group that allow simple resize, and rotate of a shape.
* Add ability to remove event by callback `node.off('event', callback)`. * Add ability to remove event by callback `node.off('event', callback)`.
* new `Konva.Filters.Contrast`. * new `Konva.Filters.Contrast`.
* new `Konva.Util.haveIntersection()` to detect collusion
## Changed ## Changed

View File

@ -2,7 +2,7 @@
* Konva JavaScript Framework v1.7.6 * Konva JavaScript Framework v1.7.6
* http://konvajs.github.io/ * http://konvajs.github.io/
* Licensed under the MIT * Licensed under the MIT
* Date: Mon Feb 05 2018 * Date: Tue Feb 06 2018
* *
* Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS) * Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS)
* Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva) * Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva)
@ -732,59 +732,6 @@
_isString: function(obj) { _isString: function(obj) {
return Object.prototype.toString.call(obj) === OBJECT_STRING; return Object.prototype.toString.call(obj) === OBJECT_STRING;
}, },
// Returns a function, that, when invoked, will only be triggered at most once
// during a given window of time. Normally, the throttled function will run
// as much as it can, without ever going more than once per `wait` duration;
// but if you'd like to disable the execution on the leading edge, pass
// `{leading: false}`. To disable execution on the trailing edge, ditto.
_throttle: function(func, wait, opts) {
var context, args, result;
var timeout = null;
var previous = 0;
var options = opts || {};
var later = function() {
previous = options.leading === false ? 0 : new Date().getTime();
timeout = null;
result = func.apply(context, args);
context = args = null;
};
return function() {
var now = new Date().getTime();
if (!previous && options.leading === false) {
previous = now;
}
var remaining = wait - (now - previous);
context = this;
args = arguments;
if (remaining <= 0) {
clearTimeout(timeout);
timeout = null;
previous = now;
result = func.apply(context, args);
context = args = null;
} else if (!timeout && options.trailing !== false) {
timeout = setTimeout(later, remaining);
}
return result;
};
},
/*
* other utils
*/
_hasMethods: function(obj) {
var names = [],
key;
for (key in obj) {
if (!obj.hasOwnProperty(key)) {
continue;
}
if (this._isFunction(obj[key])) {
names.push(key);
}
}
return names.length > 0;
},
isValidSelector: function(selector) { isValidSelector: function(selector) {
if (typeof selector !== 'string') { if (typeof selector !== 'string') {
return false; return false;
@ -1037,6 +984,19 @@
} }
return retObj; return retObj;
}, },
/**
* check intersection of two client rectangles
* @method
* @memberof Konva.Util.prototype
*/
haveIntersection: function(r1, r2) {
return !(
r2.x > r1.x + r1.width ||
r2.x + r2.width < r1.x ||
r2.y > r1.y + r1.height ||
r2.y + r2.height < r1.y
);
},
cloneObject: function(obj) { cloneObject: function(obj) {
var retObj = {}; var retObj = {};
for (var key in obj) { for (var key in obj) {
@ -18348,6 +18308,8 @@
'bottom-right' 'bottom-right'
]; ];
var warningShowed = false;
Konva.Transformer.prototype = { Konva.Transformer.prototype = {
_centroid: false, _centroid: false,
____init: function(config) { ____init: function(config) {
@ -18361,6 +18323,13 @@
// update transformer data for certain attr changes // update transformer data for certain attr changes
this.on(ATTR_CHANGE_LIST, this._update); this.on(ATTR_CHANGE_LIST, this._update);
if (!warningShowed) {
Konva.Util.warn(
'Konva.Transformer is currently experimental and may have many bugs. Please report any bugs to GitHub repo.'
);
warningShowed = true;
}
}, },
attachTo: function(node) { attachTo: function(node) {

6
konva.min.js vendored

File diff suppressed because one or more lines are too long

View File

@ -487,59 +487,6 @@
_isString: function(obj) { _isString: function(obj) {
return Object.prototype.toString.call(obj) === OBJECT_STRING; return Object.prototype.toString.call(obj) === OBJECT_STRING;
}, },
// Returns a function, that, when invoked, will only be triggered at most once
// during a given window of time. Normally, the throttled function will run
// as much as it can, without ever going more than once per `wait` duration;
// but if you'd like to disable the execution on the leading edge, pass
// `{leading: false}`. To disable execution on the trailing edge, ditto.
_throttle: function(func, wait, opts) {
var context, args, result;
var timeout = null;
var previous = 0;
var options = opts || {};
var later = function() {
previous = options.leading === false ? 0 : new Date().getTime();
timeout = null;
result = func.apply(context, args);
context = args = null;
};
return function() {
var now = new Date().getTime();
if (!previous && options.leading === false) {
previous = now;
}
var remaining = wait - (now - previous);
context = this;
args = arguments;
if (remaining <= 0) {
clearTimeout(timeout);
timeout = null;
previous = now;
result = func.apply(context, args);
context = args = null;
} else if (!timeout && options.trailing !== false) {
timeout = setTimeout(later, remaining);
}
return result;
};
},
/*
* other utils
*/
_hasMethods: function(obj) {
var names = [],
key;
for (key in obj) {
if (!obj.hasOwnProperty(key)) {
continue;
}
if (this._isFunction(obj[key])) {
names.push(key);
}
}
return names.length > 0;
},
isValidSelector: function(selector) { isValidSelector: function(selector) {
if (typeof selector !== 'string') { if (typeof selector !== 'string') {
return false; return false;
@ -792,6 +739,19 @@
} }
return retObj; return retObj;
}, },
/**
* check intersection of two client rectangles
* @method
* @memberof Konva.Util.prototype
*/
haveIntersection: function(r1, r2) {
return !(
r2.x > r1.x + r1.width ||
r2.x + r2.width < r1.x ||
r2.y > r1.y + r1.height ||
r2.y + r2.height < r1.y
);
},
cloneObject: function(obj) { cloneObject: function(obj) {
var retObj = {}; var retObj = {};
for (var key in obj) { for (var key in obj) {

View File

@ -34,6 +34,8 @@
'bottom-right' 'bottom-right'
]; ];
var warningShowed = false;
Konva.Transformer.prototype = { Konva.Transformer.prototype = {
_centroid: false, _centroid: false,
____init: function(config) { ____init: function(config) {
@ -47,6 +49,13 @@
// update transformer data for certain attr changes // update transformer data for certain attr changes
this.on(ATTR_CHANGE_LIST, this._update); this.on(ATTR_CHANGE_LIST, this._update);
if (!warningShowed) {
Konva.Util.warn(
'Konva.Transformer is currently experimental and may have many bugs. Please report any bugs to GitHub repo.'
);
warningShowed = true;
}
}, },
attachTo: function(node) { attachTo: function(node) {