Skip to content

Commit de87dfd

Browse files
author
vakrilov
committed
Add getFocusX() and getFocusY() methods to PinchGestureEventData
1 parent d3c0e38 commit de87dfd

File tree

3 files changed

+52
-31
lines changed

3 files changed

+52
-31
lines changed

ui/gestures/gestures.android.ts

Lines changed: 44 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -216,32 +216,53 @@ class TapAndDoubleTapGestureListener extends android.view.GestureDetector.Simple
216216
}
217217
}
218218

219+
class PinchGestureEventData implements definition.PinchGestureEventData {
220+
public type = definition.GestureTypes.pinch;
221+
public eventName = definition.toString(definition.GestureTypes.pinch);
222+
public ios;
223+
224+
constructor(
225+
public view: view.View,
226+
public android: android.view.ScaleGestureDetector,
227+
public scale: number,
228+
public object: any,
229+
public state: common.GestureStateTypes) {
230+
231+
}
232+
233+
getFocusX(): number {
234+
return this.android.getFocusX() / utils.layout.getDisplayDensity();
235+
}
236+
getFocusY(): number {
237+
return this.android.getFocusY() / utils.layout.getDisplayDensity();
238+
}
239+
}
240+
219241
class PinchGestureListener extends android.view.ScaleGestureDetector.SimpleOnScaleGestureListener {
220242
private _observer: GesturesObserver;
221243
private _target: view.View;
222244
private _scale: number;
245+
private _density: number;
246+
223247
constructor(observer: GesturesObserver, target: view.View) {
224248
super();
225249

226250
this._observer = observer;
227251
this._target = target;
228-
252+
this._density = utils.layout.getDisplayDensity();
253+
229254
return global.__native(this);
230255
}
231256

232257
public onScaleBegin(detector: android.view.ScaleGestureDetector): boolean {
233258
this._scale = detector.getScaleFactor();
234259

235-
var args = <definition.PinchGestureEventData>{
236-
type: definition.GestureTypes.pinch,
237-
view: this._target,
238-
android: detector,
239-
scale: this._scale,
240-
object: this._target,
241-
eventName: definition.toString(definition.GestureTypes.pinch),
242-
ios: undefined,
243-
state: common.GestureStateTypes.began
244-
};
260+
var args = new PinchGestureEventData(
261+
this._target,
262+
detector,
263+
this._scale,
264+
this._target,
265+
common.GestureStateTypes.began);
245266

246267
_executeCallback(this._observer, args);
247268

@@ -251,16 +272,12 @@ class PinchGestureListener extends android.view.ScaleGestureDetector.SimpleOnSca
251272
public onScale(detector: android.view.ScaleGestureDetector): boolean {
252273
this._scale *= detector.getScaleFactor();
253274

254-
var args = <definition.PinchGestureEventData>{
255-
type: definition.GestureTypes.pinch,
256-
view: this._target,
257-
android: detector,
258-
scale: this._scale,
259-
object: this._target,
260-
eventName: definition.toString(definition.GestureTypes.pinch),
261-
ios: undefined,
262-
state: common.GestureStateTypes.changed
263-
};
275+
var args = new PinchGestureEventData(
276+
this._target,
277+
detector,
278+
this._scale,
279+
this._target,
280+
common.GestureStateTypes.changed);
264281

265282
_executeCallback(this._observer, args);
266283
return true;
@@ -269,16 +286,12 @@ class PinchGestureListener extends android.view.ScaleGestureDetector.SimpleOnSca
269286
public onScaleEnd(detector: android.view.ScaleGestureDetector): void {
270287
this._scale *= detector.getScaleFactor();
271288

272-
var args = <definition.PinchGestureEventData>{
273-
type: definition.GestureTypes.pinch,
274-
view: this._target,
275-
android: detector,
276-
scale: this._scale,
277-
object: this._target,
278-
eventName: definition.toString(definition.GestureTypes.pinch),
279-
ios: undefined,
280-
state: common.GestureStateTypes.ended
281-
};
289+
var args = new PinchGestureEventData(
290+
this._target,
291+
detector,
292+
this._scale,
293+
this._target,
294+
common.GestureStateTypes.ended);
282295

283296
_executeCallback(this._observer, args);
284297
}

ui/gestures/gestures.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ declare module "ui/gestures" {
117117
*/
118118
export interface PinchGestureEventData extends GestureEventDataWithState {
119119
scale: number;
120+
121+
getFocusX(): number;
122+
getFocusY(): number;
120123
}
121124

122125
/**

ui/gestures/gestures.ios.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,12 +273,16 @@ function _getSwipeDirection(direction: UISwipeGestureRecognizerDirection): defin
273273

274274
function _getPinchData(args: definition.GestureEventData): definition.PinchGestureEventData {
275275
var recognizer = <UIPinchGestureRecognizer>args.ios;
276+
var center = recognizer.locationInView(args.view._nativeView);
277+
276278
return <definition.PinchGestureEventData>{
277279
type: args.type,
278280
view: args.view,
279281
ios: args.ios,
280282
android: undefined,
281283
scale: recognizer.scale,
284+
getFocusX: () => { return center.x; },
285+
getFocusY: () => { return center.y; },
282286
object: args.view,
283287
eventName: definition.toString(args.type),
284288
state: getState(recognizer)
@@ -287,6 +291,7 @@ function _getPinchData(args: definition.GestureEventData): definition.PinchGestu
287291

288292
function _getSwipeData(args: definition.GestureEventData): definition.SwipeGestureEventData {
289293
var recognizer = <UISwipeGestureRecognizer>args.ios;
294+
290295
return <definition.SwipeGestureEventData>{
291296
type: args.type,
292297
view: args.view,

0 commit comments

Comments
 (0)