Files
GLEGram-iOS/submodules/LegacyComponents/Sources/UIImage+TGMediaEditableItem.m
T
Leeksov 4647310322 GLEGram 12.5 — Initial public release
Based on Swiftgram 12.5 (Telegram iOS 12.5).
All GLEGram features ported and organized in GLEGram/ folder.

Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass,
Font Replacement, Fake Profile, Chat Export, Plugin System, and more.

See CHANGELOG_12.5.md for full details.
2026-04-06 09:48:12 +03:00

77 lines
2.2 KiB
Objective-C

#import <LegacyComponents/UIImage+TGMediaEditableItem.h>
#import <LegacyComponents/LegacyComponents.h>
#import <objc/runtime.h>
#import <LegacyComponents/TGPhotoEditorUtils.h>
@implementation UIImage (TGMediaEditableItem)
- (bool)isVideo
{
return false;
}
- (NSString *)uniqueIdentifier
{
NSString *cachedIdentifier = objc_getAssociatedObject(self, @selector(uniqueIdentifier));
if (cachedIdentifier == nil)
{
cachedIdentifier = [NSString stringWithFormat:@"%ld", lrand48()];
objc_setAssociatedObject(self, @selector(uniqueIdentifier), cachedIdentifier, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
return cachedIdentifier;
}
- (CGSize)originalSize
{
return self.size;
}
- (SSignal *)thumbnailImageSignal
{
CGFloat thumbnailImageSide = TGPhotoThumbnailSizeForCurrentScreen().width;
CGSize size = TGScaleToSize(self.size, CGSizeMake(thumbnailImageSide, thumbnailImageSide));
return [[[SSignal alloc] initWithGenerator:^id<SDisposable>(SSubscriber *subscriber)
{
UIGraphicsBeginImageContextWithOptions(size, true, 0.0f);
[self drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[subscriber putNext:image];
[subscriber putCompletion];
return nil;
}] startOn:[SQueue concurrentDefaultQueue]];
}
- (SSignal *)screenImageSignal:(NSTimeInterval)__unused position
{
CGSize size = TGFitSize(self.size, TGPhotoEditorScreenImageMaxSize());
return [[[SSignal alloc] initWithGenerator:^id<SDisposable>(SSubscriber *subscriber)
{
UIGraphicsBeginImageContextWithOptions(size, true, 1.0f);
[self drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[subscriber putNext:image];
[subscriber putCompletion];
return nil;
}] startOn:[SQueue concurrentDefaultQueue]];
}
- (SSignal *)originalImageSignal:(NSTimeInterval)__unused position
{
return [SSignal single:self];
}
@end