react-native-camera-kit-no-.../ios/ReactNativeCameraKit/Types.swift
Seph Soliman 089fd73041 Fixed AVCaptureSession (2nd attempt)
Fixed iOS 13 compile errors
2025-06-09 16:46:02 -07:00

199 lines
4.4 KiB
Swift
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// Types.swift
// ReactNativeCameraKit
//
import AVFoundation
import Foundation
// Dummy class used for RCTConvert
@objc(CKType) class Types: NSObject {}
@objc(CKCameraType)
public enum CameraType: Int, CustomStringConvertible {
case back
case front
var avPosition: AVCaptureDevice.Position {
switch self {
case .back: return .back
case .front: return .front
}
}
public var description: String {
switch self {
case .back: return "back"
case .front: return "front"
}
}
}
@objc(CKFlashMode)
public enum FlashMode: Int, CustomStringConvertible {
case on
case off
case auto
var avFlashMode: AVCaptureDevice.FlashMode {
switch self {
case .on: return .on
case .off: return .off
case .auto: return .auto
}
}
public var description: String {
switch self {
case .on: return "on"
case .off: return "off"
case .auto: return "auto"
}
}
}
@objc(CKMaxPhotoQualityPrioritization)
public enum MaxPhotoQualityPrioritization: Int, CustomStringConvertible {
case speed
case balanced
case quality
@available(iOS 13.0, *)
var avQualityPrioritization: AVCapturePhotoOutput.QualityPrioritization {
switch self {
case .speed: return .speed
case .balanced: return .balanced
case .quality: return .quality
}
}
public var description: String {
switch self {
case .speed: return "speed"
case .balanced: return "balanced"
case .quality: return "quality"
}
}
}
@objc(CKTorchMode)
public enum TorchMode: Int, CustomStringConvertible {
case on
case off
init(from string: String) {
switch string {
case "on": self = .on
default: self = .off
}
}
var avTorchMode: AVCaptureDevice.TorchMode {
switch self {
case .on: return .on
case .off: return .off
}
}
public var description: String {
switch self {
case .on: return "on"
case .off: return "off"
}
}
}
@objc(CKFocusMode)
public enum FocusMode: Int, CustomStringConvertible {
case on
case off
public var description: String {
switch self {
case .on: return "on"
case .off: return "off"
}
}
}
@objc(CKZoomMode)
public enum ZoomMode: Int, CustomStringConvertible {
case on
case off
public var description: String {
switch self {
case .on: return "on"
case .off: return "off"
}
}
}
@objc(CKResizeMode)
public enum ResizeMode: Int, CustomStringConvertible {
case cover
case contain
public var description: String {
switch self {
case .cover: return "cover"
case .contain: return "contain"
}
}
}
@objc(CKSetupResult)
enum SetupResult: Int {
case notStarted
case success
case cameraNotAuthorized
case sessionConfigurationFailed
}
enum Orientation: Int {
case portrait = 0 //
case landscapeLeft = 1 //
case portraitUpsideDown = 2 //
case landscapeRight = 3 //
init?(from orientation: UIDeviceOrientation) {
switch orientation {
case .portrait: self = .portrait
case .landscapeLeft: self = .landscapeLeft
case .portraitUpsideDown: self = .portraitUpsideDown
case .landscapeRight: self = .landscapeRight
default: return nil
}
}
init?(from orientation: UIInterfaceOrientation) {
switch orientation {
case .portrait: self = .portrait
case .landscapeLeft: self = .landscapeLeft
case .portraitUpsideDown: self = .portraitUpsideDown
case .landscapeRight: self = .landscapeRight
default: return nil
}
}
var videoOrientation: AVCaptureVideoOrientation {
switch self {
case .portrait: return .portrait
case .landscapeLeft: return .landscapeLeft
case .portraitUpsideDown: return .portraitUpsideDown
case .landscapeRight: return .landscapeRight
}
}
}
extension AVCaptureDevice.FocusMode: CustomStringConvertible {
public var description: String {
switch self {
case .autoFocus: return "autofocus"
case .continuousAutoFocus: return "continuousAutoFocus"
case .locked: return "locked"
@unknown default: return "unknown"
}
}
}