LOTBlockCallback.m 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. //
  2. // LOTBlockCallback.m
  3. // Lottie
  4. //
  5. // Created by brandon_withrow on 12/15/17.
  6. // Copyright © 2017 Airbnb. All rights reserved.
  7. //
  8. #import "LOTBlockCallback.h"
  9. @implementation LOTColorBlockCallback
  10. + (instancetype)withBlock:(LOTColorValueCallbackBlock)block {
  11. LOTColorBlockCallback *colorCallback = [[self alloc] init];
  12. colorCallback.callback = block;
  13. return colorCallback;
  14. }
  15. - (CGColorRef)colorForFrame:(CGFloat)currentFrame startKeyframe:(CGFloat)startKeyframe endKeyframe:(CGFloat)endKeyframe interpolatedProgress:(CGFloat)interpolatedProgress startColor:(CGColorRef)startColor endColor:(CGColorRef)endColor currentColor:(CGColorRef)interpolatedColor {
  16. return self.callback(currentFrame, startKeyframe, endKeyframe, interpolatedProgress, startColor, endColor, interpolatedColor);
  17. }
  18. @end
  19. @implementation LOTNumberBlockCallback
  20. + (instancetype)withBlock:(LOTNumberValueCallbackBlock)block {
  21. LOTNumberBlockCallback *numberCallback = [[self alloc] init];
  22. numberCallback.callback = block;
  23. return numberCallback;
  24. }
  25. - (CGFloat)floatValueForFrame:(CGFloat)currentFrame startKeyframe:(CGFloat)startKeyframe endKeyframe:(CGFloat)endKeyframe interpolatedProgress:(CGFloat)interpolatedProgress startValue:(CGFloat)startValue endValue:(CGFloat)endValue currentValue:(CGFloat)interpolatedValue {
  26. return self.callback(currentFrame, startKeyframe, endKeyframe, interpolatedProgress, startValue, endValue, interpolatedValue);
  27. }
  28. @end
  29. @implementation LOTPointBlockCallback
  30. + (instancetype)withBlock:(LOTPointValueCallbackBlock)block {
  31. LOTPointBlockCallback *callback = [[self alloc] init];
  32. callback.callback = block;
  33. return callback;
  34. }
  35. - (CGPoint)pointForFrame:(CGFloat)currentFrame startKeyframe:(CGFloat)startKeyframe endKeyframe:(CGFloat)endKeyframe interpolatedProgress:(CGFloat)interpolatedProgress startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint currentPoint:(CGPoint)interpolatedPoint {
  36. return self.callback(currentFrame, startKeyframe, endKeyframe, interpolatedProgress, startPoint, endPoint, interpolatedPoint);
  37. }
  38. @end
  39. @implementation LOTSizeBlockCallback
  40. + (instancetype)withBlock:(LOTSizeValueCallbackBlock)block {
  41. LOTSizeBlockCallback *callback = [[self alloc] init];
  42. callback.callback = block;
  43. return callback;
  44. }
  45. - (CGSize)sizeForFrame:(CGFloat)currentFrame startKeyframe:(CGFloat)startKeyframe endKeyframe:(CGFloat)endKeyframe interpolatedProgress:(CGFloat)interpolatedProgress startSize:(CGSize)startSize endSize:(CGSize)endSize currentSize:(CGSize)interpolatedSize {
  46. return self.callback(currentFrame, startKeyframe, endKeyframe, interpolatedProgress, startSize, endSize, interpolatedSize);
  47. }
  48. @end
  49. @implementation LOTPathBlockCallback
  50. + (instancetype)withBlock:(LOTPathValueCallbackBlock)block {
  51. LOTPathBlockCallback *callback = [[self alloc] init];
  52. callback.callback = block;
  53. return callback;
  54. }
  55. - (CGPathRef)pathForFrame:(CGFloat)currentFrame startKeyframe:(CGFloat)startKeyframe endKeyframe:(CGFloat)endKeyframe interpolatedProgress:(CGFloat)interpolatedProgress {
  56. return self.callback(currentFrame, startKeyframe, endKeyframe, interpolatedProgress);
  57. }
  58. @end