mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-18 03:20:09 +00:00
41 lines
1.3 KiB
Objective-C
41 lines
1.3 KiB
Objective-C
//
|
|
// LOTPointInterpolator.m
|
|
// Lottie
|
|
//
|
|
// Created by brandon_withrow on 7/12/17.
|
|
// Copyright © 2017 Airbnb. All rights reserved.
|
|
//
|
|
|
|
#import "LOTPointInterpolator.h"
|
|
#import "CGGeometry+LOTAdditions.h"
|
|
|
|
@implementation LOTPointInterpolator
|
|
|
|
- (CGPoint)pointValueForFrame:(NSNumber *)frame {
|
|
CGFloat progress = [self progressForFrame:frame];
|
|
if (progress == 0) {
|
|
return self.leadingKeyframe.pointValue;
|
|
}
|
|
if (progress == 1) {
|
|
return self.trailingKeyframe.pointValue;
|
|
}
|
|
if (!CGPointEqualToPoint(self.leadingKeyframe.spatialOutTangent, CGPointZero) &&
|
|
!CGPointEqualToPoint(self.trailingKeyframe.spatialInTangent, CGPointZero)) {
|
|
// Spatial Bezier path
|
|
CGPoint outTan = LOT_PointAddedToPoint(self.leadingKeyframe.pointValue, self.leadingKeyframe.spatialOutTangent);
|
|
CGPoint inTan = LOT_PointAddedToPoint(self.trailingKeyframe.pointValue, self.trailingKeyframe.spatialInTangent);
|
|
return LOT_PointInCubicCurve(self.leadingKeyframe.pointValue, outTan, inTan, self.trailingKeyframe.pointValue, progress);
|
|
}
|
|
return LOT_PointInLine(self.leadingKeyframe.pointValue, self.trailingKeyframe.pointValue, progress);
|
|
}
|
|
|
|
- (id)keyframeDataForValue:(id)value {
|
|
if ([value isKindOfClass:[NSValue class]]) {
|
|
CGPoint pointValue = [(NSValue *)value CGPointValue];
|
|
return @[@(pointValue.x), @(pointValue.y)];
|
|
}
|
|
return nil;
|
|
}
|
|
|
|
@end
|