/**
* @private
* Adds hit testing methods to the Ext.draw.Surface.
* Included by the Ext.draw.plugin.SpriteEvents.
*/
Ext.define('Ext.draw.overrides.hittest.Surface', {
override: 'Ext.draw.Surface',
/**
* Performs a hit test on all sprites in the surface, returning the first matching one.
* @param {Array} point A two-item array containing x and y coordinates of the point
* in surface coordinate system.
* @param {Object} options Hit testing options.
* @return {Object} A hit result object that contains more information about what
* exactly was hit or null if nothing was hit.
* @member Ext.draw.Surface
*/
hitTest: function(point, options) {
var me = this,
sprites = me.getItems(),
i, sprite, result;
options = options || Ext.draw.sprite.Sprite.defaultHitTestOptions;
for (i = sprites.length - 1; i >= 0; i--) {
sprite = sprites[i];
if (sprite.hitTest) {
result = sprite.hitTest(point, options);
if (result) {
return result;
}
}
}
return null;
},
/**
* Performs a hit test on all sprites in the surface, returning the first matching one.
* Since hit testing is typically performed on mouse events, this convenience method
* converts event's page coordinates to surface coordinates before calling {@link #hitTest}.
* @param {Object} event An event object.
* @param {Object} options Hit testing options.
* @return {Object} A hit result object that contains more information about what
* exactly was hit or null if nothing was hit.
* @member Ext.draw.Surface
*/
hitTestEvent: function(event, options) {
var xy = this.getEventXY(event);
return this.hitTest(xy, options);
}
});