diff --git a/.gitignore b/.gitignore index 060f5cfd..6082f46b 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,6 @@ Pods DerivedData build -.ruby-version \ No newline at end of file +.ruby-version + +.swiftpm diff --git a/Package.swift b/Package.swift new file mode 100644 index 00000000..110c345c --- /dev/null +++ b/Package.swift @@ -0,0 +1,21 @@ +// swift-tools-version: 5.10 + +import PackageDescription + +let package = Package( + name: "pop", + platforms: [.iOS(.v15)], + products: [ + .library( + name: "pop", + targets: ["pop"] + ) + ], + targets: [ + .target( + name: "pop", + path: "Sources/pop", + publicHeadersPath: "include" + ) + ] +) diff --git a/Podfile b/Podfile deleted file mode 100755 index 72f67fc7..00000000 --- a/Podfile +++ /dev/null @@ -1,15 +0,0 @@ -abstract_target 'Tests' do - pod 'OCMock', '~> 2.2' - - target :'pop-tests-ios' do - platform :ios, '6.0' - end - - target :'pop-tests-tvos' do - platform :tvos, '9.0' - end - - target :'pop-tests-osx' do - platform :osx, '10.8' - end -end diff --git a/Podfile.lock b/Podfile.lock deleted file mode 100644 index d49a68f3..00000000 --- a/Podfile.lock +++ /dev/null @@ -1,12 +0,0 @@ -PODS: - - OCMock (2.2.4) - -DEPENDENCIES: - - OCMock (~> 2.2) - -SPEC CHECKSUMS: - OCMock: a6a7dc0e3997fb9f35d99f72528698ebf60d64f2 - -PODFILE CHECKSUM: 06e2f62938dff5782de5abf2adf6966a85f24637 - -COCOAPODS: 1.2.1 diff --git a/README.md b/README.md index e7a5595d..59e66319 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,12 @@ Pop is an extensible animation engine for iOS, tvOS, and OS X. In addition to ba ## Installation +### Swift Package Manager (only supported way) + +This fork has been modified to use pop as a Swift Package, the other following ways of installation are **no longer supported**. To use pop as a Swift package import the Package.swift file. + +### Cocoapods (deprecated) + Pop is available on [CocoaPods](http://cocoapods.org). Just add the following to your project Podfile: ```ruby @@ -18,14 +24,14 @@ Bugs are first fixed in master and then made available via a designated release. pod 'pop', :git => 'https://github.com/facebook/pop.git' ``` -### Framework (manual) +### Framework (manual) (deprecated) By adding the project to your project and adding pop.embedded framework to the Embedded Binaries section on the General tab of your app's target, you can set up pop in seconds! This also enables `@import pop` syntax with header modules. **Note**: because of some awkward limitations with Xcode, embedded binaries must share the same name as the module and must have `.framework` as an extension. This means that you'll see three pop.frameworks when adding embedded binaries (one for OS X, one for tvOS, and one for iOS). You'll need to be sure to add the right one; they appear identically in the list but note the list is populated in order of targets. You can verify the correct one was chosen by checking the path next to the framework listed, in the format `-` (e.g. `Debug-iphoneos`). ![Embedded Binaries](Images/EmbeddedBinaries.png?raw=true) -**Note 2**: this method does not currently play nicely with workspaces. Since targets can only depend on and embed products from other targets in the same project, it only works when pop.xcodeproj is added as a subproject to the current target's project. Otherwise, you'll need to manually set the build ordering in the scheme and copy in the product. +**Note 2**: this method does not currently play nicely with workspaces. Since targets can only depend on and embed products from other targets in the same project, it only works when pop.xcodeproj is added as a subproject to the current target's project. Otherwise, you'll need to manually set the build (deprecated)ordering in the scheme and copy in the product. ### Static Library (manual) Alternatively, you can add the project to your workspace and adopt the provided configuration files or manually copy the files under the pop subdirectory into your project. If installing manually, ensure the C++ standard library is also linked by including `-lc++` to your project linker flags. diff --git a/pop/POPAnimatableProperty.mm b/Sources/pop/POPAnimatableProperty.mm similarity index 100% rename from pop/POPAnimatableProperty.mm rename to Sources/pop/POPAnimatableProperty.mm diff --git a/pop/POPAnimation.mm b/Sources/pop/POPAnimation.mm similarity index 100% rename from pop/POPAnimation.mm rename to Sources/pop/POPAnimation.mm diff --git a/pop/POPAnimationEvent.mm b/Sources/pop/POPAnimationEvent.mm similarity index 100% rename from pop/POPAnimationEvent.mm rename to Sources/pop/POPAnimationEvent.mm diff --git a/pop/POPAnimationExtras.mm b/Sources/pop/POPAnimationExtras.mm similarity index 100% rename from pop/POPAnimationExtras.mm rename to Sources/pop/POPAnimationExtras.mm diff --git a/pop/POPAnimationRuntime.mm b/Sources/pop/POPAnimationRuntime.mm similarity index 100% rename from pop/POPAnimationRuntime.mm rename to Sources/pop/POPAnimationRuntime.mm diff --git a/pop/POPAnimationTracer.mm b/Sources/pop/POPAnimationTracer.mm similarity index 100% rename from pop/POPAnimationTracer.mm rename to Sources/pop/POPAnimationTracer.mm diff --git a/pop/POPAnimator.mm b/Sources/pop/POPAnimator.mm similarity index 99% rename from pop/POPAnimator.mm rename to Sources/pop/POPAnimator.mm index c3e988df..39dc203b 100644 --- a/pop/POPAnimator.mm +++ b/Sources/pop/POPAnimator.mm @@ -529,7 +529,7 @@ - (void)_renderTime:(CFTimeInterval)time items:(std::list)it pthread_mutex_unlock(&_lock); } else { // copy list into vector - std::vector vector{ items.begin(), items.end() }; + std::vector vector(items.begin(), items.end()); // unlock pthread_mutex_unlock(&_lock); @@ -869,7 +869,7 @@ - (void)renderTime:(CFTimeInterval)time - (void)addObserver:(id)observer { - NSAssert(nil != observer, @"attempting to add nil %@ observer", self); + NSAssert1(nil != observer, @"attempting to add nil %@ observer", self); if (nil == observer) { return; } @@ -891,7 +891,7 @@ - (void)addObserver:(id)observer - (void)removeObserver:(id)observer { - NSAssert(nil != observer, @"attempting to remove nil %@ observer", self); + NSAssert1(nil != observer, @"attempting to remove nil %@ observer", self); if (nil == observer) { return; } diff --git a/pop/POPBasicAnimation.mm b/Sources/pop/POPBasicAnimation.mm similarity index 99% rename from pop/POPBasicAnimation.mm rename to Sources/pop/POPBasicAnimation.mm index 2843c993..18b3c764 100644 --- a/pop/POPBasicAnimation.mm +++ b/Sources/pop/POPBasicAnimation.mm @@ -103,4 +103,4 @@ - (instancetype)copyWithZone:(NSZone *)zone { return copy; } -@end \ No newline at end of file +@end diff --git a/pop/POPCGUtils.mm b/Sources/pop/POPCGUtils.mm similarity index 100% rename from pop/POPCGUtils.mm rename to Sources/pop/POPCGUtils.mm diff --git a/pop/POPCustomAnimation.mm b/Sources/pop/POPCustomAnimation.mm similarity index 100% rename from pop/POPCustomAnimation.mm rename to Sources/pop/POPCustomAnimation.mm diff --git a/pop/POPDecayAnimation.mm b/Sources/pop/POPDecayAnimation.mm similarity index 100% rename from pop/POPDecayAnimation.mm rename to Sources/pop/POPDecayAnimation.mm diff --git a/pop/POPGeometry.mm b/Sources/pop/POPGeometry.mm similarity index 100% rename from pop/POPGeometry.mm rename to Sources/pop/POPGeometry.mm diff --git a/pop/POPLayerExtras.mm b/Sources/pop/POPLayerExtras.mm similarity index 100% rename from pop/POPLayerExtras.mm rename to Sources/pop/POPLayerExtras.mm diff --git a/pop/POPMath.mm b/Sources/pop/POPMath.mm similarity index 100% rename from pop/POPMath.mm rename to Sources/pop/POPMath.mm diff --git a/pop/POPPropertyAnimation.mm b/Sources/pop/POPPropertyAnimation.mm similarity index 100% rename from pop/POPPropertyAnimation.mm rename to Sources/pop/POPPropertyAnimation.mm diff --git a/pop/POPSpringAnimation.mm b/Sources/pop/POPSpringAnimation.mm similarity index 100% rename from pop/POPSpringAnimation.mm rename to Sources/pop/POPSpringAnimation.mm diff --git a/pop/POPVector.mm b/Sources/pop/POPVector.mm similarity index 97% rename from pop/POPVector.mm rename to Sources/pop/POPVector.mm index 4035cb97..6f9a12a8 100644 --- a/pop/POPVector.mm +++ b/Sources/pop/POPVector.mm @@ -116,7 +116,7 @@ Vector *v = new Vector(count); - NSCAssert(count <= 4, @"unexpected count %lu", (unsigned long)count); + NSCAssert1(count <= 4, @"unexpected count %lu", (unsigned long)count); for (NSUInteger i = 0; i < MIN(count, (NSUInteger)4); i++) { v->_values[i] = vec[i]; } @@ -216,7 +216,7 @@ return CGAffineTransformIdentity; } - NSCAssert(size() >= 6, @"unexpected vector size:%lu", (unsigned long)size()); + NSCAssert1(size() >= 6, @"unexpected vector size:%lu", (unsigned long)size()); CGAffineTransform t; t.a = _values[0]; t.b = _values[1]; diff --git a/pop/WebCore/TransformationMatrix.cpp b/Sources/pop/TransformationMatrix.cpp similarity index 100% rename from pop/WebCore/TransformationMatrix.cpp rename to Sources/pop/TransformationMatrix.cpp diff --git a/pop/WebCore/FloatConversion.h b/Sources/pop/include/FloatConversion.h similarity index 100% rename from pop/WebCore/FloatConversion.h rename to Sources/pop/include/FloatConversion.h diff --git a/Sources/pop/include/POP.h b/Sources/pop/include/POP.h new file mode 100644 index 00000000..98e42296 --- /dev/null +++ b/Sources/pop/include/POP.h @@ -0,0 +1,35 @@ +/** + Copyright (c) 2014-present, Facebook, Inc. + All rights reserved. + + This source code is licensed under the BSD-style license found in the + LICENSE file in the root directory of this source tree. An additional grant + of patent rights can be found in the PATENTS file in the same directory. + */ + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wstrict-prototypes" + +#ifndef POP_POP_H +#define POP_POP_H + +#import "POPDefines.h" + +#import "POPAnimatableProperty.h" +#import "POPAnimatablePropertyTypes.h" +#import "POPAnimation.h" +#import "POPAnimationEvent.h" +#import "POPAnimationExtras.h" +#import "POPAnimationTracer.h" +#import "POPAnimator.h" +#import "POPBasicAnimation.h" +#import "POPCustomAnimation.h" +#import "POPDecayAnimation.h" +#import "POPGeometry.h" +#import "POPLayerExtras.h" +#import "POPPropertyAnimation.h" +#import "POPSpringAnimation.h" + +#endif /* POP_POP_H */ + +#pragma clang diagnostic pop diff --git a/pop/POPAction.h b/Sources/pop/include/POPAction.h similarity index 98% rename from pop/POPAction.h rename to Sources/pop/include/POPAction.h index 85cca192..7fc8ce85 100644 --- a/pop/POPAction.h +++ b/Sources/pop/include/POPAction.h @@ -12,7 +12,7 @@ #import -#import +#import "POPDefines.h" #ifdef __cplusplus diff --git a/pop/POPAnimatableProperty.h b/Sources/pop/include/POPAnimatableProperty.h similarity index 99% rename from pop/POPAnimatableProperty.h rename to Sources/pop/include/POPAnimatableProperty.h index d35f4248..edde0b7c 100644 --- a/pop/POPAnimatableProperty.h +++ b/Sources/pop/include/POPAnimatableProperty.h @@ -11,8 +11,8 @@ #import -#import -#import +#import "POPDefines.h" +#import "POPAnimatablePropertyTypes.h" @class POPMutableAnimatableProperty; diff --git a/pop/POPAnimatablePropertyTypes.h b/Sources/pop/include/POPAnimatablePropertyTypes.h similarity index 100% rename from pop/POPAnimatablePropertyTypes.h rename to Sources/pop/include/POPAnimatablePropertyTypes.h diff --git a/pop/POPAnimation.h b/Sources/pop/include/POPAnimation.h similarity index 99% rename from pop/POPAnimation.h rename to Sources/pop/include/POPAnimation.h index 7f568cf1..dd30db50 100644 --- a/pop/POPAnimation.h +++ b/Sources/pop/include/POPAnimation.h @@ -9,8 +9,8 @@ #import -#import -#import +#import "POPAnimationTracer.h" +#import "POPGeometry.h" @class CAMediaTimingFunction; diff --git a/pop/POPAnimationEvent.h b/Sources/pop/include/POPAnimationEvent.h similarity index 100% rename from pop/POPAnimationEvent.h rename to Sources/pop/include/POPAnimationEvent.h diff --git a/pop/POPAnimationEventInternal.h b/Sources/pop/include/POPAnimationEventInternal.h similarity index 100% rename from pop/POPAnimationEventInternal.h rename to Sources/pop/include/POPAnimationEventInternal.h diff --git a/pop/POPAnimationExtras.h b/Sources/pop/include/POPAnimationExtras.h similarity index 95% rename from pop/POPAnimationExtras.h rename to Sources/pop/include/POPAnimationExtras.h index a4c83488..7e84459e 100644 --- a/pop/POPAnimationExtras.h +++ b/Sources/pop/include/POPAnimationExtras.h @@ -9,8 +9,8 @@ #import -#import -#import +#import "POPDefines.h" +#import "POPSpringAnimation.h" /** @abstract The current drag coefficient. diff --git a/pop/POPAnimationInternal.h b/Sources/pop/include/POPAnimationInternal.h similarity index 100% rename from pop/POPAnimationInternal.h rename to Sources/pop/include/POPAnimationInternal.h diff --git a/pop/POPAnimationPrivate.h b/Sources/pop/include/POPAnimationPrivate.h similarity index 96% rename from pop/POPAnimationPrivate.h rename to Sources/pop/include/POPAnimationPrivate.h index c0f06c52..dc1d8393 100644 --- a/pop/POPAnimationPrivate.h +++ b/Sources/pop/include/POPAnimationPrivate.h @@ -7,7 +7,7 @@ of patent rights can be found in the PATENTS file in the same directory. */ -#import +#import "POPAnimation.h" #define POP_ANIMATION_FRICTION_FOR_QC_FRICTION(qcFriction) (25.0 + (((qcFriction - 8.0) / 2.0) * (25.0 - 19.0))) #define POP_ANIMATION_TENSION_FOR_QC_TENSION(qcTension) (194.0 + (((qcTension - 30.0) / 50.0) * (375.0 - 194.0))) diff --git a/pop/POPAnimationRuntime.h b/Sources/pop/include/POPAnimationRuntime.h similarity index 100% rename from pop/POPAnimationRuntime.h rename to Sources/pop/include/POPAnimationRuntime.h diff --git a/pop/POPAnimationTracer.h b/Sources/pop/include/POPAnimationTracer.h similarity index 97% rename from pop/POPAnimationTracer.h rename to Sources/pop/include/POPAnimationTracer.h index 1de56615..b0a9e792 100644 --- a/pop/POPAnimationTracer.h +++ b/Sources/pop/include/POPAnimationTracer.h @@ -9,7 +9,7 @@ #import -#import +#import "POPAnimationEvent.h" @class POPAnimation; diff --git a/pop/POPAnimationTracerInternal.h b/Sources/pop/include/POPAnimationTracerInternal.h similarity index 97% rename from pop/POPAnimationTracerInternal.h rename to Sources/pop/include/POPAnimationTracerInternal.h index 27b7cde3..d91c339f 100644 --- a/pop/POPAnimationTracerInternal.h +++ b/Sources/pop/include/POPAnimationTracerInternal.h @@ -9,7 +9,7 @@ #import -#import +#import "POPAnimationTracer.h" @interface POPAnimationTracer (Internal) diff --git a/pop/POPAnimator.h b/Sources/pop/include/POPAnimator.h similarity index 100% rename from pop/POPAnimator.h rename to Sources/pop/include/POPAnimator.h diff --git a/pop/POPAnimatorPrivate.h b/Sources/pop/include/POPAnimatorPrivate.h similarity index 98% rename from pop/POPAnimatorPrivate.h rename to Sources/pop/include/POPAnimatorPrivate.h index 8ddf2e0d..edc28b54 100644 --- a/pop/POPAnimatorPrivate.h +++ b/Sources/pop/include/POPAnimatorPrivate.h @@ -7,7 +7,7 @@ of patent rights can be found in the PATENTS file in the same directory. */ -#import +#import "POPAnimator.h" @class POPAnimation; diff --git a/pop/POPBasicAnimation.h b/Sources/pop/include/POPBasicAnimation.h similarity index 98% rename from pop/POPBasicAnimation.h rename to Sources/pop/include/POPBasicAnimation.h index ce2e23af..3169d678 100644 --- a/pop/POPBasicAnimation.h +++ b/Sources/pop/include/POPBasicAnimation.h @@ -7,7 +7,7 @@ of patent rights can be found in the PATENTS file in the same directory. */ -#import +#import "POPPropertyAnimation.h" /** @abstract A concrete basic animation class. diff --git a/pop/POPBasicAnimationInternal.h b/Sources/pop/include/POPBasicAnimationInternal.h similarity index 95% rename from pop/POPBasicAnimationInternal.h rename to Sources/pop/include/POPBasicAnimationInternal.h index 14dd64d4..22ddf944 100644 --- a/pop/POPBasicAnimationInternal.h +++ b/Sources/pop/include/POPBasicAnimationInternal.h @@ -30,7 +30,7 @@ static void interpolate(POPValueType valueType, NSUInteger count, const CGFloat POPInterpolateVector(count, outVec, fromVec, toVec, p); break; default: - NSCAssert(false, @"unhandled type %d", valueType); + NSCAssert1(false, @"unhandled type %d", valueType); break; } } @@ -38,13 +38,13 @@ static void interpolate(POPValueType valueType, NSUInteger count, const CGFloat struct _POPBasicAnimationState : _POPPropertyAnimationState { CAMediaTimingFunction *timingFunction; - double timingControlPoints[4]; + double timingControlPoints[4] = {0.}; CFTimeInterval duration; CFTimeInterval timeProgress; _POPBasicAnimationState(id __unsafe_unretained anim) : _POPPropertyAnimationState(anim), timingFunction(nil), - timingControlPoints{0.}, + timingControlPoints(), duration(kPOPAnimationDurationDefault), timeProgress(0.) { diff --git a/pop/POPCGUtils.h b/Sources/pop/include/POPCGUtils.h similarity index 100% rename from pop/POPCGUtils.h rename to Sources/pop/include/POPCGUtils.h diff --git a/pop/POPCustomAnimation.h b/Sources/pop/include/POPCustomAnimation.h similarity index 98% rename from pop/POPCustomAnimation.h rename to Sources/pop/include/POPCustomAnimation.h index 501a755b..c7af13b1 100644 --- a/pop/POPCustomAnimation.h +++ b/Sources/pop/include/POPCustomAnimation.h @@ -7,7 +7,7 @@ of patent rights can be found in the PATENTS file in the same directory. */ -#import +#import "POPAnimation.h" @class POPCustomAnimation; diff --git a/pop/POPDecayAnimation.h b/Sources/pop/include/POPDecayAnimation.h similarity index 98% rename from pop/POPDecayAnimation.h rename to Sources/pop/include/POPDecayAnimation.h index 92c6b604..723213be 100644 --- a/pop/POPDecayAnimation.h +++ b/Sources/pop/include/POPDecayAnimation.h @@ -7,7 +7,7 @@ of patent rights can be found in the PATENTS file in the same directory. */ -#import +#import "POPPropertyAnimation.h" /** @abstract A concrete decay animation class. diff --git a/pop/POPDecayAnimationInternal.h b/Sources/pop/include/POPDecayAnimationInternal.h similarity index 100% rename from pop/POPDecayAnimationInternal.h rename to Sources/pop/include/POPDecayAnimationInternal.h diff --git a/pop/POPDefines.h b/Sources/pop/include/POPDefines.h similarity index 100% rename from pop/POPDefines.h rename to Sources/pop/include/POPDefines.h diff --git a/pop/POPGeometry.h b/Sources/pop/include/POPGeometry.h similarity index 100% rename from pop/POPGeometry.h rename to Sources/pop/include/POPGeometry.h diff --git a/pop/POPLayerExtras.h b/Sources/pop/include/POPLayerExtras.h similarity index 99% rename from pop/POPLayerExtras.h rename to Sources/pop/include/POPLayerExtras.h index ec4c29a4..ff30e017 100644 --- a/pop/POPLayerExtras.h +++ b/Sources/pop/include/POPLayerExtras.h @@ -9,7 +9,7 @@ #import -#import +#import "POPDefines.h" POP_EXTERN_C_BEGIN diff --git a/pop/POPMath.h b/Sources/pop/include/POPMath.h similarity index 100% rename from pop/POPMath.h rename to Sources/pop/include/POPMath.h diff --git a/pop/POPPropertyAnimation.h b/Sources/pop/include/POPPropertyAnimation.h similarity index 97% rename from pop/POPPropertyAnimation.h rename to Sources/pop/include/POPPropertyAnimation.h index cf895726..d78e51ce 100644 --- a/pop/POPPropertyAnimation.h +++ b/Sources/pop/include/POPPropertyAnimation.h @@ -7,8 +7,8 @@ of patent rights can be found in the PATENTS file in the same directory. */ -#import -#import +#import "POPAnimatableProperty.h" +#import "POPAnimation.h" /** @abstract Flags for clamping animation values. diff --git a/pop/POPPropertyAnimationInternal.h b/Sources/pop/include/POPPropertyAnimationInternal.h similarity index 100% rename from pop/POPPropertyAnimationInternal.h rename to Sources/pop/include/POPPropertyAnimationInternal.h diff --git a/pop/POPSpringAnimation.h b/Sources/pop/include/POPSpringAnimation.h similarity index 98% rename from pop/POPSpringAnimation.h rename to Sources/pop/include/POPSpringAnimation.h index a22cd5be..109765f3 100644 --- a/pop/POPSpringAnimation.h +++ b/Sources/pop/include/POPSpringAnimation.h @@ -7,7 +7,7 @@ of patent rights can be found in the PATENTS file in the same directory. */ -#import +#import "POPPropertyAnimation.h" /** @abstract A concrete spring animation class. diff --git a/pop/POPSpringAnimationInternal.h b/Sources/pop/include/POPSpringAnimationInternal.h similarity index 100% rename from pop/POPSpringAnimationInternal.h rename to Sources/pop/include/POPSpringAnimationInternal.h diff --git a/pop/POPSpringSolver.h b/Sources/pop/include/POPSpringSolver.h similarity index 99% rename from pop/POPSpringSolver.h rename to Sources/pop/include/POPSpringSolver.h index 6db4260f..df485bf8 100644 --- a/pop/POPSpringSolver.h +++ b/Sources/pop/include/POPSpringSolver.h @@ -9,7 +9,7 @@ #import -#import +#import "POPVector.h" namespace POP { diff --git a/pop/POPVector.h b/Sources/pop/include/POPVector.h similarity index 99% rename from pop/POPVector.h rename to Sources/pop/include/POPVector.h index 32173ff8..ab23fc11 100644 --- a/pop/POPVector.h +++ b/Sources/pop/include/POPVector.h @@ -359,7 +359,7 @@ namespace POP { // operator overloads CGFloat &operator[](size_t i) const { - NSCAssert(size() > i, @"unexpected vector size:%lu", (unsigned long)size()); + NSCAssert1(size() > i, @"unexpected vector size:%lu", (unsigned long)size()); return _values[i]; } diff --git a/pop/WebCore/TransformationMatrix.h b/Sources/pop/include/TransformationMatrix.h similarity index 100% rename from pop/WebCore/TransformationMatrix.h rename to Sources/pop/include/TransformationMatrix.h diff --git a/pop/WebCore/UnitBezier.h b/Sources/pop/include/UnitBezier.h similarity index 100% rename from pop/WebCore/UnitBezier.h rename to Sources/pop/include/UnitBezier.h diff --git a/Sources/pop/include/module.modulemap b/Sources/pop/include/module.modulemap new file mode 100644 index 00000000..06b7082e --- /dev/null +++ b/Sources/pop/include/module.modulemap @@ -0,0 +1,4 @@ +module pop { + header "POP.h" + export * +} diff --git a/pop-tests/POPAnimatable.h b/pop-tests/POPAnimatable.h deleted file mode 100644 index 1272cba0..00000000 --- a/pop-tests/POPAnimatable.h +++ /dev/null @@ -1,28 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import - -#import - -@interface POPAnimatable : NSObject - -@property (nonatomic, assign) float radius; - -@property (nonatomic, assign) CGPoint position; - -- (NSArray *)recordedValuesForKey:(NSString *)key; - -- (void)startRecording; - -- (void)stopRecording; - -@end diff --git a/pop-tests/POPAnimatable.mm b/pop-tests/POPAnimatable.mm deleted file mode 100644 index 1bf4caab..00000000 --- a/pop-tests/POPAnimatable.mm +++ /dev/null @@ -1,76 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import "POPAnimatable.h" - -#import - -@implementation POPAnimatable -{ - BOOL _recording; - NSMutableDictionary *_recordedValuesDict; -} -@synthesize radius = _radius; -@synthesize position = _position; - -static void record_value(POPAnimatable *self, NSString *key, id value) -{ - if (!self->_recordedValuesDict) { - self->_recordedValuesDict = [NSMutableDictionary new]; - } - NSMutableArray *values = self->_recordedValuesDict[key]; - if (!values) { - values = [NSMutableArray array]; - self->_recordedValuesDict[key] = values; - } - [values addObject:value]; -} - -static void record_value(POPAnimatable *self, NSString *key, float f) -{ - record_value(self, key, @(f)); -} - -static void record_value(POPAnimatable *self, NSString *key, CGPoint p) -{ - record_value(self, key, [NSValue valueWithCGPoint:p]); -} - -- (void)setRadius:(float)radius -{ - _radius = radius; - if (_recording) { - record_value(self, @"radius", radius); - } -} - -- (void)setPosition:(CGPoint)position -{ - _position = position; - if (_recording) { - record_value(self, @"position", position); - } -} - -- (NSArray *)recordedValuesForKey:(NSString *)key -{ - return _recordedValuesDict[key]; -} - -- (void)startRecording -{ - _recording = YES; -} - -- (void)stopRecording -{ - _recording = NO; -} - -@end diff --git a/pop-tests/POPAnimatablePropertyTests.mm b/pop-tests/POPAnimatablePropertyTests.mm deleted file mode 100644 index fac6b06b..00000000 --- a/pop-tests/POPAnimatablePropertyTests.mm +++ /dev/null @@ -1,142 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import - -static const CGFloat epsilon = 0.0001f; -static NSArray *properties = @[@"name", @"readBlock", @"writeBlock", @"threshold"]; - -static void assertPropertyEqual(id self, POPAnimatableProperty *prop1, POPAnimatableProperty *prop2) -{ - for (NSString *property in properties) { - id value = [prop1 valueForKey:property]; - id valueCopy = [prop2 valueForKey:property]; - XCTAssertEqualObjects(value, valueCopy, @"unexpected inequality; value:%@ copy:%@", value, valueCopy); - } -} - -@interface POPAnimatablePropertyTests : XCTestCase -@end - -@implementation POPAnimatablePropertyTests - -- (void)testProvidedExistence -{ - NSArray *names = @[kPOPLayerPosition, - kPOPLayerOpacity, - kPOPLayerScaleXY, - kPOPLayerSubscaleXY, - kPOPLayerSubtranslationX, - kPOPLayerSubtranslationY, - kPOPLayerSubtranslationZ, - kPOPLayerSubtranslationXY, - kPOPLayerZPosition, - kPOPLayerSize, - kPOPLayerRotation, - kPOPLayerRotationY, - kPOPLayerRotationX, - kPOPLayerShadowColor, - kPOPLayerShadowOffset, - kPOPLayerShadowOpacity, - kPOPLayerShadowRadius, - kPOPLayerCornerRadius, - kPOPLayerBorderWidth, - kPOPLayerBorderColor, - kPOPShapeLayerStrokeStart, - kPOPShapeLayerStrokeEnd, - kPOPShapeLayerStrokeColor, - kPOPShapeLayerLineWidth, - kPOPShapeLayerLineDashPhase, -#if TARGET_OS_IPHONE - kPOPViewAlpha, - kPOPViewBackgroundColor, - kPOPViewCenter, - kPOPViewFrame, - kPOPViewBounds, - kPOPViewSize, - kPOPViewTintColor, - kPOPScrollViewZoomScale, - kPOPTableViewContentSize, - kPOPTableViewContentOffset, - kPOPCollectionViewContentSize, - kPOPCollectionViewContentSize, - kPOPLabelTextColor -#else - kPOPViewFrame, - kPOPViewBounds, - kPOPViewAlphaValue, - kPOPViewFrameRotation, - kPOPViewFrameCenterRotation, - kPOPViewBoundsRotation, - kPOPWindowFrame, - kPOPWindowAlphaValue, - kPOPWindowBackgroundColor -#endif - ]; - - for (NSString *name in names) { - POPAnimatableProperty *prop = [POPAnimatableProperty propertyWithName:name]; - XCTAssertNotNil(prop, @"animatable property %@ should exist", name); - } -} - -- (void)testUserCreation -{ - static NSString *name = @"lalalala"; - static CGFloat threshold = 0.07; - POPAnimatableProperty *prop; - - prop = [POPAnimatableProperty propertyWithName:name]; - XCTAssertNil(prop, @"animatable property %@ should not exist", name); - - prop = [POPAnimatableProperty propertyWithName:name initializer:^(POPMutableAnimatableProperty *p){ - p.threshold = threshold; - }]; - XCTAssertNotNil(prop, @"animatable property %@ should exist", name); - XCTAssertEqualWithAccuracy(threshold, prop.threshold, epsilon, @"property threshold %f should equal %f", prop.threshold, threshold); -} - -- (void)testClassCluster -{ - POPAnimatableProperty *instance1 = [[POPAnimatableProperty alloc] init]; - POPAnimatableProperty *instance2 = [[POPAnimatableProperty alloc] init]; - XCTAssertTrue(instance1 == instance2, @"instance1:%@ instance2:%@", instance1, instance2); - - for (NSString *property in properties) { - XCTAssertNoThrow([instance1 valueForKey:property], @"exception on %@", property); - } -} - -- (void)testCopying -{ - // instance - POPAnimatableProperty *prop = [POPAnimatableProperty propertyWithName:kPOPLayerBounds]; - - // instance copy - POPAnimatableProperty *propCopy = [prop copy]; - - // test equality - assertPropertyEqual(self, prop, propCopy); -} - -- (void)testMutableCopying -{ - // instance - POPAnimatableProperty *prop = [POPAnimatableProperty propertyWithName:kPOPLayerBounds]; - - // instance copy - POPAnimatableProperty *propCopy = [prop mutableCopy]; - - // test equality - assertPropertyEqual(self, prop, propCopy); -} - -@end diff --git a/pop-tests/POPAnimationMRRTests.mm b/pop-tests/POPAnimationMRRTests.mm deleted file mode 100644 index 3a798488..00000000 --- a/pop-tests/POPAnimationMRRTests.mm +++ /dev/null @@ -1,91 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import - -#import - -#import -#import - -#import "POPAnimationTestsExtras.h" - -@interface POPAnimationMRRTests : XCTestCase -{ - POPAnimator *_animator; - CFTimeInterval _beginTime; -} -@end - -@implementation POPAnimationMRRTests - -- (void)setUp -{ - [super setUp]; - _animator = [[POPAnimator sharedAnimator] retain]; - _beginTime = CACurrentMediaTime(); - _animator.beginTime = _beginTime; -} - -- (void)tearDown -{ - [_animator release]; - _animator = nil; - [super tearDown]; -} - -- (void)testZeroingDelegate -{ - POPBasicAnimation *anim = FBTestLinearPositionAnimation(); - - @autoreleasepool { - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - anim.delegate = delegate; - XCTAssertNotNil(anim.delegate, @"delegate should not be nil"); - } - - XCTAssertNil(anim.delegate, @"delegate should be nil"); -} - -- (void)testAnimationCancellationOnAnimatableDeallocation -{ - id layer = nil; - POPBasicAnimation *anim = FBTestLinearPositionAnimation(); - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - @autoreleasepool { - layer = [OCMockObject niceMockForClass:[CALayer class]]; - anim.delegate = delegate; - - // expect position start - [[delegate expect] pop_animationDidStart:anim]; - - // run - [layer pop_addAnimation:anim forKey:@""]; - POPAnimatorRenderTimes(_animator, _beginTime, @[@0.0]); - - // verify - [layer verify]; - [delegate verify]; - - // expect stop unfinished - [[delegate expect] pop_animationDidStop:anim finished:NO]; - layer = nil; - } - - // run - POPAnimatorRenderTimes(_animator, _beginTime, @[@0.5]); - - // verify - [delegate verify]; -} - -@end diff --git a/pop-tests/POPAnimationTests.mm b/pop-tests/POPAnimationTests.mm deleted file mode 100644 index 5c23eff6..00000000 --- a/pop-tests/POPAnimationTests.mm +++ /dev/null @@ -1,891 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import - -#import - -#import -#import -#import - -#import "POPAnimatable.h" -#import "POPAnimationRuntime.h" -#import "POPAnimationTestsExtras.h" -#import "POPBaseAnimationTests.h" -#import "POPCGUtils.h" -#import "POPAnimationInternal.h" - -using namespace POP; - -@interface POPAnimation (TestExtensions) -@property (strong, nonatomic) NSString *sampleKey; -@end - -@implementation POPAnimation (TestExtensions) -- (NSString *)sampleKey { return [self valueForUndefinedKey:@"sampleKey"]; } -- (void)setSampleKey:(NSString *)aValue { [self setValue:aValue forUndefinedKey:@"sampleKey"];} -@end - -@interface POPAnimationTests : POPBaseAnimationTests -@end - -@implementation POPAnimationTests - -- (void)testOrneryAbstractClasses -{ - XCTAssertThrows([[POPAnimation alloc] init], @"should not be able to instiate abstract class"); - XCTAssertThrows([[POPPropertyAnimation alloc] init], @"should not be able to instiate abstract class"); -} - -- (void)testWithPropertyNamedConstruction -{ - POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds]; - POPAnimatableProperty *prop = [POPAnimatableProperty propertyWithName:kPOPLayerBounds]; - XCTAssertTrue(anim.property == prop, @"expected:%@ actual:%@", prop, anim.property); -} - -- (void)testAdditionRemoval -{ - CALayer *layer1 = self.layer1; - CALayer *layer2 = self.layer2; - [layer1 removeAllAnimations]; - [layer2 removeAllAnimations]; - - POPAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - [layer1 pop_addAnimation:anim forKey:@"hello"]; - - NSArray *keys = [layer1 pop_animationKeys]; - XCTAssertTrue(1 == keys.count); - XCTAssertTrue([@"hello" isEqualToString:keys.lastObject]); - - [layer1 pop_removeAnimationForKey:@"hello"]; - XCTAssertTrue(0 == [layer1 pop_animationKeys].count); - - [layer1 pop_addAnimation:FBTestLinearPositionAnimation(self.beginTime) forKey:@"hello"]; - [layer1 pop_addAnimation:FBTestLinearPositionAnimation(self.beginTime) forKey:@"world"]; - [layer2 pop_addAnimation:FBTestLinearPositionAnimation(self.beginTime) forKey:@"hello"]; - - XCTAssertTrue(2 == [layer1 pop_animationKeys].count); - XCTAssertTrue(1 == [layer2 pop_animationKeys].count); - - [layer1 pop_removeAllAnimations]; - XCTAssertTrue(0 == [layer1 pop_animationKeys].count); - XCTAssertTrue(1 == [layer2 pop_animationKeys].count); -} - -- (void)testStartStopDelegation -{ - CALayer *layer1 = self.layer1; - [layer1 removeAllAnimations]; - - POPAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // expect start, stop finished - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - anim.delegate = delegate; - - [layer1 pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderTimes(self.animator, self.beginTime, @[@0.0, @1.0]); - - // verify expectations - [delegate verify]; -} - -- (void)testAnimationValues -{ - POPBasicAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - - // avoid fractional values; simplify verification - anim.roundingFactor = 1.0; - - id layer = [OCMockObject niceMockForClass:[CALayer class]]; - [[layer expect] setPosition:FBTestInterpolateLinear(Vector2r([anim.fromValue CGPointValue]), Vector2r([anim.toValue CGPointValue]), 0.25).cg_point()]; - [[layer expect] setPosition:FBTestInterpolateLinear(Vector2r([anim.fromValue CGPointValue]), Vector2r([anim.toValue CGPointValue]), 0.5).cg_point()]; - [[layer expect] setPosition:FBTestInterpolateLinear(Vector2r([anim.fromValue CGPointValue]), Vector2r([anim.toValue CGPointValue]), 0.75).cg_point()]; - [[layer expect] setPosition:[anim.toValue CGPointValue]]; - - [layer pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 1, 0.25); - - [layer verify]; -} - -- (void)testNoAutoreverseRepeatCount0 -{ - CALayer *layer1 = self.layer1; - [layer1 removeAllAnimations]; - - POPBasicAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - anim.repeatCount = 0; - anim.roundingFactor = 1.0; - anim.autoreverses = NO; - - NSValue *originalToValue = anim.toValue; - - [layer1 pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 2.0, 0.25); // animate longer than needed to verify animation has stopped in the appropriate place - - XCTAssertEqualObjects([layer1 valueForKeyPath:@"position"], originalToValue, @"expected equality; value1:%@ value2:%@", [layer1 valueForKey:@"position"], originalToValue); -} - -- (void)testNoAutoreverseRepeatCount1 -{ - CALayer *layer1 = self.layer1; - [layer1 removeAllAnimations]; - - POPBasicAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - anim.repeatCount = 1; - anim.roundingFactor = 1.0; - anim.autoreverses = NO; - - NSValue *originalToValue = anim.toValue; - - [layer1 pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 3.0, 0.25); // animate longer than needed to verify animation has stopped in the appropriate place - - XCTAssertEqualObjects([layer1 valueForKeyPath:@"position"], originalToValue, @"expected equality; value1:%@ value2:%@", [layer1 valueForKey:@"position"], originalToValue); -} - -- (void)testNoAutoreverseRepeatCount4 -{ - CALayer *layer1 = self.layer1; - [layer1 removeAllAnimations]; - - POPBasicAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - anim.repeatCount = 4; - anim.roundingFactor = 1.0; - anim.autoreverses = NO; - - NSValue *originalToValue = anim.toValue; - - [layer1 pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 6.0, 0.25); // animate longer than needed to verify animation has stopped in the appropriate place - - XCTAssertEqualObjects([layer1 valueForKeyPath:@"position"], originalToValue, @"expected equality; value1:%@ value2:%@", [layer1 valueForKey:@"position"], originalToValue); -} - -- (void)testAutoreverseRepeatCount0 -{ - CALayer *layer1 = self.layer1; - [layer1 removeAllAnimations]; - - POPBasicAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - anim.roundingFactor = 1.0; - anim.autoreverses = YES; - anim.repeatCount = 0; - [anim.tracer start]; - - NSValue *originalFromValue = anim.fromValue; - - [layer1 pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 3.0, 0.25); // animate longer than needed to verify animation has stopped in the appropriate place - - XCTAssertEqualObjects([layer1 valueForKey:@"position"], originalFromValue, @"expected equality; value1:%@ value2:%@", [layer1 valueForKey:@"position"], originalFromValue); - - NSArray *autoreversedEvents = [anim.tracer eventsWithType:kPOPAnimationEventAutoreversed]; - XCTAssertTrue(1 == autoreversedEvents.count, @"unexpected autoreversed events %@", autoreversedEvents); - - anim.autoreverses = NO; -} - -- (void)testAutoreverseRepeatCount1 -{ - CALayer *layer1 = self.layer1; - [layer1 removeAllAnimations]; - - POPBasicAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - anim.roundingFactor = 1.0; - anim.autoreverses = YES; - anim.repeatCount = 1; - [anim.tracer start]; - - NSValue *originalFromValue = anim.fromValue; - - [layer1 pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 3.0, 0.25); // animate longer than needed to verify animation has stopped in the appropriate place - - XCTAssertEqualObjects([layer1 valueForKey:@"position"], originalFromValue, @"expected equality; value1:%@ value2:%@", [layer1 valueForKey:@"position"], originalFromValue); - - NSArray *autoreversedEvents = [anim.tracer eventsWithType:kPOPAnimationEventAutoreversed]; - XCTAssertTrue(1 == autoreversedEvents.count, @"unexpected autoreversed events %@", autoreversedEvents); - - anim.autoreverses = NO; -} - -- (void)testAutoreverseRepeatCount4 -{ - CALayer *layer1 = self.layer1; - [layer1 removeAllAnimations]; - - POPBasicAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - anim.roundingFactor = 1.0; - anim.autoreverses = YES; - - NSInteger repeatCount = 4; - anim.repeatCount = repeatCount; - [anim.tracer start]; - - NSValue *originalFromValue = anim.fromValue; - - [layer1 pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 9.0, 0.25); // animate longer than needed to verify animation has stopped in the appropriate place - - XCTAssertEqualObjects([layer1 valueForKey:@"position"], originalFromValue, @"expected equality; value1:%@ value2:%@", [layer1 valueForKey:@"position"], originalFromValue); - - NSArray *autoreversedEvents = [anim.tracer eventsWithType:kPOPAnimationEventAutoreversed]; - XCTAssertTrue((repeatCount * 2) - 1 == (int)autoreversedEvents.count, @"unexpected autoreversed events %@", autoreversedEvents); - - anim.autoreverses = NO; -} - -- (void)testReAddition -{ - CALayer *layer1 = self.layer1; - CALayer *layer2 = self.layer2; - [layer1 removeAllAnimations]; - [layer2 removeAllAnimations]; - - static NSString *key = @"key"; - - POPAnimation *anim1, *anim2; - id delegate1, delegate2; - - anim1 = FBTestLinearPositionAnimation(self.beginTime); - delegate1 = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // expect start, stop not finished - [[delegate1 expect] pop_animationDidStart:anim1]; - [[delegate1 expect] pop_animationDidStop:anim1 finished:NO]; - - anim1.delegate = delegate1; - [layer1 pop_addAnimation:anim1 forKey:key]; - - anim2 = FBTestLinearPositionAnimation(self.beginTime); - delegate2 = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // expect start, stop finished - [[delegate2 expect] pop_animationDidStart:anim2]; - [[delegate2 expect] pop_animationDidStop:anim2 finished:YES]; - anim2.delegate = delegate2; - - // add with same key - [layer1 pop_addAnimation:anim2 forKey:key]; - POPAnimatorRenderTimes(self.animator, self.beginTime, @[@0.0, @1.0]); - - // verify expectations - [delegate1 verify]; - [delegate2 verify]; -} - -- (void)testAnimationDidStartBlock -{ - CALayer *layer1 = self.layer1; - [layer1 removeAllAnimations]; - - POPAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // set animation did start block - anim.animationDidStartBlock = ^(POPAnimation *a) { - [delegate pop_animationDidStart:a]; - }; - - [[delegate expect] pop_animationDidStart:anim]; - - [layer1 pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderTimes(self.animator, self.beginTime, @[@0.0, @1.0]); - [delegate verify]; -} - -- (void)testAnimationDidReachToValueBlock -{ - CALayer *layer1 = self.layer1; - [layer1 removeAllAnimations]; - - POPAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // set animation did reach to value block - anim.animationDidReachToValueBlock = ^(POPAnimation *a) { - [delegate pop_animationDidReachToValue:a]; - }; - - [[delegate expect] pop_animationDidReachToValue:anim]; - - [layer1 pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderTimes(self.animator, self.beginTime, @[@0.0, @1.0]); - [delegate verify]; -} - -- (void)testCompletionBlock -{ - CALayer *layer1 = self.layer1; - [layer1 removeAllAnimations]; - - POPAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - anim.completionBlock = ^(POPAnimation *a, BOOL finished) { - [delegate pop_animationDidStop:a finished:finished]; - }; - - // test for unfinished completion - [[delegate expect] pop_animationDidStop:anim finished:NO]; - - [layer1 pop_addAnimation:anim forKey:@"key"]; - [layer1 pop_removeAllAnimations]; - [delegate verify]; - - anim = FBTestLinearPositionAnimation(self.beginTime); - delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // set completion block - anim.completionBlock = ^(POPAnimation *a, BOOL finished) { - [delegate pop_animationDidStop:a finished:finished]; - }; - - // test for finished completion - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - [layer1 pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderTimes(self.animator, self.beginTime, @[@0.0, @1.0]); - [delegate verify]; -} - -- (void)testAnimationDidApplyBlock -{ - CALayer *layer1 = self.layer1; - [layer1 removeAllAnimations]; - - POPAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // set animation did apply block - anim.animationDidApplyBlock = ^(POPAnimation *a) { - [delegate pop_animationDidApply:a]; - }; - - [[delegate expect] pop_animationDidApply:anim]; - - [layer1 pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderTimes(self.animator, self.beginTime, @[@0.0, @1.0]); - [delegate verify]; -} - -- (void)testReuse -{ - NSValue *fromValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)]; - NSValue *toValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)]; - CGFloat testProgress = 0.25; - - POPBasicAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - anim.fromValue = fromValue; - anim.toValue = toValue; - anim.roundingFactor = 1.0; - - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - anim.delegate = delegate; - - id layer = [OCMockObject niceMockForClass:[CALayer class]]; - - [[layer expect] setPosition:FBTestInterpolateLinear(Vector2r([fromValue CGPointValue]), Vector2r([toValue CGPointValue]), testProgress).cg_point()]; - [[layer expect] setPosition:[toValue CGPointValue]]; - - [layer pop_addAnimation:anim forKey:@"key"]; - - POPAnimatorRenderTimes(self.animator, self.beginTime, @[@0.0, [NSNumber numberWithFloat:testProgress * anim.duration], [NSNumber numberWithFloat:anim.duration]]); - [layer verify]; - [delegate verify]; - - // new delegate & layer, same animation - delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - anim.delegate = delegate; - - layer = [OCMockObject niceMockForClass:[CALayer class]]; - - [[layer expect] setPosition:FBTestInterpolateLinear(Vector2r([fromValue CGPointValue]), Vector2r([toValue CGPointValue]), testProgress).cg_point()]; - [[layer expect] setPosition:[toValue CGPointValue]]; - - [layer pop_addAnimation:anim forKey:@"key"]; - - POPAnimatorRenderTimes(self.animator, self.beginTime, @[@0.0, [NSNumber numberWithFloat:testProgress * anim.duration], [NSNumber numberWithFloat:anim.duration]]); - [layer verify]; - - [delegate verify]; -} - -- (void)testCancelBeforeBegin -{ - POPAnimation *anim = FBTestLinearPositionAnimation(self.beginTime + 100000); - [anim.tracer start]; - - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:@"key"]; - [layer pop_removeAllAnimations]; - - NSArray *didStartEvents = [anim.tracer eventsWithType:kPOPAnimationEventDidStart]; - NSArray *didStopEvents = [anim.tracer eventsWithType:kPOPAnimationEventDidStop]; - XCTAssertTrue(1 == didStartEvents.count, @"unexpected start events %@", didStartEvents); - XCTAssertTrue(1 == didStopEvents.count, @"unexpected stop events %@", didStopEvents); -} - -- (void)testAddedKeys -{ - POPAnimation *anim = FBTestLinearPositionAnimation(); - anim.sampleKey = @"value"; - XCTAssertEqualObjects(anim.sampleKey, @"value", @"property value read should equal write"); -} - -- (void)testValueTypeResolution -{ - POPSpringAnimation *anim = [POPSpringAnimation animation]; - XCTAssertNil(anim.fromValue); - XCTAssertNil(anim.toValue); - XCTAssertNil(anim.velocity); - - id pointValue = [NSValue valueWithCGPoint:CGPointMake(1, 2)]; - anim.fromValue = pointValue; - anim.toValue = pointValue; - anim.velocity = pointValue; - - XCTAssertEqualObjects(anim.fromValue, pointValue, @"property value read should equal write"); - XCTAssertEqualObjects(anim.toValue, pointValue, @"property value read should equal write"); - XCTAssertEqualObjects(anim.velocity, pointValue, @"property value read should equal write"); - - POPSpringAnimation *anim2 = [POPSpringAnimation animation]; - - id rectValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 20, 20)]; - anim2.fromValue = rectValue; - anim2.toValue = rectValue; - anim2.velocity = rectValue; - - XCTAssertEqualObjects(anim2.fromValue, rectValue, @"property value read should equal write"); - XCTAssertEqualObjects(anim2.toValue, rectValue, @"property value read should equal write"); - XCTAssertEqualObjects(anim2.velocity, rectValue, @"property value read should equal write"); - -#if TARGET_OS_IPHONE - - POPSpringAnimation *anim3 = [POPSpringAnimation animation]; - - id edgeInsetsValue = [NSValue valueWithUIEdgeInsets:UIEdgeInsetsMake(20, 40, 20, 40)]; - anim3.fromValue = edgeInsetsValue; - anim3.toValue = edgeInsetsValue; - anim3.velocity = edgeInsetsValue; - - XCTAssertEqualObjects(anim3.fromValue, edgeInsetsValue, @"property value read should equal write"); - XCTAssertEqualObjects(anim3.toValue, edgeInsetsValue, @"property value read should equal write"); - XCTAssertEqualObjects(anim3.velocity, edgeInsetsValue, @"property value read should equal write"); - -#endif - - POPSpringAnimation *anim4 = [POPSpringAnimation animation]; - id transformValue = [NSValue valueWithCATransform3D:CATransform3DIdentity]; - XCTAssertThrows(anim4.fromValue = transformValue, @"should not be able to set %@", transformValue); -} - -- (void)testTracer -{ - POPAnimatable *circle = [POPAnimatable new]; - POPSpringAnimation *anim = [POPSpringAnimation animation]; - POPAnimationTracer *tracer = anim.tracer; - XCTAssertNotNil(tracer, @"missing tracer"); - [tracer start]; - - NSNumber *animFromValue = @0.0; - NSNumber *animToValue = @1.0; - NSNumber *animVelocity = @0.1; - float animBounciness = 4.1; - float animSpeed = 13.0; - float animFriction = 123.; - float animMass = 0.9; - float animTension = 401.; - - anim.property = self.radiusProperty; - anim.fromValue = animFromValue; - anim.toValue = animToValue; - anim.velocity = animVelocity; - anim.dynamicsFriction = animFriction; - anim.dynamicsMass = animMass; - anim.dynamicsTension = animTension; - anim.springBounciness = animBounciness; - anim.springSpeed = animSpeed; - - [circle pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 5, 0.01); - [tracer stop]; - - NSArray *allEvents = tracer.allEvents; - NSArray *fromEvents = [tracer eventsWithType:kPOPAnimationEventFromValueUpdate]; - NSArray *toEvents = [tracer eventsWithType:kPOPAnimationEventToValueUpdate]; - NSArray *velocityEvents = [tracer eventsWithType:kPOPAnimationEventVelocityUpdate]; - NSArray *bouncinessEvents = [tracer eventsWithType:kPOPAnimationEventBouncinessUpdate]; - NSArray *speedEvents = [tracer eventsWithType:kPOPAnimationEventSpeedUpdate]; - NSArray *frictionEvents = [tracer eventsWithType:kPOPAnimationEventFrictionUpdate]; - NSArray *massEvents = [tracer eventsWithType:kPOPAnimationEventMassUpdate]; - NSArray *tensionEvents = [tracer eventsWithType:kPOPAnimationEventTensionUpdate]; - NSArray *startEvents = [tracer eventsWithType:kPOPAnimationEventDidStart]; - NSArray *stopEvents = [tracer eventsWithType:kPOPAnimationEventDidStop]; - NSArray *didReachEvents = [tracer eventsWithType:kPOPAnimationEventDidReachToValue]; - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - - // all events - XCTAssertTrue(0 != allEvents.count, @"unexpected allEvents count %@", allEvents); - - // from events - XCTAssertTrue(1 == fromEvents.count, @"unexpected fromEvents count %@", fromEvents); - id eventFromValue = [(POPAnimationValueEvent *)fromEvents.lastObject value]; - XCTAssertEqualObjects(animFromValue, eventFromValue, @"unexpected eventFromValue; expected:%@ actual:%@", animFromValue, eventFromValue); - - // to events - XCTAssertTrue(1 == toEvents.count, @"unexpected toEvents count %@", toEvents); - id eventToValue = [(POPAnimationValueEvent *)toEvents.lastObject value]; - XCTAssertEqualObjects(animToValue, eventToValue, @"unexpected eventToValue; expected:%@ actual:%@", animToValue, eventToValue); - - // velocity events - XCTAssertTrue(1 == velocityEvents.count, @"unexpected velocityEvents count %@", velocityEvents); - id eventVelocity = [(POPAnimationValueEvent *)velocityEvents.lastObject value]; - XCTAssertEqualObjects(animVelocity, eventVelocity, @"unexpected eventVelocity; expected:%@ actual:%@", animVelocity, eventVelocity); - - // bounciness events - XCTAssertTrue(1 == bouncinessEvents.count, @"unexpected bouncinessEvents count %@", bouncinessEvents); - id eventBounciness = [(POPAnimationValueEvent *)bouncinessEvents.lastObject value]; - XCTAssertEqualObjects(@(animBounciness), eventBounciness, @"unexpected bounciness; expected:%@ actual:%@", @(animBounciness), eventBounciness); - - // speed events - XCTAssertTrue(1 == speedEvents.count, @"unexpected speedEvents count %@", speedEvents); - id eventSpeed = [(POPAnimationValueEvent *)speedEvents.lastObject value]; - XCTAssertEqualObjects(@(animSpeed), eventSpeed, @"unexpected speed; expected:%@ actual:%@", @(animSpeed), eventSpeed); - - // friction events - XCTAssertTrue(1 == frictionEvents.count, @"unexpected frictionEvents count %@", frictionEvents); - id eventFriction = [(POPAnimationValueEvent *)frictionEvents.lastObject value]; - XCTAssertEqualObjects(@(animFriction), eventFriction, @"unexpected friction; expected:%@ actual:%@", @(animFriction), eventFriction); - - // mass events - XCTAssertTrue(1 == massEvents.count, @"unexpected massEvents count %@", massEvents); - id eventMass = [(POPAnimationValueEvent *)massEvents.lastObject value]; - XCTAssertEqualObjects(@(animMass), eventMass, @"unexpected mass; expected:%@ actual:%@", @(animMass), eventMass); - - // tension events - XCTAssertTrue(1 == tensionEvents.count, @"unexpected tensionEvents count %@", tensionEvents); - id eventTension = [(POPAnimationValueEvent *)tensionEvents.lastObject value]; - XCTAssertEqualObjects(@(animTension), eventTension, @"unexpected tension; expected:%@ actual:%@", @(animTension), eventTension); - - // start & stop event - XCTAssertTrue(1 == startEvents.count, @"unexpected startEvents count %@", startEvents); - XCTAssertTrue(1 == stopEvents.count, @"unexpected stopEvents count %@", stopEvents); - - // start before stop - NSUInteger startIdx = [allEvents indexOfObjectIdenticalTo:startEvents.firstObject]; - NSUInteger stopIdx = [allEvents indexOfObjectIdenticalTo:stopEvents.firstObject]; - XCTAssertTrue(startIdx < stopIdx, @"unexpected start/stop ordering startIdx:%lu stopIdx:%lu", (unsigned long)startIdx, (unsigned long)stopIdx); - - // did reach event - XCTAssertTrue(1 == didReachEvents.count, @"unexpected didReachEvents %@", didReachEvents); - - // did reach after start before stop - NSUInteger didReachIdx = [allEvents indexOfObjectIdenticalTo:didReachEvents.firstObject]; - XCTAssertTrue(didReachIdx > startIdx, @"unexpected didReach/start ordering didReachIdx:%lu startIdx:%lu", (unsigned long)didReachIdx, (unsigned long)startIdx); - XCTAssertTrue(didReachIdx < stopIdx, @"unexpected didReach/stop ordering didReachIdx:%lu stopIdx:%lu", (unsigned long)didReachIdx, (unsigned long)stopIdx); - - // write events - XCTAssertTrue(0 != writeEvents.count, @"unexpected writeEvents count %@", writeEvents); - id firstWriteValue = [(POPAnimationValueEvent *)writeEvents.firstObject value]; - XCTAssertTrue(NSOrderedSame == [anim.fromValue compare:firstWriteValue], @"unexpected firstWriteValue; fromValue:%@ actual:%@", anim.fromValue, firstWriteValue); - id lastWriteValue = [(POPAnimationValueEvent *)writeEvents.lastObject value]; - XCTAssertEqualObjects(lastWriteValue, anim.toValue, @"unexpected lastWriteValue; expected:%@ actual:%@", anim.toValue, lastWriteValue); -} - -- (void)testAnimationContinuation -{ - POPAnimatable *circle = [POPAnimatable new]; - POPSpringAnimation *anim = [POPSpringAnimation animation]; - anim.property = self.radiusProperty; - anim.fromValue = @0.0; - anim.toValue = @1.0; - anim.velocity = @10.0; - anim.springBounciness = 4; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - [circle pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 0.25, 0.05); - - NSArray *didReachToEvents = [tracer eventsWithType:kPOPAnimationEventDidReachToValue]; - NSArray *stopEvents = [tracer eventsWithType:kPOPAnimationEventDidStop]; - - // assert did reach but not stop - XCTAssertTrue(1 == didReachToEvents.count, @"unexpected didReachToEvents count %@", didReachToEvents); - XCTAssertTrue(0 == stopEvents.count, @"unexpected stopEvents count %@", stopEvents); - - // update to value continuing animation - anim.toValue = @0.0; - POPAnimatorRenderDuration(self.animator, self.beginTime, 2.0, 0.1); - [tracer stop]; - - // two did reach to events - didReachToEvents = [tracer eventsWithType:kPOPAnimationEventDidReachToValue]; - XCTAssertTrue(2 == didReachToEvents.count, @"unexpected didReachToEvents count %@", didReachToEvents); - - // first event value > animation to value - id firstDidReachValue = [(POPAnimationValueEvent *)didReachToEvents.firstObject value]; - XCTAssertTrue(NSOrderedAscending == [anim.toValue compare:firstDidReachValue], @"unexpected firstDidReachValue; toValue:%@ actual:%@", anim.toValue, firstDidReachValue); - - // second event value < animation to value - id lastDidReachValue = [(POPAnimationValueEvent *)didReachToEvents.lastObject value]; - XCTAssertTrue(NSOrderedDescending == [anim.toValue compare:lastDidReachValue], @"unexpected lastDidReachValue; toValue:%@ actual:%@", anim.toValue, lastDidReachValue); - - // did stop event - stopEvents = [tracer eventsWithType:kPOPAnimationEventDidStop]; - XCTAssertTrue(1 == stopEvents.count, @"unexpected stopEvents count %@", stopEvents); - XCTAssertEqualObjects([(POPAnimationValueEvent *)stopEvents.lastObject value], @YES, @"unexpected stop event: %@", stopEvents.lastObject); -} - -- (void)testRoundingFactor -{ - POPAnimatable *circle = [POPAnimatable new]; - - { - // non retina, additive & non-additive - BOOL additive = NO; - - LStart: - POPBasicAnimation *anim = [POPBasicAnimation animation]; - anim.property = self.radiusProperty; - anim.fromValue = @0.0; - anim.toValue = @1.0; - anim.roundingFactor = 1.0; - anim.additive = additive; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - [circle pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 0.25, 0.05); - - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - BOOL containValue = POPAnimationEventsContainValue(writeEvents, @0.5); - XCTAssertFalse(containValue, @"unexpected write value %@", writeEvents); - - if (!additive) { - additive = YES; - goto LStart; - } - } - - { - // retina, additive & non-additive - BOOL additive = NO; - - LStartRetina: - POPBasicAnimation *anim = [POPBasicAnimation animation]; - anim.property = self.radiusProperty; - anim.fromValue = @0.0; - anim.toValue = @1.0; - anim.roundingFactor = 0.5; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - [circle pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 0.25, 0.05); - - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - BOOL containValue = POPAnimationEventsContainValue(writeEvents, @0.5); - XCTAssertTrue(containValue, @"unexpected write value %@", writeEvents); - - if (!additive) { - additive = YES; - goto LStartRetina; - } - } -} - -- (void)testAdditiveAnimation -{ - const CGFloat baseValue = 1.; - const CGFloat fromValue = 1.; - const CGFloat toValue = 2.; - - POPAnimatable *circle = [POPAnimatable new]; - circle.radius = baseValue; - - POPBasicAnimation *anim; - anim = [POPBasicAnimation animation]; - anim.property = self.radiusProperty; - anim.fromValue = @(fromValue); - anim.toValue = @(toValue); - anim.additive = YES; - - [circle startRecording]; - [circle pop_addAnimation:anim forKey:@"key1"]; - - POPAnimatorRenderDuration(self.animator, self.beginTime, 0.5, 0.05); - - NSArray *writeEvents = [circle recordedValuesForKey:@"radius"]; - CGFloat firstValue = [[writeEvents firstObject] floatValue]; - CGFloat lastValue = [[writeEvents lastObject] floatValue]; - - XCTAssertTrue(firstValue >= baseValue + fromValue, @"write value expected:%f actual:%f", baseValue + fromValue, firstValue); - XCTAssertTrue(lastValue == baseValue + toValue, @"write value expected:%f actual:%f", baseValue + toValue, lastValue); -} - -- (void)testNilKey -{ - POPBasicAnimation *anim = FBTestLinearPositionAnimation(self.beginTime); - - // avoid fractional values; simplify verification - anim.roundingFactor = 1.0; - - id layer = [OCMockObject niceMockForClass:[CALayer class]]; - [[layer expect] setPosition:FBTestInterpolateLinear(Vector2r([anim.fromValue CGPointValue]), Vector2r([anim.toValue CGPointValue]), 0.25).cg_point()]; - [[layer expect] setPosition:FBTestInterpolateLinear(Vector2r([anim.fromValue CGPointValue]), Vector2r([anim.toValue CGPointValue]), 0.5).cg_point()]; - [[layer expect] setPosition:FBTestInterpolateLinear(Vector2r([anim.fromValue CGPointValue]), Vector2r([anim.toValue CGPointValue]), 0.75).cg_point()]; - [[layer expect] setPosition:[anim.toValue CGPointValue]]; - - // verify nil key can be added, same as CA - [layer pop_addAnimation:anim forKey:nil]; - - // verify attempting to remove nil key is a noop, same as CA - XCTAssertNoThrow([layer pop_removeAnimationForKey:nil], @"unexpected exception"); - - POPAnimatorRenderDuration(self.animator, self.beginTime, 1, 0.25); - [layer verify]; -} - -- (void)testIntegerAnimation -{ - const int toValue = 1; - NSNumber *boxedToValue = @1.0; - - POPBasicAnimation *anim; - - // literal - anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity]; - XCTAssertNoThrow(anim.toValue = @(toValue), @"unexpected exception"); - XCTAssertEqualObjects(anim.toValue, boxedToValue, @"expected equality; value1:%@ value2:%@", anim.toValue, boxedToValue); - - // integer - anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity]; - XCTAssertNoThrow(anim.toValue = @(toValue), @"unexpected exception"); - XCTAssertEqualObjects(anim.toValue, boxedToValue, @"expected equality; value1:%@ value2:%@", anim.toValue, boxedToValue); - - // short - anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity]; - XCTAssertNoThrow(anim.toValue = @(toValue), @"unexpected exception"); - XCTAssertEqualObjects(anim.toValue, boxedToValue, @"expected equality; value1:%@ value2:%@", anim.toValue, boxedToValue); - - // unsigned short - anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity]; - XCTAssertNoThrow(anim.toValue = @(toValue), @"unexpected exception"); - XCTAssertEqualObjects(anim.toValue, boxedToValue, @"expected equality; value1:%@ value2:%@", anim.toValue, boxedToValue); - - // int - anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity]; - XCTAssertNoThrow(anim.toValue = @(toValue), @"unexpected exception"); - XCTAssertEqualObjects(anim.toValue, boxedToValue, @"expected equality; value1:%@ value2:%@", anim.toValue, boxedToValue); - - // unsigned int - anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity]; - XCTAssertNoThrow(anim.toValue = @(toValue), @"unexpected exception"); - XCTAssertEqualObjects(anim.toValue, boxedToValue, @"expected equality; value1:%@ value2:%@", anim.toValue, boxedToValue); - - // long - anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity]; - XCTAssertNoThrow(anim.toValue = @(toValue), @"unexpected exception"); - XCTAssertEqualObjects(anim.toValue, boxedToValue, @"expected equality; value1:%@ value2:%@", anim.toValue, boxedToValue); - - // unsigned long - anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity]; - XCTAssertNoThrow(anim.toValue = @(toValue), @"unexpected exception"); - XCTAssertEqualObjects(anim.toValue, boxedToValue, @"expected equality; value1:%@ value2:%@", anim.toValue, boxedToValue); - - anim.fromValue = @0; - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:nil]; - - POPAnimatorRenderDuration(self.animator, self.beginTime + 0.1, 1, 0.1); - - // verify writes happened - NSArray *writeEvents = tracer.writeEvents; - XCTAssertTrue(writeEvents.count == 5, @"unexpected events:%@", writeEvents); - - // verify initial value - POPAnimationValueEvent *firstWriteEvent = writeEvents.firstObject; - XCTAssertTrue([firstWriteEvent.value isEqual:anim.fromValue], @"expected equality; value1:%@ value%@", firstWriteEvent.value, anim.fromValue); - - // verify final value - XCTAssertEqualObjects([layer valueForKey:@"opacity"], anim.toValue, @"expected equality; value1:%@ value2:%@", [layer valueForKey:@"opacity"], anim.toValue); -} - -- (void)testPlatformColorSupport -{ - POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBackgroundColor]; - -#if TARGET_OS_IPHONE - XCTAssertNoThrow(anim.fromValue = [UIColor whiteColor], @"unexpected exception"); - XCTAssertNoThrow(anim.toValue = [UIColor redColor], @"unexpected exception"); -#else - XCTAssertNoThrow(anim.fromValue = [NSColor whiteColor], @"unexpected exception"); - XCTAssertNoThrow(anim.toValue = [NSColor redColor], @"unexpected exception"); -#endif - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:@"color"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 1, 0.1); - - // expect some interpolation - NSArray *writeEvents = tracer.writeEvents; - XCTAssertTrue(writeEvents.count > 1, @"unexpected write events %@", writeEvents); - - // get layer color components - CGFloat layerValues[4]; - POPCGColorGetRGBAComponents(layer.backgroundColor, layerValues); - - // get to color components - CGFloat toValues[4]; - POPCGColorGetRGBAComponents((__bridge CGColorRef)anim.toValue, toValues); - - // assert equality - XCTAssertTrue(layerValues[0] == toValues[0] && layerValues[1] == toValues[1] && layerValues[2] == toValues[2] && layerValues[3] == toValues[3], @"unexpected last color: [r:%f g:%f b:%f a:%f]", layerValues[0], layerValues[1], layerValues[2], layerValues[3]); -} - -- (void)testNSCopyingSupportPOPBasicAnimation -{ - POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:@"test_property_name"]; - - configureConcretePropertyAnimation(anim); - [self testCopyingSucceedsForConcretePropertyAnimation:anim]; - - anim.duration = 1.8; - anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - - POPBasicAnimation *copy = [anim copy]; - - XCTAssertEqual(copy.duration, anim.duration, @"expected equality; value1:%@ value2:%@", @(copy.duration), @(anim.duration)); - XCTAssertEqualObjects(copy.timingFunction, anim.timingFunction, @"expected equality; value1:%@ value2:%@", copy.timingFunction, anim.timingFunction); -} - -@end diff --git a/pop-tests/POPAnimationTestsExtras.h b/pop-tests/POPAnimationTestsExtras.h deleted file mode 100644 index 6d0639b8..00000000 --- a/pop-tests/POPAnimationTestsExtras.h +++ /dev/null @@ -1,19 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import "POPVector.h" -@class POPAnimator; -@class POPBasicAnimation; - -extern void POPAnimatorRenderTime(POPAnimator *animator, CFTimeInterval beginTime, CFTimeInterval time); -extern void POPAnimatorRenderTimes(POPAnimator *animator, CFTimeInterval beginTime, NSArray *times); -extern void POPAnimatorRenderDuration(POPAnimator *animator, CFAbsoluteTime beginTime, CFTimeInterval duration, CFTimeInterval step); - -extern POPBasicAnimation *FBTestLinearPositionAnimation(CFTimeInterval beginTime = 0); -extern POP::Vector2r FBTestInterpolateLinear(POP::Vector2r start, POP::Vector2r end, CGFloat progress); diff --git a/pop-tests/POPAnimationTestsExtras.mm b/pop-tests/POPAnimationTestsExtras.mm deleted file mode 100644 index 61edfc19..00000000 --- a/pop-tests/POPAnimationTestsExtras.mm +++ /dev/null @@ -1,54 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import "POPAnimationTestsExtras.h" - -#import -#import - -void POPAnimatorRenderTime(POPAnimator *animator, CFTimeInterval beginTime, CFTimeInterval time) -{ - [animator renderTime:beginTime + time]; -} - -void POPAnimatorRenderTimes(POPAnimator *animator, CFTimeInterval beginTime, NSArray *times) -{ - for (NSNumber *time in times) { - [animator renderTime:beginTime + time.doubleValue]; - } -} - -void POPAnimatorRenderDuration(POPAnimator *animator, CFTimeInterval beginTime, CFTimeInterval duration, CFTimeInterval step) -{ - CFTimeInterval initialTime = animator.beginTime; - animator.beginTime = beginTime; - NSCAssert(step > 0, @"unexpected step %f", step); - CFTimeInterval time = 0; - while(time <= duration) { - [animator renderTime:beginTime + time]; - time += step; - } - animator.beginTime = initialTime; -} - -POPBasicAnimation *FBTestLinearPositionAnimation(CFTimeInterval beginTime) -{ - POPBasicAnimation *anim = [POPBasicAnimation linearAnimation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPosition]; - anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)]; - anim.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)]; - anim.duration = 1; - anim.beginTime = beginTime; - return anim; -} - -POP::Vector2r FBTestInterpolateLinear(POP::Vector2r start, POP::Vector2r end, CGFloat progress) -{ - return start + ((end - start) * progress); -} diff --git a/pop-tests/POPBaseAnimationTests.h b/pop-tests/POPBaseAnimationTests.h deleted file mode 100644 index d244c151..00000000 --- a/pop-tests/POPBaseAnimationTests.h +++ /dev/null @@ -1,63 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import - -#import "POPCGUtils.h" - -@class CALayer; -@class POPAnimator; -@class POPAnimatableProperty; -@class POPAnimation; -@class POPPropertyAnimation; - -@interface POPBaseAnimationTests : XCTestCase - -// two layers for test use -@property (strong, nonatomic) CALayer *layer1, *layer2; - -// the animator to use for rendering -@property (strong, nonatomic) POPAnimator *animator; - -// the time tests began -@property (assign, nonatomic) CFTimeInterval beginTime; - -// radius animatable property -@property (strong, nonatomic) POPAnimatableProperty *radiusProperty; - -- (void)testCopyingSucceedsForConcreteAnimation:(POPAnimation *)anim; -- (void)testCopyingSucceedsForConcretePropertyAnimation:(POPPropertyAnimation *)anim; - -@end - -// max frame count required for animations to converge -extern NSUInteger kPOPAnimationConvergenceMaxFrameCount; - -// counts the number of events of value within epsilon, starting from end -extern NSUInteger POPAnimationCountLastEventValues(NSArray *events, NSNumber *value, float epsilon = 0); - -// returns YES if array of value events contain specified value -extern BOOL POPAnimationEventsContainValue(NSArray *events, NSNumber *value); - -// equality with epsilon -#define _EQL_(x, y, epsilon) (std::abs ((x) - (y)) < epsilon) - -// color equality assert -#define POPAssertColorEqual(c1, c2) \ -{ \ - CGFloat v1[4], v2[4]; \ - POPCGColorGetRGBAComponents(c1, v1); \ - POPCGColorGetRGBAComponents(c2, v2); \ - XCTAssertTrue(_EQL_(v1[0], v2[0], 1e-6) && _EQL_(v1[1], v2[1], 1e-6) && _EQL_(v1[2], v2[2], 1e-6) && _EQL_(v1[3], v2[3], 1e-6), @"not equal color:[r:%f g:%f b:%f a:%f] color:[r:%f g:%f b:%f a:%f]", v1[0], v1[1], v1[2], v1[3], v2[0], v2[1], v2[2], v2[3]); \ -} - -extern void configureConcreteAnimation(POPAnimation *anim); -extern void configureConcretePropertyAnimation(POPPropertyAnimation *anim); diff --git a/pop-tests/POPBaseAnimationTests.mm b/pop-tests/POPBaseAnimationTests.mm deleted file mode 100644 index 2bac4f8d..00000000 --- a/pop-tests/POPBaseAnimationTests.mm +++ /dev/null @@ -1,147 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import "POPBaseAnimationTests.h" - -#import - -#import - -#import -#import - -#import "POPAnimatable.h" -#import "POPAnimationTestsExtras.h" -#import "POPAnimationInternal.h" - -@implementation POPBaseAnimationTests -{ - CALayer *_layer1; - CALayer *_layer2; - POPAnimator *_animator; - CFTimeInterval _beginTime; - POPAnimatableProperty *_radiusProperty; - id delegate; -} -@synthesize layer1 = _layer1; -@synthesize layer2 = _layer2; -@synthesize animator = _animator; -@synthesize beginTime = _beginTime; -@synthesize radiusProperty = _radiusProperty; - -- (void)setUp -{ - [super setUp]; - _layer1 = [[CALayer alloc] init]; - _layer2 = [[CALayer alloc] init]; - _animator = [POPAnimator sharedAnimator]; - _radiusProperty = [POPAnimatableProperty propertyWithName:@"radius" initializer:^(POPMutableAnimatableProperty *prop){ - prop.readBlock = ^(POPAnimatable *obj, CGFloat values[]) { - values[0] = [obj radius]; - }; - prop.writeBlock = ^(POPAnimatable *obj, const CGFloat values[]) { - obj.radius = values[0]; - }; - prop.threshold = 0.01; - }]; - _beginTime = CACurrentMediaTime(); - _animator.beginTime = _beginTime; -} - -- (void)testCopyingSucceedsForConcreteAnimation:(POPAnimation *)anim -{ - POPAnimation *copy = [anim copy]; - - XCTAssertEqualObjects(copy.name, anim.name, @"expected equality; value1:%@ value2:%@", copy.name, anim.name); - XCTAssertEqual(copy.beginTime, anim.beginTime, @"expected equality; value1:%@ value2:%@", @(copy.beginTime), @(anim.beginTime)); - XCTAssertEqualObjects(copy.delegate, anim.delegate, @"expected equality; value1:%@ value2:%@", copy.delegate, anim.delegate); - XCTAssertEqualObjects(copy.animationDidStartBlock, anim.animationDidStartBlock, @"expected equality; value1:%@ value2:%@", copy.animationDidStartBlock, anim.animationDidStartBlock); - XCTAssertEqualObjects(copy.animationDidReachToValueBlock, anim.animationDidReachToValueBlock, @"expected equality; value1:%@ value2:%@", copy.animationDidReachToValueBlock, anim.animationDidReachToValueBlock); - XCTAssertEqualObjects(copy.completionBlock, anim.completionBlock, @"expected equality; value1:%@ value2:%@", copy.completionBlock, anim.completionBlock); - XCTAssertEqualObjects(copy.animationDidApplyBlock, anim.animationDidApplyBlock, @"expected equality; value1:%@ value2:%@", copy.animationDidApplyBlock, anim.animationDidApplyBlock); - XCTAssertEqual(copy.removedOnCompletion, anim.removedOnCompletion, @"expected equality; value1:%@ value2:%@", @(copy.removedOnCompletion), @(anim.removedOnCompletion)); - XCTAssertEqual(copy.autoreverses, anim.autoreverses, @"expected equality; value1:%@ value2:%@", @(copy.autoreverses), @(anim.autoreverses)); - XCTAssertEqual(copy.repeatCount, anim.repeatCount, @"expected equality; value1:%@ value2:%@", @(copy.repeatCount), @(anim.repeatCount)); - XCTAssertEqual(copy.repeatForever, anim.repeatForever, @"expected equality; value1:%@ value2:%@", @(copy.repeatForever), @(anim.repeatForever)); -} - -- (void)testCopyingSucceedsForConcretePropertyAnimation:(POPPropertyAnimation *)anim -{ - [self testCopyingSucceedsForConcreteAnimation:anim]; - - POPPropertyAnimation *copy = [anim copy]; - - XCTAssertEqualObjects(copy.fromValue, anim.fromValue, @"expected equality; value1:%@ value2:%@", copy.fromValue, anim.fromValue); - XCTAssertEqualObjects(copy.toValue, anim.toValue, @"expected equality; value1:%@ value2:%@", copy.toValue, anim.toValue); - XCTAssertEqual(copy.roundingFactor, anim.roundingFactor, @"expected equality; value1:%@ value2:%@", @(copy.roundingFactor), @(anim.roundingFactor)); - XCTAssertEqual(copy.clampMode, anim.clampMode, @"expected equality; value1:%@ value2:%@", @(copy.clampMode), @(anim.clampMode)); - XCTAssertEqual(copy.additive, anim.additive, @"expected equality; value1:%@ value2:%@", @(copy.additive), @(anim.additive)); -} - -@end - -NSUInteger kPOPAnimationConvergenceMaxFrameCount = 12; // 12 frames, ~200ms at 1/60fps, the user perseption threshold - -NSUInteger POPAnimationCountLastEventValues(NSArray *events, NSNumber *value, float epsilon) -{ - __block NSUInteger count = 0; - [events enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(POPAnimationValueEvent *event, NSUInteger idx, BOOL *ptrStop) { - - BOOL match = 0 == epsilon ? [event.value isEqualToValue:value] : fabsf([event.value floatValue] - [value floatValue]) < epsilon; - if (!match) { - *ptrStop = YES; - } else { - count++; - } - }]; - return count; -} - -BOOL POPAnimationEventsContainValue(NSArray *events, NSNumber *value) -{ - for (POPAnimationValueEvent *event in events) { - if ([event.value isEqual:value]) { - return YES; - } - } - return NO; -} - -void configureConcreteAnimation(POPAnimation *anim) -{ - static id delegate = [NSObject new]; - - anim.name = @"pop_animation_copy_test"; - anim.beginTime = 1.234; - anim.delegate = delegate; // dummy delegate - anim.animationDidStartBlock = ^(POPAnimation *a){ NSLog(@"Animation Did Start"); }; - anim.animationDidReachToValueBlock = ^(POPAnimation *a){ NSLog(@"Animation Did Reach To Value"); }; - anim.completionBlock = ^(POPAnimation *a, BOOL finished){ NSLog(@"Animation Finished"); }; - anim.animationDidApplyBlock = ^(POPAnimation *){ NSLog(@"Animation Applied"); }; - anim.removedOnCompletion = NO; // not default - anim.autoreverses = YES; // not default - anim.repeatCount = 42; - anim.repeatForever = YES; // not default -} - -void configureConcretePropertyAnimation(POPPropertyAnimation *anim) -{ - configureConcreteAnimation(anim); - - // Decay animations don't use fromValue, so setting it here causes issues. - if (![anim isMemberOfClass:[POPDecayAnimation class]]) { - - anim.fromValue = @(12345); - } - - anim.toValue = @(77888); - anim.roundingFactor = 0.257; - anim.clampMode = 87; - anim.additive = YES; // not default -} diff --git a/pop-tests/POPBasicAnimationTests.mm b/pop-tests/POPBasicAnimationTests.mm deleted file mode 100644 index 5c7bc6a6..00000000 --- a/pop-tests/POPBasicAnimationTests.mm +++ /dev/null @@ -1,162 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import -#import - -#import "POPAnimatable.h" -#import "POPAnimationTestsExtras.h" -#import "POPBaseAnimationTests.h" - -@interface POPBasicAnimationTests : POPBaseAnimationTests - -@end - -@implementation POPBasicAnimationTests - -- (void)testGreaterThanOneControlPointC1Y -{ - POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerPositionX]; - anim.fromValue = @0; - anim.toValue = @100; - anim.timingFunction = [CAMediaTimingFunction functionWithControlPoints:0.15f :1.5f :0.55f :1.0f]; - anim.duration = 0.36; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:nil]; - - // run animation - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - // verify write count - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - XCTAssertTrue(writeEvents.count > 10, @"expected more write events %@", tracer.allEvents); - - // verify last written value is equal to animation to value - id lastValue = [(POPAnimationValueEvent *)writeEvents.lastObject value]; - XCTAssertEqualObjects(lastValue, anim.toValue, @"expected more write events %@", tracer.allEvents); - - // verify last written value is less than previous value - id prevLastValue = [(POPAnimationValueEvent *)writeEvents[writeEvents.count - 2] value]; - XCTAssertTrue(NSOrderedDescending == [prevLastValue compare:lastValue], @"unexpected lastValue; prevLastValue:%@ events:%@", prevLastValue, tracer.allEvents); -} - -- (void)testColorInterpolation -{ - POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerBackgroundColor]; - -#if TARGET_OS_IPHONE - anim.fromValue = [UIColor whiteColor]; - anim.toValue = [UIColor redColor]; -#else - anim.fromValue = [NSColor whiteColor]; - anim.toValue = [NSColor redColor]; -#endif - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:nil]; - - // run animation - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - // verify write events - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - XCTAssertTrue(writeEvents.count > 5, @"expected more write events %@", tracer.allEvents); - - // assert final value - POPAssertColorEqual((__bridge CGColorRef)anim.toValue, layer.backgroundColor); -} - -- (void)testZeroDurationAnimation -{ - POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerBackgroundColor]; - anim.duration = 0.0f; - -#if TARGET_OS_IPHONE - anim.fromValue = [UIColor whiteColor]; - anim.toValue = [UIColor redColor]; -#else - anim.fromValue = [NSColor whiteColor]; - anim.toValue = [NSColor redColor]; -#endif - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:nil]; - - // run animation - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - // verify write events - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - XCTAssertTrue(writeEvents.count == 1, @"expected one write event %@", tracer.allEvents); - NSArray *stopEvents = [tracer eventsWithType:kPOPAnimationEventDidStop]; - XCTAssertTrue(stopEvents.count == 1, @"expected one stop event %@", tracer.allEvents); - - // assert final value - POPAssertColorEqual((__bridge CGColorRef)anim.toValue, layer.backgroundColor); -} - -#if TARGET_OS_IPHONE -- (void)testEdgeInsetsSupport -{ - const UIEdgeInsets fromEdgeInsets = UIEdgeInsetsZero; - const UIEdgeInsets toEdgeInsets = UIEdgeInsetsMake(100, 200, 200, 400); - - POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPScrollViewContentInset]; - anim.fromValue = [NSValue valueWithUIEdgeInsets:fromEdgeInsets]; - anim.toValue = [NSValue valueWithUIEdgeInsets:toEdgeInsets]; - - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - anim.delegate = delegate; - - // expect start and stop to be called - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - // start tracer - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - id scrollView = [OCMockObject niceMockForClass:[UIScrollView class]]; - [scrollView pop_addAnimation:anim forKey:nil]; - - // expect final value to be set - [[scrollView expect] setContentInset:toEdgeInsets]; - - // run animation - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - - // verify delegate - [delegate verify]; - - // verify scroll view - [scrollView verify]; - - POPAnimationValueEvent *lastEvent = [writeEvents lastObject]; - UIEdgeInsets lastEdgeInsets = [lastEvent.value UIEdgeInsetsValue]; - - // verify last insets are to insets - XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(lastEdgeInsets, toEdgeInsets), @"unexpected last edge insets value: %@", lastEvent); -} -#endif - -@end diff --git a/pop-tests/POPCustomAnimationTests.mm b/pop-tests/POPCustomAnimationTests.mm deleted file mode 100644 index ecb397a3..00000000 --- a/pop-tests/POPCustomAnimationTests.mm +++ /dev/null @@ -1,169 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import - -#import - -#import "POPAnimatable.h" -#import "POPAnimationTestsExtras.h" -#import "POPBaseAnimationTests.h" - -static const CGFloat epsilon = 0.0001f; - -@interface POPCustomAnimationTests : POPBaseAnimationTests -@end - -@implementation POPCustomAnimationTests - -- (void)testCallbackFinished -{ - static NSString * const key = @"key"; - static CFTimeInterval const timeInterval = 0.1; - - __block NSUInteger callbackCount = 0; - - // animation - POPCustomAnimation *anim = [POPCustomAnimation animationWithBlock:^BOOL(id target, POPCustomAnimation *animation) { - if (0 != callbackCount) { - // validate elapsed time - XCTAssertEqualWithAccuracy(animation.elapsedTime, timeInterval, epsilon, @"expected elapsedTime:%f %@", timeInterval, animation); - } - - // increment callback count - callbackCount++; - - return callbackCount < 3; - }]; - - anim.beginTime = self.beginTime; - - // delegate - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // expect start, progress & stop to all be called - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - [[delegate expect] pop_animationDidApply:anim]; - - anim.delegate = delegate; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - // layer - id layer = [OCMockObject niceMockForClass:[CALayer class]]; - [layer pop_addAnimation:anim forKey:key]; - - POPAnimatorRenderDuration(self.animator, self.beginTime + 0.1, 5, 0.1); - XCTAssertTrue(callbackCount == 3, @"unexpected callbackCount:%lu", (unsigned long)callbackCount); - - NSArray *startEvents = [tracer eventsWithType:kPOPAnimationEventDidStart]; - XCTAssertTrue(1 == startEvents.count, @"unexpected startEvents count %@", startEvents); - - NSArray *stopEvents = [tracer eventsWithType:kPOPAnimationEventDidStop]; - XCTAssertTrue(1 == stopEvents.count, @"unexpected stopEvents count %@", stopEvents); - - [layer verify]; - [delegate verify]; -} - -- (void)testCallbackCancelled -{ - static NSString * const key = @"key"; - static CFTimeInterval const timeInterval = 0.1; - - __block NSUInteger callbackCount = 0; - - // animation - POPCustomAnimation *anim = [POPCustomAnimation animationWithBlock:^BOOL(id target, POPCustomAnimation *animation) { - if (0 == callbackCount) { - // validate elapsed time acruel - XCTAssertEqualWithAccuracy(animation.elapsedTime, 0., epsilon, @"expected elapsedTime:%f %@", timeInterval, animation); - } else { - // validate elapsed time acruel - XCTAssertEqualWithAccuracy(animation.elapsedTime, timeInterval, epsilon, @"expected elapsedTime:%f %@", timeInterval, animation); - } - - // increment callback count - callbackCount++; - - if (callbackCount == 3) { - [target pop_removeAnimationForKey:key]; - } - - return callbackCount < 3; - }]; - - anim.beginTime = self.beginTime; - - // delegate - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // expect start, progress & stop to all be called - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:NO]; - [[delegate expect] pop_animationDidApply:anim]; - - anim.delegate = delegate; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - // layer - id layer = [OCMockObject niceMockForClass:[CALayer class]]; - [layer pop_addAnimation:anim forKey:key]; - - POPAnimatorRenderDuration(self.animator, self.beginTime + 0.1, 5, 0.1); - XCTAssertTrue(callbackCount == 3, @"unexpected callbackCount:%lu", (unsigned long)callbackCount); - - NSArray *startEvents = [tracer eventsWithType:kPOPAnimationEventDidStart]; - XCTAssertTrue(1 == startEvents.count, @"unexpected startEvents count %@", startEvents); - - NSArray *stopEvents = [tracer eventsWithType:kPOPAnimationEventDidStop]; - XCTAssertTrue(1 == stopEvents.count, @"unexpected stopEvents count %@", stopEvents); - - [layer verify]; - [delegate verify]; -} - -- (void)testAssociation -{ - static NSString * const key = @"key"; - - __block id blockTarget = nil; - - POPCustomAnimation *anim = [POPCustomAnimation animationWithBlock:^(id target, POPCustomAnimation *animation) { - blockTarget = target; - return YES; - }]; - - id layer = [OCMockObject niceMockForClass:[CALayer class]]; - - [layer pop_addAnimation:anim forKey:key]; - - // verify animation & key - XCTAssertTrue(anim == [layer pop_animationForKey:key], @"expected:%@ actual:%@", anim, [layer pop_animationForKey:key]); - XCTAssertTrue([[layer pop_animationKeys] containsObject:key], @"expected:%@ actual:%@", key, [layer pop_animationKeys]); - - POPAnimatorRenderDuration(self.animator, self.beginTime, 1, 0.1); - - XCTAssertEqualObjects(layer, blockTarget, @"expected:%@ actual:%@", layer, blockTarget); - - // remove animations - [layer pop_removeAnimationForKey:key]; - - // verify animation & key - XCTAssertFalse(anim == [layer pop_animationForKey:key], @"expected:%@ actual:%@", (id)nil, [layer pop_animationForKey:key]); - XCTAssertFalse([[layer pop_animationKeys] containsObject:key], @"expected:%@ actual:%@", (id)nil, [layer pop_animationKeys]); -} - -@end diff --git a/pop-tests/POPDecayAnimationTests.mm b/pop-tests/POPDecayAnimationTests.mm deleted file mode 100644 index 04963b78..00000000 --- a/pop-tests/POPDecayAnimationTests.mm +++ /dev/null @@ -1,544 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import - -#import - -#import -#import - -#import "POPAnimatable.h" -#import "POPAnimationTestsExtras.h" -#import "POPBaseAnimationTests.h" - -@interface POPDecayAnimationTests : POPBaseAnimationTests -@end - -@implementation POPDecayAnimationTests - -static NSString *animationKey = @"key"; -static const CGFloat epsilon = 0.0001f; - -- (POPDecayAnimation *)_positionAnimation -{ - POPDecayAnimation *anim = [POPDecayAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPosition]; - anim.fromValue = [NSValue valueWithCGPoint:CGPointZero]; - anim.velocity = [NSValue valueWithCGPoint:CGPointMake(7223.021, 7223.021)]; - anim.deceleration = 0.998000; - return anim; -} - -- (POPDecayAnimation *)_positionXAnimation -{ - POPDecayAnimation *anim = [POPDecayAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPositionX]; - anim.fromValue = @0.; - anim.velocity = @7223.021; - anim.deceleration = 0.998000; - return anim; -} - -- (POPDecayAnimation *)_positionYAnimation -{ - POPDecayAnimation *anim = self._positionXAnimation; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPositionY]; - return anim; -} - -- (void)testConvergence -{ - POPAnimatable *circle = [POPAnimatable new]; - POPDecayAnimation *anim = self._positionXAnimation; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - [circle pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 10.0, 1.0/60.0); - [tracer stop]; - - // did reach to value - POPAnimationValueEvent *didReachToEvent = [[tracer eventsWithType:kPOPAnimationEventDidReachToValue] lastObject]; - XCTAssertEqualObjects(didReachToEvent.value, anim.toValue, @"unexpected did reach to event: %@ anim:%@", didReachToEvent, anim); - - // finished - POPAnimationValueEvent *stopEvent = [[tracer eventsWithType:kPOPAnimationEventDidStop] lastObject]; - XCTAssertEqualObjects(stopEvent.value, @YES, @"unexpected stop event %@", stopEvent); - - // all write values monotonically increasing - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - POPAnimationValueEvent *lastWriteEvent = nil; - for (POPAnimationValueEvent *writeEvent in writeEvents) { - if (lastWriteEvent) { - NSComparisonResult result = [lastWriteEvent.value compare:writeEvent.value]; - XCTAssertTrue(NSOrderedAscending == result || NSOrderedSame == result, @"write event values not monotonically increasing current:%@ last:%@ all:%@", writeEvent, lastWriteEvent, writeEvents); - } - lastWriteEvent = writeEvent; - } - - // convergence threshold - NSUInteger toValueFrameCount = POPAnimationCountLastEventValues(writeEvents, anim.toValue, anim.property.threshold); - XCTAssertTrue(toValueFrameCount <= kPOPAnimationConvergenceMaxFrameCount, @"unexpected convergence; toValueFrameCount: %lu", (unsigned long)toValueFrameCount); -} - -- (void)testConvergenceNegativeVelocity -{ - POPAnimatable *circle = [POPAnimatable new]; - POPDecayAnimation *anim = self._positionXAnimation; - anim.velocity = @-7223.021; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - [circle pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 10.0, 1.0/60.0); - [tracer stop]; - - // did reach to value - POPAnimationValueEvent *didReachToEvent = [[tracer eventsWithType:kPOPAnimationEventDidReachToValue] lastObject]; - XCTAssertEqualObjects(didReachToEvent.value, anim.toValue, @"unexpected did reach to event: %@ anim:%@", didReachToEvent, anim); - - // finished - POPAnimationValueEvent *stopEvent = [[tracer eventsWithType:kPOPAnimationEventDidStop] lastObject]; - XCTAssertEqualObjects(stopEvent.value, @YES, @"unexpected stop event %@", stopEvent); - - // all write values monotonically increasing - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - POPAnimationValueEvent *lastWriteEvent = nil; - for (POPAnimationValueEvent *writeEvent in writeEvents) { - if (lastWriteEvent) { - NSComparisonResult result = [lastWriteEvent.value compare:writeEvent.value]; - XCTAssertTrue(NSOrderedDescending == result || NSOrderedSame == result, @"write event values not monotonically decreasing current:%@ last:%@ all:%@", writeEvent, lastWriteEvent, writeEvents); - } - lastWriteEvent = writeEvent; - } - - // convergence threshold - NSUInteger toValueFrameCount = POPAnimationCountLastEventValues(writeEvents, anim.toValue, anim.property.threshold); - XCTAssertTrue(toValueFrameCount <= kPOPAnimationConvergenceMaxFrameCount, @"unexpected convergence; toValueFrameCount: %lu", (unsigned long)toValueFrameCount); -} - -- (void)test2DConvergence -{ - POPDecayAnimation *animX = self._positionXAnimation; - POPDecayAnimation *animY = self._positionYAnimation; - XCTAssertEqual(animX.duration, animY.duration, @"unexpected durations animX:%@ animY:%@", animX, animY); - XCTAssertEqualObjects(animX.toValue, animY.toValue, @"unexpected toValue animX:%@ animY:%@", animX, animY); - - POPDecayAnimation *anim = self._positionAnimation; - CFTimeInterval duration = anim.duration; - XCTAssertEqualWithAccuracy(animX.duration, duration, epsilon, @"unexpected durations animX:%@ anim:%@", animX, anim); - XCTAssertEqualObjects(animX.toValue, @([anim.toValue CGPointValue].x), @"unexpected toValue animX:%@ anim:%@", animX, anim); - - POPAnimatable *circle = [POPAnimatable new]; - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - [circle pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 10.0, 1.0/60.0); - [tracer stop]; - - // did reach to value - POPAnimationValueEvent *didReachToEvent = [[tracer eventsWithType:kPOPAnimationEventDidReachToValue] lastObject]; - XCTAssertEqualObjects(didReachToEvent.value, anim.toValue, @"unexpected did reach to event: %@ anim:%@", didReachToEvent, anim); - - // finished - POPAnimationValueEvent *stopEvent = [[tracer eventsWithType:kPOPAnimationEventDidStop] lastObject]; - XCTAssertEqualObjects(stopEvent.value, @YES, @"unexpected stop event %@", stopEvent); - - // increase X velocity - anim.velocity = [NSValue valueWithCGPoint:CGPointMake(7223.021 + 1000, 7223.021)]; - XCTAssertTrue(anim.duration > duration, @"unexpected duration expected:%f anim:%@", duration, anim); - - // increase Y velocity - anim.velocity = [NSValue valueWithCGPoint:CGPointMake(7223.021, 7223.021 + 1000)]; - XCTAssertTrue(anim.duration > duration, @"unexpected duration expected:%f anim:%@", duration, anim); -} - -- (void)testRemovedOnCompletionNoStartStopBasics -{ - static NSString *animationKey = @"key"; - - CALayer *layer = self.layer1; - POPAnimation *anim = self._positionXAnimation; - POPAnimationTracer *tracer = anim.tracer; - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // cleanup - [layer pop_removeAllAnimations]; - - // configure animation - anim.removedOnCompletion = NO; - anim.delegate = delegate; - - __block BOOL completionBlock = NO; - __block BOOL completionBlockFinished = NO; - anim.completionBlock = ^(POPAnimation *a, BOOL finished) { - completionBlock = YES; - completionBlockFinished = finished; - }; - - // start tracer - [tracer start]; - - // expect start and stopped - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - [layer pop_addAnimation:anim forKey:animationKey]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 20.0, 1.0/60.0); - NSArray *allEvents = tracer.allEvents; - - // verify delegate - [delegate verify]; - XCTAssertTrue(completionBlock, @"completion block did not execute %@", allEvents); - XCTAssertTrue(completionBlockFinished, @"completion block did not finish %@", allEvents); - - // assert animation has not been removed - XCTAssertTrue(anim == [layer pop_animationForKey:animationKey], @"expected animation on layer animations:%@", [layer pop_animationKeys]); -} - -- (void)testRemovedOnCompletionNoContinuations -{ - static NSString *animationKey = @"key"; - static NSArray *velocities = @[@50.0, @100.0, @20.0, @80.0]; - static NSArray *durations = @[@2.0, @0.5, @0.5, @2.0]; - - CALayer *layer = self.layer1; - POPDecayAnimation *anim = self._positionXAnimation; - POPAnimationTracer *tracer = anim.tracer; - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // cleanup - [layer pop_removeAllAnimations]; - - // configure animation - anim.removedOnCompletion = NO; - anim.delegate = delegate; - - // start tracer - [tracer start]; - - __block CFTimeInterval beginTime; - __block BOOL completionBlock = NO; - __block BOOL completionBlockFinished = NO; - - [velocities enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *ptrStop) { - anim.velocity = obj; - - if (0 == idx) { - [tracer reset]; - - // starts and stops - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - anim.completionBlock = ^(POPAnimation *a, BOOL finished) { - completionBlock = YES; - completionBlockFinished = finished; - }; - - [layer pop_addAnimation:anim forKey:animationKey]; - - beginTime = self.beginTime; - CFTimeInterval dt = [durations[idx] doubleValue]; - POPAnimatorRenderDuration(self.animator, beginTime, dt, 1.0/60.0); - beginTime += dt; - - NSArray *allEvents = tracer.allEvents; - NSArray *didReachEvents = [tracer eventsWithType:kPOPAnimationEventDidReachToValue]; - - // verify delegate - [delegate verify]; - XCTAssertTrue(1 == didReachEvents.count, @"unexpected didReachEvents %@", didReachEvents); - XCTAssertTrue(completionBlock, @"completion block did not execute %@", allEvents); - XCTAssertTrue(completionBlockFinished, @"completion block did not finish %@", allEvents); - } else if (velocities.count - 1 == idx) { - // continue stoped animation - [tracer reset]; - completionBlock = NO; - completionBlockFinished = NO; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - CFTimeInterval dt = [durations[idx] doubleValue]; - POPAnimatorRenderDuration(self.animator, beginTime, dt, 1.0/60.0); - beginTime += dt; - - NSArray *allEvents = tracer.allEvents; - NSArray *didReachEvents = [tracer eventsWithType:kPOPAnimationEventDidReachToValue]; - - // verify delegate - [delegate verify]; - XCTAssertTrue(1 == didReachEvents.count, @"unexpected didReachEvents %@", didReachEvents); - XCTAssertTrue(completionBlock, @"completion block did not execute %@", allEvents); - XCTAssertTrue(completionBlockFinished, @"completion block did not finish %@", allEvents); - } else { - // continue stoped (idx = 1) or started animation - if (1 == idx) { - [[delegate expect] pop_animationDidStart:anim]; - } - - // reset state - [tracer reset]; - completionBlock = NO; - completionBlockFinished = NO; - - CFTimeInterval dt = [durations[idx] doubleValue]; - POPAnimatorRenderDuration(self.animator, beginTime, dt, 1.0/60.0); - beginTime += dt; - - NSArray *allEvents = tracer.allEvents; - NSArray *didReachEvents = [tracer eventsWithType:kPOPAnimationEventDidReachToValue]; - - // verify delegate - [delegate verify]; - XCTAssertTrue(0 == didReachEvents.count, @"unexpected didReachEvents %@", didReachEvents); - XCTAssertFalse(completionBlock, @"completion block did not execute %@ %@", anim, allEvents); - XCTAssertFalse(completionBlockFinished, @"completion block did not finish %@ %@", anim, allEvents); - } - - // assert animation has not been removed - XCTAssertTrue(anim == [layer pop_animationForKey:animationKey], @"expected animation on layer animations:%@", [layer pop_animationKeys]); - }]; -} - -- (void)testNoOperationAnimation -{ - const CGPoint initialValue = CGPointMake(100, 100); - - CALayer *layer = self.layer1; - layer.position = initialValue; - [layer pop_removeAllAnimations]; - - POPDecayAnimation *anim = [POPDecayAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPosition]; - - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - anim.delegate = delegate; - - // starts and stops - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - [layer pop_addAnimation:anim forKey:animationKey]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 5, 1.0/60.0); - - // verify delegate - [delegate verify]; - - // verify number values - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - for (POPAnimationValueEvent *writeEvent in writeEvents) { - XCTAssertEqualObjects(writeEvent.value, [NSValue valueWithCGPoint:initialValue], @"unexpected write event:%@ anim:%@", writeEvent, anim); - } -} - -- (void)testContinuation -{ - POPDecayAnimation *anim = [POPDecayAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPositionX]; - anim.fromValue = @0.0; - anim.velocity = @1000.0; - - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - anim.delegate = delegate; - [[delegate expect] pop_animationDidStart:anim]; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - CALayer *layer = self.layer1; - [layer pop_addAnimation:anim forKey:animationKey]; - - // run animation, not till completion - POPAnimatorRenderDuration(self.animator, self.beginTime, 1, 1.0/60.0); - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - [tracer reset]; - - // verify start delegation - [delegate verify]; - - // update velocity of active animation - anim.velocity = @1000.0; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - // run animation some more - POPAnimatorRenderDuration(self.animator, self.beginTime + 1, 4, 1.0/60.0); - NSArray *moreWriteEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - - // verify stop delegation - [delegate verify]; - - // compare event values - POPAnimationValueEvent *firstEvent = [writeEvents firstObject]; - POPAnimationValueEvent *lastEvent = [writeEvents lastObject]; - POPAnimationValueEvent *firstMoreEvent = [moreWriteEvents firstObject]; - XCTAssertTrue(NSOrderedAscending == [firstEvent.value compare:lastEvent.value] - && NSOrderedAscending == [lastEvent.value compare:firstMoreEvent.value], @"write event values not monotonically increasing %@ %@ %@", firstEvent, lastEvent, firstMoreEvent); -} - -- (void)testRectSupport -{ - const CGRect fromRect = CGRectMake(0, 0, 0, 0); - - POPDecayAnimation *anim = [POPDecayAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerBounds]; - anim.fromValue = [NSValue valueWithCGRect:fromRect]; - anim.velocity = [NSValue valueWithCGRect:CGRectMake(100, 100, 1000, 1000)]; - - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - anim.delegate = delegate; - - // expect start and stop to be called - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - // start tracer - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - CALayer *layer = self.layer1; - [layer pop_addAnimation:anim forKey:animationKey]; - - // run animation - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - - // verify delegate - [delegate verify]; - - POPAnimationValueEvent *lastEvent = [writeEvents lastObject]; - CGRect lastRect = [lastEvent.value CGRectValue]; - - XCTAssertTrue(!CGRectEqualToRect(fromRect, lastRect), @"unexpected last rect value: %@", lastEvent); - XCTAssertTrue(lastRect.origin.x == lastRect.origin.y && lastRect.size.width == lastRect.size.height && lastRect.origin.x < lastRect.size.width, @"unexpected last rect value: %@", lastEvent); -} - -#if TARGET_OS_IPHONE -- (void)testEdgeInsetsSupport -{ - const UIEdgeInsets fromEdgeInsets = UIEdgeInsetsZero; - const UIEdgeInsets velocityEdgeInsets = UIEdgeInsetsMake(100, 100, 1000, 1000); - - POPDecayAnimation *anim = [POPDecayAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPScrollViewContentInset]; - anim.fromValue = [NSValue valueWithUIEdgeInsets:fromEdgeInsets]; - anim.velocity = [NSValue valueWithUIEdgeInsets:velocityEdgeInsets]; - - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - anim.delegate = delegate; - - // expect start and stop to be called - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - // start tracer - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - id scrollView = [OCMockObject niceMockForClass:[UIScrollView class]]; - [scrollView pop_addAnimation:anim forKey:nil]; - - // run animation - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - - // verify delegate - [delegate verify]; - - POPAnimationValueEvent *lastEvent = [writeEvents lastObject]; - UIEdgeInsets lastEdgeInsets = [lastEvent.value UIEdgeInsetsValue]; - - XCTAssertTrue(!UIEdgeInsetsEqualToEdgeInsets(fromEdgeInsets, lastEdgeInsets), @"unexpected last edge insets value: %@", lastEvent); - XCTAssertTrue(lastEdgeInsets.top == lastEdgeInsets.left && lastEdgeInsets.bottom == lastEdgeInsets.right && lastEdgeInsets.top < lastEdgeInsets.bottom, @"unexpected last edge insets value: %@", lastEvent); -} -#endif - -- (void)testEndValueOnReuse -{ - POPAnimatable *circle = [POPAnimatable new]; - POPDecayAnimation *anim = self._positionXAnimation; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - // read out to value - CGFloat toValue = [anim.toValue floatValue]; - [circle pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 5.0, 1.0/60.0); - - NSArray *stopEvent = [tracer eventsWithType:kPOPAnimationEventDidStop]; - XCTAssertTrue(1 == stopEvent.count, @"unexpected events:%@", tracer.allEvents); - - CGFloat lastValue = [[(POPAnimationValueEvent *)tracer.writeEvents.lastObject value] floatValue]; - XCTAssertEqualWithAccuracy(toValue, lastValue, 0.5, @"expected:%f actual event:%@", lastValue, tracer.writeEvents.lastObject); - // update animation - anim.fromValue = @([anim.toValue floatValue] - 100); - anim.velocity = @(5000.); - - // and reuse - [tracer reset]; - [circle pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 5.0, 1.0/60.0); - - // verify decayed passed initial toValue - lastValue = [[(POPAnimationValueEvent *)tracer.writeEvents.lastObject value] floatValue]; - XCTAssertTrue(lastValue > toValue, @"unexpected last value:%f", lastValue); -} - -- (void)testComputedProperties -{ - POPDecayAnimation *anim = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPositionX]; - - // set velocity, test duration - anim.velocity = @(100); - CGFloat d1 = anim.duration; - XCTAssertTrue(d1 > 0, @"unexpected duration %@", anim); - - // set velocity, test duration - anim.velocity = @(1000); - CGFloat d2 = anim.duration; - XCTAssertTrue(d2 > d1, @"unexpected duration %@", anim); - - // set from value, test to value - anim.fromValue = @(0); - CGFloat p1 = [anim.toValue floatValue]; - XCTAssertTrue(p1 > [anim.fromValue floatValue], @"unexpected to value %@", anim); - - // set from value, test to value - anim.fromValue = @(10000); - CGFloat p2 = [anim.toValue floatValue]; - XCTAssertTrue(p2 > [anim.fromValue floatValue] && p2 > p1, @"unexpected to value %@", anim); -} - -- (void)testNSCopyingSupportPOPDecayAnimation -{ - POPDecayAnimation *anim = [POPDecayAnimation animationWithPropertyNamed:@"test_prop_name"]; - - configureConcretePropertyAnimation(anim); - - anim.velocity = @(1.8888); - anim.deceleration = -9.8; - - POPDecayAnimation *copy = [anim copy]; - - XCTAssertEqualObjects(copy.velocity, anim.velocity, @"expected equality; value1:%@ value2:%@", copy.velocity, anim.velocity); - XCTAssertEqual(copy.deceleration, anim.deceleration, @"expected equality; value1:%@ value2:%@", @(copy.deceleration), @(anim.deceleration)); -} - -@end diff --git a/pop-tests/POPEaseInEaseOutAnimationTests.mm b/pop-tests/POPEaseInEaseOutAnimationTests.mm deleted file mode 100644 index d8c582ae..00000000 --- a/pop-tests/POPEaseInEaseOutAnimationTests.mm +++ /dev/null @@ -1,92 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import - -#import - -#import -#import - -#import "POPAnimatable.h" -#import "POPAnimationTestsExtras.h" -#import "POPBaseAnimationTests.h" - -@interface POPEaseInEaseOutAnimationTests : POPBaseAnimationTests -@end - -@implementation POPEaseInEaseOutAnimationTests - -- (void)testCompletion -{ - // animation - // the default from, to and bounciness values are used - POPBasicAnimation *anim = [POPBasicAnimation easeInEaseOutAnimation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerScaleXY]; - anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(1.0, 1.0)]; - anim.toValue = [NSValue valueWithCGPoint:CGPointMake(0.97, 0.97)]; - - // delegate - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // expect start, progress & stop to all be called - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - anim.delegate = delegate; - - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:@"key"]; - - POPAnimatorRenderTimes(self.animator, self.beginTime, @[@0.0, @0.1, @0.2, @0.4]); - [delegate verify]; -} - -- (void)testRectSupport -{ - const CGRect fromRect = CGRectMake(0, 0, 0, 0); - const CGRect toRect = CGRectMake(100, 200, 200, 400); - - POPBasicAnimation *anim = [POPBasicAnimation easeInEaseOutAnimation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerBounds]; - anim.fromValue = [NSValue valueWithCGRect:fromRect]; - anim.toValue = [NSValue valueWithCGRect:toRect]; - - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - anim.delegate = delegate; - - // expect start and stop to be called - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - // start tracer - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:@""]; - - // run animation - POPAnimatorRenderDuration(self.animator, self.beginTime, 1, 1.0/60.0); - - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - - // verify delegate - [delegate verify]; - - POPAnimationValueEvent *lastEvent = [writeEvents lastObject]; - CGRect lastRect = [lastEvent.value CGRectValue]; - - // verify last rect is to rect - XCTAssertTrue(CGRectEqualToRect(lastRect, toRect), @"unexpected last rect value: %@", lastEvent); -} - -@end diff --git a/pop-tests/POPSpringAnimationTests.mm b/pop-tests/POPSpringAnimationTests.mm deleted file mode 100644 index ce99c321..00000000 --- a/pop-tests/POPSpringAnimationTests.mm +++ /dev/null @@ -1,687 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import - -#import - -#import -#import -#import -#import -#import - -#import "POPAnimatable.h" -#import "POPAnimationInternal.h" -#import "POPAnimationTestsExtras.h" -#import "POPBaseAnimationTests.h" -#import "POPCGUtils.h" - -@interface POPSpringAnimationTests : POPBaseAnimationTests -@end - -@implementation POPSpringAnimationTests - -static NSString *animationKey = @"key"; - -- (POPSpringAnimation *)_positionAnimation -{ - POPSpringAnimation *anim = [POPSpringAnimation animation]; - anim.fromValue = @0.0; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPositionX]; - anim.springBounciness = 4.0; - return anim; -} - -- (void)testCompletion -{ - // animation - // the default from, to and bounciness values are used - NSArray *markers = @[@0.5, @0.75, @1.0]; - POPSpringAnimation *anim = [POPSpringAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPosition]; - anim.progressMarkers = markers; - XCTAssertEqualObjects(markers, anim.progressMarkers, @"%@ shoudl equal %@", markers, anim.progressMarkers); - - // delegate - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // expect start, progress & stop to all be called - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - anim.delegate = delegate; - - // layer - id layer = [OCMockObject niceMockForClass:[CALayer class]]; - - // expect position to be called - CGPoint position = CGPointMake(100, 100); - position = [(CALayer *)[[layer stub] andReturnValue:OCMOCK_VALUE(position)] position]; - [layer pop_addAnimation:anim forKey:@"key"]; - - POPAnimatorRenderTimes(self.animator, self.beginTime, @[@0.0, @0.1, @0.2]); - [layer verify]; - [delegate verify]; -} - -- (void)testConvergence -{ - POPAnimatable *circle = [POPAnimatable new]; - POPSpringAnimation *anim = [POPSpringAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPositionX]; - anim.fromValue = @0.0; - anim.toValue = @100.0; - anim.velocity = @100.0; - anim.springBounciness = 0.5; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - [circle pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 1.0, 1.0/60.0); - [tracer stop]; - - // finished - POPAnimationValueEvent *stopEvent = [[tracer eventsWithType:kPOPAnimationEventDidStop] lastObject]; - XCTAssertEqualObjects(stopEvent.value, @YES, @"unexpected stop event %@", stopEvent); - - // convergence threshold - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - NSUInteger toValueFrameCount = POPAnimationCountLastEventValues(writeEvents, anim.toValue, anim.property.threshold); - XCTAssertTrue(toValueFrameCount < kPOPAnimationConvergenceMaxFrameCount, @"unexpected convergence; toValueFrameCount: %lu", (unsigned long)toValueFrameCount); -} - -- (void)testConvergenceRounded -{ - POPAnimatable *circle = [POPAnimatable new]; - POPSpringAnimation *anim = [POPSpringAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPositionX]; - anim.fromValue = @0.0; - anim.toValue = @100.0; - anim.velocity = @100.0; - anim.springBounciness = 0.5; - anim.roundingFactor = 1.0; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - [circle pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 1.0, 1.0/60.0); - [tracer stop]; - - // finished - POPAnimationValueEvent *stopEvent = [[tracer eventsWithType:kPOPAnimationEventDidStop] lastObject]; - XCTAssertEqualObjects(stopEvent.value, @YES, @"unexpected stop event %@", stopEvent); - - // convergence threshold - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - NSUInteger toValueFrameCount = POPAnimationCountLastEventValues(writeEvents, anim.toValue); - XCTAssertTrue(toValueFrameCount < kPOPAnimationConvergenceMaxFrameCount, @"unexpected convergence; toValueFrameCount: %lu", (unsigned long)toValueFrameCount); -} - -- (void)testConvergenceClampedRounded -{ - POPAnimatable *circle = [POPAnimatable new]; - POPSpringAnimation *anim = [POPSpringAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPositionX]; - anim.fromValue = @0.0; - anim.toValue = @100.0; - anim.velocity = @100.0; - anim.springBounciness = 0.5; - anim.roundingFactor = 1.0; - anim.clampMode = kPOPAnimationClampEnd; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - [circle pop_addAnimation:anim forKey:@"key"]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 1.0, 1.0/60.0); - [tracer stop]; - - // finished - POPAnimationValueEvent *stopEvent = [[tracer eventsWithType:kPOPAnimationEventDidStop] lastObject]; - XCTAssertEqualObjects(stopEvent.value, @YES, @"unexpected stop event %@", stopEvent); - - // convergence threshold - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - NSUInteger toValueFrameCount = POPAnimationCountLastEventValues(writeEvents, anim.toValue); - XCTAssertTrue(toValueFrameCount < kPOPAnimationConvergenceMaxFrameCount, @"unexpected convergence; toValueFrameCount: %lu", (unsigned long)toValueFrameCount); -} - -- (void)testRemovedOnCompletionNoStartStopBasics -{ - CALayer *layer = self.layer1; - POPSpringAnimation *anim = self._positionAnimation; - POPAnimationTracer *tracer = anim.tracer; - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // cleanup - [layer pop_removeAllAnimations]; - - // configure animation - anim.removedOnCompletion = NO; - anim.toValue = @5.0; - anim.delegate = delegate; - - __block BOOL completionBlock = NO; - __block BOOL completionBlockFinished = NO; - anim.completionBlock = ^(POPAnimation *a, BOOL finished) { - completionBlock = YES; - completionBlockFinished = finished; - }; - - // start tracer - [tracer start]; - - // expect start and stopped - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - [layer pop_addAnimation:anim forKey:animationKey]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 20.0, 1.0/60.0); - NSArray *allEvents = tracer.allEvents; - - // verify delegate - [delegate verify]; - XCTAssertTrue(completionBlock, @"completion block did not execute %@", allEvents); - XCTAssertTrue(completionBlockFinished, @"completion block did not finish %@", allEvents); - - // assert animation has not been removed - XCTAssertTrue(anim == [layer pop_animationForKey:animationKey], @"expected animation on layer animations:%@", [layer pop_animationKeys]); -} - -- (void)testRemovedOnCompletionNoContinuations -{ - static NSString *animationKey = @"key"; - static NSArray *toValues = @[@50.0, @100.0, @20.0, @80.0]; - static NSArray *durations = @[@2.0, @0.3, @0.4, @2.0]; - - CALayer *layer = self.layer1; - POPSpringAnimation *anim = self._positionAnimation; - POPAnimationTracer *tracer = anim.tracer; - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - - // cleanup - [layer pop_removeAllAnimations]; - - // configure animation - anim.removedOnCompletion = NO; - anim.delegate = delegate; - - // start tracer - [tracer start]; - - __block CFTimeInterval beginTime; - __block BOOL completionBlock = NO; - __block BOOL completionBlockFinished = NO; - - [toValues enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *ptrStop) { - anim.toValue = obj; - - if (0 == idx) { - [tracer reset]; - - // starts and stops - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - anim.completionBlock = ^(POPAnimation *a, BOOL finished) { - completionBlock = YES; - completionBlockFinished = finished; - }; - - [layer pop_addAnimation:anim forKey:animationKey]; - - beginTime = self.beginTime; - CFTimeInterval dt = [durations[idx] doubleValue]; - POPAnimatorRenderDuration(self.animator, beginTime, dt, 1.0/60.0); - beginTime += dt; - - NSArray *allEvents = tracer.allEvents; - NSArray *didReachEvents = [tracer eventsWithType:kPOPAnimationEventDidReachToValue]; - - // verify delegate - [delegate verify]; - XCTAssertTrue(1 == didReachEvents.count, @"unexpected didReachEvents %@", didReachEvents); - XCTAssertTrue(completionBlock, @"completion block did not execute %@", allEvents); - XCTAssertTrue(completionBlockFinished, @"completion block did not finish %@", allEvents); - } else if (toValues.count - 1 == idx) { - // continue stoped animation - [tracer reset]; - completionBlock = NO; - completionBlockFinished = NO; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - CFTimeInterval dt = [durations[idx] doubleValue]; - POPAnimatorRenderDuration(self.animator, beginTime, dt, 1.0/60.0); - beginTime += dt; - - NSArray *allEvents = tracer.allEvents; - NSArray *didReachEvents = [tracer eventsWithType:kPOPAnimationEventDidReachToValue]; - - // verify delegate - [delegate verify]; - XCTAssertTrue(1 == didReachEvents.count, @"unexpected didReachEvents %@", didReachEvents); - XCTAssertTrue(completionBlock, @"completion block did not execute %@", allEvents); - XCTAssertTrue(completionBlockFinished, @"completion block did not finish %@", allEvents); - } else { - // continue stoped (idx = 1) or started animation - if (1 == idx) { - [[delegate expect] pop_animationDidStart:anim]; - } - - // reset state - [tracer reset]; - completionBlock = NO; - completionBlockFinished = NO; - - CFTimeInterval dt = [durations[idx] doubleValue]; - POPAnimatorRenderDuration(self.animator, beginTime, dt, 1.0/60.0); - beginTime += dt; - - NSArray *allEvents = tracer.allEvents; - NSArray *didReachEvents = [tracer eventsWithType:kPOPAnimationEventDidReachToValue]; - - // verify delegate - [delegate verify]; - XCTAssertTrue(1 == didReachEvents.count, @"unexpected didReachEvents %@", didReachEvents); - XCTAssertFalse(completionBlock, @"completion block did not execute %@ %@", anim, allEvents); - XCTAssertFalse(completionBlockFinished, @"completion block did not finish %@ %@", anim, allEvents); - } - - // assert animation has not been removed - XCTAssertTrue(anim == [layer pop_animationForKey:animationKey], @"expected animation on layer animations:%@", [layer pop_animationKeys]); - }]; -} - -- (void)testNoOperationAnimation -{ - const CGPoint initialValue = CGPointMake(100, 100); - - CALayer *layer = self.layer1; - layer.position = initialValue; - [layer pop_removeAllAnimations]; - - POPSpringAnimation *anim = [POPSpringAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPosition]; - - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - anim.delegate = delegate; - - // starts and stops - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - [layer pop_addAnimation:anim forKey:animationKey]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 5, 1.0/60.0); - - // verify delegate - [delegate verify]; - - // verify number values - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - for (POPAnimationValueEvent *writeEvent in writeEvents) { - XCTAssertEqualObjects(writeEvent.value, [NSValue valueWithCGPoint:initialValue], @"unexpected write event:%@ anim:%@", writeEvent, anim); - } -} - -- (void)testLazyValueInitialization -{ - CALayer *layer = self.layer1; - layer.position = CGPointZero; - - POPSpringAnimation *anim = [POPSpringAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerPositionX]; - anim.fromValue = @100.0; - anim.beginTime = self.beginTime + 0.3; - - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - // add animation, but do not start - [layer pop_addAnimation:anim forKey:animationKey]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 0.2, 1.0/60.0); - XCTAssertNotNil(anim.fromValue, @"unexpected from value %@", anim); - XCTAssertNil(anim.toValue, @"unexpected to value %@", anim); - - // start animation - POPAnimatorRenderDuration(self.animator, self.beginTime + 0.2, 0.2, 1.0/60.0); - XCTAssertNotNil(anim.fromValue, @"unexpected from value %@", anim); - XCTAssertNotNil(anim.toValue, @"unexpected to value %@", anim); - - // continue running animation - anim.fromValue = nil; - anim.toValue = @200.0; - POPAnimatorRenderDuration(self.animator, self.beginTime + 0.4, 0.2, 1.0/60.0); - XCTAssertNotNil(anim.fromValue, @"unexpected from value %@", anim); - XCTAssertNotNil(anim.toValue, @"unexpected to value %@", anim); -} - -- (void)testLatentSpring -{ - POPSpringAnimation *translationAnimation = [POPSpringAnimation animation]; - translationAnimation.dynamicsTension = 990; - translationAnimation.dynamicsFriction = 230; - translationAnimation.dynamicsMass = 1.0; - translationAnimation.property = [POPAnimatableProperty propertyWithName:kPOPLayerOpacity]; - translationAnimation.removedOnCompletion = NO; - [self pop_addAnimation:translationAnimation forKey:@"test"]; - POPAnimatorRenderDuration(self.animator, self.beginTime + 0.4, 0.2, 1.0/60.0); -} - -- (void)testRectSupport -{ - const CGRect fromRect = CGRectMake(0, 0, 0, 0); - const CGRect toRect = CGRectMake(100, 200, 200, 400); - const CGRect velocityRect = CGRectMake(1000, 1000, 1000, 1000); - - POPSpringAnimation *anim = [POPSpringAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerBounds]; - anim.fromValue = [NSValue valueWithCGRect:fromRect]; - anim.toValue = [NSValue valueWithCGRect:toRect]; - anim.velocity = [NSValue valueWithCGRect:velocityRect]; - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - anim.delegate = delegate; - - // expect start and stop to be called - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - // start tracer - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:@""]; - - // run animation - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - - // verify delegate - [delegate verify]; - - POPAnimationValueEvent *lastEvent = [writeEvents lastObject]; - CGRect lastRect = [lastEvent.value CGRectValue]; - - // verify last rect is to rect - XCTAssertTrue(CGRectEqualToRect(lastRect, toRect), @"unexpected last rect value: %@", lastEvent); -} - -#if TARGET_OS_IPHONE -- (void)testEdgeInsetsSupport -{ - const UIEdgeInsets fromEdgeInsets = UIEdgeInsetsZero; - const UIEdgeInsets toEdgeInsets = UIEdgeInsetsMake(100, 200, 200, 400); - const UIEdgeInsets velocityEdgeInsets = UIEdgeInsetsMake(1000, 1000, 1000, 1000); - - POPSpringAnimation *anim = [POPSpringAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPScrollViewContentInset]; - anim.fromValue = [NSValue valueWithUIEdgeInsets:fromEdgeInsets]; - anim.toValue = [NSValue valueWithUIEdgeInsets:toEdgeInsets]; - anim.velocity = [NSValue valueWithUIEdgeInsets:velocityEdgeInsets]; - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - anim.delegate = delegate; - - // expect start and stop to be called - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - // start tracer - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - id scrollView = [OCMockObject niceMockForClass:[UIScrollView class]]; - [scrollView pop_addAnimation:anim forKey:nil]; - - // expect final value to be set - [[scrollView expect] setContentInset:toEdgeInsets]; - - // run animation - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - - // verify delegate - [delegate verify]; - - // verify scroll view - [scrollView verify]; - - POPAnimationValueEvent *lastEvent = [writeEvents lastObject]; - UIEdgeInsets lastEdgeInsets = [lastEvent.value UIEdgeInsetsValue]; - - // verify last insets are to insets - XCTAssertTrue(UIEdgeInsetsEqualToEdgeInsets(lastEdgeInsets, toEdgeInsets), @"unexpected last edge insets value: %@", lastEvent); -} -#endif - -- (void)testColorSupport -{ - CGFloat fromValues[4] = {1, 1, 1, 1}; - CGFloat toValues[4] = {0, 0, 0, 1}; - CGColorRef fromColor = POPCGColorRGBACreate(fromValues); - CGColorRef toColor = POPCGColorRGBACreate(toValues); - - POPSpringAnimation *anim = [POPSpringAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerBounds]; - anim.fromValue = (__bridge_transfer id)fromColor; - anim.toValue = (__bridge_transfer id)toColor; - - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - anim.delegate = delegate; - - // start tracer - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:@""]; - - // run animation - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - - // verify delegate - [delegate verify]; - - // expect some interpolation - XCTAssertTrue(writeEvents.count > 1, @"unexpected write events %@", writeEvents); - POPAnimationValueEvent *lastEvent = [writeEvents lastObject]; - - // verify last written color is to color - POPAssertColorEqual((__bridge CGColorRef)lastEvent.value, (__bridge CGColorRef)anim.toValue); -} - -static BOOL _floatingPointEqual(CGFloat a, CGFloat b) -{ - CGFloat epsilon = 0.0001; - return std::abs(a - b) < epsilon; -} - -- (void)testBouncinessSpeedToTensionFrictionConversion -{ - CGFloat sampleBounciness = 12.0; - CGFloat sampleSpeed = 5.0; - - CGFloat tension, friction, mass; - [POPSpringAnimation convertBounciness:sampleBounciness speed:sampleSpeed toTension:&tension friction:&friction mass:&mass]; - - CGFloat outBounciness, outSpeed; - [POPSpringAnimation convertTension:tension friction:friction toBounciness:&outBounciness speed:&outSpeed]; - - XCTAssertTrue(_floatingPointEqual(sampleBounciness, outBounciness) && _floatingPointEqual(sampleSpeed, outSpeed), @"(bounciness, speed) conversion failed. Mapped (%f, %f) back to (%f, %f)", sampleBounciness, sampleSpeed, outBounciness, outSpeed); -} - -- (void)testTensionFrictionToBouncinessSpeedConversion -{ - CGFloat sampleTension = 240.0; - CGFloat sampleFriction = 25.0; - - CGFloat bounciness, speed; - [POPSpringAnimation convertTension:sampleTension friction:sampleFriction toBounciness:&bounciness speed:&speed]; - - CGFloat outTension, outFriction, outMass; - [POPSpringAnimation convertBounciness:bounciness speed:speed toTension:&outTension friction:&outFriction mass:&outMass]; - - XCTAssertTrue(_floatingPointEqual(sampleTension, outTension) && _floatingPointEqual(sampleFriction, outFriction), @"(tension, friction) conversion failed. Mapped (%f, %f) back to (%f, %f)", sampleTension, sampleFriction, outTension, outFriction); -} - -- (void)testRemovedOnCompletionNoContinuationValues -{ - static CGFloat fromValue = 400.0; - static NSArray *toValues = @[@200.0, @400.0]; - - // configure animation - POPSpringAnimation *anim = self._positionAnimation; - anim.fromValue = [NSNumber numberWithFloat:fromValue]; - anim.toValue = toValues[0]; - anim.removedOnCompletion = NO; - - // run animation, from 400 to 200 - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:@""]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - // assert reached to value - XCTAssertTrue(layer.position.x == [anim.toValue floatValue], @"unexpected value:%@ %@", layer, anim); - - // start tracer - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - // update to value, animate from 200 to 400 - anim.toValue = toValues[1]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - // verify from 200 to 400 - NSArray *writeEvents = [tracer eventsWithType:kPOPAnimationEventPropertyWrite]; - XCTAssertTrue(writeEvents.count > 5, @"unexpected frame count %@", writeEvents); - - CGFloat firstValue = [[(POPAnimationValueEvent *)[writeEvents firstObject] value] floatValue]; - CGFloat lastValue = [[(POPAnimationValueEvent *)[writeEvents lastObject] value] floatValue]; - XCTAssertEqualWithAccuracy(((CGFloat)[toValues[0] floatValue]), firstValue, 10, @"unexpected first value %@", writeEvents); - XCTAssertEqualWithAccuracy(((CGFloat)[toValues[1] floatValue]), lastValue, 10, @"unexpected last value %@", writeEvents); -} - -- (void)testNilColor -{ - POPSpringAnimation *anim = [POPSpringAnimation animation]; - anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerBackgroundColor]; - -#if TARGET_OS_IPHONE - anim.toValue = (__bridge id)[UIColor redColor].CGColor; -#else - anim.toValue = (__bridge id)[NSColor redColor].CGColor; -#endif - - // start tracer - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - // run animation - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:@""]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - // verify valid from color exists - CGColorRef fromColor = (__bridge CGColorRef)anim.fromValue; - XCTAssertTrue(fromColor, @"unexpected value %p", fromColor); - - // verify from color clear -#if TARGET_OS_IPHONE - POPAssertColorEqual(fromColor, [UIColor clearColor].CGColor); -#else - POPAssertColorEqual(fromColor, [NSColor clearColor].CGColor); -#endif -} - -- (void)testExcessiveJumpInTime -{ - POPSpringAnimation *anim = self._positionAnimation; - anim.toValue = @(1000.0); - - // start tracer - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - id delegate = [OCMockObject niceMockForProtocol:@protocol(POPAnimationDelegate)]; - anim.delegate = delegate; - - // expect start and stop to be called - [[delegate expect] pop_animationDidStart:anim]; - [[delegate expect] pop_animationDidStop:anim finished:YES]; - - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:animationKey]; - - // render with large time jump - POPAnimatorRenderTimes(self.animator, self.beginTime, @[@0.0, @0.01, @300]); - - // verify start stop - [delegate verify]; - - // verify last write event value - POPAnimationValueEvent *writeEvent = [[tracer eventsWithType:kPOPAnimationEventPropertyWrite] lastObject]; - XCTAssertEqualObjects(writeEvent.value, anim.toValue, @"unexpected last write event %@", writeEvent); -} - -- (void)testEquivalentFromToValues -{ - POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPosition]; - anim.fromValue = [NSValue valueWithCGPoint:CGPointZero]; - anim.toValue = [NSValue valueWithCGPoint:CGPointZero]; - anim.velocity = [NSValue valueWithCGPoint:CGPointMake(1000.0, 1000.0)]; - - // start tracer - POPAnimationTracer *tracer = anim.tracer; - [tracer start]; - - // run animation - CALayer *layer = [CALayer layer]; - [layer pop_addAnimation:anim forKey:@""]; - POPAnimatorRenderDuration(self.animator, self.beginTime, 3, 1.0/60.0); - - // verify last write event value - POPAnimationValueEvent *writeEvent = [[tracer eventsWithType:kPOPAnimationEventPropertyWrite] lastObject]; - XCTAssertEqualObjects(writeEvent.value, anim.toValue, @"unexpected last write event %@", writeEvent); -} - -- (void)testNSCopyingSupportPOPSpringAnimation -{ - POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:@"asdf_asdf_asdf"]; - - configureConcretePropertyAnimation(anim); - - anim.velocity = @(4321); - anim.springBounciness = 11.1; - anim.springSpeed = 12; - anim.dynamicsTension = 0.83; - anim.dynamicsFriction = 0.97; - anim.dynamicsMass = 100; - - POPSpringAnimation *copy = [anim copy]; - - XCTAssertEqualObjects(copy.velocity, anim.velocity, @"expected equality; value1:%@ value2:%@", copy.velocity, anim.velocity); - XCTAssertEqual(copy.springBounciness, anim.springBounciness, @"expected equality; value1:%@ value2:%@", @(copy.springBounciness), @(anim.springBounciness)); - XCTAssertEqual(copy.springSpeed, anim.springSpeed, @"expected equality; value1:%@ value2:%@", @(copy.springSpeed), @(anim.springSpeed)); - XCTAssertEqual(copy.dynamicsTension, anim.dynamicsTension, @"expected equality; value1:%@ value2:%@", @(copy.dynamicsTension), @(anim.dynamicsTension)); - XCTAssertEqual(copy.dynamicsFriction, anim.dynamicsFriction, @"expected equality; value1:%@ value2:%@", @(copy.dynamicsFriction), @(anim.dynamicsFriction)); - XCTAssertEqual(copy.dynamicsMass, anim.dynamicsMass, @"expected equality; value1:%@ value2:%@", @(copy.dynamicsMass), @(anim.dynamicsMass)); -} - -@end diff --git a/pop-tests/pop-tests-ios-Info.plist b/pop-tests/pop-tests-ios-Info.plist deleted file mode 100644 index 169b6f71..00000000 --- a/pop-tests/pop-tests-ios-Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/pop-tests/pop-tests-osx-Info.plist b/pop-tests/pop-tests-osx-Info.plist deleted file mode 100644 index 169b6f71..00000000 --- a/pop-tests/pop-tests-osx-Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/pop-tests/pop-tests-tvos-Info.plist b/pop-tests/pop-tests-tvos-Info.plist deleted file mode 100644 index ba72822e..00000000 --- a/pop-tests/pop-tests-tvos-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/pop.podspec b/pop.podspec deleted file mode 100644 index 4fa7bda8..00000000 --- a/pop.podspec +++ /dev/null @@ -1,21 +0,0 @@ -Pod::Spec.new do |spec| - spec.name = 'pop' - spec.version = '1.0.11' - spec.license = { :type => 'BSD' } - spec.homepage = 'https://github.com/facebook/pop' - spec.authors = { 'Kimon Tsinteris' => 'kimon@mac.com' } - spec.summary = 'Extensible animation framework for iOS and OS X.' - spec.source = { :git => 'https://github.com/facebook/pop.git', :tag => '1.0.10' } - spec.source_files = 'pop/**/*.{h,m,mm,cpp}' - spec.public_header_files = 'pop/{POP,POPAnimatableProperty,POPAnimatablePropertyTypes,POPAnimation,POPAnimationEvent,POPAnimationExtras,POPAnimationTracer,POPAnimator,POPBasicAnimation,POPCustomAnimation,POPDecayAnimation,POPDefines,POPGeometry,POPLayerExtras,POPPropertyAnimation,POPSpringAnimation,POPVector}.h' - spec.requires_arc = true - spec.social_media_url = 'https://twitter.com/fbOpenSource' - spec.library = 'c++' - spec.pod_target_xcconfig = { - 'CLANG_CXX_LANGUAGE_STANDARD' => 'c++11', - 'CLANG_CXX_LIBRARY' => 'libc++' - } - spec.ios.deployment_target = '8.0' - spec.osx.deployment_target = '10.8' - spec.tvos.deployment_target = '9.0' -end diff --git a/pop.xcodeproj/project.pbxproj b/pop.xcodeproj/project.pbxproj deleted file mode 100644 index bf4f98ec..00000000 --- a/pop.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1948 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 0755AE591BEA15A80094AB41 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0755AE581BEA15A80094AB41 /* CoreImage.framework */; }; - 0755AE5B1BEA15B30094AB41 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0755AE5A1BEA15B30094AB41 /* UIKit.framework */; }; - 0755AE5D1BEA15BA0094AB41 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0755AE5C1BEA15BA0094AB41 /* CoreFoundation.framework */; }; - 0755AE5F1BEA15BF0094AB41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0755AE5E1BEA15BF0094AB41 /* Foundation.framework */; }; - 0755AE611BEA15C60094AB41 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0755AE601BEA15C60094AB41 /* CoreGraphics.framework */; }; - 0755AE631BEA15CB0094AB41 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0755AE621BEA15CB0094AB41 /* QuartzCore.framework */; }; - 0755AE651BEA17620094AB41 /* POP.h in Headers */ = {isa = PBXBuildFile; fileRef = ECA94D0B18ECAE82002E4CEB /* POP.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE661BEA17670094AB41 /* POPAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC191288162FB5B700E0CC76 /* POPAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE671BEA17780094AB41 /* POPAnimationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = EC1CD94E18D80A5C00DE2649 /* POPAnimationPrivate.h */; }; - 0755AE681BEA177C0094AB41 /* POPPropertyAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F013E18FFBBD300DF8905 /* POPPropertyAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE691BEA17840094AB41 /* POPBasicAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F014D18FFBD3E00DF8905 /* POPBasicAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE6A1BEA178B0094AB41 /* POPCustomAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E17BB1E17457345009842B6 /* POPCustomAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE6B1BEA17930094AB41 /* POPDecayAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F015A18FFBE8C00DF8905 /* POPDecayAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE6C1BEA17980094AB41 /* POPSpringAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F016618FFBEB500DF8905 /* POPSpringAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE6D1BEA17A70094AB41 /* POPAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC191289162FB5B700E0CC76 /* POPAnimation.mm */; }; - 0755AE6E1BEA17A70094AB41 /* POPPropertyAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F014A18FFBC8200DF8905 /* POPPropertyAnimation.mm */; }; - 0755AE6F1BEA17A70094AB41 /* POPBasicAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F014E18FFBD3E00DF8905 /* POPBasicAnimation.mm */; }; - 0755AE701BEA17A70094AB41 /* POPCustomAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E17BB1F17457345009842B6 /* POPCustomAnimation.mm */; }; - 0755AE711BEA17A70094AB41 /* POPDecayAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F015B18FFBE8C00DF8905 /* POPDecayAnimation.mm */; }; - 0755AE721BEA17A70094AB41 /* POPSpringAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F016718FFBEB500DF8905 /* POPSpringAnimation.mm */; }; - 0755AE731BEA17AD0094AB41 /* POPAnimatableProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128E162FB5B700E0CC76 /* POPAnimatableProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE741BEA17B10094AB41 /* POPAnimatableProperty.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC19128F162FB5B700E0CC76 /* POPAnimatableProperty.mm */; }; - 0755AE751BEA17B30094AB41 /* POPAnimationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = EC9997531756A0C300A73F49 /* POPAnimationEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE761BEA17B80094AB41 /* POPAnimationEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC9997541756A0C300A73F49 /* POPAnimationEvent.mm */; }; - 0755AE771BEA17BC0094AB41 /* POPAnimationExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = EC0AE12F16BC73CE001DA2CE /* POPAnimationExtras.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE781BEA17C00094AB41 /* POPAnimationExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC0AE13016BC73CE001DA2CE /* POPAnimationExtras.mm */; }; - 0755AE791BEA17C40094AB41 /* POPAnimationRuntime.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC95538F1743E278001E6AF2 /* POPAnimationRuntime.mm */; }; - 0755AE7A1BEA17C70094AB41 /* POPAnimationTracer.h in Headers */ = {isa = PBXBuildFile; fileRef = EC35DB2618EE3E820023E077 /* POPAnimationTracer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE7B1BEA17CA0094AB41 /* POPAnimationTracer.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC35DB2718EE3E820023E077 /* POPAnimationTracer.mm */; }; - 0755AE7C1BEA17CF0094AB41 /* POPAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128B162FB5B700E0CC76 /* POPAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE7D1BEA17D30094AB41 /* POPAnimator.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC19128C162FB5B700E0CC76 /* POPAnimator.mm */; }; - 0755AE7E1BEA17D60094AB41 /* POPAnimatorPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128D162FB5B700E0CC76 /* POPAnimatorPrivate.h */; }; - 0755AE7F1BEA17E70094AB41 /* POPCGUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC67007118D3D89F00F7387F /* POPCGUtils.mm */; }; - 0755AE801BEA17EA0094AB41 /* POPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = EC91E95F18C00EC90025B8AD /* POPDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE811BEA17EF0094AB41 /* POPGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = ECD80F0F18CFD2EF00AE4303 /* POPGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE821BEA17F20094AB41 /* POPGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = ECD80F1018CFD2EF00AE4303 /* POPGeometry.mm */; }; - 0755AE831BEA17F50094AB41 /* POPLayerExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = EC94B07B17D95CAA003CE2C8 /* POPLayerExtras.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0755AE841BEA17F90094AB41 /* POPLayerExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC94B07C17D95CAA003CE2C8 /* POPLayerExtras.mm */; }; - 0755AE851BEA17FD0094AB41 /* POPMath.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6465CF1794B4660014176F /* POPMath.mm */; }; - 0755AE861BEA18060094AB41 /* POPVector.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC70AC4218CCF4FC0067018C /* POPVector.mm */; }; - 0755AE871BEA180F0094AB41 /* TransformationMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EC94B07717D95447003CE2C8 /* TransformationMatrix.cpp */; }; - 0755AE911BEA19580094AB41 /* pop.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0755AE4F1BEA15950094AB41 /* pop.framework */; }; - 0755AE991BEA19F40094AB41 /* POPAnimatable.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC99974A17568DAD00A73F49 /* POPAnimatable.mm */; }; - 0755AE9A1BEA19F40094AB41 /* POPBaseAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6F55A4175E6641008D995D /* POPBaseAnimationTests.mm */; }; - 0755AE9B1BEA19F40094AB41 /* POPAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC191239162FB53A00E0CC76 /* POPAnimationTests.mm */; }; - 0755AE9C1BEA19F40094AB41 /* POPAnimationMRRTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC3F125916FB728B00922E3A /* POPAnimationMRRTests.mm */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0755AE9D1BEA19F40094AB41 /* POPAnimationTestsExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC3F125C16FB78E800922E3A /* POPAnimationTestsExtras.mm */; }; - 0755AE9E1BEA19F40094AB41 /* POPAnimatablePropertyTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC91D51B16FCC45C00E22B47 /* POPAnimatablePropertyTests.mm */; }; - 0755AE9F1BEA19F40094AB41 /* POPDecayAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6F55A1175E654B008D995D /* POPDecayAnimationTests.mm */; }; - 0755AEA01BEA19F40094AB41 /* POPSpringAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6F55AA175E6B11008D995D /* POPSpringAnimationTests.mm */; }; - 0755AEA11BEA19F40094AB41 /* POPEaseInEaseOutAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC7D2CFB1795AB3100E50A78 /* POPEaseInEaseOutAnimationTests.mm */; }; - 0755AEA21BEA19F40094AB41 /* POPCustomAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC72875418E13348006EEE54 /* POPCustomAnimationTests.mm */; }; - 0755AEA31BEA19F40094AB41 /* POPBasicAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6C098819141BBD00F8EA96 /* POPBasicAnimationTests.mm */; }; - 0B6BE76819FFD3FF00762101 /* POPAnimationTracer.h in Headers */ = {isa = PBXBuildFile; fileRef = EC35DB2618EE3E820023E077 /* POPAnimationTracer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE76919FFD40700762101 /* POP.h in Headers */ = {isa = PBXBuildFile; fileRef = ECA94D0B18ECAE82002E4CEB /* POP.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE76A19FFD41100762101 /* POPAnimationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = EC9997531756A0C300A73F49 /* POPAnimationEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE76B19FFD41500762101 /* POPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = EC91E95F18C00EC90025B8AD /* POPDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE76C19FFD41D00762101 /* POPDecayAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F015A18FFBE8C00DF8905 /* POPDecayAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE76D19FFD42700762101 /* POPAnimationExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = EC0AE12F16BC73CE001DA2CE /* POPAnimationExtras.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE76E19FFD43800762101 /* POPCustomAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E17BB1E17457345009842B6 /* POPCustomAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE76F19FFD44000762101 /* POPSpringAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F016618FFBEB500DF8905 /* POPSpringAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE77019FFD46600762101 /* POPLayerExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = EC94B07B17D95CAA003CE2C8 /* POPLayerExtras.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE77119FFD46F00762101 /* POPAnimatorPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128D162FB5B700E0CC76 /* POPAnimatorPrivate.h */; }; - 0B6BE77219FFD47800762101 /* POPPropertyAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F013E18FFBBD300DF8905 /* POPPropertyAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE77319FFD47F00762101 /* POPBasicAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F014D18FFBD3E00DF8905 /* POPBasicAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE77419FFD48700762101 /* POPAnimatableProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128E162FB5B700E0CC76 /* POPAnimatableProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE77519FFD49100762101 /* POPAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128B162FB5B700E0CC76 /* POPAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE77619FFD49A00762101 /* POPAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC191288162FB5B700E0CC76 /* POPAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE77719FFD4A300762101 /* POPAnimationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = EC1CD94E18D80A5C00DE2649 /* POPAnimationPrivate.h */; }; - 0B6BE77819FFD4AB00762101 /* POPGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = ECD80F0F18CFD2EF00AE4303 /* POPGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B6BE7D019FFD90F00762101 /* TransformationMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EC94B07717D95447003CE2C8 /* TransformationMatrix.cpp */; }; - 0B6BE7D119FFD92700762101 /* POPAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC191289162FB5B700E0CC76 /* POPAnimation.mm */; }; - 0B6BE7D219FFD92700762101 /* POPPropertyAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F014A18FFBC8200DF8905 /* POPPropertyAnimation.mm */; }; - 0B6BE7D319FFD92700762101 /* POPBasicAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F014E18FFBD3E00DF8905 /* POPBasicAnimation.mm */; }; - 0B6BE7D419FFD92700762101 /* POPCustomAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E17BB1F17457345009842B6 /* POPCustomAnimation.mm */; }; - 0B6BE7D519FFD92700762101 /* POPDecayAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F015B18FFBE8C00DF8905 /* POPDecayAnimation.mm */; }; - 0B6BE7D619FFD92700762101 /* POPSpringAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F016718FFBEB500DF8905 /* POPSpringAnimation.mm */; }; - 0B6BE7D719FFD92700762101 /* POPAnimatableProperty.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC19128F162FB5B700E0CC76 /* POPAnimatableProperty.mm */; }; - 0B6BE7D819FFD92700762101 /* POPAnimationEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC9997541756A0C300A73F49 /* POPAnimationEvent.mm */; }; - 0B6BE7D919FFD92700762101 /* POPAnimationExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC0AE13016BC73CE001DA2CE /* POPAnimationExtras.mm */; }; - 0B6BE7DA19FFD92700762101 /* POPAnimationRuntime.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC95538F1743E278001E6AF2 /* POPAnimationRuntime.mm */; }; - 0B6BE7DB19FFD92700762101 /* POPAnimationTracer.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC35DB2718EE3E820023E077 /* POPAnimationTracer.mm */; }; - 0B6BE7DC19FFD92700762101 /* POPAnimator.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC19128C162FB5B700E0CC76 /* POPAnimator.mm */; }; - 0B6BE7DD19FFD92700762101 /* POPCGUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC67007118D3D89F00F7387F /* POPCGUtils.mm */; }; - 0B6BE7DE19FFD92700762101 /* POPGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = ECD80F1018CFD2EF00AE4303 /* POPGeometry.mm */; }; - 0B6BE7DF19FFD92700762101 /* POPLayerExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC94B07C17D95CAA003CE2C8 /* POPLayerExtras.mm */; }; - 0B6BE7E019FFD92800762101 /* POPMath.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6465CF1794B4660014176F /* POPMath.mm */; }; - 0B6BE7E119FFD92800762101 /* POPVector.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC70AC4218CCF4FC0067018C /* POPVector.mm */; }; - 0BB8E7B920A498AA00AAA7F1 /* POPVector.h in Headers */ = {isa = PBXBuildFile; fileRef = EC70AC4318CCF4FC0067018C /* POPVector.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0BB8E7BA20A498C900AAA7F1 /* POPVector.h in Headers */ = {isa = PBXBuildFile; fileRef = EC70AC4318CCF4FC0067018C /* POPVector.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 181893701B3B7763002C4A59 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECC5A887162FBD6200F7F15C /* QuartzCore.framework */; }; - 181893711B3B7767002C4A59 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECC5A89D162FBD9B00F7F15C /* CoreGraphics.framework */; }; - 181893721B3B776A002C4A59 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC19121B162FB53A00E0CC76 /* Foundation.framework */; }; - 181893741B3B776B002C4A59 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 181893731B3B776B002C4A59 /* CoreFoundation.framework */; }; - 181893751B3B777A002C4A59 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECC5A887162FBD6200F7F15C /* QuartzCore.framework */; }; - 181893761B3B777E002C4A59 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECEED93D18C91ACF00DD95F2 /* UIKit.framework */; }; - 181893771B3B7781002C4A59 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 181893731B3B776B002C4A59 /* CoreFoundation.framework */; }; - 181893781B3B7781002C4A59 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC19121B162FB53A00E0CC76 /* Foundation.framework */; }; - 181893791B3B7785002C4A59 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECC5A89D162FBD9B00F7F15C /* CoreGraphics.framework */; }; - 1818937A1B3B77B2002C4A59 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B6BE7E619FFD98100762101 /* CoreImage.framework */; }; - 1818937B1B3B77B7002C4A59 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECEED93D18C91ACF00DD95F2 /* UIKit.framework */; }; - 1818937C1B3B77BB002C4A59 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B6BE7E619FFD98100762101 /* CoreImage.framework */; }; - 1818937E1B3B79D7002C4A59 /* pop-tests-osx-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1818937D1B3B79D7002C4A59 /* pop-tests-osx-Info.plist */; }; - 1836BBE41B3B7B9C0041334F /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1836BBE31B3B7B9C0041334F /* Cocoa.framework */; }; - 4A5B97399E5024273715DD47 /* libPods-Tests-pop-tests-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0648E9DF7DFD7360DDB00E86 /* libPods-Tests-pop-tests-ios.a */; }; - 5C8B2FCA1E847C1000A6A646 /* POPAnimatablePropertyTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C8B2FC91E847C1000A6A646 /* POPAnimatablePropertyTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5C8B2FCB1E847C4700A6A646 /* POPAnimatablePropertyTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C8B2FC91E847C1000A6A646 /* POPAnimatablePropertyTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5C8B2FCC1E847C4700A6A646 /* POPAnimatablePropertyTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C8B2FC91E847C1000A6A646 /* POPAnimatablePropertyTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5C8B2FCF1E847C4B00A6A646 /* POPAnimatablePropertyTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C8B2FC91E847C1000A6A646 /* POPAnimatablePropertyTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E17BB2017457345009842B6 /* POPCustomAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E17BB1E17457345009842B6 /* POPCustomAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E17BB2117457345009842B6 /* POPCustomAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E17BB1F17457345009842B6 /* POPCustomAnimation.mm */; }; - 6868EA130B28C6C61C4A4BD2 /* libPods-Tests-pop-tests-osx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 432CE3E78A1381BD39B03505 /* libPods-Tests-pop-tests-osx.a */; }; - 810EC68A1CE2E19000BE2B9C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 810EC6891CE2E19000BE2B9C /* UIKit.framework */; }; - 810EC6951CE2E19700BE2B9C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 810EC6941CE2E19700BE2B9C /* CoreGraphics.framework */; }; - 810EC69F1CE2E19C00BE2B9C /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 810EC69E1CE2E19C00BE2B9C /* QuartzCore.framework */; }; - 810EC6B71CE2E1BE00BE2B9C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 810EC6B61CE2E1BE00BE2B9C /* CoreGraphics.framework */; }; - 810EC6C51CE2E1E000BE2B9C /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 810EC6C41CE2E1E000BE2B9C /* AppKit.framework */; }; - 816FEE211FFC68130069EF43 /* pop.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B6BE74819FFD3B900762101 /* pop.framework */; }; - 90AA30B718988BBE00E3BDF7 /* POPSpringSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 90AA30B618988BBE00E3BDF7 /* POPSpringSolver.h */; }; - C6DB62F0D381303B499E49C7 /* libPods-Tests-pop-tests-tvos.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 62526242E5E68FDF16B4B25D /* libPods-Tests-pop-tests-tvos.a */; }; - EC0AE13116BC73CE001DA2CE /* POPAnimationExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = EC0AE12F16BC73CE001DA2CE /* POPAnimationExtras.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC0AE13216BC73CE001DA2CE /* POPAnimationExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC0AE13016BC73CE001DA2CE /* POPAnimationExtras.mm */; }; - EC191291162FB5B700E0CC76 /* POPAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC191289162FB5B700E0CC76 /* POPAnimation.mm */; }; - EC191292162FB5B700E0CC76 /* POPAnimator.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC19128C162FB5B700E0CC76 /* POPAnimator.mm */; }; - EC191293162FB5B700E0CC76 /* POPAnimatableProperty.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC19128F162FB5B700E0CC76 /* POPAnimatableProperty.mm */; }; - EC191295162FB5EC00E0CC76 /* POPAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC191288162FB5B700E0CC76 /* POPAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC191296162FB5EC00E0CC76 /* POPAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128A162FB5B700E0CC76 /* POPAnimationInternal.h */; }; - EC191297162FB5EC00E0CC76 /* POPAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128B162FB5B700E0CC76 /* POPAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC191298162FB5EC00E0CC76 /* POPAnimatorPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128D162FB5B700E0CC76 /* POPAnimatorPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC191299162FB5EC00E0CC76 /* POPAnimatableProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128E162FB5B700E0CC76 /* POPAnimatableProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC1CD95018D80A5C00DE2649 /* POPAnimationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = EC1CD94E18D80A5C00DE2649 /* POPAnimationPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC1CD95118D80A5C00DE2649 /* POPAnimationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = EC1CD94E18D80A5C00DE2649 /* POPAnimationPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC35DB2918EE3E820023E077 /* POPAnimationTracer.h in Headers */ = {isa = PBXBuildFile; fileRef = EC35DB2618EE3E820023E077 /* POPAnimationTracer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC35DB2A18EE3E820023E077 /* POPAnimationTracer.h in Headers */ = {isa = PBXBuildFile; fileRef = EC35DB2618EE3E820023E077 /* POPAnimationTracer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC35DB2B18EE3E820023E077 /* POPAnimationTracer.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC35DB2718EE3E820023E077 /* POPAnimationTracer.mm */; }; - EC35DB2C18EE3E820023E077 /* POPAnimationTracer.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC35DB2718EE3E820023E077 /* POPAnimationTracer.mm */; }; - EC35DB2D18EE3E820023E077 /* POPAnimationTracerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC35DB2818EE3E820023E077 /* POPAnimationTracerInternal.h */; }; - EC35DB2E18EE3E820023E077 /* POPAnimationTracerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC35DB2818EE3E820023E077 /* POPAnimationTracerInternal.h */; }; - EC6465D01794B4660014176F /* POPMath.h in Headers */ = {isa = PBXBuildFile; fileRef = EC6465CE1794B4660014176F /* POPMath.h */; }; - EC6465D11794B4660014176F /* POPMath.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6465CF1794B4660014176F /* POPMath.mm */; }; - EC67007218D3D89F00F7387F /* POPCGUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = EC67007018D3D89F00F7387F /* POPCGUtils.h */; }; - EC67007318D3D89F00F7387F /* POPCGUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = EC67007018D3D89F00F7387F /* POPCGUtils.h */; }; - EC67007418D3D89F00F7387F /* POPCGUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC67007118D3D89F00F7387F /* POPCGUtils.mm */; }; - EC67007518D3D89F00F7387F /* POPCGUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC67007118D3D89F00F7387F /* POPCGUtils.mm */; }; - EC67007618D3D96500F7387F /* POPCGUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC67007118D3D89F00F7387F /* POPCGUtils.mm */; }; - EC67007718D3D96600F7387F /* POPCGUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC67007118D3D89F00F7387F /* POPCGUtils.mm */; }; - EC6885B018C7BD0A00C6194C /* POPAnimatableProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128E162FB5B700E0CC76 /* POPAnimatableProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC6885B118C7BD1000C6194C /* POPAnimatableProperty.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC19128F162FB5B700E0CC76 /* POPAnimatableProperty.mm */; }; - EC6885B318C7BD1500C6194C /* POPAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC191288162FB5B700E0CC76 /* POPAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC6885B418C7BD1A00C6194C /* POPAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC191289162FB5B700E0CC76 /* POPAnimation.mm */; }; - EC6885B518C7BD1C00C6194C /* POPAnimationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = EC9997531756A0C300A73F49 /* POPAnimationEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC6885B618C7BD2200C6194C /* POPAnimationEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC9997541756A0C300A73F49 /* POPAnimationEvent.mm */; }; - EC6885B718C7BD2600C6194C /* POPAnimationEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC9997571756A17B00A73F49 /* POPAnimationEventInternal.h */; }; - EC6885B818C7BD2B00C6194C /* POPAnimationExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = EC0AE12F16BC73CE001DA2CE /* POPAnimationExtras.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC6885B918C7BD3000C6194C /* POPAnimationExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC0AE13016BC73CE001DA2CE /* POPAnimationExtras.mm */; }; - EC6885BA18C7BD3400C6194C /* POPAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128A162FB5B700E0CC76 /* POPAnimationInternal.h */; }; - EC6885BB18C7BD3700C6194C /* POPMath.h in Headers */ = {isa = PBXBuildFile; fileRef = EC6465CE1794B4660014176F /* POPMath.h */; }; - EC6885BC18C7BD3A00C6194C /* POPMath.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6465CF1794B4660014176F /* POPMath.mm */; }; - EC6885BD18C7BD3E00C6194C /* POPAnimationRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = EC95538E1743E278001E6AF2 /* POPAnimationRuntime.h */; }; - EC6885BE18C7BD4000C6194C /* POPAnimationRuntime.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC95538F1743E278001E6AF2 /* POPAnimationRuntime.mm */; }; - EC6885C218C7BD4B00C6194C /* POPAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128B162FB5B700E0CC76 /* POPAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC6885C318C7BD4E00C6194C /* POPAnimator.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC19128C162FB5B700E0CC76 /* POPAnimator.mm */; }; - EC6885C418C7BD5100C6194C /* POPAnimatorPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19128D162FB5B700E0CC76 /* POPAnimatorPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC6885C518C7BD5500C6194C /* POPCustomAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E17BB1E17457345009842B6 /* POPCustomAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC6885C618C7BD5900C6194C /* POPCustomAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E17BB1F17457345009842B6 /* POPCustomAnimation.mm */; }; - EC6885C718C7BD5C00C6194C /* POPSpringSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 90AA30B618988BBE00E3BDF7 /* POPSpringSolver.h */; }; - EC6885C818C7BD5F00C6194C /* POPLayerExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = EC94B07B17D95CAA003CE2C8 /* POPLayerExtras.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC6885C918C7BD6300C6194C /* POPLayerExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC94B07C17D95CAA003CE2C8 /* POPLayerExtras.mm */; }; - EC6885CA18C7BD6500C6194C /* FloatConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = ECCBC57117D96DBD00C69976 /* FloatConversion.h */; }; - EC6885CF18C7BD7B00C6194C /* POPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = EC91E95F18C00EC90025B8AD /* POPDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC6885D018C7BD7F00C6194C /* POPAction.h in Headers */ = {isa = PBXBuildFile; fileRef = EC91E96D18C014DE0025B8AD /* POPAction.h */; }; - EC6885D118C7BD8500C6194C /* TransformationMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = EC94B07817D95447003CE2C8 /* TransformationMatrix.h */; }; - EC6885D218C7BD8900C6194C /* TransformationMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EC94B07717D95447003CE2C8 /* TransformationMatrix.cpp */; }; - EC6885D418C7C44E00C6194C /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC6885D318C7C44E00C6194C /* QuartzCore.framework */; }; - EC6C098919141BBD00F8EA96 /* POPBasicAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6C098819141BBD00F8EA96 /* POPBasicAnimationTests.mm */; }; - EC6C098A19141BBD00F8EA96 /* POPBasicAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6C098819141BBD00F8EA96 /* POPBasicAnimationTests.mm */; }; - EC70AC4418CCF4FC0067018C /* POPVector.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC70AC4218CCF4FC0067018C /* POPVector.mm */; }; - EC70AC4518CCF4FC0067018C /* POPVector.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC70AC4218CCF4FC0067018C /* POPVector.mm */; }; - EC70AC4618CCF4FC0067018C /* POPVector.h in Headers */ = {isa = PBXBuildFile; fileRef = EC70AC4318CCF4FC0067018C /* POPVector.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC70AC4718CCF4FC0067018C /* POPVector.h in Headers */ = {isa = PBXBuildFile; fileRef = EC70AC4318CCF4FC0067018C /* POPVector.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC72875518E13348006EEE54 /* POPCustomAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC72875418E13348006EEE54 /* POPCustomAnimationTests.mm */; }; - EC72875618E13348006EEE54 /* POPCustomAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC72875418E13348006EEE54 /* POPCustomAnimationTests.mm */; }; - EC7E31AB18C9419000B38170 /* POPAnimatable.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC99974A17568DAD00A73F49 /* POPAnimatable.mm */; }; - EC7E31AC18C9419200B38170 /* POPBaseAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6F55A4175E6641008D995D /* POPBaseAnimationTests.mm */; }; - EC7E31AD18C9419600B38170 /* POPAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC191239162FB53A00E0CC76 /* POPAnimationTests.mm */; }; - EC7E31AE18C9419900B38170 /* POPAnimationMRRTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC3F125916FB728B00922E3A /* POPAnimationMRRTests.mm */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - EC7E31AF18C9419C00B38170 /* POPAnimationTestsExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC3F125C16FB78E800922E3A /* POPAnimationTestsExtras.mm */; }; - EC7E31B018C9419F00B38170 /* POPAnimatablePropertyTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC91D51B16FCC45C00E22B47 /* POPAnimatablePropertyTests.mm */; }; - EC7E31B118C941A200B38170 /* POPDecayAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6F55A1175E654B008D995D /* POPDecayAnimationTests.mm */; }; - EC7E31B218C941A400B38170 /* POPSpringAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6F55AA175E6B11008D995D /* POPSpringAnimationTests.mm */; }; - EC7E31B318C941A700B38170 /* POPEaseInEaseOutAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC7D2CFB1795AB3100E50A78 /* POPEaseInEaseOutAnimationTests.mm */; }; - EC7E31B418C9422600B38170 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC6885D318C7C44E00C6194C /* QuartzCore.framework */; }; - EC7E31B518C9422F00B38170 /* pop.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC68857F18C7B60000C6194C /* pop.framework */; }; - EC8F014018FFBBD300DF8905 /* POPPropertyAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F013E18FFBBD300DF8905 /* POPPropertyAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC8F014118FFBBD300DF8905 /* POPPropertyAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F013E18FFBBD300DF8905 /* POPPropertyAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC8F014618FFBC2D00DF8905 /* POPPropertyAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F014418FFBC2D00DF8905 /* POPPropertyAnimationInternal.h */; }; - EC8F014718FFBC2D00DF8905 /* POPPropertyAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F014418FFBC2D00DF8905 /* POPPropertyAnimationInternal.h */; }; - EC8F014B18FFBC8200DF8905 /* POPPropertyAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F014A18FFBC8200DF8905 /* POPPropertyAnimation.mm */; }; - EC8F014C18FFBC8200DF8905 /* POPPropertyAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F014A18FFBC8200DF8905 /* POPPropertyAnimation.mm */; }; - EC8F014F18FFBD3E00DF8905 /* POPBasicAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F014D18FFBD3E00DF8905 /* POPBasicAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC8F015018FFBD3E00DF8905 /* POPBasicAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F014D18FFBD3E00DF8905 /* POPBasicAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC8F015118FFBD3E00DF8905 /* POPBasicAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F014E18FFBD3E00DF8905 /* POPBasicAnimation.mm */; }; - EC8F015218FFBD3E00DF8905 /* POPBasicAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F014E18FFBD3E00DF8905 /* POPBasicAnimation.mm */; }; - EC8F015518FFBD5600DF8905 /* POPBasicAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F015318FFBD5600DF8905 /* POPBasicAnimationInternal.h */; }; - EC8F015618FFBD5600DF8905 /* POPBasicAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F015318FFBD5600DF8905 /* POPBasicAnimationInternal.h */; }; - EC8F015C18FFBE8C00DF8905 /* POPDecayAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F015A18FFBE8C00DF8905 /* POPDecayAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC8F015D18FFBE8C00DF8905 /* POPDecayAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F015A18FFBE8C00DF8905 /* POPDecayAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC8F015E18FFBE8C00DF8905 /* POPDecayAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F015B18FFBE8C00DF8905 /* POPDecayAnimation.mm */; }; - EC8F015F18FFBE8C00DF8905 /* POPDecayAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F015B18FFBE8C00DF8905 /* POPDecayAnimation.mm */; }; - EC8F016218FFBE9D00DF8905 /* POPDecayAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F016018FFBE9D00DF8905 /* POPDecayAnimationInternal.h */; }; - EC8F016318FFBE9D00DF8905 /* POPDecayAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F016018FFBE9D00DF8905 /* POPDecayAnimationInternal.h */; }; - EC8F016818FFBEB500DF8905 /* POPSpringAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F016618FFBEB500DF8905 /* POPSpringAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC8F016918FFBEB500DF8905 /* POPSpringAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F016618FFBEB500DF8905 /* POPSpringAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC8F016A18FFBEB500DF8905 /* POPSpringAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F016718FFBEB500DF8905 /* POPSpringAnimation.mm */; }; - EC8F016B18FFBEB500DF8905 /* POPSpringAnimation.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC8F016718FFBEB500DF8905 /* POPSpringAnimation.mm */; }; - EC8F016E18FFBEC200DF8905 /* POPSpringAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F016C18FFBEC200DF8905 /* POPSpringAnimationInternal.h */; }; - EC8F016F18FFBEC200DF8905 /* POPSpringAnimationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC8F016C18FFBEC200DF8905 /* POPSpringAnimationInternal.h */; }; - EC91E96018C00EC90025B8AD /* POPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = EC91E95F18C00EC90025B8AD /* POPDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC91E96E18C014DE0025B8AD /* POPAction.h in Headers */ = {isa = PBXBuildFile; fileRef = EC91E96D18C014DE0025B8AD /* POPAction.h */; }; - EC94B07917D95447003CE2C8 /* TransformationMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EC94B07717D95447003CE2C8 /* TransformationMatrix.cpp */; }; - EC94B07A17D95447003CE2C8 /* TransformationMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = EC94B07817D95447003CE2C8 /* TransformationMatrix.h */; }; - EC94B07D17D95CAA003CE2C8 /* POPLayerExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = EC94B07B17D95CAA003CE2C8 /* POPLayerExtras.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC94B07E17D95CAA003CE2C8 /* POPLayerExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC94B07C17D95CAA003CE2C8 /* POPLayerExtras.mm */; }; - EC9553901743E278001E6AF2 /* POPAnimationRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = EC95538E1743E278001E6AF2 /* POPAnimationRuntime.h */; }; - EC9553911743E278001E6AF2 /* POPAnimationRuntime.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC95538F1743E278001E6AF2 /* POPAnimationRuntime.mm */; }; - EC9997551756A0C300A73F49 /* POPAnimationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = EC9997531756A0C300A73F49 /* POPAnimationEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC9997561756A0C300A73F49 /* POPAnimationEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC9997541756A0C300A73F49 /* POPAnimationEvent.mm */; }; - EC9997591756A17B00A73F49 /* POPAnimationEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC9997571756A17B00A73F49 /* POPAnimationEventInternal.h */; }; - ECA0D5C018D8196A003720DF /* UnitBezier.h in Headers */ = {isa = PBXBuildFile; fileRef = ECA0D5BF18D8196A003720DF /* UnitBezier.h */; }; - ECA0D5C118D8196A003720DF /* UnitBezier.h in Headers */ = {isa = PBXBuildFile; fileRef = ECA0D5BF18D8196A003720DF /* UnitBezier.h */; }; - ECA94D0D18ECAE82002E4CEB /* POP.h in Headers */ = {isa = PBXBuildFile; fileRef = ECA94D0B18ECAE82002E4CEB /* POP.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ECA94D0E18ECAE82002E4CEB /* POP.h in Headers */ = {isa = PBXBuildFile; fileRef = ECA94D0B18ECAE82002E4CEB /* POP.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ECCBC57217D96DBD00C69976 /* FloatConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = ECCBC57117D96DBD00C69976 /* FloatConversion.h */; }; - ECD80F1118CFD2EF00AE4303 /* POPGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = ECD80F0F18CFD2EF00AE4303 /* POPGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ECD80F1218CFD2EF00AE4303 /* POPGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = ECD80F0F18CFD2EF00AE4303 /* POPGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ECD80F1318CFD2EF00AE4303 /* POPGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = ECD80F1018CFD2EF00AE4303 /* POPGeometry.mm */; }; - ECD80F1418CFD2EF00AE4303 /* POPGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = ECD80F1018CFD2EF00AE4303 /* POPGeometry.mm */; }; - ECDA0CC618C92BC900D14897 /* POPAnimatable.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC99974A17568DAD00A73F49 /* POPAnimatable.mm */; }; - ECDA0CC718C92BD200D14897 /* POPBaseAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6F55A4175E6641008D995D /* POPBaseAnimationTests.mm */; }; - ECDA0CC818C92BD200D14897 /* POPAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC191239162FB53A00E0CC76 /* POPAnimationTests.mm */; }; - ECDA0CC918C92BD200D14897 /* POPAnimationMRRTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC3F125916FB728B00922E3A /* POPAnimationMRRTests.mm */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - ECDA0CCA18C92BD200D14897 /* POPAnimationTestsExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC3F125C16FB78E800922E3A /* POPAnimationTestsExtras.mm */; }; - ECDA0CCB18C92BD200D14897 /* POPAnimatablePropertyTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC91D51B16FCC45C00E22B47 /* POPAnimatablePropertyTests.mm */; }; - ECDA0CCC18C92BD200D14897 /* POPDecayAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6F55A1175E654B008D995D /* POPDecayAnimationTests.mm */; }; - ECDA0CCD18C92BD200D14897 /* POPSpringAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC6F55AA175E6B11008D995D /* POPSpringAnimationTests.mm */; }; - ECDA0CCE18C92BD200D14897 /* POPEaseInEaseOutAnimationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = EC7D2CFB1795AB3100E50A78 /* POPEaseInEaseOutAnimationTests.mm */; }; - ECDA0CCF18C92C3E00D14897 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECC5A887162FBD6200F7F15C /* QuartzCore.framework */; }; - ECDA0CD118C92D3900D14897 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECC5A89D162FBD9B00F7F15C /* CoreGraphics.framework */; }; - ECF01ED518C92B7F009E0AD1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC19121B162FB53A00E0CC76 /* Foundation.framework */; }; - ECF01ED618C92B7F009E0AD1 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECEED93D18C91ACF00DD95F2 /* UIKit.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 0755AE921BEA19580094AB41 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = EC19120F162FB53A00E0CC76 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0755AE4E1BEA15950094AB41; - remoteInfo = "pop-tvos-framework"; - }; - 816FEE221FFC68370069EF43 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = EC19120F162FB53A00E0CC76 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0B6BE74719FFD3B900762101; - remoteInfo = "pop-ios-framework"; - }; - EC7E31A418C93D6600B38170 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = EC19120F162FB53A00E0CC76 /* Project object */; - proxyType = 1; - remoteGlobalIDString = EC68857E18C7B60000C6194C; - remoteInfo = "POP-OSX"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - EC191216162FB53A00E0CC76 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/${PRODUCT_NAME}"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 04C0670F1B8D577C00ED0525 /* Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Framework.xcconfig; sourceTree = ""; }; - 0648E9DF7DFD7360DDB00E86 /* libPods-Tests-pop-tests-ios.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Tests-pop-tests-ios.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0755AE4F1BEA15950094AB41 /* pop.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = pop.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0755AE531BEA15950094AB41 /* pop-tvos-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "pop-tvos-Info.plist"; path = "pop-tvos-framework/pop-tvos-Info.plist"; sourceTree = SOURCE_ROOT; }; - 0755AE581BEA15A80094AB41 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/CoreImage.framework; sourceTree = DEVELOPER_DIR; }; - 0755AE5A1BEA15B30094AB41 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 0755AE5C1BEA15BA0094AB41 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; - 0755AE5E1BEA15BF0094AB41 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 0755AE601BEA15C60094AB41 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 0755AE621BEA15CB0094AB41 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 0755AE8C1BEA19580094AB41 /* pop-tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "pop-tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0755AE901BEA19580094AB41 /* pop-tvos-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "pop-tvos-Info.plist"; path = "pop/pop-tvos-Info.plist"; sourceTree = SOURCE_ROOT; }; - 0B6BE74819FFD3B900762101 /* pop.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = pop.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0B6BE7E619FFD98100762101 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; }; - 1818936D1B3B74DE002C4A59 /* pop-ios-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "pop-ios-Info.plist"; path = "pop/pop-ios-Info.plist"; sourceTree = SOURCE_ROOT; }; - 181893731B3B776B002C4A59 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; - 1818937D1B3B79D7002C4A59 /* pop-tests-osx-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "pop-tests-osx-Info.plist"; path = "pop-tests/pop-tests-osx-Info.plist"; sourceTree = SOURCE_ROOT; }; - 1836BBE31B3B7B9C0041334F /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; }; - 406331B5EF869E167FFA3454 /* Pods-Tests-pop-tests-osx.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests-pop-tests-osx.profile.xcconfig"; path = "Pods/Target Support Files/Pods-Tests-pop-tests-osx/Pods-Tests-pop-tests-osx.profile.xcconfig"; sourceTree = ""; }; - 432CE3E78A1381BD39B03505 /* libPods-Tests-pop-tests-osx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Tests-pop-tests-osx.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 55AC0296922C5E9D7B593C59 /* Pods-Tests-pop-tests-osx.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests-pop-tests-osx.release.xcconfig"; path = "Pods/Target Support Files/Pods-Tests-pop-tests-osx/Pods-Tests-pop-tests-osx.release.xcconfig"; sourceTree = ""; }; - 55EA9621113E7E17CB5A65C3 /* Pods-Tests-pop-tests-tvos.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests-pop-tests-tvos.profile.xcconfig"; path = "Pods/Target Support Files/Pods-Tests-pop-tests-tvos/Pods-Tests-pop-tests-tvos.profile.xcconfig"; sourceTree = ""; }; - 5677DA2A8DA5A9DF667D2F25 /* Pods-Tests-pop-tests-osx.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests-pop-tests-osx.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Tests-pop-tests-osx/Pods-Tests-pop-tests-osx.debug.xcconfig"; sourceTree = ""; }; - 5C8B2FC91E847C1000A6A646 /* POPAnimatablePropertyTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimatablePropertyTypes.h; sourceTree = ""; }; - 5E17BB1E17457345009842B6 /* POPCustomAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPCustomAnimation.h; sourceTree = ""; }; - 5E17BB1F17457345009842B6 /* POPCustomAnimation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPCustomAnimation.mm; sourceTree = ""; }; - 62526242E5E68FDF16B4B25D /* libPods-Tests-pop-tests-tvos.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Tests-pop-tests-tvos.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 66F8502AAF59876387597FEC /* Pods-Tests-pop-tests-tvos.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests-pop-tests-tvos.release.xcconfig"; path = "Pods/Target Support Files/Pods-Tests-pop-tests-tvos/Pods-Tests-pop-tests-tvos.release.xcconfig"; sourceTree = ""; }; - 75AB0405A39E769FDEA67DFE /* Pods-Tests-pop-tests-tvos.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests-pop-tests-tvos.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Tests-pop-tests-tvos/Pods-Tests-pop-tests-tvos.debug.xcconfig"; sourceTree = ""; }; - 810EC6891CE2E19000BE2B9C /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 810EC6941CE2E19700BE2B9C /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 810EC69E1CE2E19C00BE2B9C /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 810EC6B61CE2E1BE00BE2B9C /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 810EC6C41CE2E1E000BE2B9C /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/AppKit.framework; sourceTree = DEVELOPER_DIR; }; - 84EDB88DF38CE22AC4893B65 /* Pods-Tests-pop-tests-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests-pop-tests-ios.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Tests-pop-tests-ios/Pods-Tests-pop-tests-ios.debug.xcconfig"; sourceTree = ""; }; - 85D44E5C12C69E1AC9E27D0B /* Pods-Tests-pop-tests-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests-pop-tests-ios.release.xcconfig"; path = "Pods/Target Support Files/Pods-Tests-pop-tests-ios/Pods-Tests-pop-tests-ios.release.xcconfig"; sourceTree = ""; }; - 90AA30B618988BBE00E3BDF7 /* POPSpringSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPSpringSolver.h; sourceTree = ""; }; - CD42CE6B1B541B1300EC9556 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; name = module.modulemap; path = pop/module.modulemap; sourceTree = SOURCE_ROOT; }; - D35FAC2FD6DFC1CC1BD1A636 /* Pods-Tests-pop-tests-ios.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests-pop-tests-ios.profile.xcconfig"; path = "Pods/Target Support Files/Pods-Tests-pop-tests-ios/Pods-Tests-pop-tests-ios.profile.xcconfig"; sourceTree = ""; }; - EC0AE12F16BC73CE001DA2CE /* POPAnimationExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimationExtras.h; sourceTree = ""; }; - EC0AE13016BC73CE001DA2CE /* POPAnimationExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPAnimationExtras.mm; sourceTree = ""; }; - EC191218162FB53A00E0CC76 /* libpop.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libpop.a; sourceTree = BUILT_PRODUCTS_DIR; }; - EC19121B162FB53A00E0CC76 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - EC191239162FB53A00E0CC76 /* POPAnimationTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = POPAnimationTests.mm; sourceTree = ""; }; - EC191288162FB5B700E0CC76 /* POPAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimation.h; sourceTree = ""; }; - EC191289162FB5B700E0CC76 /* POPAnimation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPAnimation.mm; sourceTree = ""; }; - EC19128A162FB5B700E0CC76 /* POPAnimationInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimationInternal.h; sourceTree = ""; }; - EC19128B162FB5B700E0CC76 /* POPAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimator.h; sourceTree = ""; }; - EC19128C162FB5B700E0CC76 /* POPAnimator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPAnimator.mm; sourceTree = ""; }; - EC19128D162FB5B700E0CC76 /* POPAnimatorPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimatorPrivate.h; sourceTree = ""; }; - EC19128E162FB5B700E0CC76 /* POPAnimatableProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimatableProperty.h; sourceTree = ""; }; - EC19128F162FB5B700E0CC76 /* POPAnimatableProperty.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPAnimatableProperty.mm; sourceTree = ""; }; - EC1CD94E18D80A5C00DE2649 /* POPAnimationPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimationPrivate.h; sourceTree = ""; }; - EC35DB2618EE3E820023E077 /* POPAnimationTracer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimationTracer.h; sourceTree = ""; }; - EC35DB2718EE3E820023E077 /* POPAnimationTracer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPAnimationTracer.mm; sourceTree = ""; }; - EC35DB2818EE3E820023E077 /* POPAnimationTracerInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimationTracerInternal.h; sourceTree = ""; }; - EC3F125916FB728B00922E3A /* POPAnimationMRRTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPAnimationMRRTests.mm; sourceTree = ""; }; - EC3F125B16FB78E800922E3A /* POPAnimationTestsExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimationTestsExtras.h; sourceTree = ""; }; - EC3F125C16FB78E800922E3A /* POPAnimationTestsExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPAnimationTestsExtras.mm; sourceTree = ""; }; - EC6465CE1794B4660014176F /* POPMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPMath.h; sourceTree = ""; }; - EC6465CF1794B4660014176F /* POPMath.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPMath.mm; sourceTree = ""; }; - EC67007018D3D89F00F7387F /* POPCGUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPCGUtils.h; sourceTree = ""; }; - EC67007118D3D89F00F7387F /* POPCGUtils.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPCGUtils.mm; sourceTree = ""; }; - EC68857F18C7B60000C6194C /* pop.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = pop.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC68858818C7B60000C6194C /* pop-osx-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "pop-osx-Info.plist"; sourceTree = ""; }; - EC6885D318C7C44E00C6194C /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - EC6C098819141BBD00F8EA96 /* POPBasicAnimationTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPBasicAnimationTests.mm; sourceTree = ""; }; - EC6F55A1175E654B008D995D /* POPDecayAnimationTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPDecayAnimationTests.mm; sourceTree = ""; }; - EC6F55A3175E6641008D995D /* POPBaseAnimationTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPBaseAnimationTests.h; sourceTree = ""; }; - EC6F55A4175E6641008D995D /* POPBaseAnimationTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPBaseAnimationTests.mm; sourceTree = ""; }; - EC6F55AA175E6B11008D995D /* POPSpringAnimationTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPSpringAnimationTests.mm; sourceTree = ""; }; - EC70AC4218CCF4FC0067018C /* POPVector.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPVector.mm; sourceTree = ""; }; - EC70AC4318CCF4FC0067018C /* POPVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPVector.h; sourceTree = ""; }; - EC72875418E13348006EEE54 /* POPCustomAnimationTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPCustomAnimationTests.mm; sourceTree = ""; }; - EC7D2CFB1795AB3100E50A78 /* POPEaseInEaseOutAnimationTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPEaseInEaseOutAnimationTests.mm; sourceTree = ""; }; - EC7E319918C93D6500B38170 /* pop-tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "pop-tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - EC882A7718C91983007829CC /* pop-tests-ios-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "pop-tests-ios-Info.plist"; sourceTree = ""; }; - EC8F013E18FFBBD300DF8905 /* POPPropertyAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPPropertyAnimation.h; sourceTree = ""; }; - EC8F014418FFBC2D00DF8905 /* POPPropertyAnimationInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPPropertyAnimationInternal.h; sourceTree = ""; }; - EC8F014A18FFBC8200DF8905 /* POPPropertyAnimation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPPropertyAnimation.mm; sourceTree = ""; }; - EC8F014D18FFBD3E00DF8905 /* POPBasicAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPBasicAnimation.h; sourceTree = ""; }; - EC8F014E18FFBD3E00DF8905 /* POPBasicAnimation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPBasicAnimation.mm; sourceTree = ""; }; - EC8F015318FFBD5600DF8905 /* POPBasicAnimationInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPBasicAnimationInternal.h; sourceTree = ""; }; - EC8F015A18FFBE8C00DF8905 /* POPDecayAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPDecayAnimation.h; sourceTree = ""; }; - EC8F015B18FFBE8C00DF8905 /* POPDecayAnimation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPDecayAnimation.mm; sourceTree = ""; }; - EC8F016018FFBE9D00DF8905 /* POPDecayAnimationInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPDecayAnimationInternal.h; sourceTree = ""; }; - EC8F016618FFBEB500DF8905 /* POPSpringAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPSpringAnimation.h; sourceTree = ""; }; - EC8F016718FFBEB500DF8905 /* POPSpringAnimation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPSpringAnimation.mm; sourceTree = ""; }; - EC8F016C18FFBEC200DF8905 /* POPSpringAnimationInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPSpringAnimationInternal.h; sourceTree = ""; }; - EC91D51B16FCC45C00E22B47 /* POPAnimatablePropertyTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPAnimatablePropertyTests.mm; sourceTree = ""; }; - EC91E95F18C00EC90025B8AD /* POPDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPDefines.h; sourceTree = ""; }; - EC91E96D18C014DE0025B8AD /* POPAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAction.h; sourceTree = ""; }; - EC94B07717D95447003CE2C8 /* TransformationMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TransformationMatrix.cpp; path = WebCore/TransformationMatrix.cpp; sourceTree = ""; }; - EC94B07817D95447003CE2C8 /* TransformationMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformationMatrix.h; path = WebCore/TransformationMatrix.h; sourceTree = ""; }; - EC94B07B17D95CAA003CE2C8 /* POPLayerExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPLayerExtras.h; sourceTree = ""; }; - EC94B07C17D95CAA003CE2C8 /* POPLayerExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPLayerExtras.mm; sourceTree = ""; }; - EC95538E1743E278001E6AF2 /* POPAnimationRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimationRuntime.h; sourceTree = ""; }; - EC95538F1743E278001E6AF2 /* POPAnimationRuntime.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPAnimationRuntime.mm; sourceTree = ""; }; - EC99974917568DAD00A73F49 /* POPAnimatable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = POPAnimatable.h; path = "pop-tests/POPAnimatable.h"; sourceTree = SOURCE_ROOT; }; - EC99974A17568DAD00A73F49 /* POPAnimatable.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = POPAnimatable.mm; path = "pop-tests/POPAnimatable.mm"; sourceTree = SOURCE_ROOT; }; - EC9997531756A0C300A73F49 /* POPAnimationEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimationEvent.h; sourceTree = ""; }; - EC9997541756A0C300A73F49 /* POPAnimationEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPAnimationEvent.mm; sourceTree = ""; }; - EC9997571756A17B00A73F49 /* POPAnimationEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPAnimationEventInternal.h; sourceTree = ""; }; - ECA0D5BF18D8196A003720DF /* UnitBezier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UnitBezier.h; path = WebCore/UnitBezier.h; sourceTree = ""; }; - ECA94D0B18ECAE82002E4CEB /* POP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = POP.h; path = pop/POP.h; sourceTree = SOURCE_ROOT; }; - ECC1DB0B18CA291B008C7DEA /* Compiler.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Compiler.xcconfig; sourceTree = ""; }; - ECC1DB1218CA291B008C7DEA /* Project-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Project-Debug.xcconfig"; sourceTree = ""; }; - ECC1DB1618CA291B008C7DEA /* Project-Profile.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Project-Profile.xcconfig"; sourceTree = ""; }; - ECC1DB1718CA291B008C7DEA /* Project-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Project-Release.xcconfig"; sourceTree = ""; }; - ECC1DB1818CA291B008C7DEA /* Project.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; - ECC1DB1A18CA291B008C7DEA /* StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = StaticLibrary.xcconfig; sourceTree = ""; }; - ECC1DB1D18CA291B008C7DEA /* ApplicationTests.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = ApplicationTests.xcconfig; sourceTree = ""; }; - ECC1DB1E18CA291B008C7DEA /* LogicTests.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = LogicTests.xcconfig; sourceTree = ""; }; - ECC5A887162FBD6200F7F15C /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - ECC5A89D162FBD9B00F7F15C /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - ECCBC57117D96DBD00C69976 /* FloatConversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FloatConversion.h; path = WebCore/FloatConversion.h; sourceTree = ""; }; - ECD80F0F18CFD2EF00AE4303 /* POPGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POPGeometry.h; sourceTree = ""; }; - ECD80F1018CFD2EF00AE4303 /* POPGeometry.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = POPGeometry.mm; sourceTree = ""; }; - ECEED93D18C91ACF00DD95F2 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - ECF01ED318C92B7F009E0AD1 /* pop-tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "pop-tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 0755AE4B1BEA15950094AB41 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0755AE631BEA15CB0094AB41 /* QuartzCore.framework in Frameworks */, - 0755AE611BEA15C60094AB41 /* CoreGraphics.framework in Frameworks */, - 0755AE5F1BEA15BF0094AB41 /* Foundation.framework in Frameworks */, - 0755AE5D1BEA15BA0094AB41 /* CoreFoundation.framework in Frameworks */, - 0755AE5B1BEA15B30094AB41 /* UIKit.framework in Frameworks */, - 0755AE591BEA15A80094AB41 /* CoreImage.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0755AE891BEA19580094AB41 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 810EC69F1CE2E19C00BE2B9C /* QuartzCore.framework in Frameworks */, - 810EC6951CE2E19700BE2B9C /* CoreGraphics.framework in Frameworks */, - 810EC68A1CE2E19000BE2B9C /* UIKit.framework in Frameworks */, - 0755AE911BEA19580094AB41 /* pop.framework in Frameworks */, - C6DB62F0D381303B499E49C7 /* libPods-Tests-pop-tests-tvos.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0B6BE74419FFD3B900762101 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1818937C1B3B77BB002C4A59 /* CoreImage.framework in Frameworks */, - 1818937B1B3B77B7002C4A59 /* UIKit.framework in Frameworks */, - 181893741B3B776B002C4A59 /* CoreFoundation.framework in Frameworks */, - 181893721B3B776A002C4A59 /* Foundation.framework in Frameworks */, - 181893711B3B7767002C4A59 /* CoreGraphics.framework in Frameworks */, - 181893701B3B7763002C4A59 /* QuartzCore.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC191215162FB53A00E0CC76 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1818937A1B3B77B2002C4A59 /* CoreImage.framework in Frameworks */, - 181893791B3B7785002C4A59 /* CoreGraphics.framework in Frameworks */, - 181893771B3B7781002C4A59 /* CoreFoundation.framework in Frameworks */, - 181893781B3B7781002C4A59 /* Foundation.framework in Frameworks */, - 181893761B3B777E002C4A59 /* UIKit.framework in Frameworks */, - 181893751B3B777A002C4A59 /* QuartzCore.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC68857B18C7B60000C6194C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1836BBE41B3B7B9C0041334F /* Cocoa.framework in Frameworks */, - EC6885D418C7C44E00C6194C /* QuartzCore.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC7E319618C93D6500B38170 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 810EC6C51CE2E1E000BE2B9C /* AppKit.framework in Frameworks */, - 810EC6B71CE2E1BE00BE2B9C /* CoreGraphics.framework in Frameworks */, - EC7E31B518C9422F00B38170 /* pop.framework in Frameworks */, - EC7E31B418C9422600B38170 /* QuartzCore.framework in Frameworks */, - 6868EA130B28C6C61C4A4BD2 /* libPods-Tests-pop-tests-osx.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - ECF01ED018C92B7F009E0AD1 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 816FEE211FFC68130069EF43 /* pop.framework in Frameworks */, - ECDA0CD118C92D3900D14897 /* CoreGraphics.framework in Frameworks */, - ECDA0CCF18C92C3E00D14897 /* QuartzCore.framework in Frameworks */, - ECF01ED618C92B7F009E0AD1 /* UIKit.framework in Frameworks */, - ECF01ED518C92B7F009E0AD1 /* Foundation.framework in Frameworks */, - 4A5B97399E5024273715DD47 /* libPods-Tests-pop-tests-ios.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 0755AE641BEA16170094AB41 /* Supporting Files (tvOS) */ = { - isa = PBXGroup; - children = ( - 0755AE531BEA15950094AB41 /* pop-tvos-Info.plist */, - ); - name = "Supporting Files (tvOS)"; - sourceTree = ""; - }; - 0755AE981BEA197E0094AB41 /* Supporting Files (tvOS) */ = { - isa = PBXGroup; - children = ( - 0755AE901BEA19580094AB41 /* pop-tvos-Info.plist */, - ); - name = "Supporting Files (tvOS)"; - sourceTree = ""; - }; - 419601F3A7432256D076DE4C /* Pods */ = { - isa = PBXGroup; - children = ( - 84EDB88DF38CE22AC4893B65 /* Pods-Tests-pop-tests-ios.debug.xcconfig */, - 85D44E5C12C69E1AC9E27D0B /* Pods-Tests-pop-tests-ios.release.xcconfig */, - D35FAC2FD6DFC1CC1BD1A636 /* Pods-Tests-pop-tests-ios.profile.xcconfig */, - 5677DA2A8DA5A9DF667D2F25 /* Pods-Tests-pop-tests-osx.debug.xcconfig */, - 55AC0296922C5E9D7B593C59 /* Pods-Tests-pop-tests-osx.release.xcconfig */, - 406331B5EF869E167FFA3454 /* Pods-Tests-pop-tests-osx.profile.xcconfig */, - 75AB0405A39E769FDEA67DFE /* Pods-Tests-pop-tests-tvos.debug.xcconfig */, - 66F8502AAF59876387597FEC /* Pods-Tests-pop-tests-tvos.release.xcconfig */, - 55EA9621113E7E17CB5A65C3 /* Pods-Tests-pop-tests-tvos.profile.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; - EC19120D162FB53A00E0CC76 = { - isa = PBXGroup; - children = ( - EC19121D162FB53A00E0CC76 /* pop */, - EC882A7518C91983007829CC /* pop-tests */, - ECC1DB0718CA291B008C7DEA /* Configuration */, - EC19121A162FB53A00E0CC76 /* Frameworks */, - EC191219162FB53A00E0CC76 /* Products */, - 419601F3A7432256D076DE4C /* Pods */, - ); - sourceTree = ""; - }; - EC191219162FB53A00E0CC76 /* Products */ = { - isa = PBXGroup; - children = ( - EC191218162FB53A00E0CC76 /* libpop.a */, - EC68857F18C7B60000C6194C /* pop.framework */, - ECF01ED318C92B7F009E0AD1 /* pop-tests.xctest */, - EC7E319918C93D6500B38170 /* pop-tests.xctest */, - 0B6BE74819FFD3B900762101 /* pop.framework */, - 0755AE4F1BEA15950094AB41 /* pop.framework */, - 0755AE8C1BEA19580094AB41 /* pop-tests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - EC19121A162FB53A00E0CC76 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 810EC6C41CE2E1E000BE2B9C /* AppKit.framework */, - 810EC6B61CE2E1BE00BE2B9C /* CoreGraphics.framework */, - 810EC69E1CE2E19C00BE2B9C /* QuartzCore.framework */, - 810EC6941CE2E19700BE2B9C /* CoreGraphics.framework */, - 810EC6891CE2E19000BE2B9C /* UIKit.framework */, - 0755AE621BEA15CB0094AB41 /* QuartzCore.framework */, - 0755AE601BEA15C60094AB41 /* CoreGraphics.framework */, - 0755AE5E1BEA15BF0094AB41 /* Foundation.framework */, - 0755AE5C1BEA15BA0094AB41 /* CoreFoundation.framework */, - 0755AE5A1BEA15B30094AB41 /* UIKit.framework */, - 0755AE581BEA15A80094AB41 /* CoreImage.framework */, - 1836BBE31B3B7B9C0041334F /* Cocoa.framework */, - 181893731B3B776B002C4A59 /* CoreFoundation.framework */, - 0B6BE7E619FFD98100762101 /* CoreImage.framework */, - ECEED93D18C91ACF00DD95F2 /* UIKit.framework */, - EC6885D318C7C44E00C6194C /* QuartzCore.framework */, - ECC5A89D162FBD9B00F7F15C /* CoreGraphics.framework */, - ECC5A887162FBD6200F7F15C /* QuartzCore.framework */, - EC19121B162FB53A00E0CC76 /* Foundation.framework */, - 0648E9DF7DFD7360DDB00E86 /* libPods-Tests-pop-tests-ios.a */, - 432CE3E78A1381BD39B03505 /* libPods-Tests-pop-tests-osx.a */, - 62526242E5E68FDF16B4B25D /* libPods-Tests-pop-tests-tvos.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - EC19121D162FB53A00E0CC76 /* pop */ = { - isa = PBXGroup; - children = ( - ECA94D0B18ECAE82002E4CEB /* POP.h */, - EC8F015918FFBD7A00DF8905 /* Animations */, - EC8F017318FFC4CB00DF8905 /* Engine */, - EC8F017218FFC44800DF8905 /* Utility */, - ECA0D5BE18D818C3003720DF /* WebCore */, - EC6885AF18C7BCA400C6194C /* Supporting Files (iOS) */, - EC68858618C7B60000C6194C /* Supporting Files (OS X) */, - 0755AE641BEA16170094AB41 /* Supporting Files (tvOS) */, - ); - path = pop; - sourceTree = ""; - }; - EC68858618C7B60000C6194C /* Supporting Files (OS X) */ = { - isa = PBXGroup; - children = ( - EC68858818C7B60000C6194C /* pop-osx-Info.plist */, - ); - name = "Supporting Files (OS X)"; - sourceTree = ""; - }; - EC6885AF18C7BCA400C6194C /* Supporting Files (iOS) */ = { - isa = PBXGroup; - children = ( - 1818936D1B3B74DE002C4A59 /* pop-ios-Info.plist */, - CD42CE6B1B541B1300EC9556 /* module.modulemap */, - ); - name = "Supporting Files (iOS)"; - path = "pop-tests"; - sourceTree = SOURCE_ROOT; - }; - EC7E319C18C93D6500B38170 /* Supporting Files (OS X) */ = { - isa = PBXGroup; - children = ( - 1818937D1B3B79D7002C4A59 /* pop-tests-osx-Info.plist */, - ); - name = "Supporting Files (OS X)"; - path = "pop-tests-osx"; - sourceTree = SOURCE_ROOT; - }; - EC882A7518C91983007829CC /* pop-tests */ = { - isa = PBXGroup; - children = ( - EC99974917568DAD00A73F49 /* POPAnimatable.h */, - EC99974A17568DAD00A73F49 /* POPAnimatable.mm */, - EC6F55A3175E6641008D995D /* POPBaseAnimationTests.h */, - EC6F55A4175E6641008D995D /* POPBaseAnimationTests.mm */, - EC191239162FB53A00E0CC76 /* POPAnimationTests.mm */, - EC3F125916FB728B00922E3A /* POPAnimationMRRTests.mm */, - EC3F125B16FB78E800922E3A /* POPAnimationTestsExtras.h */, - EC3F125C16FB78E800922E3A /* POPAnimationTestsExtras.mm */, - EC91D51B16FCC45C00E22B47 /* POPAnimatablePropertyTests.mm */, - EC6F55A1175E654B008D995D /* POPDecayAnimationTests.mm */, - EC6F55AA175E6B11008D995D /* POPSpringAnimationTests.mm */, - EC7D2CFB1795AB3100E50A78 /* POPEaseInEaseOutAnimationTests.mm */, - EC72875418E13348006EEE54 /* POPCustomAnimationTests.mm */, - EC6C098819141BBD00F8EA96 /* POPBasicAnimationTests.mm */, - 0755AE981BEA197E0094AB41 /* Supporting Files (tvOS) */, - EC882A7618C91983007829CC /* Supporting Files (iOS) */, - EC7E319C18C93D6500B38170 /* Supporting Files (OS X) */, - ); - path = "pop-tests"; - sourceTree = ""; - }; - EC882A7618C91983007829CC /* Supporting Files (iOS) */ = { - isa = PBXGroup; - children = ( - EC882A7718C91983007829CC /* pop-tests-ios-Info.plist */, - ); - name = "Supporting Files (iOS)"; - sourceTree = ""; - }; - EC8F015918FFBD7A00DF8905 /* Animations */ = { - isa = PBXGroup; - children = ( - EC191288162FB5B700E0CC76 /* POPAnimation.h */, - EC191289162FB5B700E0CC76 /* POPAnimation.mm */, - EC19128A162FB5B700E0CC76 /* POPAnimationInternal.h */, - EC1CD94E18D80A5C00DE2649 /* POPAnimationPrivate.h */, - EC8F013E18FFBBD300DF8905 /* POPPropertyAnimation.h */, - EC8F014A18FFBC8200DF8905 /* POPPropertyAnimation.mm */, - EC8F014418FFBC2D00DF8905 /* POPPropertyAnimationInternal.h */, - EC8F014D18FFBD3E00DF8905 /* POPBasicAnimation.h */, - EC8F014E18FFBD3E00DF8905 /* POPBasicAnimation.mm */, - EC8F015318FFBD5600DF8905 /* POPBasicAnimationInternal.h */, - 5E17BB1E17457345009842B6 /* POPCustomAnimation.h */, - 5E17BB1F17457345009842B6 /* POPCustomAnimation.mm */, - EC8F015A18FFBE8C00DF8905 /* POPDecayAnimation.h */, - EC8F015B18FFBE8C00DF8905 /* POPDecayAnimation.mm */, - EC8F016018FFBE9D00DF8905 /* POPDecayAnimationInternal.h */, - EC8F016618FFBEB500DF8905 /* POPSpringAnimation.h */, - EC8F016718FFBEB500DF8905 /* POPSpringAnimation.mm */, - EC8F016C18FFBEC200DF8905 /* POPSpringAnimationInternal.h */, - ); - name = Animations; - sourceTree = ""; - }; - EC8F017218FFC44800DF8905 /* Utility */ = { - isa = PBXGroup; - children = ( - EC91E96D18C014DE0025B8AD /* POPAction.h */, - EC67007018D3D89F00F7387F /* POPCGUtils.h */, - EC67007118D3D89F00F7387F /* POPCGUtils.mm */, - EC91E95F18C00EC90025B8AD /* POPDefines.h */, - ECD80F0F18CFD2EF00AE4303 /* POPGeometry.h */, - ECD80F1018CFD2EF00AE4303 /* POPGeometry.mm */, - EC94B07B17D95CAA003CE2C8 /* POPLayerExtras.h */, - EC94B07C17D95CAA003CE2C8 /* POPLayerExtras.mm */, - EC6465CE1794B4660014176F /* POPMath.h */, - EC6465CF1794B4660014176F /* POPMath.mm */, - 90AA30B618988BBE00E3BDF7 /* POPSpringSolver.h */, - EC70AC4318CCF4FC0067018C /* POPVector.h */, - EC70AC4218CCF4FC0067018C /* POPVector.mm */, - ); - name = Utility; - sourceTree = ""; - }; - EC8F017318FFC4CB00DF8905 /* Engine */ = { - isa = PBXGroup; - children = ( - EC19128E162FB5B700E0CC76 /* POPAnimatableProperty.h */, - EC19128F162FB5B700E0CC76 /* POPAnimatableProperty.mm */, - 5C8B2FC91E847C1000A6A646 /* POPAnimatablePropertyTypes.h */, - EC9997531756A0C300A73F49 /* POPAnimationEvent.h */, - EC9997541756A0C300A73F49 /* POPAnimationEvent.mm */, - EC9997571756A17B00A73F49 /* POPAnimationEventInternal.h */, - EC0AE12F16BC73CE001DA2CE /* POPAnimationExtras.h */, - EC0AE13016BC73CE001DA2CE /* POPAnimationExtras.mm */, - EC95538E1743E278001E6AF2 /* POPAnimationRuntime.h */, - EC95538F1743E278001E6AF2 /* POPAnimationRuntime.mm */, - EC35DB2618EE3E820023E077 /* POPAnimationTracer.h */, - EC35DB2718EE3E820023E077 /* POPAnimationTracer.mm */, - EC35DB2818EE3E820023E077 /* POPAnimationTracerInternal.h */, - EC19128B162FB5B700E0CC76 /* POPAnimator.h */, - EC19128C162FB5B700E0CC76 /* POPAnimator.mm */, - EC19128D162FB5B700E0CC76 /* POPAnimatorPrivate.h */, - ); - name = Engine; - sourceTree = ""; - }; - ECA0D5BE18D818C3003720DF /* WebCore */ = { - isa = PBXGroup; - children = ( - ECCBC57117D96DBD00C69976 /* FloatConversion.h */, - EC94B07817D95447003CE2C8 /* TransformationMatrix.h */, - EC94B07717D95447003CE2C8 /* TransformationMatrix.cpp */, - ECA0D5BF18D8196A003720DF /* UnitBezier.h */, - ); - name = WebCore; - sourceTree = ""; - }; - ECC1DB0718CA291B008C7DEA /* Configuration */ = { - isa = PBXGroup; - children = ( - ECC1DB0B18CA291B008C7DEA /* Compiler.xcconfig */, - ECC1DB1118CA291B008C7DEA /* Project */, - ECC1DB1918CA291B008C7DEA /* Product */, - ); - path = Configuration; - sourceTree = ""; - }; - ECC1DB1118CA291B008C7DEA /* Project */ = { - isa = PBXGroup; - children = ( - ECC1DB1218CA291B008C7DEA /* Project-Debug.xcconfig */, - ECC1DB1618CA291B008C7DEA /* Project-Profile.xcconfig */, - ECC1DB1718CA291B008C7DEA /* Project-Release.xcconfig */, - ECC1DB1818CA291B008C7DEA /* Project.xcconfig */, - ); - path = Project; - sourceTree = ""; - }; - ECC1DB1918CA291B008C7DEA /* Product */ = { - isa = PBXGroup; - children = ( - ECC1DB1A18CA291B008C7DEA /* StaticLibrary.xcconfig */, - 04C0670F1B8D577C00ED0525 /* Framework.xcconfig */, - ECC1DB1D18CA291B008C7DEA /* ApplicationTests.xcconfig */, - ECC1DB1E18CA291B008C7DEA /* LogicTests.xcconfig */, - ); - path = Product; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 0755AE4C1BEA15950094AB41 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0755AE7A1BEA17C70094AB41 /* POPAnimationTracer.h in Headers */, - 0755AE811BEA17EF0094AB41 /* POPGeometry.h in Headers */, - 0755AE7C1BEA17CF0094AB41 /* POPAnimator.h in Headers */, - 0755AE751BEA17B30094AB41 /* POPAnimationEvent.h in Headers */, - 0755AE691BEA17840094AB41 /* POPBasicAnimation.h in Headers */, - 0755AE731BEA17AD0094AB41 /* POPAnimatableProperty.h in Headers */, - 0755AE651BEA17620094AB41 /* POP.h in Headers */, - 0755AE771BEA17BC0094AB41 /* POPAnimationExtras.h in Headers */, - 0755AE671BEA17780094AB41 /* POPAnimationPrivate.h in Headers */, - 5C8B2FCC1E847C4700A6A646 /* POPAnimatablePropertyTypes.h in Headers */, - 0755AE831BEA17F50094AB41 /* POPLayerExtras.h in Headers */, - 0755AE681BEA177C0094AB41 /* POPPropertyAnimation.h in Headers */, - 0755AE6C1BEA17980094AB41 /* POPSpringAnimation.h in Headers */, - 0755AE7E1BEA17D60094AB41 /* POPAnimatorPrivate.h in Headers */, - 0755AE6A1BEA178B0094AB41 /* POPCustomAnimation.h in Headers */, - 0755AE6B1BEA17930094AB41 /* POPDecayAnimation.h in Headers */, - 0BB8E7BA20A498C900AAA7F1 /* POPVector.h in Headers */, - 0755AE661BEA17670094AB41 /* POPAnimation.h in Headers */, - 0755AE801BEA17EA0094AB41 /* POPDefines.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0B6BE74519FFD3B900762101 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0B6BE76919FFD40700762101 /* POP.h in Headers */, - 0B6BE76B19FFD41500762101 /* POPDefines.h in Headers */, - 0B6BE77419FFD48700762101 /* POPAnimatableProperty.h in Headers */, - 0B6BE77619FFD49A00762101 /* POPAnimation.h in Headers */, - 0B6BE76A19FFD41100762101 /* POPAnimationEvent.h in Headers */, - 0B6BE76D19FFD42700762101 /* POPAnimationExtras.h in Headers */, - 0B6BE76819FFD3FF00762101 /* POPAnimationTracer.h in Headers */, - 0B6BE77519FFD49100762101 /* POPAnimator.h in Headers */, - 0B6BE77319FFD47F00762101 /* POPBasicAnimation.h in Headers */, - 5C8B2FCB1E847C4700A6A646 /* POPAnimatablePropertyTypes.h in Headers */, - 0B6BE76E19FFD43800762101 /* POPCustomAnimation.h in Headers */, - 0B6BE76C19FFD41D00762101 /* POPDecayAnimation.h in Headers */, - 0B6BE77819FFD4AB00762101 /* POPGeometry.h in Headers */, - 0B6BE77019FFD46600762101 /* POPLayerExtras.h in Headers */, - 0B6BE77219FFD47800762101 /* POPPropertyAnimation.h in Headers */, - 0B6BE76F19FFD44000762101 /* POPSpringAnimation.h in Headers */, - 0BB8E7B920A498AA00AAA7F1 /* POPVector.h in Headers */, - 0B6BE77119FFD46F00762101 /* POPAnimatorPrivate.h in Headers */, - 0B6BE77719FFD4A300762101 /* POPAnimationPrivate.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC191294162FB5DD00E0CC76 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ECD80F1118CFD2EF00AE4303 /* POPGeometry.h in Headers */, - EC1CD95018D80A5C00DE2649 /* POPAnimationPrivate.h in Headers */, - EC191295162FB5EC00E0CC76 /* POPAnimation.h in Headers */, - EC191297162FB5EC00E0CC76 /* POPAnimator.h in Headers */, - EC35DB2D18EE3E820023E077 /* POPAnimationTracerInternal.h in Headers */, - EC191299162FB5EC00E0CC76 /* POPAnimatableProperty.h in Headers */, - EC8F014F18FFBD3E00DF8905 /* POPBasicAnimation.h in Headers */, - EC8F014018FFBBD300DF8905 /* POPPropertyAnimation.h in Headers */, - EC191296162FB5EC00E0CC76 /* POPAnimationInternal.h in Headers */, - EC191298162FB5EC00E0CC76 /* POPAnimatorPrivate.h in Headers */, - ECCBC57217D96DBD00C69976 /* FloatConversion.h in Headers */, - EC94B07D17D95CAA003CE2C8 /* POPLayerExtras.h in Headers */, - EC8F016818FFBEB500DF8905 /* POPSpringAnimation.h in Headers */, - 5E17BB2017457345009842B6 /* POPCustomAnimation.h in Headers */, - EC67007218D3D89F00F7387F /* POPCGUtils.h in Headers */, - EC8F016218FFBE9D00DF8905 /* POPDecayAnimationInternal.h in Headers */, - EC0AE13116BC73CE001DA2CE /* POPAnimationExtras.h in Headers */, - EC70AC4618CCF4FC0067018C /* POPVector.h in Headers */, - EC91E96E18C014DE0025B8AD /* POPAction.h in Headers */, - 90AA30B718988BBE00E3BDF7 /* POPSpringSolver.h in Headers */, - EC8F014618FFBC2D00DF8905 /* POPPropertyAnimationInternal.h in Headers */, - EC8F015C18FFBE8C00DF8905 /* POPDecayAnimation.h in Headers */, - EC91E96018C00EC90025B8AD /* POPDefines.h in Headers */, - EC9553901743E278001E6AF2 /* POPAnimationRuntime.h in Headers */, - EC6465D01794B4660014176F /* POPMath.h in Headers */, - EC8F016E18FFBEC200DF8905 /* POPSpringAnimationInternal.h in Headers */, - EC9997551756A0C300A73F49 /* POPAnimationEvent.h in Headers */, - ECA94D0D18ECAE82002E4CEB /* POP.h in Headers */, - EC9997591756A17B00A73F49 /* POPAnimationEventInternal.h in Headers */, - EC94B07A17D95447003CE2C8 /* TransformationMatrix.h in Headers */, - EC8F015518FFBD5600DF8905 /* POPBasicAnimationInternal.h in Headers */, - 5C8B2FCA1E847C1000A6A646 /* POPAnimatablePropertyTypes.h in Headers */, - EC35DB2918EE3E820023E077 /* POPAnimationTracer.h in Headers */, - ECA0D5C018D8196A003720DF /* UnitBezier.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC68857C18C7B60000C6194C /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ECD80F1218CFD2EF00AE4303 /* POPGeometry.h in Headers */, - EC1CD95118D80A5C00DE2649 /* POPAnimationPrivate.h in Headers */, - EC6885D118C7BD8500C6194C /* TransformationMatrix.h in Headers */, - EC6885B718C7BD2600C6194C /* POPAnimationEventInternal.h in Headers */, - EC35DB2E18EE3E820023E077 /* POPAnimationTracerInternal.h in Headers */, - EC6885C818C7BD5F00C6194C /* POPLayerExtras.h in Headers */, - EC8F015018FFBD3E00DF8905 /* POPBasicAnimation.h in Headers */, - EC8F014118FFBBD300DF8905 /* POPPropertyAnimation.h in Headers */, - EC6885BB18C7BD3700C6194C /* POPMath.h in Headers */, - EC6885C418C7BD5100C6194C /* POPAnimatorPrivate.h in Headers */, - EC6885C518C7BD5500C6194C /* POPCustomAnimation.h in Headers */, - EC6885CA18C7BD6500C6194C /* FloatConversion.h in Headers */, - EC8F016918FFBEB500DF8905 /* POPSpringAnimation.h in Headers */, - EC67007318D3D89F00F7387F /* POPCGUtils.h in Headers */, - EC6885B318C7BD1500C6194C /* POPAnimation.h in Headers */, - EC8F016318FFBE9D00DF8905 /* POPDecayAnimationInternal.h in Headers */, - EC6885CF18C7BD7B00C6194C /* POPDefines.h in Headers */, - EC6885D018C7BD7F00C6194C /* POPAction.h in Headers */, - EC70AC4718CCF4FC0067018C /* POPVector.h in Headers */, - EC8F014718FFBC2D00DF8905 /* POPPropertyAnimationInternal.h in Headers */, - EC8F015D18FFBE8C00DF8905 /* POPDecayAnimation.h in Headers */, - EC6885BA18C7BD3400C6194C /* POPAnimationInternal.h in Headers */, - EC6885B518C7BD1C00C6194C /* POPAnimationEvent.h in Headers */, - EC6885B818C7BD2B00C6194C /* POPAnimationExtras.h in Headers */, - ECA94D0E18ECAE82002E4CEB /* POP.h in Headers */, - EC8F016F18FFBEC200DF8905 /* POPSpringAnimationInternal.h in Headers */, - EC6885C718C7BD5C00C6194C /* POPSpringSolver.h in Headers */, - EC6885C218C7BD4B00C6194C /* POPAnimator.h in Headers */, - EC6885B018C7BD0A00C6194C /* POPAnimatableProperty.h in Headers */, - ECA0D5C118D8196A003720DF /* UnitBezier.h in Headers */, - EC8F015618FFBD5600DF8905 /* POPBasicAnimationInternal.h in Headers */, - 5C8B2FCF1E847C4B00A6A646 /* POPAnimatablePropertyTypes.h in Headers */, - EC35DB2A18EE3E820023E077 /* POPAnimationTracer.h in Headers */, - EC6885BD18C7BD3E00C6194C /* POPAnimationRuntime.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 0755AE4E1BEA15950094AB41 /* pop-tvos-framework */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0755AE571BEA15950094AB41 /* Build configuration list for PBXNativeTarget "pop-tvos-framework" */; - buildPhases = ( - 0755AE4A1BEA15950094AB41 /* Sources */, - 0755AE4B1BEA15950094AB41 /* Frameworks */, - 0755AE4C1BEA15950094AB41 /* Headers */, - 0755AE4D1BEA15950094AB41 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "pop-tvos-framework"; - productName = "pop-tvos-framework"; - productReference = 0755AE4F1BEA15950094AB41 /* pop.framework */; - productType = "com.apple.product-type.framework"; - }; - 0755AE8B1BEA19580094AB41 /* pop-tests-tvos */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0755AE941BEA19580094AB41 /* Build configuration list for PBXNativeTarget "pop-tests-tvos" */; - buildPhases = ( - 438D7049A40532D60B1CFFD1 /* [CP] Check Pods Manifest.lock */, - 0755AE881BEA19580094AB41 /* Sources */, - 0755AE891BEA19580094AB41 /* Frameworks */, - 0755AE8A1BEA19580094AB41 /* Resources */, - 3A53D0B6BA95C3BBF6D969C3 /* [CP] Embed Pods Frameworks */, - C1BD52275F7F60A567C78D67 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - 0755AE931BEA19580094AB41 /* PBXTargetDependency */, - ); - name = "pop-tests-tvos"; - productName = "pop-tests-tvos"; - productReference = 0755AE8C1BEA19580094AB41 /* pop-tests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 0B6BE74719FFD3B900762101 /* pop-ios-framework */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0B6BE75B19FFD3B900762101 /* Build configuration list for PBXNativeTarget "pop-ios-framework" */; - buildPhases = ( - 0B6BE74319FFD3B900762101 /* Sources */, - 0B6BE74419FFD3B900762101 /* Frameworks */, - 0B6BE74519FFD3B900762101 /* Headers */, - 0B6BE74619FFD3B900762101 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "pop-ios-framework"; - productName = "pop-ios"; - productReference = 0B6BE74819FFD3B900762101 /* pop.framework */; - productType = "com.apple.product-type.framework"; - }; - EC191217162FB53A00E0CC76 /* pop-ios-static */ = { - isa = PBXNativeTarget; - buildConfigurationList = EC19123D162FB53A00E0CC76 /* Build configuration list for PBXNativeTarget "pop-ios-static" */; - buildPhases = ( - EC191214162FB53A00E0CC76 /* Sources */, - EC191215162FB53A00E0CC76 /* Frameworks */, - EC191216162FB53A00E0CC76 /* CopyFiles */, - EC191294162FB5DD00E0CC76 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "pop-ios-static"; - productName = POP; - productReference = EC191218162FB53A00E0CC76 /* libpop.a */; - productType = "com.apple.product-type.library.static"; - }; - EC68857E18C7B60000C6194C /* pop-osx-framework */ = { - isa = PBXNativeTarget; - buildConfigurationList = EC6885A318C7B60100C6194C /* Build configuration list for PBXNativeTarget "pop-osx-framework" */; - buildPhases = ( - EC68857A18C7B60000C6194C /* Sources */, - EC68857B18C7B60000C6194C /* Frameworks */, - EC68857C18C7B60000C6194C /* Headers */, - EC68857D18C7B60000C6194C /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "pop-osx-framework"; - productName = POP; - productReference = EC68857F18C7B60000C6194C /* pop.framework */; - productType = "com.apple.product-type.framework"; - }; - EC7E319818C93D6500B38170 /* pop-tests-osx */ = { - isa = PBXNativeTarget; - buildConfigurationList = EC7E31A618C93D6600B38170 /* Build configuration list for PBXNativeTarget "pop-tests-osx" */; - buildPhases = ( - F4415E40040FA8BD0169207E /* [CP] Check Pods Manifest.lock */, - EC7E319518C93D6500B38170 /* Sources */, - EC7E319618C93D6500B38170 /* Frameworks */, - EC7E319718C93D6500B38170 /* Resources */, - 8C22F2D1DF67D20F75F93301 /* [CP] Embed Pods Frameworks */, - 87C11C7E3C11F27907D777EE /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - EC7E31A518C93D6600B38170 /* PBXTargetDependency */, - ); - name = "pop-tests-osx"; - productName = "pop-tests-osx"; - productReference = EC7E319918C93D6500B38170 /* pop-tests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - ECF01ED218C92B7F009E0AD1 /* pop-tests-ios */ = { - isa = PBXNativeTarget; - buildConfigurationList = ECF01EE218C92B80009E0AD1 /* Build configuration list for PBXNativeTarget "pop-tests-ios" */; - buildPhases = ( - CA15F9BB92BDB47C58EBAC0D /* [CP] Check Pods Manifest.lock */, - ECF01ECF18C92B7F009E0AD1 /* Sources */, - ECF01ED018C92B7F009E0AD1 /* Frameworks */, - ECF01ED118C92B7F009E0AD1 /* Resources */, - CFC3BF04D331650C5B4A16CC /* [CP] Embed Pods Frameworks */, - 691A59DA7BDEDCB681FC9C87 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - 816FEE231FFC68370069EF43 /* PBXTargetDependency */, - ); - name = "pop-tests-ios"; - productName = "pop-tests"; - productReference = ECF01ED318C92B7F009E0AD1 /* pop-tests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - EC19120F162FB53A00E0CC76 /* Project object */ = { - isa = PBXProject; - attributes = { - LastTestingUpgradeCheck = 0700; - LastUpgradeCheck = 1000; - ORGANIZATIONNAME = Facebook; - TargetAttributes = { - 0755AE4E1BEA15950094AB41 = { - CreatedOnToolsVersion = 7.1; - }; - 0755AE8B1BEA19580094AB41 = { - CreatedOnToolsVersion = 7.1; - }; - 0B6BE74719FFD3B900762101 = { - CreatedOnToolsVersion = 6.1; - }; - EC7E319818C93D6500B38170 = { - TestTargetID = EC68857E18C7B60000C6194C; - }; - ECF01ED218C92B7F009E0AD1 = { - TestTargetID = EC191217162FB53A00E0CC76; - }; - }; - }; - buildConfigurationList = EC191212162FB53A00E0CC76 /* Build configuration list for PBXProject "pop" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = EC19120D162FB53A00E0CC76; - productRefGroup = EC191219162FB53A00E0CC76 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - EC191217162FB53A00E0CC76 /* pop-ios-static */, - 0B6BE74719FFD3B900762101 /* pop-ios-framework */, - EC68857E18C7B60000C6194C /* pop-osx-framework */, - 0755AE4E1BEA15950094AB41 /* pop-tvos-framework */, - ECF01ED218C92B7F009E0AD1 /* pop-tests-ios */, - EC7E319818C93D6500B38170 /* pop-tests-osx */, - 0755AE8B1BEA19580094AB41 /* pop-tests-tvos */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 0755AE4D1BEA15950094AB41 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0755AE8A1BEA19580094AB41 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0B6BE74619FFD3B900762101 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1818937E1B3B79D7002C4A59 /* pop-tests-osx-Info.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC68857D18C7B60000C6194C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC7E319718C93D6500B38170 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - ECF01ED118C92B7F009E0AD1 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3A53D0B6BA95C3BBF6D969C3 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Tests-pop-tests-tvos/Pods-Tests-pop-tests-tvos-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 438D7049A40532D60B1CFFD1 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Tests-pop-tests-tvos-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 691A59DA7BDEDCB681FC9C87 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Tests-pop-tests-ios/Pods-Tests-pop-tests-ios-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 87C11C7E3C11F27907D777EE /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Tests-pop-tests-osx/Pods-Tests-pop-tests-osx-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 8C22F2D1DF67D20F75F93301 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Tests-pop-tests-osx/Pods-Tests-pop-tests-osx-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - C1BD52275F7F60A567C78D67 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Tests-pop-tests-tvos/Pods-Tests-pop-tests-tvos-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - CA15F9BB92BDB47C58EBAC0D /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Tests-pop-tests-ios-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - CFC3BF04D331650C5B4A16CC /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Tests-pop-tests-ios/Pods-Tests-pop-tests-ios-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - F4415E40040FA8BD0169207E /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Tests-pop-tests-osx-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 0755AE4A1BEA15950094AB41 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0755AE781BEA17C00094AB41 /* POPAnimationExtras.mm in Sources */, - 0755AE711BEA17A70094AB41 /* POPDecayAnimation.mm in Sources */, - 0755AE741BEA17B10094AB41 /* POPAnimatableProperty.mm in Sources */, - 0755AE821BEA17F20094AB41 /* POPGeometry.mm in Sources */, - 0755AE6D1BEA17A70094AB41 /* POPAnimation.mm in Sources */, - 0755AE7D1BEA17D30094AB41 /* POPAnimator.mm in Sources */, - 0755AE7B1BEA17CA0094AB41 /* POPAnimationTracer.mm in Sources */, - 0755AE861BEA18060094AB41 /* POPVector.mm in Sources */, - 0755AE841BEA17F90094AB41 /* POPLayerExtras.mm in Sources */, - 0755AE6E1BEA17A70094AB41 /* POPPropertyAnimation.mm in Sources */, - 0755AE6F1BEA17A70094AB41 /* POPBasicAnimation.mm in Sources */, - 0755AE761BEA17B80094AB41 /* POPAnimationEvent.mm in Sources */, - 0755AE851BEA17FD0094AB41 /* POPMath.mm in Sources */, - 0755AE871BEA180F0094AB41 /* TransformationMatrix.cpp in Sources */, - 0755AE791BEA17C40094AB41 /* POPAnimationRuntime.mm in Sources */, - 0755AE7F1BEA17E70094AB41 /* POPCGUtils.mm in Sources */, - 0755AE701BEA17A70094AB41 /* POPCustomAnimation.mm in Sources */, - 0755AE721BEA17A70094AB41 /* POPSpringAnimation.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0755AE881BEA19580094AB41 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0755AE9D1BEA19F40094AB41 /* POPAnimationTestsExtras.mm in Sources */, - 0755AE991BEA19F40094AB41 /* POPAnimatable.mm in Sources */, - 0755AE9E1BEA19F40094AB41 /* POPAnimatablePropertyTests.mm in Sources */, - 0755AE9F1BEA19F40094AB41 /* POPDecayAnimationTests.mm in Sources */, - 0755AEA11BEA19F40094AB41 /* POPEaseInEaseOutAnimationTests.mm in Sources */, - 0755AE9A1BEA19F40094AB41 /* POPBaseAnimationTests.mm in Sources */, - 0755AEA31BEA19F40094AB41 /* POPBasicAnimationTests.mm in Sources */, - 0755AE9C1BEA19F40094AB41 /* POPAnimationMRRTests.mm in Sources */, - 0755AEA21BEA19F40094AB41 /* POPCustomAnimationTests.mm in Sources */, - 0755AE9B1BEA19F40094AB41 /* POPAnimationTests.mm in Sources */, - 0755AEA01BEA19F40094AB41 /* POPSpringAnimationTests.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0B6BE74319FFD3B900762101 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0B6BE7D119FFD92700762101 /* POPAnimation.mm in Sources */, - 0B6BE7D219FFD92700762101 /* POPPropertyAnimation.mm in Sources */, - 0B6BE7D319FFD92700762101 /* POPBasicAnimation.mm in Sources */, - 0B6BE7D419FFD92700762101 /* POPCustomAnimation.mm in Sources */, - 0B6BE7D519FFD92700762101 /* POPDecayAnimation.mm in Sources */, - 0B6BE7D619FFD92700762101 /* POPSpringAnimation.mm in Sources */, - 0B6BE7D719FFD92700762101 /* POPAnimatableProperty.mm in Sources */, - 0B6BE7D819FFD92700762101 /* POPAnimationEvent.mm in Sources */, - 0B6BE7D919FFD92700762101 /* POPAnimationExtras.mm in Sources */, - 0B6BE7DA19FFD92700762101 /* POPAnimationRuntime.mm in Sources */, - 0B6BE7DB19FFD92700762101 /* POPAnimationTracer.mm in Sources */, - 0B6BE7DC19FFD92700762101 /* POPAnimator.mm in Sources */, - 0B6BE7DD19FFD92700762101 /* POPCGUtils.mm in Sources */, - 0B6BE7DE19FFD92700762101 /* POPGeometry.mm in Sources */, - 0B6BE7DF19FFD92700762101 /* POPLayerExtras.mm in Sources */, - 0B6BE7E019FFD92800762101 /* POPMath.mm in Sources */, - 0B6BE7E119FFD92800762101 /* POPVector.mm in Sources */, - 0B6BE7D019FFD90F00762101 /* TransformationMatrix.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC191214162FB53A00E0CC76 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EC191291162FB5B700E0CC76 /* POPAnimation.mm in Sources */, - EC6465D11794B4660014176F /* POPMath.mm in Sources */, - EC8F014B18FFBC8200DF8905 /* POPPropertyAnimation.mm in Sources */, - EC8F016A18FFBEB500DF8905 /* POPSpringAnimation.mm in Sources */, - EC191292162FB5B700E0CC76 /* POPAnimator.mm in Sources */, - EC94B07917D95447003CE2C8 /* TransformationMatrix.cpp in Sources */, - EC70AC4418CCF4FC0067018C /* POPVector.mm in Sources */, - EC191293162FB5B700E0CC76 /* POPAnimatableProperty.mm in Sources */, - EC0AE13216BC73CE001DA2CE /* POPAnimationExtras.mm in Sources */, - EC9553911743E278001E6AF2 /* POPAnimationRuntime.mm in Sources */, - EC94B07E17D95CAA003CE2C8 /* POPLayerExtras.mm in Sources */, - EC35DB2B18EE3E820023E077 /* POPAnimationTracer.mm in Sources */, - 5E17BB2117457345009842B6 /* POPCustomAnimation.mm in Sources */, - EC67007418D3D89F00F7387F /* POPCGUtils.mm in Sources */, - ECD80F1318CFD2EF00AE4303 /* POPGeometry.mm in Sources */, - EC8F015E18FFBE8C00DF8905 /* POPDecayAnimation.mm in Sources */, - EC9997561756A0C300A73F49 /* POPAnimationEvent.mm in Sources */, - EC8F015118FFBD3E00DF8905 /* POPBasicAnimation.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC68857A18C7B60000C6194C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EC6885C318C7BD4E00C6194C /* POPAnimator.mm in Sources */, - EC6885B618C7BD2200C6194C /* POPAnimationEvent.mm in Sources */, - EC8F014C18FFBC8200DF8905 /* POPPropertyAnimation.mm in Sources */, - EC8F016B18FFBEB500DF8905 /* POPSpringAnimation.mm in Sources */, - EC6885BE18C7BD4000C6194C /* POPAnimationRuntime.mm in Sources */, - EC6885B418C7BD1A00C6194C /* POPAnimation.mm in Sources */, - EC70AC4518CCF4FC0067018C /* POPVector.mm in Sources */, - EC6885BC18C7BD3A00C6194C /* POPMath.mm in Sources */, - EC6885D218C7BD8900C6194C /* TransformationMatrix.cpp in Sources */, - EC6885B118C7BD1000C6194C /* POPAnimatableProperty.mm in Sources */, - EC6885C618C7BD5900C6194C /* POPCustomAnimation.mm in Sources */, - EC35DB2C18EE3E820023E077 /* POPAnimationTracer.mm in Sources */, - EC67007518D3D89F00F7387F /* POPCGUtils.mm in Sources */, - ECD80F1418CFD2EF00AE4303 /* POPGeometry.mm in Sources */, - EC6885C918C7BD6300C6194C /* POPLayerExtras.mm in Sources */, - EC8F015F18FFBE8C00DF8905 /* POPDecayAnimation.mm in Sources */, - EC6885B918C7BD3000C6194C /* POPAnimationExtras.mm in Sources */, - EC8F015218FFBD3E00DF8905 /* POPBasicAnimation.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC7E319518C93D6500B38170 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EC72875618E13348006EEE54 /* POPCustomAnimationTests.mm in Sources */, - EC7E31AB18C9419000B38170 /* POPAnimatable.mm in Sources */, - EC7E31AD18C9419600B38170 /* POPAnimationTests.mm in Sources */, - EC6C098A19141BBD00F8EA96 /* POPBasicAnimationTests.mm in Sources */, - EC7E31B318C941A700B38170 /* POPEaseInEaseOutAnimationTests.mm in Sources */, - EC7E31AE18C9419900B38170 /* POPAnimationMRRTests.mm in Sources */, - EC7E31AC18C9419200B38170 /* POPBaseAnimationTests.mm in Sources */, - EC67007718D3D96600F7387F /* POPCGUtils.mm in Sources */, - EC7E31B118C941A200B38170 /* POPDecayAnimationTests.mm in Sources */, - EC7E31B018C9419F00B38170 /* POPAnimatablePropertyTests.mm in Sources */, - EC7E31AF18C9419C00B38170 /* POPAnimationTestsExtras.mm in Sources */, - EC7E31B218C941A400B38170 /* POPSpringAnimationTests.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - ECF01ECF18C92B7F009E0AD1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EC72875518E13348006EEE54 /* POPCustomAnimationTests.mm in Sources */, - ECDA0CC618C92BC900D14897 /* POPAnimatable.mm in Sources */, - ECDA0CC818C92BD200D14897 /* POPAnimationTests.mm in Sources */, - EC6C098919141BBD00F8EA96 /* POPBasicAnimationTests.mm in Sources */, - ECDA0CCE18C92BD200D14897 /* POPEaseInEaseOutAnimationTests.mm in Sources */, - ECDA0CC918C92BD200D14897 /* POPAnimationMRRTests.mm in Sources */, - ECDA0CC718C92BD200D14897 /* POPBaseAnimationTests.mm in Sources */, - EC67007618D3D96500F7387F /* POPCGUtils.mm in Sources */, - ECDA0CCC18C92BD200D14897 /* POPDecayAnimationTests.mm in Sources */, - ECDA0CCB18C92BD200D14897 /* POPAnimatablePropertyTests.mm in Sources */, - ECDA0CCA18C92BD200D14897 /* POPAnimationTestsExtras.mm in Sources */, - ECDA0CCD18C92BD200D14897 /* POPSpringAnimationTests.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 0755AE931BEA19580094AB41 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0755AE4E1BEA15950094AB41 /* pop-tvos-framework */; - targetProxy = 0755AE921BEA19580094AB41 /* PBXContainerItemProxy */; - }; - 816FEE231FFC68370069EF43 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0B6BE74719FFD3B900762101 /* pop-ios-framework */; - targetProxy = 816FEE221FFC68370069EF43 /* PBXContainerItemProxy */; - }; - EC7E31A518C93D6600B38170 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = EC68857E18C7B60000C6194C /* pop-osx-framework */; - targetProxy = EC7E31A418C93D6600B38170 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 0755AE541BEA15950094AB41 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 04C0670F1B8D577C00ED0525 /* Framework.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(PROJECT_DIR)/pop/pop-tvos-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "$(PROJECT_DIR)/pop/module.modulemap"; - PRODUCT_BUNDLE_IDENTIFIER = com.facebook.pop; - PRODUCT_NAME = pop; - SDKROOT = appletvos; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Debug; - }; - 0755AE551BEA15950094AB41 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 04C0670F1B8D577C00ED0525 /* Framework.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(PROJECT_DIR)/pop/pop-tvos-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "$(PROJECT_DIR)/pop/module.modulemap"; - PRODUCT_BUNDLE_IDENTIFIER = com.facebook.pop; - PRODUCT_NAME = pop; - SDKROOT = appletvos; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Release; - }; - 0755AE561BEA15950094AB41 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 04C0670F1B8D577C00ED0525 /* Framework.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(PROJECT_DIR)/pop/pop-tvos-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "$(PROJECT_DIR)/pop/module.modulemap"; - PRODUCT_BUNDLE_IDENTIFIER = com.facebook.pop; - PRODUCT_NAME = pop; - SDKROOT = appletvos; - TARGETED_DEVICE_FAMILY = 3; - }; - name = Profile; - }; - 0755AE951BEA19580094AB41 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 75AB0405A39E769FDEA67DFE /* Pods-Tests-pop-tests-tvos.debug.xcconfig */; - buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(PROJECT_DIR)/pop-tests/pop-tests-tvos-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "pop-tests"; - SDKROOT = appletvos; - }; - name = Debug; - }; - 0755AE961BEA19580094AB41 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 66F8502AAF59876387597FEC /* Pods-Tests-pop-tests-tvos.release.xcconfig */; - buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(PROJECT_DIR)/pop-tests/pop-tests-tvos-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "pop-tests"; - SDKROOT = appletvos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 0755AE971BEA19580094AB41 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 55EA9621113E7E17CB5A65C3 /* Pods-Tests-pop-tests-tvos.profile.xcconfig */; - buildSettings = { - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(PROJECT_DIR)/pop-tests/pop-tests-tvos-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "pop-tests"; - SDKROOT = appletvos; - VALIDATE_PRODUCT = YES; - }; - name = Profile; - }; - 0B6BE75C19FFD3B900762101 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 04C0670F1B8D577C00ED0525 /* Framework.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(PROJECT_DIR)/pop/pop-ios-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "$(PROJECT_DIR)/pop/module.modulemap"; - PRODUCT_BUNDLE_IDENTIFIER = com.facebook.pop; - PRODUCT_NAME = pop; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 0B6BE75E19FFD3B900762101 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 04C0670F1B8D577C00ED0525 /* Framework.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(PROJECT_DIR)/pop/pop-ios-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "$(PROJECT_DIR)/pop/module.modulemap"; - PRODUCT_BUNDLE_IDENTIFIER = com.facebook.pop; - PRODUCT_NAME = pop; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 0B6BE75F19FFD3B900762101 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 04C0670F1B8D577C00ED0525 /* Framework.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(PROJECT_DIR)/pop/pop-ios-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "$(PROJECT_DIR)/pop/module.modulemap"; - PRODUCT_BUNDLE_IDENTIFIER = com.facebook.pop; - PRODUCT_NAME = pop; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Profile; - }; - A2BDDD3D185A687F00838797 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = ECC1DB1618CA291B008C7DEA /* Project-Profile.xcconfig */; - buildSettings = { - }; - name = Profile; - }; - A2BDDD3E185A687F00838797 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = ECC1DB1A18CA291B008C7DEA /* StaticLibrary.xcconfig */; - buildSettings = { - PRODUCT_NAME = pop; - SDKROOT = iphoneos; - }; - name = Profile; - }; - EC19123B162FB53A00E0CC76 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = ECC1DB1218CA291B008C7DEA /* Project-Debug.xcconfig */; - buildSettings = { - }; - name = Debug; - }; - EC19123C162FB53A00E0CC76 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = ECC1DB1718CA291B008C7DEA /* Project-Release.xcconfig */; - buildSettings = { - }; - name = Release; - }; - EC19123E162FB53A00E0CC76 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = ECC1DB1A18CA291B008C7DEA /* StaticLibrary.xcconfig */; - buildSettings = { - PRODUCT_NAME = pop; - SDKROOT = iphoneos; - }; - name = Debug; - }; - EC19123F162FB53A00E0CC76 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = ECC1DB1A18CA291B008C7DEA /* StaticLibrary.xcconfig */; - buildSettings = { - PRODUCT_NAME = pop; - SDKROOT = iphoneos; - }; - name = Release; - }; - EC6885A418C7B60100C6194C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 04C0670F1B8D577C00ED0525 /* Framework.xcconfig */; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = "$(PROJECT_DIR)/pop/pop-osx-Info.plist"; - INSTALL_PATH = "@rpath"; - PRODUCT_BUNDLE_IDENTIFIER = com.facebook.pop; - PRODUCT_NAME = pop; - SDKROOT = macosx; - }; - name = Debug; - }; - EC6885A618C7B60100C6194C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 04C0670F1B8D577C00ED0525 /* Framework.xcconfig */; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = "$(PROJECT_DIR)/pop/pop-osx-Info.plist"; - INSTALL_PATH = "@rpath"; - PRODUCT_BUNDLE_IDENTIFIER = com.facebook.pop; - PRODUCT_NAME = pop; - SDKROOT = macosx; - }; - name = Release; - }; - EC6885A718C7B60100C6194C /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 04C0670F1B8D577C00ED0525 /* Framework.xcconfig */; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = "$(PROJECT_DIR)/pop/pop-osx-Info.plist"; - INSTALL_PATH = "@rpath"; - PRODUCT_BUNDLE_IDENTIFIER = com.facebook.pop; - PRODUCT_NAME = pop; - SDKROOT = macosx; - }; - name = Profile; - }; - EC7E31A718C93D6600B38170 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5677DA2A8DA5A9DF667D2F25 /* Pods-Tests-pop-tests-osx.debug.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(DEVELOPER_FRAMEWORKS_DIR)", - "$(inherited)", - ); - INFOPLIST_FILE = "$(PROJECT_DIR)/pop-tests/pop-tests-osx-Info.plist"; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "pop-tests"; - SDKROOT = macosx; - }; - name = Debug; - }; - EC7E31A918C93D6600B38170 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 55AC0296922C5E9D7B593C59 /* Pods-Tests-pop-tests-osx.release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(DEVELOPER_FRAMEWORKS_DIR)", - "$(inherited)", - ); - INFOPLIST_FILE = "$(PROJECT_DIR)/pop-tests/pop-tests-osx-Info.plist"; - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "pop-tests"; - SDKROOT = macosx; - }; - name = Release; - }; - EC7E31AA18C93D6600B38170 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 406331B5EF869E167FFA3454 /* Pods-Tests-pop-tests-osx.profile.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(DEVELOPER_FRAMEWORKS_DIR)", - "$(inherited)", - ); - INFOPLIST_FILE = "$(PROJECT_DIR)/pop-tests/pop-tests-osx-Info.plist"; - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "pop-tests"; - SDKROOT = macosx; - }; - name = Profile; - }; - ECF01EE318C92B80009E0AD1 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 84EDB88DF38CE22AC4893B65 /* Pods-Tests-pop-tests-ios.debug.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - INFOPLIST_FILE = "$(PROJECT_DIR)/pop-tests/pop-tests-ios-Info.plist"; - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "pop-tests"; - SDKROOT = iphoneos; - }; - name = Debug; - }; - ECF01EE518C92B80009E0AD1 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 85D44E5C12C69E1AC9E27D0B /* Pods-Tests-pop-tests-ios.release.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - INFOPLIST_FILE = "$(PROJECT_DIR)/pop-tests/pop-tests-ios-Info.plist"; - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "pop-tests"; - SDKROOT = iphoneos; - }; - name = Release; - }; - ECF01EE618C92B80009E0AD1 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D35FAC2FD6DFC1CC1BD1A636 /* Pods-Tests-pop-tests-ios.profile.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - INFOPLIST_FILE = "$(PROJECT_DIR)/pop-tests/pop-tests-ios-Info.plist"; - PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "pop-tests"; - SDKROOT = iphoneos; - }; - name = Profile; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 0755AE571BEA15950094AB41 /* Build configuration list for PBXNativeTarget "pop-tvos-framework" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0755AE541BEA15950094AB41 /* Debug */, - 0755AE551BEA15950094AB41 /* Release */, - 0755AE561BEA15950094AB41 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0755AE941BEA19580094AB41 /* Build configuration list for PBXNativeTarget "pop-tests-tvos" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0755AE951BEA19580094AB41 /* Debug */, - 0755AE961BEA19580094AB41 /* Release */, - 0755AE971BEA19580094AB41 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0B6BE75B19FFD3B900762101 /* Build configuration list for PBXNativeTarget "pop-ios-framework" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0B6BE75C19FFD3B900762101 /* Debug */, - 0B6BE75E19FFD3B900762101 /* Release */, - 0B6BE75F19FFD3B900762101 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EC191212162FB53A00E0CC76 /* Build configuration list for PBXProject "pop" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - EC19123B162FB53A00E0CC76 /* Debug */, - EC19123C162FB53A00E0CC76 /* Release */, - A2BDDD3D185A687F00838797 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EC19123D162FB53A00E0CC76 /* Build configuration list for PBXNativeTarget "pop-ios-static" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - EC19123E162FB53A00E0CC76 /* Debug */, - EC19123F162FB53A00E0CC76 /* Release */, - A2BDDD3E185A687F00838797 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EC6885A318C7B60100C6194C /* Build configuration list for PBXNativeTarget "pop-osx-framework" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - EC6885A418C7B60100C6194C /* Debug */, - EC6885A618C7B60100C6194C /* Release */, - EC6885A718C7B60100C6194C /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EC7E31A618C93D6600B38170 /* Build configuration list for PBXNativeTarget "pop-tests-osx" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - EC7E31A718C93D6600B38170 /* Debug */, - EC7E31A918C93D6600B38170 /* Release */, - EC7E31AA18C93D6600B38170 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - ECF01EE218C92B80009E0AD1 /* Build configuration list for PBXNativeTarget "pop-tests-ios" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECF01EE318C92B80009E0AD1 /* Debug */, - ECF01EE518C92B80009E0AD1 /* Release */, - ECF01EE618C92B80009E0AD1 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = EC19120F162FB53A00E0CC76 /* Project object */; -} diff --git a/pop.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/pop.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index c986b20f..00000000 --- a/pop.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/pop.xcodeproj/xcshareddata/xcschemes/pop-ios-framework.xcscheme b/pop.xcodeproj/xcshareddata/xcschemes/pop-ios-framework.xcscheme deleted file mode 100644 index 9765eb4e..00000000 --- a/pop.xcodeproj/xcshareddata/xcschemes/pop-ios-framework.xcscheme +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pop.xcodeproj/xcshareddata/xcschemes/pop-ios-static.xcscheme b/pop.xcodeproj/xcshareddata/xcschemes/pop-ios-static.xcscheme deleted file mode 100644 index a626b971..00000000 --- a/pop.xcodeproj/xcshareddata/xcschemes/pop-ios-static.xcscheme +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pop.xcodeproj/xcshareddata/xcschemes/pop-osx-framework.xcscheme b/pop.xcodeproj/xcshareddata/xcschemes/pop-osx-framework.xcscheme deleted file mode 100644 index 273256dd..00000000 --- a/pop.xcodeproj/xcshareddata/xcschemes/pop-osx-framework.xcscheme +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pop.xcodeproj/xcshareddata/xcschemes/pop-tvos-framework.xcscheme b/pop.xcodeproj/xcshareddata/xcschemes/pop-tvos-framework.xcscheme deleted file mode 100644 index cf8b31a3..00000000 --- a/pop.xcodeproj/xcshareddata/xcschemes/pop-tvos-framework.xcscheme +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pop.xcworkspace/contents.xcworkspacedata b/pop.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index a8fad914..00000000 --- a/pop.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/pop.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/pop.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/pop.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/pop/POP.h b/pop/POP.h deleted file mode 100644 index 291db8d2..00000000 --- a/pop/POP.h +++ /dev/null @@ -1,30 +0,0 @@ -/** - Copyright (c) 2014-present, Facebook, Inc. - All rights reserved. - - This source code is licensed under the BSD-style license found in the - LICENSE file in the root directory of this source tree. An additional grant - of patent rights can be found in the PATENTS file in the same directory. - */ - -#ifndef POP_POP_H -#define POP_POP_H - -#import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - -#endif /* POP_POP_H */ diff --git a/pop/module.modulemap b/pop/module.modulemap deleted file mode 100644 index fca69f0d..00000000 --- a/pop/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module pop { - umbrella header "POP.h" - - exclude header "POPAnimationPrivate.h" - exclude header "POPAnimatorPrivate.h" -} diff --git a/pop/pop-ios-Info.plist b/pop/pop-ios-Info.plist deleted file mode 100644 index decc0dac..00000000 --- a/pop/pop-ios-Info.plist +++ /dev/null @@ -1,28 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - com.facebook.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSHumanReadableCopyright - Copyright © 2014 Facebook. All rights reserved. - NSPrincipalClass - - - diff --git a/pop/pop-osx-Info.plist b/pop/pop-osx-Info.plist deleted file mode 100644 index 50af5f8f..00000000 --- a/pop/pop-osx-Info.plist +++ /dev/null @@ -1,30 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - - CFBundleIdentifier - com.facebook.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSHumanReadableCopyright - Copyright © 2014 Facebook. All rights reserved. - NSPrincipalClass - - - diff --git a/pop/pop-tvos-Info.plist b/pop/pop-tvos-Info.plist deleted file mode 100644 index 63f8161e..00000000 --- a/pop/pop-tvos-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - com.facebook.$(PRODUCT_NAME:rfc1034identifier) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSPrincipalClass - - -