Skip to content

Commit b44dd6f

Browse files
committed
feat(): canvas updates
1 parent 671079a commit b44dd6f

File tree

240 files changed

+20822
-18270
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

240 files changed

+20822
-18270
lines changed

CanvasNative.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Pod::Spec.new do |s|
22

33
s.name = "CanvasNative"
44

5-
s.version = "0.9.3"
5+
s.version = "0.9.4"
66

77
s.summary = "A Canvas library"
88

packages/canvas/Canvas/common.ts

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { CSSType, PercentLength, View, Screen, GestureStateTypes, Utils, Application } from '@nativescript/core';
2-
import { CanvasRenderingContext, TouchList } from '../common';
3-
import { Pointer } from '@nativescript/core/ui/gestures';
1+
import {CSSType, PercentLength, View, Screen, GestureStateTypes, Utils, Application} from '@nativescript/core';
2+
import {CanvasRenderingContext, TouchList} from '../common';
3+
import {Pointer} from '@nativescript/core/ui/gestures';
44

55
export interface ICanvasBase {
66
on(eventName: 'ready', callback: (data: any) => void, thisArg?: any): void;
@@ -66,7 +66,7 @@ export abstract class CanvasBase extends View implements ICanvasBase {
6666
if (contextOpts.alpha !== undefined && typeof contextOpts.alpha === 'boolean') {
6767
return contextOpts;
6868
} else {
69-
return { alpha: true };
69+
return {alpha: true};
7070
}
7171
}
7272
const setIfDefined = (prop, value) => {
@@ -122,44 +122,68 @@ export abstract class CanvasBase extends View implements ICanvasBase {
122122
}
123123
}
124124

125+
_previousX = 0;
126+
_previousY = 0;
127+
125128
_getTouchEvent(name, event, target) {
126129
const pointers = new TouchList();
127-
const scale = 1;
130+
let scale = 1;
128131
let activePointer: {};
132+
129133
if (name === 'touchmove') {
130134
name = 'touchmove';
135+
let x = 0;
136+
let y = 0;
137+
if (global.isIOS) {
138+
x = event.deltaX + this.__touchStart?.getX() ?? 0;
139+
y = event.deltaY + this.__touchStart?.getY() ?? 0;
140+
} else {
141+
const initial: android.view.MotionEvent = event.android.initial;
142+
const current: android.view.MotionEvent = event.android.current;
143+
scale = Screen.mainScreen.scale;
144+
if(initial){
145+
x = initial.getX() / scale;
146+
y = initial.getY() / scale;
147+
}else {
148+
x = current.getX() / scale;
149+
y = current.getY()/ scale;
150+
}
151+
}
152+
131153
/* mouse */
132154
activePointer = {
133-
clientX: event.deltaX * scale,
134-
clientY: event.deltaY * scale,
155+
clientX: x,
156+
clientY: y,
135157
force: 0.0,
136158
identifier: 0,
137-
pageX: event.deltaX * scale,
138-
pageY: event.deltaY * scale,
159+
pageX: x,
160+
pageY: y,
139161
radiusX: 0,
140162
radiusY: 0,
141163
rotationAngle: 0,
142-
screenX: event.deltaX * scale,
143-
screenY: event.deltaY * scale,
164+
screenX: x,
165+
screenY: y,
144166
target,
145167
};
146168

147169
/* mouse */
148170
pointers.push({
149171
// * SCALE ??
150-
clientX: event.deltaX * scale,
151-
clientY: event.deltaY * scale,
172+
clientX: x,
173+
clientY: y,
152174
force: 0.0,
153175
identifier: 0,
154-
pageX: event.deltaX * scale,
155-
pageY: event.deltaY * scale,
176+
pageX: x,
177+
pageY: y,
156178
radiusX: 0,
157179
radiusY: 0,
158180
rotationAngle: 0,
159-
screenX: event.deltaX * scale,
160-
screenY: event.deltaY * scale,
181+
screenX: x,
182+
screenY: y,
161183
target,
162184
});
185+
this._previousX = event.deltaX;
186+
this._previousY = event.deltaY;
163187
} else if (name === 'touchmove:pinch') {
164188
name = 'touchmove';
165189
const x = event.getFocusX();
@@ -259,8 +283,10 @@ export abstract class CanvasBase extends View implements ICanvasBase {
259283
shiftKey: false,
260284
targetTouches: pointers,
261285
touches: pointers,
262-
preventDefault: () => {},
263-
stopPropagation: () => {},
286+
preventDefault: () => {
287+
},
288+
stopPropagation: () => {
289+
},
264290
target,
265291
...activePointer,
266292
};
@@ -326,7 +352,7 @@ export abstract class CanvasBase extends View implements ICanvasBase {
326352
}
327353
if (typeof value === 'number') {
328354
// treat as px
329-
return value|| 0;
355+
return value || 0;
330356
} else if ((value !== null || true) && typeof value === 'object' && typeof value.value && typeof value.unit) {
331357
if (value.unit === 'px') {
332358
return value.value || 0;

packages/canvas/Canvas/index.android.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export class Canvas extends CanvasBase {
3333
}
3434
const activity =
3535
Application.android.foregroundActivity || Application.android.startActivity;
36-
this._canvas = new com.github.triniwiz.canvas.CanvasView(activity, useCpu);
36+
this._canvas = new com.github.triniwiz.canvas.TNSCanvas(activity, useCpu);
3737
}
3838

3939
get android() {
@@ -125,7 +125,7 @@ export class Canvas extends CanvasBase {
125125
}
126126
});
127127
this._canvas.setListener(
128-
new com.github.triniwiz.canvas.CanvasView.Listener({
128+
new com.github.triniwiz.canvas.TNSCanvas.Listener({
129129
contextReady() {
130130
const owner = ref.get() as any;
131131
if (owner && !owner._ready) {
@@ -202,15 +202,15 @@ export class Canvas extends CanvasBase {
202202
}
203203
rootParams.width = size.width;
204204
rootParams.height = size.height;
205-
let surfaceParams = this._canvas.getSurface().getLayoutParams();
205+
let surfaceParams// = this._canvas.getSurface().getLayoutParams();
206206
if (!surfaceParams) {
207207
surfaceParams = new android.widget.FrameLayout.LayoutParams(0, 0);
208208
}
209-
surfaceParams.width = size.width;
210-
surfaceParams.height = size.height;
209+
// surfaceParams.width = size.width;
210+
// surfaceParams.height = size.height;
211211

212212
this._canvas.setLayoutParams(rootParams);
213-
this._canvas.getSurface().setLayoutParams(surfaceParams);
213+
//this._canvas.getSurface().setLayoutParams(surfaceParams);
214214

215215
const w = android.view.View.MeasureSpec.makeMeasureSpec(
216216
size.width,

packages/canvas/Canvas/index.ios.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,10 @@ export class Canvas extends CanvasBase {
159159

160160
disposeNativeView(): void {
161161
this.off('touch, pan', this._touchEvents);
162+
this._canvas.setListener(null);
163+
this._readyListener = undefined;
164+
this._canvas = undefined;
165+
this.setNativeView(undefined);
162166
super.disposeNativeView();
163167
}
164168

0 commit comments

Comments
 (0)