Skip to content

Commit 05f5e3a

Browse files
committed
feat: callDrawBeforeShapes property
1 parent f7b38db commit 05f5e3a

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

src/canvas.android.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,9 @@ class CanvasView extends CanvasBase {
530530
shapePaint: IPaint;
531531
onDraw(canvas: ICanvas) {
532532
const shapeCanvas = this.shapesCanvas;
533+
if (this.callDrawBeforeShapes) {
534+
this.notify({ eventName: 'draw', object: this, canvas: this.augmentedCanvas });
535+
}
533536
if (shapeCanvas) {
534537
if (!this.shapePaint) {
535538
this.shapePaint = new android.graphics.Paint() as any;
@@ -543,7 +546,9 @@ class CanvasView extends CanvasBase {
543546
shapes.forEach((s) => s.drawMyShapeOnCanvas(this.augmentedCanvas as any, this as any, width, height));
544547
}
545548
}
546-
this.notify({ eventName: 'draw', object: this, canvas: this.augmentedCanvas });
549+
if (!this.callDrawBeforeShapes) {
550+
this.notify({ eventName: 'draw', object: this, canvas: this.augmentedCanvas });
551+
}
547552
}
548553
nativeViewProtected: com.akylas.canvas.CanvasView;
549554
createNativeView() {

src/canvas.common.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export function createRectF(x: number, y: number, w: number, h: number) {
1919

2020
export const cachedProperty = new Property<CanvasBase, boolean>({ name: 'cached', defaultValue: false, valueConverter: booleanConverter });
2121
export const hardwareAcceleratedProperty = new Property<CanvasBase, boolean>({ name: 'hardwareAccelerated', defaultValue: true, valueConverter: booleanConverter });
22+
export const callDrawBeforeShapesProperty = new Property<CanvasBase, boolean>({ name: 'callDrawBeforeShapes', defaultValue: false, valueConverter: booleanConverter });
2223
export const densityProperty = new Property<CanvasBase, number>({ name: 'density', valueConverter: parseFloat });
2324

2425
function throttle(fn, limit) {
@@ -37,6 +38,8 @@ export const DEFAULT_SCALE = Screen.mainScreen.scale;
3738
export abstract class CanvasBase extends View {
3839
protected _shapes: ObservableArray<Shape>;
3940

41+
callDrawBeforeShapes = false;
42+
4043
get shapes() {
4144
return this._shapes;
4245
}
@@ -182,4 +185,5 @@ export abstract class CanvasBase extends View {
182185

183186
cachedProperty.register(CanvasBase);
184187
hardwareAcceleratedProperty.register(CanvasBase);
188+
callDrawBeforeShapesProperty.register(CanvasBase);
185189
densityProperty.register(CanvasBase);

src/canvas.ios.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1919,6 +1919,9 @@ export class UICustomCanvasView extends UIView {
19191919
this._canvas = new Canvas(0, 0);
19201920
}
19211921
this._canvas.setContext(context, size.width, size.height);
1922+
if (owner.callDrawBeforeShapes) {
1923+
owner.onDraw(this._canvas);
1924+
}
19221925
// this._canvas.scale(1 / owner.density, 1 / owner.density);
19231926
// this._canvas.setDensity(owner.density);
19241927
if (owner.shapesCanvas) {
@@ -1933,7 +1936,9 @@ export class UICustomCanvasView extends UIView {
19331936
shapes.forEach((s) => s.drawMyShapeOnCanvas(this._canvas, owner, size.width, size.height));
19341937
}
19351938
}
1936-
owner.onDraw(this._canvas);
1939+
if (!owner.callDrawBeforeShapes) {
1940+
owner.onDraw(this._canvas);
1941+
}
19371942
if (drawFameRate) {
19381943
const end = Date.now();
19391944
if (!this.frameRatePaint) {

0 commit comments

Comments
 (0)