chore: Move everything into package/ (#1745)
				
					
				
			* Move everything into package * Remove .DS_Store * Move scripts and eslintrc to package * Create CODE_OF_CONDUCT.md * fix some links * Update all links (I think) * Update generated docs * Update notice-yarn-changes.yml * Update validate-android.yml * Update validate-cpp.yml * Delete notice-yarn-changes.yml * Update validate-cpp.yml * Update validate-cpp.yml * Update validate-js.yml * Update validate-cpp.yml * Update validate-cpp.yml * wrong c++ style * Revert "wrong c++ style" This reverts commit 55a3575589c6f13f8b05134d83384f55e0601ab2.
This commit is contained in:
		
							
								
								
									
										73
									
								
								package/ios/CameraView+Zoom.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								package/ios/CameraView+Zoom.swift
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | ||||
| // | ||||
| //  CameraView+Zoom.swift | ||||
| //  mrousavy | ||||
| // | ||||
| //  Created by Marc Rousavy on 18.12.20. | ||||
| //  Copyright © 2020 mrousavy. All rights reserved. | ||||
| // | ||||
|  | ||||
| import Foundation | ||||
|  | ||||
| extension CameraView { | ||||
|   var minAvailableZoom: CGFloat { | ||||
|     return videoDeviceInput?.device.minAvailableVideoZoomFactor ?? 1 | ||||
|   } | ||||
|  | ||||
|   var maxAvailableZoom: CGFloat { | ||||
|     return videoDeviceInput?.device.activeFormat.videoMaxZoomFactor ?? 1 | ||||
|   } | ||||
|  | ||||
|   @objc | ||||
|   final func onPinch(_ gesture: UIPinchGestureRecognizer) { | ||||
|     guard let device = videoDeviceInput?.device else { | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     let scale = max(min(gesture.scale * pinchScaleOffset, device.activeFormat.videoMaxZoomFactor), CGFloat(1.0)) | ||||
|     if gesture.state == .ended { | ||||
|       pinchScaleOffset = scale | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     do { | ||||
|       try device.lockForConfiguration() | ||||
|       device.videoZoomFactor = scale | ||||
|       device.unlockForConfiguration() | ||||
|     } catch { | ||||
|       invokeOnError(.device(.configureError)) | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   func addPinchGestureRecognizer() { | ||||
|     removePinchGestureRecognizer() | ||||
|     pinchGestureRecognizer = UIPinchGestureRecognizer(target: self, action: #selector(onPinch(_:))) | ||||
|     addGestureRecognizer(pinchGestureRecognizer!) | ||||
|   } | ||||
|  | ||||
|   func removePinchGestureRecognizer() { | ||||
|     if let pinchGestureRecognizer = pinchGestureRecognizer { | ||||
|       removeGestureRecognizer(pinchGestureRecognizer) | ||||
|       self.pinchGestureRecognizer = nil | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   @objc | ||||
|   final func zoom(factor: CGFloat, animated: Bool) { | ||||
|     guard let device = videoDeviceInput?.device else { | ||||
|       return | ||||
|     } | ||||
|  | ||||
|     do { | ||||
|       try device.lockForConfiguration() | ||||
|       let clamped = max(min(factor, device.activeFormat.videoMaxZoomFactor), CGFloat(1.0)) | ||||
|       if animated { | ||||
|         device.ramp(toVideoZoomFactor: clamped, withRate: 1) | ||||
|       } else { | ||||
|         device.videoZoomFactor = clamped | ||||
|       } | ||||
|       device.unlockForConfiguration() | ||||
|     } catch { | ||||
|       invokeOnError(.device(.configureError)) | ||||
|     } | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user