Added FilterType.js with all filters that do not require extra parameters

This commit is contained in:
Nicolas Gonzalez 2018-11-06 08:38:28 -06:00
parent 40fb19f7c7
commit 22d65addd3
3 changed files with 43 additions and 19 deletions

18
FilterType.js Normal file
View File

@ -0,0 +1,18 @@
export default {
NONE: '',
INVERT: 'CIColorInvert',
MONOCHROME: 'CIColorMonochrome',
POSTERIZE: 'CIColorPosterize',
FALSE: 'CIFalseColor',
MAXIMUMCOMPONENT: 'CIMaximumComponent',
MINIMUMCOMPONENT: 'CIMinimumComponent',
CHROME: 'CIPhotoEffectChrome',
FADE: 'CIPhotoEffectFade',
INSTANT: 'CIPhotoEffectInstant',
MONO: 'CIPhotoEffectMono',
NOIR: 'CIPhotoEffectNoir',
PROCESS: 'CIPhotoEffectProcess',
TONAL: 'CIPhotoEffectTonal',
TRANSFER: 'CIPhotoEffectTransfer',
SEPIA: 'CISepiaTone'
};

View File

@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import {StyleSheet, requireNativeComponent, NativeModules, View, ViewPropTypes, Image, Platform, findNodeHandle} from 'react-native'; import {StyleSheet, requireNativeComponent, NativeModules, View, ViewPropTypes, Image, Platform, findNodeHandle} from 'react-native';
import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetSource'; import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetSource';
import TextTrackType from './TextTrackType'; import TextTrackType from './TextTrackType';
import FilterType from './FilterType';
import VideoResizeMode from './VideoResizeMode.js'; import VideoResizeMode from './VideoResizeMode.js';
const styles = StyleSheet.create({ const styles = StyleSheet.create({
@ -11,7 +12,7 @@ const styles = StyleSheet.create({
}, },
}); });
export { TextTrackType }; export { TextTrackType, FilterType };
export default class Video extends Component { export default class Video extends Component {
@ -71,7 +72,7 @@ export default class Video extends Component {
this.setNativeProps({ fullscreen: false }); this.setNativeProps({ fullscreen: false });
}; };
saveAsync = async (options?) => { save = async (options?) => {
return await NativeModules.VideoManager.save(options, findNodeHandle(this._root)); return await NativeModules.VideoManager.save(options, findNodeHandle(this._root));
} }
@ -278,10 +279,25 @@ export default class Video extends Component {
} }
} }
Video.filterTypes = ['Normal', 'Country', 'Winter', 'Black N White', 'Sunrise', 'Artistic'];
Video.propTypes = { Video.propTypes = {
filter: PropTypes.oneOf(Video.filterTypes), filter: PropTypes.oneOf([
FilterType.NONE,
FilterType.INVERT,
FilterType.MONOCHROME,
FilterType.POSTERIZE,
FilterType.FALSE,
FilterType.MAXIMUMCOMPONENT,
FilterType.MINIMUMCOMPONENT,
FilterType.CHROME,
FilterType.FADE,
FilterType.INSTANT,
FilterType.MONO,
FilterType.NOIR,
FilterType.PROCESS,
FilterType.TONAL,
FilterType.TRANSFER,
FilterType.SEPIA
]),
/* Native only */ /* Native only */
src: PropTypes.object, src: PropTypes.object,
seek: PropTypes.oneOfType([ seek: PropTypes.oneOfType([

View File

@ -66,7 +66,7 @@ static int const RCTVideoUnset = -1;
BOOL _fullscreen; BOOL _fullscreen;
NSString * _fullscreenOrientation; NSString * _fullscreenOrientation;
BOOL _fullscreenPlayerPresented; BOOL _fullscreenPlayerPresented;
NSString *_filter; NSString *_filterName;
UIViewController * _presentingViewController; UIViewController * _presentingViewController;
#if __has_include(<react-native-video/RCTVideoCache.h>) #if __has_include(<react-native-video/RCTVideoCache.h>)
RCTVideoCache * _videoCache; RCTVideoCache * _videoCache;
@ -862,7 +862,7 @@ static int const RCTVideoUnset = -1;
[self setResizeMode:_resizeMode]; [self setResizeMode:_resizeMode];
[self setRepeat:_repeat]; [self setRepeat:_repeat];
[self setPaused:_paused]; [self setPaused:_paused];
[self setFilter:_filter]; [self setFilter:_filterName];
[self setControls:_controls]; [self setControls:_controls];
[self setAllowsExternalPlayback:_allowsExternalPlayback]; [self setAllowsExternalPlayback:_allowsExternalPlayback];
} }
@ -1254,24 +1254,14 @@ static int const RCTVideoUnset = -1;
} }
} }
- (void)setFilter:(NSString *)filter { - (void)setFilter:(NSString *)filterName {
_filter = filter; _filterName = filterName;
AVAsset *asset = _playerItem.asset; AVAsset *asset = _playerItem.asset;
if (asset != nil) { if (asset != nil) {
NSDictionary *filters = @{
@"Normal": @"",
@"Country": @"CISepiaTone",
@"Winter": @"CIPhotoEffectProcess",
@"Black N White": @"CIPhotoEffectNoir",
@"Sunrise": @"CIPhotoEffectTransfer",
@"Artistic": @"CIColorPosterize",
};
NSString *filterName = filters[filter];
CIFilter *filter = [CIFilter filterWithName:filterName]; CIFilter *filter = [CIFilter filterWithName:filterName];
_playerItem.videoComposition = [AVVideoComposition _playerItem.videoComposition = [AVVideoComposition