Skip to content

Commit 4104e01

Browse files
committed
feat: shap xfermode support
1 parent 32afa4e commit 4104e01

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/shapes/shape.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable no-redeclare */
22
import { Color, HorizontalAlignment, Length, Observable, PercentLength, Utils, VerticalAlignment, Visibility } from '@nativescript/core';
33
import { booleanConverter } from '@nativescript/core/ui/core/view-base';
4-
import { Canvas, CanvasView, Cap, Join, Paint, Style } from '../canvas';
4+
import { Canvas, CanvasView, Cap, Join, Paint, PorterDuffXfermode, Style } from '../canvas';
55
import { parseCap, parseDashEffect, parseJoin, parseShadow, parseType } from '../utils';
66

77
function parseThickness(value: string) {
@@ -178,6 +178,13 @@ function applyShadow(paint: Paint, shadow: Shadow) {
178178
paint.clearShadowLayer();
179179
}
180180
}
181+
function parseXfermode(value) {
182+
if (value instanceof PorterDuffXfermode) {
183+
return value;
184+
} else {
185+
return new PorterDuffXfermode(value);
186+
}
187+
}
181188
export default abstract class Shape extends Observable {
182189
_paint: Paint;
183190
_parent: WeakRef<CanvasView>;
@@ -204,6 +211,7 @@ export default abstract class Shape extends Observable {
204211
@numberProperty({ converter: parseCap }) strokeCap: Cap;
205212
@numberProperty({ converter: parseJoin }) strokeJoin: Join;
206213
@numberProperty textSize: number;
214+
@numberProperty({ converter: parseXfermode }) xfermode: number;
207215
// alias for textSize
208216
@numberProperty({ paintSetterName: 'setTextSize' }) fontSize: number;
209217
@booleanProperty({ paintGetterName: 'isAntiAlias', paintSetterName: 'setAntiAlias' }) antiAlias: boolean;

0 commit comments

Comments
 (0)