MijickCamera/Sources/Internal/Manager/Helpers/Capture Device/CaptureDevice+MockCaptureDevice.swift

63 lines
2.3 KiB
Swift
Raw 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.

//
// CaptureDevice+MockCaptureDevice.swift of MijickCamera
//
// Created by Tomasz Kurylik. Sending from Kraków!
// - Mail: tomasz.kurylik@mijick.com
// - GitHub: https://github.com/FulcrumOne
// - Medium: https://medium.com/@mijick
//
// Copyright ©2024 Mijick. All rights reserved.
import AVKit
class MockCaptureDevice: NSObject, CaptureDevice {
// MARK: Getters
var uniqueID: String = UUID().uuidString
var exposureDuration: CMTime { _exposureDuration }
var exposureTargetBias: Float { _exposureTargetBias }
var iso: Float { _iso }
var minAvailableVideoZoomFactor: CGFloat { 1 }
var maxAvailableVideoZoomFactor: CGFloat { 3.876 }
var minExposureDuration: CMTime { .init(value: 1, timescale: 1000) }
var maxExposureDuration: CMTime { .init(value: 1, timescale: 5) }
var minISO: Float { 1 }
var maxISO: Float { 10 }
var minExposureTargetBias: Float { 0.1 }
var maxExposureTargetBias: Float { 199 }
var minFrameRate: Float64? { 15 }
var maxFrameRate: Float64? { 60 }
var hasFlash: Bool { true }
var hasTorch: Bool { true }
var isExposurePointOfInterestSupported: Bool { true }
var isFocusPointOfInterestSupported: Bool { true }
// MARK: Setters
var videoZoomFactor: CGFloat = 1
var focusMode: AVCaptureDevice.FocusMode = .autoFocus
var focusPointOfInterest: CGPoint = .zero
var exposurePointOfInterest: CGPoint = .zero
var lightMode: CameraLightMode = .off
var activeVideoMinFrameDuration: CMTime = .init()
var activeVideoMaxFrameDuration: CMTime = .init()
var exposureMode: AVCaptureDevice.ExposureMode = .continuousAutoExposure
var hdrMode: CameraHDRMode = .auto
// MARK: Methods
func lockForConfiguration() throws { return }
func unlockForConfiguration() { return }
func isExposureModeSupported(_ exposureMode: AVCaptureDevice.ExposureMode) -> Bool { true }
func setExposureModeCustom(duration: CMTime, iso: Float, completionHandler: ((CMTime) -> Void)?) {
_exposureDuration = duration
_iso = iso
}
func setExposureTargetBias(_ bias: Float, completionHandler handler: ((CMTime) -> ())?) {
_exposureTargetBias = bias
}
// MARK: Private Attributes
private var _exposureDuration: CMTime = .init()
private var _exposureTargetBias: Float = 0
private var _iso: Float = 0
}