react-native-camera/ios/RN/RNCameraUtils.m

97 lines
2.9 KiB
Objective-C

//
// RNCameraUtils.m
// RCTCamera
//
// Created by Joao Guilherme Daros Fidelis on 19/01/18.
//
#import "RNCameraUtils.h"
@implementation RNCameraUtils
# pragma mark - Camera utilities
+ (AVCaptureDevice *)deviceWithMediaType:(AVMediaType)mediaType preferringPosition:(AVCaptureDevicePosition)position
{
NSArray *devices = [AVCaptureDevice devicesWithMediaType:mediaType];
AVCaptureDevice *captureDevice = [devices firstObject];
for (AVCaptureDevice *device in devices) {
if ([device position] == position) {
captureDevice = device;
break;
}
}
return captureDevice;
}
# pragma mark - Enum conversion
+ (AVCaptureVideoOrientation)videoOrientationForInterfaceOrientation:(UIInterfaceOrientation)orientation
{
switch (orientation) {
case UIInterfaceOrientationPortrait:
return AVCaptureVideoOrientationPortrait;
case UIInterfaceOrientationPortraitUpsideDown:
return AVCaptureVideoOrientationPortraitUpsideDown;
case UIInterfaceOrientationLandscapeRight:
return AVCaptureVideoOrientationLandscapeRight;
case UIInterfaceOrientationLandscapeLeft:
return AVCaptureVideoOrientationLandscapeLeft;
default:
return 0;
}
}
+ (AVCaptureVideoOrientation)videoOrientationForDeviceOrientation:(UIDeviceOrientation)orientation
{
switch (orientation) {
case UIDeviceOrientationPortrait:
return AVCaptureVideoOrientationPortrait;
case UIDeviceOrientationPortraitUpsideDown:
return AVCaptureVideoOrientationPortraitUpsideDown;
case UIDeviceOrientationLandscapeLeft:
return AVCaptureVideoOrientationLandscapeRight;
case UIDeviceOrientationLandscapeRight:
return AVCaptureVideoOrientationLandscapeLeft;
default:
return AVCaptureVideoOrientationPortrait;
}
}
+ (float)temperatureForWhiteBalance:(RNCameraWhiteBalance)whiteBalance
{
switch (whiteBalance) {
case RNCameraWhiteBalanceSunny: default:
return 5200;
case RNCameraWhiteBalanceCloudy:
return 6000;
case RNCameraWhiteBalanceShadow:
return 7000;
case RNCameraWhiteBalanceIncandescent:
return 3000;
case RNCameraWhiteBalanceFluorescent:
return 4200;
}
}
+ (NSString *)captureSessionPresetForVideoResolution:(RNCameraVideoResolution)resolution
{
switch (resolution) {
case RNCameraVideo2160p:
return AVCaptureSessionPreset3840x2160;
case RNCameraVideo1080p:
return AVCaptureSessionPreset1920x1080;
case RNCameraVideo720p:
return AVCaptureSessionPreset1280x720;
case RNCameraVideo4x3:
return AVCaptureSessionPreset640x480;
default:
return AVCaptureSessionPresetHigh;
}
}
@end