mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-06 17:00:13 +00:00
Demo
This commit is contained in:
parent
5f8bd57ca2
commit
26dd9b05dc
@ -16,6 +16,8 @@ swift_library(
|
||||
"//submodules/AppBundle:AppBundle",
|
||||
"//submodules/AccountContext:AccountContext",
|
||||
"//submodules/Emoji:Emoji",
|
||||
"//submodules/ImageCompression:ImageCompression",
|
||||
"//submodules/TinyThumbnail:TinyThumbnail",
|
||||
],
|
||||
visibility = [
|
||||
"//visibility:public",
|
||||
|
||||
@ -6,6 +6,8 @@ import Display
|
||||
import ImageIO
|
||||
import TelegramCore
|
||||
import SyncCore
|
||||
import ImageCompression
|
||||
import TinyThumbnail
|
||||
|
||||
private let roundCorners = { () -> UIImage in
|
||||
let diameter: CGFloat = 60.0
|
||||
@ -101,7 +103,7 @@ public func peerAvatarImage(account: Account, peerReference: PeerReference?, aut
|
||||
}
|
||||
let roundedImage = generateImage(displayDimensions, contextGenerator: { size, context -> Void in
|
||||
if let data = data {
|
||||
if let imageSource = CGImageSourceCreateWithData(data as CFData, nil), let dataImage = CGImageSourceCreateImageAtIndex(imageSource, 0, nil) {
|
||||
if let imageSource = CGImageSourceCreateWithData(data as CFData, nil), var dataImage = CGImageSourceCreateImageAtIndex(imageSource, 0, nil) {
|
||||
context.clear(CGRect(origin: CGPoint(), size: displayDimensions))
|
||||
context.setBlendMode(.copy)
|
||||
|
||||
@ -109,6 +111,15 @@ public func peerAvatarImage(account: Account, peerReference: PeerReference?, aut
|
||||
context.addEllipse(in: CGRect(origin: CGPoint(), size: displayDimensions).insetBy(dx: inset, dy: inset))
|
||||
context.clip()
|
||||
}
|
||||
|
||||
let mappedImage = UIImage(cgImage: dataImage)
|
||||
if let miniData = compressImageMiniThumbnail(mappedImage, type: .avatar) {
|
||||
if let decodedData = decodeTinyThumbnail(data: miniData) {
|
||||
if let decodedImage = UIImage(data: decodedData) {
|
||||
dataImage = decodedImage.cgImage!
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
context.draw(dataImage, in: CGRect(origin: CGPoint(), size: displayDimensions).insetBy(dx: inset, dy: inset))
|
||||
if round {
|
||||
|
||||
@ -58,6 +58,11 @@ public func compressImage(_ image: UIImage, quality: Float) -> Data? {
|
||||
return data as Data
|
||||
}
|
||||
|
||||
public func compressImageMiniThumbnail(_ image: UIImage) -> Data? {
|
||||
return compressMiniThumbnail(image)
|
||||
public enum MiniThumbnailType {
|
||||
case image
|
||||
case avatar
|
||||
}
|
||||
|
||||
public func compressImageMiniThumbnail(_ image: UIImage, type: MiniThumbnailType = .image) -> Data? {
|
||||
return compressMiniThumbnail(image, type == .avatar)
|
||||
}
|
||||
|
||||
@ -2,4 +2,4 @@
|
||||
|
||||
NSData * _Nullable compressJPEGData(UIImage * _Nonnull sourceImage);
|
||||
NSArray<NSNumber *> * _Nonnull extractJPEGDataScans(NSData * _Nonnull data);
|
||||
NSData * _Nullable compressMiniThumbnail(UIImage * _Nonnull image);
|
||||
NSData * _Nullable compressMiniThumbnail(UIImage * _Nonnull image, bool smaller);
|
||||
|
||||
@ -146,8 +146,12 @@ NSData * _Nullable compressJPEGData(UIImage * _Nonnull sourceImage) {
|
||||
return result;
|
||||
}
|
||||
|
||||
NSData * _Nullable compressMiniThumbnail(UIImage * _Nonnull image) {
|
||||
NSData * _Nullable compressMiniThumbnail(UIImage * _Nonnull image, bool smaller) {
|
||||
CGSize size = CGSizeMake(40.0f, 40.0f);
|
||||
if (smaller) {
|
||||
size.width = 8.0f;
|
||||
size.height = 8.0f;
|
||||
}
|
||||
CGSize fittedSize = image.size;
|
||||
if (fittedSize.width > size.width) {
|
||||
fittedSize = CGSizeMake(size.width, (int)((fittedSize.height * size.width / MAX(fittedSize.width, 1.0f))));
|
||||
|
||||
@ -143,7 +143,14 @@ private func requestActivity(postbox: Postbox, network: Network, accountPeerId:
|
||||
return .complete()
|
||||
}
|
||||
if let channel = peer as? TelegramChannel, case .broadcast = channel.info {
|
||||
return .complete()
|
||||
if let activity = activity {
|
||||
switch activity {
|
||||
case .speakingInGroupCall:
|
||||
break
|
||||
default:
|
||||
return .complete()
|
||||
}
|
||||
}
|
||||
}
|
||||
if let _ = peer as? TelegramUser {
|
||||
if let presence = transaction.getPeerPresence(peerId: peerId) as? TelegramUserPresence {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user