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