Add getFocusX() and getFocusY() methods to PinchGestureEventData

This commit is contained in:
vakrilov
2015-11-24 17:43:25 +02:00
parent d3c0e38c54
commit de87dfd00d
3 changed files with 52 additions and 31 deletions

View File

@ -216,15 +216,40 @@ class TapAndDoubleTapGestureListener extends android.view.GestureDetector.Simple
} }
} }
class PinchGestureEventData implements definition.PinchGestureEventData {
public type = definition.GestureTypes.pinch;
public eventName = definition.toString(definition.GestureTypes.pinch);
public ios;
constructor(
public view: view.View,
public android: android.view.ScaleGestureDetector,
public scale: number,
public object: any,
public state: common.GestureStateTypes) {
}
getFocusX(): number {
return this.android.getFocusX() / utils.layout.getDisplayDensity();
}
getFocusY(): number {
return this.android.getFocusY() / utils.layout.getDisplayDensity();
}
}
class PinchGestureListener extends android.view.ScaleGestureDetector.SimpleOnScaleGestureListener { class PinchGestureListener extends android.view.ScaleGestureDetector.SimpleOnScaleGestureListener {
private _observer: GesturesObserver; private _observer: GesturesObserver;
private _target: view.View; private _target: view.View;
private _scale: number; private _scale: number;
private _density: number;
constructor(observer: GesturesObserver, target: view.View) { constructor(observer: GesturesObserver, target: view.View) {
super(); super();
this._observer = observer; this._observer = observer;
this._target = target; this._target = target;
this._density = utils.layout.getDisplayDensity();
return global.__native(this); return global.__native(this);
} }
@ -232,16 +257,12 @@ class PinchGestureListener extends android.view.ScaleGestureDetector.SimpleOnSca
public onScaleBegin(detector: android.view.ScaleGestureDetector): boolean { public onScaleBegin(detector: android.view.ScaleGestureDetector): boolean {
this._scale = detector.getScaleFactor(); this._scale = detector.getScaleFactor();
var args = <definition.PinchGestureEventData>{ var args = new PinchGestureEventData(
type: definition.GestureTypes.pinch, this._target,
view: this._target, detector,
android: detector, this._scale,
scale: this._scale, this._target,
object: this._target, common.GestureStateTypes.began);
eventName: definition.toString(definition.GestureTypes.pinch),
ios: undefined,
state: common.GestureStateTypes.began
};
_executeCallback(this._observer, args); _executeCallback(this._observer, args);
@ -251,16 +272,12 @@ class PinchGestureListener extends android.view.ScaleGestureDetector.SimpleOnSca
public onScale(detector: android.view.ScaleGestureDetector): boolean { public onScale(detector: android.view.ScaleGestureDetector): boolean {
this._scale *= detector.getScaleFactor(); this._scale *= detector.getScaleFactor();
var args = <definition.PinchGestureEventData>{ var args = new PinchGestureEventData(
type: definition.GestureTypes.pinch, this._target,
view: this._target, detector,
android: detector, this._scale,
scale: this._scale, this._target,
object: this._target, common.GestureStateTypes.changed);
eventName: definition.toString(definition.GestureTypes.pinch),
ios: undefined,
state: common.GestureStateTypes.changed
};
_executeCallback(this._observer, args); _executeCallback(this._observer, args);
return true; return true;
@ -269,16 +286,12 @@ class PinchGestureListener extends android.view.ScaleGestureDetector.SimpleOnSca
public onScaleEnd(detector: android.view.ScaleGestureDetector): void { public onScaleEnd(detector: android.view.ScaleGestureDetector): void {
this._scale *= detector.getScaleFactor(); this._scale *= detector.getScaleFactor();
var args = <definition.PinchGestureEventData>{ var args = new PinchGestureEventData(
type: definition.GestureTypes.pinch, this._target,
view: this._target, detector,
android: detector, this._scale,
scale: this._scale, this._target,
object: this._target, common.GestureStateTypes.ended);
eventName: definition.toString(definition.GestureTypes.pinch),
ios: undefined,
state: common.GestureStateTypes.ended
};
_executeCallback(this._observer, args); _executeCallback(this._observer, args);
} }

View File

@ -117,6 +117,9 @@ declare module "ui/gestures" {
*/ */
export interface PinchGestureEventData extends GestureEventDataWithState { export interface PinchGestureEventData extends GestureEventDataWithState {
scale: number; scale: number;
getFocusX(): number;
getFocusY(): number;
} }
/** /**

View File

@ -273,12 +273,16 @@ function _getSwipeDirection(direction: UISwipeGestureRecognizerDirection): defin
function _getPinchData(args: definition.GestureEventData): definition.PinchGestureEventData { function _getPinchData(args: definition.GestureEventData): definition.PinchGestureEventData {
var recognizer = <UIPinchGestureRecognizer>args.ios; var recognizer = <UIPinchGestureRecognizer>args.ios;
var center = recognizer.locationInView(args.view._nativeView);
return <definition.PinchGestureEventData>{ return <definition.PinchGestureEventData>{
type: args.type, type: args.type,
view: args.view, view: args.view,
ios: args.ios, ios: args.ios,
android: undefined, android: undefined,
scale: recognizer.scale, scale: recognizer.scale,
getFocusX: () => { return center.x; },
getFocusY: () => { return center.y; },
object: args.view, object: args.view,
eventName: definition.toString(args.type), eventName: definition.toString(args.type),
state: getState(recognizer) state: getState(recognizer)
@ -287,6 +291,7 @@ function _getPinchData(args: definition.GestureEventData): definition.PinchGestu
function _getSwipeData(args: definition.GestureEventData): definition.SwipeGestureEventData { function _getSwipeData(args: definition.GestureEventData): definition.SwipeGestureEventData {
var recognizer = <UISwipeGestureRecognizer>args.ios; var recognizer = <UISwipeGestureRecognizer>args.ios;
return <definition.SwipeGestureEventData>{ return <definition.SwipeGestureEventData>{
type: args.type, type: args.type,
view: args.view, view: args.view,