mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
90 lines
1.9 KiB
Objective-C
90 lines
1.9 KiB
Objective-C
#import "PGCameraMomentSession.h"
|
|
#import "PGCamera.h"
|
|
|
|
@interface PGCameraMomentSession ()
|
|
{
|
|
NSString *_uniqueIdentifier;
|
|
NSURL *_segmentsDirectory;
|
|
|
|
PGCamera *_camera;
|
|
NSMutableArray *_segments;
|
|
}
|
|
@end
|
|
|
|
@implementation PGCameraMomentSession
|
|
|
|
- (instancetype)initWithCamera:(PGCamera *)camera
|
|
{
|
|
self = [super init];
|
|
if (self != nil)
|
|
{
|
|
_camera = camera;
|
|
_segments = [[NSMutableArray alloc] init];
|
|
|
|
int64_t uniqueId = 0;
|
|
arc4random_buf(&uniqueId, 8);
|
|
_uniqueIdentifier = [NSString stringWithFormat:@"%x", (int)arc4random()];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (NSURL *)segmentsDirectory
|
|
{
|
|
if (_segmentsDirectory == nil)
|
|
_segmentsDirectory = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:_uniqueIdentifier]];
|
|
|
|
return _segmentsDirectory;
|
|
}
|
|
|
|
- (void)captureSegment
|
|
{
|
|
if (self.isCapturing)
|
|
return;
|
|
|
|
_isCapturing = true;
|
|
|
|
if (self.beganCapture != nil)
|
|
self.beganCapture();
|
|
|
|
[_camera startVideoRecordingForMoment:true completion:^(NSURL *resultUrl, __unused CGAffineTransform transform, __unused CGSize dimensions, NSTimeInterval duration, bool success)
|
|
{
|
|
if (!success)
|
|
return;
|
|
|
|
_isCapturing = false;
|
|
|
|
if (self.finishedCapture != nil)
|
|
self.finishedCapture();
|
|
|
|
PGCameraMomentSegment *segment = [[PGCameraMomentSegment alloc] initWithURL:resultUrl duration:duration];
|
|
[self addSegment:segment];
|
|
}];
|
|
}
|
|
|
|
- (void)commitSegment
|
|
{
|
|
[_camera stopVideoRecording];
|
|
}
|
|
|
|
- (void)addSegment:(PGCameraMomentSegment *)segment
|
|
{
|
|
[_segments addObject:segment];
|
|
}
|
|
|
|
- (void)removeSegment:(PGCameraMomentSegment *)segment
|
|
{
|
|
[_segments removeObject:segment];
|
|
}
|
|
|
|
- (void)removeLastSegment
|
|
{
|
|
[_segments removeLastObject];
|
|
}
|
|
|
|
- (void)removeAllSegments
|
|
{
|
|
[_segments removeAllObjects];
|
|
}
|
|
|
|
@end
|