11/* eslint-disable no-redeclare */
22import { Color , HorizontalAlignment , Length , Observable , PercentLength , Utils , VerticalAlignment , Visibility } from '@nativescript/core' ;
33import { 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' ;
55import { parseCap , parseDashEffect , parseJoin , parseShadow , parseType } from '../utils' ;
66
77function 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+ }
181188export 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