From 03c50f026c31aca9952e1b1fcac712e66ebce2b9 Mon Sep 17 00:00:00 2001 From: Dylan Vann Date: Thu, 2 May 2019 20:41:42 -0700 Subject: [PATCH] feat: Add tint color support. fix #124 --- README.md | 6 +++ .../fastimage/FastImageViewManager.java | 10 ++++ ios/FastImage/FFFastImageView.h | 1 + ios/FastImage/FFFastImageView.m | 25 ++++++++++ ios/FastImage/FFFastImageViewManager.m | 1 + .../src/FastImageExamples.js | 2 + .../src/TintColorExample.js | 44 ++++++++++++++++++ .../src/images/logo.png | Bin 0 -> 42387 bytes src/index.js | 4 ++ 9 files changed, 93 insertions(+) create mode 100644 react-native-fast-image-example/src/TintColorExample.js create mode 100644 react-native-fast-image-example/src/images/logo.png diff --git a/README.md b/README.md index f62863b06..36ed93367 100644 --- a/README.md +++ b/README.md @@ -191,6 +191,12 @@ A React Native style. Supports using `borderRadius`. If true will fallback to using `Image`. In this case the image will still be styled and laid out the same way as `FastImage`. +--- + +### `tintColor?: number | string` + +If supplied, changes the color of all the non-transparent pixels to the given color. + ## Static Methods ### `FastImage.preload: (source[]) => void` diff --git a/android/src/main/java/com/dylanvann/fastimage/FastImageViewManager.java b/android/src/main/java/com/dylanvann/fastimage/FastImageViewManager.java index 757b99fa6..d7cd7bd81 100644 --- a/android/src/main/java/com/dylanvann/fastimage/FastImageViewManager.java +++ b/android/src/main/java/com/dylanvann/fastimage/FastImageViewManager.java @@ -2,6 +2,7 @@ import android.app.Activity; import android.content.Context; +import android.graphics.PorterDuff; import android.os.Build; import com.bumptech.glide.Glide; @@ -108,6 +109,15 @@ public void setSrc(FastImageViewWithUrl view, @Nullable ReadableMap source) { } } + @ReactProp(name = "tintColor", customType = "Color") + public void setTintColor(FastImageViewWithUrl view, @Nullable Integer color) { + if (color == null) { + view.clearColorFilter(); + } else { + view.setColorFilter(color, PorterDuff.Mode.SRC_IN); + } + } + @ReactProp(name = "resizeMode") public void setResizeMode(FastImageViewWithUrl view, String resizeMode) { final FastImageViewWithUrl.ScaleType scaleType = FastImageViewConverter.getScaleType(resizeMode); diff --git a/ios/FastImage/FFFastImageView.h b/ios/FastImage/FFFastImageView.h index b336d1a0e..d505acf23 100644 --- a/ios/FastImage/FFFastImageView.h +++ b/ios/FastImage/FFFastImageView.h @@ -25,6 +25,7 @@ @property (nonatomic, copy) RCTDirectEventBlock onFastImageLoadEnd; @property (nonatomic, assign) RCTResizeMode resizeMode; @property (nonatomic, strong) FFFastImageSource *source; +@property (nonatomic, strong) UIColor *imageColor; @end diff --git a/ios/FastImage/FFFastImageView.m b/ios/FastImage/FFFastImageView.m index 913de3778..35215c357 100644 --- a/ios/FastImage/FFFastImageView.m +++ b/ios/FastImage/FFFastImageView.m @@ -59,6 +59,31 @@ - (void)setOnFastImageLoadStart:(RCTDirectEventBlock)onFastImageLoadStart { } } +- (void)setImageColor:(UIColor *)imageColor { + if (imageColor != nil) { + _imageColor = imageColor; + super.image = [self makeImage:super.image withTint:self.imageColor]; + } +} + +- (UIImage*)makeImage:(UIImage *)image withTint:(UIColor *)color { + UIImage *newImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; + UIGraphicsBeginImageContextWithOptions(image.size, NO, newImage.scale); + [color set]; + [newImage drawInRect:CGRectMake(0, 0, image.size.width, newImage.size.height)]; + newImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return newImage; +} + +- (void)setImage:(UIImage *)image { + if (self.imageColor != nil) { + super.image = [self makeImage:image withTint:self.imageColor]; + } else { + super.image = image; + } +} + - (void)sendOnLoad:(UIImage *)image { self.onLoadEvent = @{ @"width":[NSNumber numberWithDouble:image.size.width], diff --git a/ios/FastImage/FFFastImageViewManager.m b/ios/FastImage/FFFastImageViewManager.m index 5cc861866..4cb522078 100644 --- a/ios/FastImage/FFFastImageViewManager.m +++ b/ios/FastImage/FFFastImageViewManager.m @@ -18,6 +18,7 @@ - (FFFastImageView*)view { RCT_EXPORT_VIEW_PROPERTY(onFastImageError, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onFastImageLoad, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onFastImageLoadEnd, RCTDirectEventBlock) +RCT_REMAP_VIEW_PROPERTY(tintColor, imageColor, UIColor) RCT_EXPORT_METHOD(preload:(nonnull NSArray *)sources) { diff --git a/react-native-fast-image-example/src/FastImageExamples.js b/react-native-fast-image-example/src/FastImageExamples.js index 5dac37eaa..e0243d680 100644 --- a/react-native-fast-image-example/src/FastImageExamples.js +++ b/react-native-fast-image-example/src/FastImageExamples.js @@ -9,6 +9,7 @@ import FeatureText from './FeatureText' import ProgressExample from './ProgressExample' import PreloadExample from './PreloadExample' import ResizeModeExample from './ResizeModeExample' +import TintColorExample from './TintColorExample' import LocalImagesExample from './LocalImagesExample' import StatusBarUnderlay, { STATUS_BAR_HEIGHT } from './StatusBarUnderlay' import AutoSizeExample from './AutoSizeExample' @@ -35,6 +36,7 @@ const FastImageExample = () => ( + diff --git a/react-native-fast-image-example/src/TintColorExample.js b/react-native-fast-image-example/src/TintColorExample.js new file mode 100644 index 000000000..822fd0329 --- /dev/null +++ b/react-native-fast-image-example/src/TintColorExample.js @@ -0,0 +1,44 @@ +import React from 'react' +import { StyleSheet, View} from 'react-native' +import withCacheBust from './withCacheBust' +import FastImage from 'react-native-fast-image' +import Section from './Section' +import SectionFlex from './SectionFlex' +import FeatureText from './FeatureText' +import LogoImage from './images/logo.png' + +const TintColorExample = ({ onPressReload }) => ( + +
+ + +
+ + + + + +
+) + +const styles = StyleSheet.create({ + image: { + flex: 1, + height: 100, + margin: 10, + }, +}) + +export default withCacheBust(TintColorExample) diff --git a/react-native-fast-image-example/src/images/logo.png b/react-native-fast-image-example/src/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..663c66f66cd6e73f5c9e75f2bf514fc4f49460aa GIT binary patch literal 42387 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 literal 0 HcmV?d00001 diff --git a/src/index.js b/src/index.js index 5309fe757..459538465 100644 --- a/src/index.js +++ b/src/index.js @@ -13,6 +13,7 @@ const FastImageViewNativeModule = NativeModules.FastImageView function FastImageBase({ source, + tintColor, onLoadStart, onProgress, onLoad, @@ -31,6 +32,7 @@ function FastImageBase({