Skip to content

Commit 83a5078

Browse files
author
farfromrefuge
committed
fix(android): setNative method to change native object
fix: better typings
1 parent dc08dee commit 83a5078

File tree

2 files changed

+45
-8
lines changed

2 files changed

+45
-8
lines changed

src/ui-canvas/index.android.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ export {
3434
PorterDuffXfermode
3535
};
3636

37-
3837
export function parseDashEffect(value: string) {
3938
const array = value.split(' ').map(parseFloat);
4039
const length = array.length;
@@ -93,6 +92,9 @@ class ProxyClass<T> {
9392
getNative() {
9493
return this.mNative;
9594
}
95+
setNative(nativeObj) {
96+
this.mNative = nativeObj;
97+
}
9698
constructor() {
9799
const proxy = new Proxy(this, this);
98100
return proxy;
@@ -127,10 +129,13 @@ class Canvas extends ProxyClass<android.graphics.Canvas> {
127129
mBitmap: android.graphics.Bitmap;
128130
mShouldReleaseBitmap = false;
129131
static augmentedMethods = ['clear', 'drawBitmap', 'drawView'];
130-
constructor(imageOrWidth?: ImageSource | android.graphics.Bitmap | number, height?: number) {
132+
constructor(imageOrWidth?: ImageSource | android.graphics.Bitmap | number | android.graphics.Canvas, height?: number) {
131133
super();
132134
if (imageOrWidth) {
133-
if (imageOrWidth instanceof ImageSource) {
135+
if (imageOrWidth instanceof android.graphics.Canvas) {
136+
this.mNative = imageOrWidth;
137+
return this;
138+
} else if (imageOrWidth instanceof ImageSource) {
134139
this.mBitmap = imageOrWidth.android;
135140
} else if (imageOrWidth instanceof android.graphics.Bitmap) {
136141
this.mBitmap = imageOrWidth;

src/ui-canvas/index.d.ts

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ import { Color, GridLayout, ImageSource, ObservableArray, View } from '@nativesc
44
import { Font, FontStyle, FontStyleType, FontWeight, FontWeightType } from '@nativescript/core/ui/styling/font';
55
import Shape from './shapes/shape';
66

7+
// Android ONLY!!!
8+
export class ProxyClass {
9+
getNative(): any;
10+
setNative(object);
11+
}
12+
713
export function createRect(x: number, y: number, w: number, h: number): Rect;
814
export function createRectF(x: number, y: number, w: number, h: number): RectF;
915
export function parseCap(value: string | number): Cap;
@@ -18,7 +24,7 @@ type ColorParam = Color | number | string;
1824
// export * from './canvas.android'
1925

2026
export type ColorFilter = android.graphics.ColorFilter;
21-
export class Paint {
27+
export class Paint extends ProxyClass {
2228
constructor(paint?: Paint);
2329
color: ColorParam;
2430
setColor(color: ColorParam);
@@ -99,6 +105,10 @@ export class StaticLayout extends android.text.StaticLayout {
99105

100106
static getDesiredWidth(text: any, paint: any);
101107
static getDesiredWidth(text: any, start: number, end: number, paint: any);
108+
109+
//ANDROID ONLY!!
110+
getNative(): any;
111+
setNative(object);
102112
}
103113

104114
export class FontMetrics {
@@ -108,8 +118,10 @@ export class FontMetrics {
108118
leading: number;
109119
top: number;
110120
}
111-
export class Canvas {
112-
constructor(imageOrWidth: any /* ImageSource | android.graphics.Bitmap | UIImage | number */, height?: number);
121+
export class Canvas extends ProxyClass {
122+
constructor(imageOrWidth?: any /* ImageSource | android.graphics.Bitmap | UIImage | number | android.graphics.Canvas */, height?: number);
123+
124+
setContext(context, width, height): any; // IOS ONLY!
113125

114126
clear(); // clear the canvas by filling with transparent color
115127
release(); // release all data (image and such). Only to be called on destroy
@@ -245,15 +257,23 @@ export class RectF {
245257
}
246258
export class RadialGradient extends android.graphics.RadialGradient {
247259
constructor(param0: number, param1: number, param2: number, param3: any, param4: any, param5: TileMode);
260+
261+
//ANDROID ONLY!!
262+
getNative(): any;
263+
setNative(object);
248264
}
249265
export class LinearGradient extends android.graphics.LinearGradient {
250266
constructor(param0: number, param1: number, param2: number, param3: number, param4: any, param5: any, param6: TileMode);
267+
268+
//ANDROID ONLY!!
269+
getNative(): any;
270+
setNative(object);
251271
}
252272
export class BitmapShader extends android.graphics.BitmapShader {
253273
constructor(image: ImageSource, tileX, tileY);
254274
}
255275
export class TileMode extends android.graphics.Shader.TileMode {}
256-
export class Path {
276+
export class Path extends ProxyClass {
257277
computeBounds(rect: RectF, exact: boolean);
258278
isRect(param0: Rect): boolean;
259279
rMoveTo(param0: number, param1: number): void;
@@ -299,6 +319,10 @@ export class Path {
299319
setLines(points: number[], offset?: number, length?: number, close?: boolean);
300320
addCubicLines(points: number[], offset?: number, length?: number, close?: boolean);
301321
setCubicLines(points: number[], offset?: number, length?: number, close?: boolean);
322+
323+
//ANDROID ONLY!!
324+
getNative(): any;
325+
setNative(object);
302326
}
303327
export class DrawFilter extends android.graphics.DrawFilter {}
304328
export class Op extends android.graphics.Region.Op {}
@@ -307,10 +331,18 @@ export class FillType extends android.graphics.Path.FillType {}
307331
export class Matrix extends android.graphics.Matrix {
308332
mapRect(rect: Rect);
309333
}
310-
export class ColorMatrixColorFilter extends android.graphics.ColorMatrixColorFilter {}
334+
export class ColorMatrixColorFilter extends android.graphics.ColorMatrixColorFilter {
335+
//ANDROID ONLY!!
336+
getNative(): any;
337+
setNative(object);
338+
}
311339
export class PathEffect extends android.graphics.PathEffect {}
312340
export class DashPathEffect extends android.graphics.DashPathEffect {
313341
constructor(intervals: number[], phase: number);
342+
343+
//ANDROID ONLY!!
344+
getNative(): any;
345+
setNative(object);
314346
}
315347
// declare Paint extends get Canvas() {
316348
// return android.graphics.Canvas;

0 commit comments

Comments
 (0)