From e6994ded285cf4ceb5035dcced35f1c8c3af8635 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 27 Jul 2021 21:39:35 +0300 Subject: [PATCH] Various Fixes --- .../Sources/PGCameraCaptureSession.m | 39 +++++++++++++------ .../Sources/TGCameraMainPhoneView.m | 2 +- .../Sources/TGCameraZoomView.m | 15 ++++--- 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/submodules/LegacyComponents/Sources/PGCameraCaptureSession.m b/submodules/LegacyComponents/Sources/PGCameraCaptureSession.m index c1b04c214a..ce08adc90c 100644 --- a/submodules/LegacyComponents/Sources/PGCameraCaptureSession.m +++ b/submodules/LegacyComponents/Sources/PGCameraCaptureSession.m @@ -490,10 +490,18 @@ const NSInteger PGCameraFrameRate = 30; } } else if (marks.count == 1) { CGFloat mark = [marks.firstObject floatValue]; - if (backingLevel < mark) { - realLevel = 1.0 + 1.0 * (backingLevel - 1.0) / (mark - 1.0); - } else { - realLevel = 2.0 + 6.0 * (backingLevel - mark) / (self.maxZoomLevel - mark); + if ([self hasTelephotoCamera]) { + if (backingLevel < mark) { + realLevel = 1.0 + 1.0 * (backingLevel - 1.0) / (mark - 1.0); + } else { + realLevel = 2.0 + 6.0 * (backingLevel - mark) / (self.maxZoomLevel - mark); + } + } else if ([self hasUltrawideCamera]) { + if (backingLevel < mark) { + realLevel = 0.5 + 0.5 * (backingLevel - 1.0) / (mark - 1.0); + } else { + realLevel = 1.0 + 7.0 * (backingLevel - mark) / (self.maxZoomLevel - mark); + } } } @@ -504,10 +512,8 @@ const NSInteger PGCameraFrameRate = 30; } - (CGFloat)minZoomLevel { - if (iosMajorVersion() >= 13.0) { - if (self.videoDevice.isVirtualDevice && self.videoDevice.constituentDevices.firstObject.deviceType == AVCaptureDeviceTypeBuiltInUltraWideCamera) { - return 0.5; - } + if (self.hasUltrawideCamera) { + return 0.5; } return 1.0; } @@ -553,10 +559,19 @@ const NSInteger PGCameraFrameRate = 30; } } else if (marks.count == 1) { CGFloat mark = [marks.firstObject floatValue]; - if (zoomLevel < 2.0) { - backingLevel = 1.0 + ((level - 1.0) / 1.0) * (mark - 1.0); - } else { - backingLevel = mark + ((level - 2.0) / 6.0) * (self.maxZoomLevel - mark); + if ([self hasTelephotoCamera]) { + if (zoomLevel < 2.0) { + backingLevel = 1.0 + ((level - 1.0) / 1.0) * (mark - 1.0); + } else { + backingLevel = mark + ((level - 2.0) / 6.0) * (self.maxZoomLevel - mark); + } + } else if ([self hasUltrawideCamera]) { + if (level < 1.0) { + level = MAX(0.5, level); + backingLevel = 1.0 + ((level - 0.5) / 0.5) * (mark - 1.0); + } else { + backingLevel = mark + ((level - 1.0) / 7.0) * (self.maxZoomLevel - mark); + } } } } diff --git a/submodules/LegacyComponents/Sources/TGCameraMainPhoneView.m b/submodules/LegacyComponents/Sources/TGCameraMainPhoneView.m index 0594589cb0..91e84d82fb 100644 --- a/submodules/LegacyComponents/Sources/TGCameraMainPhoneView.m +++ b/submodules/LegacyComponents/Sources/TGCameraMainPhoneView.m @@ -469,7 +469,7 @@ { UIView *view = [super hitTest:point withEvent:event]; - if (CGRectContainsPoint(_zoomModeView.frame, point)) { + if (!_zoomModeView.isHidden && CGRectContainsPoint(_zoomModeView.frame, point)) { CGPoint zoomPoint = [self convertPoint:point toView:_zoomModeView]; return [_zoomModeView hitTest:zoomPoint withEvent:event]; } diff --git a/submodules/LegacyComponents/Sources/TGCameraZoomView.m b/submodules/LegacyComponents/Sources/TGCameraZoomView.m index 38a31cd3e3..ae686a0a23 100644 --- a/submodules/LegacyComponents/Sources/TGCameraZoomView.m +++ b/submodules/LegacyComponents/Sources/TGCameraZoomView.m @@ -318,9 +318,9 @@ switch (gestureRecognizer.state) { case UIGestureRecognizerStateChanged: { - CGFloat delta = -translation.x / 100.0; + CGFloat delta = -translation.x / 60.0; if (_zoomLevel > 2.0) { - delta *= 2.2; + delta *= 3.5; } _zoomLevel = MAX(_minZoomLevel, MIN(_maxZoomLevel, _zoomLevel + delta)); @@ -385,11 +385,16 @@ if ([value isEqual:@"1,0×"] || [value isEqual:@"1×"]) { value = @"0,9×"; } - [_leftItem setValue:value selected:true animated:animated]; - [_centerItem setValue:@"1" selected:false animated:animated]; + if (_leftItem.superview != nil) { + [_leftItem setValue:value selected:true animated:animated]; + [_centerItem setValue:@"1" selected:false animated:animated]; + } else { + [_centerItem setValue:value selected:false animated:animated]; + } [_rightItem setValue:@"2" selected:false animated:animated]; } else if (zoomLevel < 2.0) { [_leftItem setValue:@"0,5" selected:false animated:animated]; + bool selected = _hasTelephotoCamera && _hasUltrawideCamera; if ((zoomLevel - 1.0) < 0.025) { [_centerItem setValue:@"1×" selected:true animated:animated]; } else { @@ -399,7 +404,7 @@ if ([value isEqual:@"2×"]) { value = @"1,9×"; } - [_centerItem setValue:value selected:true animated:animated]; + [_centerItem setValue:value selected:selected animated:animated]; } [_rightItem setValue:@"2" selected:false animated:animated]; } else {