mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 06:35:51 +00:00
Various improvements
This commit is contained in:
@@ -88,6 +88,7 @@ public final class DrawingMessageRenderer {
|
||||
private let isOverlay: Bool
|
||||
private let isLink: Bool
|
||||
private let isGift: Bool
|
||||
private let wallpaperColor: UIColor?
|
||||
|
||||
private let messagesContainerNode: ASDisplayNode
|
||||
private var avatarHeaderNode: ListViewItemHeaderNode?
|
||||
@@ -99,7 +100,8 @@ public final class DrawingMessageRenderer {
|
||||
isNight: Bool = false,
|
||||
isOverlay: Bool = false,
|
||||
isLink: Bool = false,
|
||||
isGift: Bool = false
|
||||
isGift: Bool = false,
|
||||
wallpaperColor: UIColor? = nil
|
||||
) {
|
||||
self.context = context
|
||||
self.messages = messages
|
||||
@@ -107,6 +109,7 @@ public final class DrawingMessageRenderer {
|
||||
self.isOverlay = isOverlay
|
||||
self.isLink = isLink
|
||||
self.isGift = isGift
|
||||
self.wallpaperColor = wallpaperColor
|
||||
|
||||
self.messagesContainerNode = ASDisplayNode()
|
||||
self.messagesContainerNode.clipsToBounds = true
|
||||
@@ -169,14 +172,19 @@ public final class DrawingMessageRenderer {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var borderColor: UIColor?
|
||||
if self.isGift && !self.isOverlay, let wallpaperColor = self.wallpaperColor {
|
||||
borderColor = wallpaperColor.withMultiplied(hue: 1.0, saturation: 1.5, brightness: self.isNight ? 1.6 : 0.7).withAlphaComponent(0.6)
|
||||
}
|
||||
|
||||
self.generate(size: size) { image in
|
||||
self.generate(size: size, borderColor: borderColor) { image in
|
||||
completion(size, image, mediaRect)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private func generate(size: CGSize, completion: @escaping (UIImage) -> Void) {
|
||||
private func generate(size: CGSize, borderColor: UIColor? = nil, completion: @escaping (UIImage) -> Void) {
|
||||
UIGraphicsBeginImageContextWithOptions(size, false, 3.0)
|
||||
self.view.drawHierarchy(in: CGRect(origin: CGPoint(), size: size), afterScreenUpdates: true)
|
||||
let img = UIGraphicsGetImageFromCurrentImageContext()
|
||||
@@ -184,6 +192,11 @@ public final class DrawingMessageRenderer {
|
||||
|
||||
let finalImage = generateImage(CGSize(width: size.width * 3.0, height: size.height * 3.0), contextGenerator: { size, context in
|
||||
context.clear(CGRect(origin: .zero, size: size))
|
||||
if let borderColor {
|
||||
context.addPath(CGPath(roundedRect: CGRect(origin: CGPoint(x: 6.0, y: 12.0), size: CGSize(width: size.width - 6.0, height: size.height - 13.0)), cornerWidth: 70.0, cornerHeight: 70.0, transform: nil))
|
||||
context.setFillColor(borderColor.cgColor)
|
||||
context.fillPath()
|
||||
}
|
||||
if let cgImage = img?.cgImage {
|
||||
context.draw(cgImage, in: CGRect(origin: .zero, size: size), byTiling: false)
|
||||
}
|
||||
@@ -351,14 +364,16 @@ public final class DrawingMessageRenderer {
|
||||
messages: [Message],
|
||||
parentView: UIView,
|
||||
isLink: Bool = false,
|
||||
isGift: Bool = false
|
||||
isGift: Bool = false,
|
||||
wallpaperDayColor: UIColor? = nil,
|
||||
wallpaperNightColor: UIColor? = nil
|
||||
) {
|
||||
self.context = context
|
||||
self.messages = messages
|
||||
|
||||
self.dayContainerNode = ContainerNode(context: context, messages: messages, isLink: isLink, isGift: isGift)
|
||||
self.nightContainerNode = ContainerNode(context: context, messages: messages, isNight: true, isLink: isLink, isGift: isGift)
|
||||
self.overlayContainerNode = ContainerNode(context: context, messages: messages, isOverlay: true, isLink: isLink, isGift: isGift)
|
||||
self.dayContainerNode = ContainerNode(context: context, messages: messages, isLink: isLink, isGift: isGift, wallpaperColor: wallpaperDayColor)
|
||||
self.nightContainerNode = ContainerNode(context: context, messages: messages, isNight: true, isLink: isLink, isGift: isGift, wallpaperColor: wallpaperNightColor)
|
||||
self.overlayContainerNode = ContainerNode(context: context, messages: messages, isOverlay: true, isLink: isLink, isGift: isGift, wallpaperColor: nil)
|
||||
|
||||
parentView.addSubview(self.dayContainerNode.view)
|
||||
parentView.addSubview(self.nightContainerNode.view)
|
||||
|
||||
Reference in New Issue
Block a user