Various fixes

This commit is contained in:
Ilya Laktyushin 2022-12-25 12:09:02 +04:00
parent c084c410b0
commit 8c57b9eef0
6 changed files with 38 additions and 38 deletions

View File

@ -345,14 +345,16 @@ public final class DirectMediaImageCache {
return nil
}
var resultImage: UIImage?
var blurredImage: UIImage?
if includeBlurred, let data = immediateThumbnailData.flatMap(decodeTinyThumbnail), let image = loadImage(data: data), let blurredImageValue = generateBlurredThumbnail(image: image, adjustSaturation: true) {
blurredImage = blurredImageValue
}
var resultImage: UIImage?
for otherWidth in possibleWidths.reversed() {
if otherWidth == width {
if let data = try? Data(contentsOf: URL(fileURLWithPath: self.getCachePath(resourceId: resource.resource.resource.id, imageType: .square(width: otherWidth)))), let image = loadImage(data: data) {
if blurredImage == nil, includeBlurred, let data = immediateThumbnailData.flatMap(decodeTinyThumbnail), let image = loadImage(data: data), let blurredImageValue = generateBlurredThumbnail(image: image, adjustSaturation: true) {
blurredImage = blurredImageValue
}
return GetMediaResult(image: image, blurredImage: blurredImage, loadSignal: nil)
}
} else {
@ -369,16 +371,9 @@ public final class DirectMediaImageCache {
if let blurredImageValue = generateBlurredThumbnail(image: image) {
resultImage = blurredImageValue
}
if includeBlurred, let blurredImageValue = generateBlurredThumbnail(image: image, adjustSaturation: true) {
blurredImage = blurredImageValue
}
}
}
if blurredImage == nil, includeBlurred, let data = immediateThumbnailData.flatMap(decodeTinyThumbnail), let image = loadImage(data: data), let blurredImageValue = generateBlurredThumbnail(image: image, adjustSaturation: true) {
blurredImage = blurredImageValue
}
return GetMediaResult(image: resultImage, blurredImage: blurredImage, loadSignal: self.getLoadSignal(width: width, userLocation: userLocation, userContentType: .image, resource: resource.resource, resourceSizeLimit: resource.size))
}
@ -386,7 +381,17 @@ public final class DirectMediaImageCache {
if synchronous {
return self.getImageSynchronous(message: message, userLocation: .peer(message.id.peerId), media: media, width: width, possibleWidths: possibleWidths, includeBlurred: includeBlurred)
} else {
return GetMediaResult(image: nil, blurredImage: nil, loadSignal: Signal { subscriber in
var immediateThumbnailData: Data?
if let image = media as? TelegramMediaImage {
immediateThumbnailData = image.immediateThumbnailData
} else if let file = media as? TelegramMediaFile {
immediateThumbnailData = file.immediateThumbnailData
}
var blurredImage: UIImage?
if includeBlurred, let data = immediateThumbnailData.flatMap(decodeTinyThumbnail), let image = loadImage(data: data), let blurredImageValue = generateBlurredThumbnail(image: image, adjustSaturation: true) {
blurredImage = blurredImageValue
}
return GetMediaResult(image: nil, blurredImage: blurredImage, loadSignal: Signal { subscriber in
let result = self.getImageSynchronous(message: message, userLocation: .peer(message.id.peerId), media: media, width: width, possibleWidths: possibleWidths, includeBlurred: includeBlurred)
guard let result = result else {
subscriber.putNext(nil)

View File

@ -228,26 +228,6 @@ final class NeonTool: DrawingElement {
self.activePath = bezierPath
return true
// if self.points.isEmpty {
// self.points[self.ctr] = point
// return
// }
// self.ctr += 1
// self.points[self.ctr] = point
//
// if self.ctr == 4 {
// self.points[3] = CGPoint(x: (self.points[2]!.x + self.points[4]!.x) / 2.0, y: (self.points[2]!.y + self.points[4]!.y) / 2.0)
//
// self.path.move(to: self.points[0]!)
// self.path.addCurve(to: self.points[3]!, controlPoint1: self.points[1]!, controlPoint2: self.points[2]!)
//
// self.points[0] = self.points[3]!
// self.points[1] = self.points[4]!
//
// self.ctr = 1
// self.addedSegments += 1
// }
}
private func currentBezierPath(_ ctr: Int) -> UIBezierPath? {

View File

@ -228,7 +228,7 @@ final class PenTool: DrawingElement {
func setupRenderLayer() -> DrawingRenderLayer? {
return nil
}
func updatePath(_ point: DrawingPoint, state: DrawingGesturePipeline.DrawingGestureState) {
let result = self.addPoint(point, state: state)
let resetActiveRect = result?.0 ?? false

View File

@ -129,6 +129,8 @@ public final class DrawingView: UIView, UIGestureRecognizerDelegate, TGPhotoDraw
public var screenSize: CGSize
private var previousPointTimestamp: Double?
init(size: CGSize) {
self.imageSize = size
self.screenSize = size
@ -202,11 +204,13 @@ public final class DrawingView: UIView, UIGestureRecognizerDelegate, TGPhotoDraw
guard let strongSelf = self else {
return
}
let currentTimestamp = CACurrentMediaTime()
switch state {
case .began:
strongSelf.isDrawing = true
strongSelf.previousStrokePoint = nil
strongSelf.drawingGestureStartTimestamp = CACurrentMediaTime()
strongSelf.drawingGestureStartTimestamp = currentTimestamp
strongSelf.previousPointTimestamp = currentTimestamp
if strongSelf.uncommitedElement != nil {
strongSelf.finishDrawing(rect: CGRect(origin: .zero, size: strongSelf.imageSize), synchronous: true)
@ -267,6 +271,10 @@ public final class DrawingView: UIView, UIGestureRecognizerDelegate, TGPhotoDraw
strongSelf.uncommitedElement = newElement
strongSelf.updateInternalState()
case .changed:
if let previousPointTimestamp = strongSelf.previousPointTimestamp, currentTimestamp - previousPointTimestamp < 0.016 {
return
}
strongSelf.previousPointTimestamp = currentTimestamp
strongSelf.uncommitedElement?.updatePath(point, state: state)
// if case let .direct(point) = path, let lastPoint = line.points.last {
@ -409,7 +417,7 @@ public final class DrawingView: UIView, UIGestureRecognizerDelegate, TGPhotoDraw
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
private var longPressTimer: SwiftSignalKit.Timer?
private var fillCircleLayer: CALayer?
@objc func handleLongPress(_ gestureRecognizer: UILongPressGestureRecognizer) {

View File

@ -1159,10 +1159,18 @@ public final class SparseItemGrid: ASDisplayNode {
self.coveringOffsetUpdated = coveringOffsetUpdated
super.init()
self.fromViewport.allowsGroupOpacity = true
self.toViewport.allowsGroupOpacity = true
self.addSubnode(fromViewport)
self.addSubnode(toViewport)
}
deinit {
self.fromViewport.allowsGroupOpacity = false
self.toViewport.allowsGroupOpacity = false
}
func update(progress: CGFloat, transition: ContainedViewLayoutTransition, completion: @escaping () -> Void) {
guard var fromAnchorFrame = self.fromViewport.frameForItem(at: self.anchorItemIndex) else {

View File

@ -287,7 +287,6 @@ private class ExtendedMediaOverlayNode: ASDisplayNode {
self.dustNode.revealed = { [weak self] in
self?.isRevealed = true
self?.blurredImageNode.removeFromSupernode()
self?.isUserInteractionEnabled = false
}
self.dustNode.tapped = { [weak self] in
self?.isRevealed = true
@ -295,7 +294,7 @@ private class ExtendedMediaOverlayNode: ASDisplayNode {
}
} else {
self.blurredImageNode.isHidden = true
self.isUserInteractionEnabled = false
self.isRevealed = true
}
self.blurredImageNode.frame = imageFrame
@ -1941,7 +1940,7 @@ final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTransitio
var tappable = false
switch state {
case .play, .pause, .download, .none:
tappable = false
tappable = true
default:
break
}