diff --git a/android/src/main/java/org/reactnative/maskedview/RNCMaskedView.java b/android/src/main/java/org/reactnative/maskedview/RNCMaskedView.java index 289d287..b188381 100644 --- a/android/src/main/java/org/reactnative/maskedview/RNCMaskedView.java +++ b/android/src/main/java/org/reactnative/maskedview/RNCMaskedView.java @@ -60,6 +60,11 @@ private void updateBitmapMask() { maskView.setVisibility(View.INVISIBLE); } + public void setPorterDuffMode(String mode) { + PorterDuff.Mode porterDuffMode = PorterDuff.Mode.valueOf(mode); + mPorterDuffXferMode = new PorterDuffXfermode(porterDuffMode); + } + public static Bitmap getBitmapFromView(final View view) { view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); diff --git a/android/src/main/java/org/reactnative/maskedview/RNCMaskedViewManager.java b/android/src/main/java/org/reactnative/maskedview/RNCMaskedViewManager.java index cc2ab73..33be869 100644 --- a/android/src/main/java/org/reactnative/maskedview/RNCMaskedViewManager.java +++ b/android/src/main/java/org/reactnative/maskedview/RNCMaskedViewManager.java @@ -27,4 +27,9 @@ public String getName() { protected RNCMaskedView createViewInstance(ThemedReactContext themedReactContext) { return new RNCMaskedView(themedReactContext); } + + @ReactProp(name = "porterDuffMode") + public void setPorterDuffMode(RNCMaskedView view, String mode) { + view.setPorterDuffMode(mode); + } } diff --git a/js/MaskedViewTypes.js b/js/MaskedViewTypes.js index c72eb77..d227b22 100644 --- a/js/MaskedViewTypes.js +++ b/js/MaskedViewTypes.js @@ -10,4 +10,23 @@ export type MaskedViewProps = typeof ViewPropTypes & * mask for the child element. */ maskElement: Element, + porterDuffMode?: + | 'ADD' + | 'CLEAR' + | 'DARKEN' + | 'DST' + | 'DST_ATOP' + | 'DST_IN' + | 'DST_OUT' + | 'DST_OVER' + | 'LIGHTEN' + | 'MULTIPLY' + | 'OVERLAY' + | 'SCREEN' + | 'SRC' + | 'SRC_ATOP' + | 'SRC_IN' + | 'SRC_OUT' + | 'SRC_OVER' + | 'XOR', |}>; diff --git a/types/index.d.ts b/types/index.d.ts index 7aaf173..8b03996 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -5,6 +5,25 @@ import * as ReactNative from 'react-native'; interface MaskedViewProps extends ReactNative.ViewProps { maskElement: React.ReactElement; + porterDuffMode?: + | 'ADD' + | 'CLEAR' + | 'DARKEN' + | 'DST' + | 'DST_ATOP' + | 'DST_IN' + | 'DST_OUT' + | 'DST_OVER' + | 'LIGHTEN' + | 'MULTIPLY' + | 'OVERLAY' + | 'SCREEN' + | 'SRC' + | 'SRC_ATOP' + | 'SRC_IN' + | 'SRC_OUT' + | 'SRC_OVER' + | 'XOR'; } /** * @see https://github.com/react-native-community/react-native-masked-view