// // CameraView+focus.swift // Cuvent // // Created by Marc Rousavy on 19.02.21. // Copyright © 2021 Facebook. All rights reserved. // import Foundation extension CameraView { func focus(point: CGPoint, promise: Promise) { withPromise(promise) { guard let device = self.videoDeviceInput?.device else { throw CameraError.session(SessionError.cameraNotReady) } if !device.isFocusPointOfInterestSupported { throw CameraError.device(DeviceError.focusNotSupported) } let normalizedPoint = self.videoPreviewLayer.captureDevicePointConverted(fromLayerPoint: point) do { try device.lockForConfiguration() device.focusPointOfInterest = normalizedPoint device.focusMode = .continuousAutoFocus if device.isExposurePointOfInterestSupported { device.exposurePointOfInterest = normalizedPoint device.exposureMode = .continuousAutoExposure } device.unlockForConfiguration() return nil } catch { throw CameraError.device(DeviceError.configureError) } } } }