mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-28 16:42:20 +00:00
Merge branch 'master' of github.com:airbnb/lottie-ios into add-warnings
This commit is contained in:
commit
a6e745df59
3
.gitignore
vendored
3
.gitignore
vendored
@ -11,3 +11,6 @@ Example/lottie-ios.xcworkspace/xcuserdata/
|
||||
Example/lottie-ios.xcodeproj/xcuserdata/
|
||||
.idea/
|
||||
build/
|
||||
Lottie-Screenshot/Lottie-Screenshot.xcworkspace/xcuserdata/
|
||||
Lottie-Screenshot/Lottie-Screenshot.xcodeproj/xcuserdata/
|
||||
Lottie-Screenshot/Pods/Pods.xcodeproj/xcuserdata/
|
||||
|
48
Example/Pods/Pods.xcodeproj/project.pbxproj
generated
48
Example/Pods/Pods.xcodeproj/project.pbxproj
generated
@ -64,6 +64,22 @@
|
||||
48183C981E54E1B60039F121 /* CGGeometry+LOTAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 48183C951E54E1B60039F121 /* CGGeometry+LOTAdditions.m */; };
|
||||
48183C991E54E1B60039F121 /* CGGeometry+LOTAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 48183C951E54E1B60039F121 /* CGGeometry+LOTAdditions.m */; };
|
||||
4833D2BD0666884F509A85C031D7CBCE /* LOTComposition.h in Headers */ = {isa = PBXBuildFile; fileRef = B758F16C1930B57D432706DF7B9D2107 /* LOTComposition.h */; settings = {ATTRIBUTES = (Project, ); }; };
|
||||
484EBA101E5656DD00D4CAD9 /* LOTAsset.h in Headers */ = {isa = PBXBuildFile; fileRef = 484EBA0E1E5656DD00D4CAD9 /* LOTAsset.h */; };
|
||||
484EBA111E5656DD00D4CAD9 /* LOTAsset.h in Headers */ = {isa = PBXBuildFile; fileRef = 484EBA0E1E5656DD00D4CAD9 /* LOTAsset.h */; };
|
||||
484EBA121E5656DD00D4CAD9 /* LOTAsset.m in Sources */ = {isa = PBXBuildFile; fileRef = 484EBA0F1E5656DD00D4CAD9 /* LOTAsset.m */; };
|
||||
484EBA131E5656DD00D4CAD9 /* LOTAsset.m in Sources */ = {isa = PBXBuildFile; fileRef = 484EBA0F1E5656DD00D4CAD9 /* LOTAsset.m */; };
|
||||
484EBA1D1E567CF500D4CAD9 /* LOTLayerGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 484EBA1B1E567CF500D4CAD9 /* LOTLayerGroup.h */; };
|
||||
484EBA1E1E567CF500D4CAD9 /* LOTLayerGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 484EBA1B1E567CF500D4CAD9 /* LOTLayerGroup.h */; };
|
||||
484EBA1F1E567CF500D4CAD9 /* LOTLayerGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 484EBA1C1E567CF500D4CAD9 /* LOTLayerGroup.m */; };
|
||||
484EBA201E567CF500D4CAD9 /* LOTLayerGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 484EBA1C1E567CF500D4CAD9 /* LOTLayerGroup.m */; };
|
||||
484EBA2B1E578AE200D4CAD9 /* LOTCompositionLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 484EBA291E578AE200D4CAD9 /* LOTCompositionLayer.h */; };
|
||||
484EBA2C1E578AE200D4CAD9 /* LOTCompositionLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 484EBA291E578AE200D4CAD9 /* LOTCompositionLayer.h */; };
|
||||
484EBA2D1E578AE200D4CAD9 /* LOTCompositionLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 484EBA2A1E578AE200D4CAD9 /* LOTCompositionLayer.m */; };
|
||||
484EBA2E1E578AE200D4CAD9 /* LOTCompositionLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 484EBA2A1E578AE200D4CAD9 /* LOTCompositionLayer.m */; };
|
||||
484EBA311E578BA800D4CAD9 /* LOTAssetGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 484EBA2F1E578BA800D4CAD9 /* LOTAssetGroup.h */; };
|
||||
484EBA321E578BA800D4CAD9 /* LOTAssetGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 484EBA2F1E578BA800D4CAD9 /* LOTAssetGroup.h */; };
|
||||
484EBA331E578BA800D4CAD9 /* LOTAssetGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 484EBA301E578BA800D4CAD9 /* LOTAssetGroup.m */; };
|
||||
484EBA341E578BA800D4CAD9 /* LOTAssetGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 484EBA301E578BA800D4CAD9 /* LOTAssetGroup.m */; };
|
||||
484FF8CA1E4A972500B2B4FF /* LOTStrokeShapeLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 484FF8C81E4A972500B2B4FF /* LOTStrokeShapeLayer.h */; };
|
||||
484FF8CB1E4A972500B2B4FF /* LOTStrokeShapeLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 484FF8C81E4A972500B2B4FF /* LOTStrokeShapeLayer.h */; };
|
||||
484FF8CC1E4A972500B2B4FF /* LOTStrokeShapeLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 484FF8C91E4A972500B2B4FF /* LOTStrokeShapeLayer.m */; };
|
||||
@ -243,6 +259,14 @@
|
||||
3FC6C122778B882931A442F9B6AAE024 /* lottie-ios-OSX-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "lottie-ios-OSX-prefix.pch"; sourceTree = "<group>"; };
|
||||
48183C941E54E1B60039F121 /* CGGeometry+LOTAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CGGeometry+LOTAdditions.h"; sourceTree = "<group>"; };
|
||||
48183C951E54E1B60039F121 /* CGGeometry+LOTAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CGGeometry+LOTAdditions.m"; sourceTree = "<group>"; };
|
||||
484EBA0E1E5656DD00D4CAD9 /* LOTAsset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LOTAsset.h; sourceTree = "<group>"; };
|
||||
484EBA0F1E5656DD00D4CAD9 /* LOTAsset.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LOTAsset.m; sourceTree = "<group>"; };
|
||||
484EBA1B1E567CF500D4CAD9 /* LOTLayerGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LOTLayerGroup.h; sourceTree = "<group>"; };
|
||||
484EBA1C1E567CF500D4CAD9 /* LOTLayerGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LOTLayerGroup.m; sourceTree = "<group>"; };
|
||||
484EBA291E578AE200D4CAD9 /* LOTCompositionLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LOTCompositionLayer.h; sourceTree = "<group>"; };
|
||||
484EBA2A1E578AE200D4CAD9 /* LOTCompositionLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LOTCompositionLayer.m; sourceTree = "<group>"; };
|
||||
484EBA2F1E578BA800D4CAD9 /* LOTAssetGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LOTAssetGroup.h; sourceTree = "<group>"; };
|
||||
484EBA301E578BA800D4CAD9 /* LOTAssetGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LOTAssetGroup.m; sourceTree = "<group>"; };
|
||||
484FF8C81E4A972500B2B4FF /* LOTStrokeShapeLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LOTStrokeShapeLayer.h; sourceTree = "<group>"; };
|
||||
484FF8C91E4A972500B2B4FF /* LOTStrokeShapeLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LOTStrokeShapeLayer.m; sourceTree = "<group>"; };
|
||||
4897935C31F44A855C225490165F579E /* CAAnimationGroup+LOTAnimatableGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CAAnimationGroup+LOTAnimatableGroup.m"; sourceTree = "<group>"; };
|
||||
@ -511,6 +535,8 @@
|
||||
2B4F91019A41754A4617A095209FAEFB /* LOTShapeLayerView.m */,
|
||||
484FF8C81E4A972500B2B4FF /* LOTStrokeShapeLayer.h */,
|
||||
484FF8C91E4A972500B2B4FF /* LOTStrokeShapeLayer.m */,
|
||||
484EBA291E578AE200D4CAD9 /* LOTCompositionLayer.h */,
|
||||
484EBA2A1E578AE200D4CAD9 /* LOTCompositionLayer.m */,
|
||||
);
|
||||
path = AnimatableLayers;
|
||||
sourceTree = "<group>";
|
||||
@ -593,6 +619,12 @@
|
||||
children = (
|
||||
B758F16C1930B57D432706DF7B9D2107 /* LOTComposition.h */,
|
||||
914E38365E034D0D2874EAB4410B0ED0 /* LOTComposition.m */,
|
||||
484EBA0E1E5656DD00D4CAD9 /* LOTAsset.h */,
|
||||
484EBA0F1E5656DD00D4CAD9 /* LOTAsset.m */,
|
||||
484EBA1B1E567CF500D4CAD9 /* LOTLayerGroup.h */,
|
||||
484EBA1C1E567CF500D4CAD9 /* LOTLayerGroup.m */,
|
||||
484EBA2F1E578BA800D4CAD9 /* LOTAssetGroup.h */,
|
||||
484EBA301E578BA800D4CAD9 /* LOTAssetGroup.m */,
|
||||
91320FA54A945B0D6F0DA1360E66F4EA /* LOTLayer.h */,
|
||||
0D575B6A057045C18575B20F98F4D18A /* LOTLayer.m */,
|
||||
CCFB05FD8351F6DF6D9DB1678426591E /* LOTMask.h */,
|
||||
@ -723,15 +755,19 @@
|
||||
4D0C60F8C4A252367B7C4875F9B0BDB0 /* LOTEllipseShapeLayer.h in Headers */,
|
||||
29CA4EE59B08D1ED8109B415457D3CDC /* LOTGroupLayerView.h in Headers */,
|
||||
3A31C00DAD5EE96060356B8229A0F880 /* LOTHelpers.h in Headers */,
|
||||
484EBA111E5656DD00D4CAD9 /* LOTAsset.h in Headers */,
|
||||
759E46CB49AAE25993A70A2DE97D266E /* LOTLayer.h in Headers */,
|
||||
87A26BF6CC45ADCB0FBC7D764C5A3947 /* LOTLayerView.h in Headers */,
|
||||
23FF5E1FEC9F357DEEC6BFE5563C10F1 /* LOTMask.h in Headers */,
|
||||
7299688E73D2B61F3361281ACBB4660E /* LOTMaskLayer.h in Headers */,
|
||||
484EBA1E1E567CF500D4CAD9 /* LOTLayerGroup.h in Headers */,
|
||||
579F11312EA02E2DCFF81BE25F51DB39 /* LOTModels.h in Headers */,
|
||||
48183C971E54E1B60039F121 /* CGGeometry+LOTAdditions.h in Headers */,
|
||||
1B7AD1DB3B240B3F6075DAC7A2C60327 /* LOTPlatformCompat.h in Headers */,
|
||||
9393029CAB8D0DCFBD598DCA8F9652CB /* LOTRectShapeLayer.h in Headers */,
|
||||
484EBA2C1E578AE200D4CAD9 /* LOTCompositionLayer.h in Headers */,
|
||||
43525BF925E577FA5BC55FA8722D3C95 /* LOTShapeCircle.h in Headers */,
|
||||
484EBA321E578BA800D4CAD9 /* LOTAssetGroup.h in Headers */,
|
||||
B6C5A67F95DB839A26C652F10A6F1BD1 /* LOTShapeFill.h in Headers */,
|
||||
CED532CCB58213D9CC1B20F9E02358A0 /* LOTShapeGroup.h in Headers */,
|
||||
AC23444263ED001DBFF7925905AD0186 /* LOTShapeLayerView.h in Headers */,
|
||||
@ -774,15 +810,19 @@
|
||||
838D6155DE51A16593725CE970CA6C90 /* LOTEllipseShapeLayer.h in Headers */,
|
||||
573C01EC3D0F512491BCF3DEB5AAB748 /* LOTGroupLayerView.h in Headers */,
|
||||
BD0CE52E57F950D3E084CF4C5F8A8B2F /* LOTHelpers.h in Headers */,
|
||||
484EBA101E5656DD00D4CAD9 /* LOTAsset.h in Headers */,
|
||||
20DEFD8C1B7E76272B928C15B18B68B0 /* LOTLayer.h in Headers */,
|
||||
46F17145DD61E422E878E2625D0588FA /* LOTLayerView.h in Headers */,
|
||||
2CDB9C2783AEFB59BD0E027E2E0F88A7 /* LOTMask.h in Headers */,
|
||||
7EDB7B9FA909F0E056D34EEEFD73D9EF /* LOTMaskLayer.h in Headers */,
|
||||
484EBA1D1E567CF500D4CAD9 /* LOTLayerGroup.h in Headers */,
|
||||
E2D5868DEC6CBB929B419FB3285731B1 /* LOTModels.h in Headers */,
|
||||
48183C961E54E1B60039F121 /* CGGeometry+LOTAdditions.h in Headers */,
|
||||
019EB390040200530FBD33CFCE1C6C0C /* LOTPlatformCompat.h in Headers */,
|
||||
FB9D8FF758399BF0DDE29DF9D14FD18C /* LOTRectShapeLayer.h in Headers */,
|
||||
484EBA2B1E578AE200D4CAD9 /* LOTCompositionLayer.h in Headers */,
|
||||
F9FC80D505B823B40B2B00D5D3D070C6 /* LOTShapeCircle.h in Headers */,
|
||||
484EBA311E578BA800D4CAD9 /* LOTAssetGroup.h in Headers */,
|
||||
71260F5EC2FB27E95FA8C1F5E18335EA /* LOTShapeFill.h in Headers */,
|
||||
17E6CB11A15CEF17D116EADF1BE32940 /* LOTShapeGroup.h in Headers */,
|
||||
0FE6D67AC31B34E5650ABE9F9DD2F12C /* LOTShapeLayerView.h in Headers */,
|
||||
@ -949,6 +989,7 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
484EBA2D1E578AE200D4CAD9 /* LOTCompositionLayer.m in Sources */,
|
||||
1AF05E6A1ED488D8A4590E451D16DB25 /* CAAnimationGroup+LOTAnimatableGroup.m in Sources */,
|
||||
38724389F4AF391B9BC43CD50AA3EDD8 /* CADisplayLink.m in Sources */,
|
||||
0F981EA0F990063F90AB32883A53CE20 /* CALayer+Compat.m in Sources */,
|
||||
@ -965,6 +1006,7 @@
|
||||
484FF8CC1E4A972500B2B4FF /* LOTStrokeShapeLayer.m in Sources */,
|
||||
4732ECB066C837C3484D9DB2F226773D /* LOTComposition.m in Sources */,
|
||||
4EFC87278E4E7401727B49678BD95620 /* LOTEllipseShapeLayer.m in Sources */,
|
||||
484EBA1F1E567CF500D4CAD9 /* LOTLayerGroup.m in Sources */,
|
||||
6AECE84D2606A6EB774D90B68BF02FBE /* LOTGroupLayerView.m in Sources */,
|
||||
ED8BD061B14A26E55DA40C65C1FA9E45 /* LOTLayer.m in Sources */,
|
||||
E1E7AB1C22FF3517808A0F359915D1DE /* LOTLayerView.m in Sources */,
|
||||
@ -973,6 +1015,7 @@
|
||||
BF134B98B1B9D10C25342E2C29FB8765 /* LOTRectShapeLayer.m in Sources */,
|
||||
FC2DFB5A3D8CA54CB00264F7DF5DBCA7 /* LOTShapeCircle.m in Sources */,
|
||||
48183C981E54E1B60039F121 /* CGGeometry+LOTAdditions.m in Sources */,
|
||||
484EBA121E5656DD00D4CAD9 /* LOTAsset.m in Sources */,
|
||||
7979D3A6E47E7449AC865C57DD35F839 /* LOTShapeFill.m in Sources */,
|
||||
1C1FD4859F03CD5975789890C67FDE5B /* LOTShapeGroup.m in Sources */,
|
||||
4F0B2D6C49741327F6B439F355B73E51 /* LOTShapeLayerView.m in Sources */,
|
||||
@ -981,6 +1024,7 @@
|
||||
C2F8ACA3161511701D310AD830AB73DA /* LOTShapeStroke.m in Sources */,
|
||||
D99E5F130A06004B71F0CCB62F2213AB /* LOTShapeTransform.m in Sources */,
|
||||
0224DD121FC30CF8D8EA84DEEDE9E5EF /* LOTShapeTrimPath.m in Sources */,
|
||||
484EBA331E578BA800D4CAD9 /* LOTAssetGroup.m in Sources */,
|
||||
BAF2A478D8415FFAD0C6AFEAD2F5C65E /* lottie-ios-iOS-dummy.m in Sources */,
|
||||
81A41631E43E19BA7747CFC447660357 /* NSValue+Compat.m in Sources */,
|
||||
23B582AC94E91248DAA79577B7D6B895 /* UIBezierPath.m in Sources */,
|
||||
@ -1009,6 +1053,7 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
484EBA2E1E578AE200D4CAD9 /* LOTCompositionLayer.m in Sources */,
|
||||
07DF80DAF9334BF948557F2B6E25CA41 /* CAAnimationGroup+LOTAnimatableGroup.m in Sources */,
|
||||
03667BC5DD6C96DC5FA10669D8D1169C /* CADisplayLink.m in Sources */,
|
||||
7EB6832366B45B6EA7B484FC55BD065C /* CALayer+Compat.m in Sources */,
|
||||
@ -1025,6 +1070,7 @@
|
||||
484FF8CD1E4A972500B2B4FF /* LOTStrokeShapeLayer.m in Sources */,
|
||||
951641D26236D9DD1D8497D421AB0F99 /* LOTComposition.m in Sources */,
|
||||
362836E5A94EEC788130DAB3D72E04E8 /* LOTEllipseShapeLayer.m in Sources */,
|
||||
484EBA201E567CF500D4CAD9 /* LOTLayerGroup.m in Sources */,
|
||||
0075B6488FF197D8668F10AF357C0521 /* LOTGroupLayerView.m in Sources */,
|
||||
A0FAA7BFF3B0DDAA8533821938A60B22 /* LOTLayer.m in Sources */,
|
||||
A79AFADC19D70226BACF2E8ED2CBB9D3 /* LOTLayerView.m in Sources */,
|
||||
@ -1033,6 +1079,7 @@
|
||||
ECFF0DF0D7D8168BC81B98D4FFE56BAE /* LOTRectShapeLayer.m in Sources */,
|
||||
DA138E1AC245BB30E51CE90933818034 /* LOTShapeCircle.m in Sources */,
|
||||
48183C991E54E1B60039F121 /* CGGeometry+LOTAdditions.m in Sources */,
|
||||
484EBA131E5656DD00D4CAD9 /* LOTAsset.m in Sources */,
|
||||
15EF53F42565FBC7BBF78E742576D83E /* LOTShapeFill.m in Sources */,
|
||||
FCF6945890A6ECE3E662EAD107349713 /* LOTShapeGroup.m in Sources */,
|
||||
0B29280A9ADDDD0EE1FA1575967AC5BD /* LOTShapeLayerView.m in Sources */,
|
||||
@ -1041,6 +1088,7 @@
|
||||
099861D88F2BD9EEFDAF48C506F7E759 /* LOTShapeStroke.m in Sources */,
|
||||
28E9535414CE1BEC591C89E7A06EAEF0 /* LOTShapeTransform.m in Sources */,
|
||||
9BA1D5723FE30B61B46BFAE9EEB219A2 /* LOTShapeTrimPath.m in Sources */,
|
||||
484EBA341E578BA800D4CAD9 /* LOTAssetGroup.m in Sources */,
|
||||
49DEF831442B05BED78E24E963AFC601 /* lottie-ios-OSX-dummy.m in Sources */,
|
||||
AAB4BB60CC3237D11259AD486F2DDF0F /* NSValue+Compat.m in Sources */,
|
||||
08EEF536571B1944EEE24963FE47D796 /* UIBezierPath.m in Sources */,
|
||||
|
786
Lottie-Screenshot/Lottie-Screenshot.xcodeproj/project.pbxproj
Normal file
786
Lottie-Screenshot/Lottie-Screenshot.xcodeproj/project.pbxproj
Normal file
@ -0,0 +1,786 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
4883E4B01E5E68AE00027E57 /* Hosts.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E4AF1E5E68AE00027E57 /* Hosts.m */; };
|
||||
4883E4B21E5E68C900027E57 /* LightBulb.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E4B11E5E68C900027E57 /* LightBulb.m */; };
|
||||
4883E4B41E5E68DC00027E57 /* TrimPathFill.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E4B31E5E68DC00027E57 /* TrimPathFill.m */; };
|
||||
4883E4B61E5E68E600027E57 /* TrimPathsFull.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E4B51E5E68E600027E57 /* TrimPathsFull.m */; };
|
||||
4883E4B81E5E690500027E57 /* SplitDimensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E4B71E5E690500027E57 /* SplitDimensions.m */; };
|
||||
4883E4BF1E5E6AF000027E57 /* 9squares-AlBoardman.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E4B91E5E6AF000027E57 /* 9squares-AlBoardman.json */; };
|
||||
4883E4C01E5E6AF000027E57 /* 9squares-AlBoardman.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E4B91E5E6AF000027E57 /* 9squares-AlBoardman.json */; };
|
||||
4883E4C31E5E6AF000027E57 /* EmptyState.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E4BB1E5E6AF000027E57 /* EmptyState.json */; };
|
||||
4883E4C41E5E6AF000027E57 /* EmptyState.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E4BB1E5E6AF000027E57 /* EmptyState.json */; };
|
||||
4883E4C51E5E6AF000027E57 /* HamburgerArrow.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E4BC1E5E6AF000027E57 /* HamburgerArrow.json */; };
|
||||
4883E4C61E5E6AF000027E57 /* HamburgerArrow.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E4BC1E5E6AF000027E57 /* HamburgerArrow.json */; };
|
||||
4883E4C71E5E6AF000027E57 /* PinJump.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E4BD1E5E6AF000027E57 /* PinJump.json */; };
|
||||
4883E4C81E5E6AF000027E57 /* PinJump.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E4BD1E5E6AF000027E57 /* PinJump.json */; };
|
||||
4883E4C91E5E6AF000027E57 /* TwitterHeart.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E4BE1E5E6AF000027E57 /* TwitterHeart.json */; };
|
||||
4883E4CA1E5E6AF000027E57 /* TwitterHeart.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E4BE1E5E6AF000027E57 /* TwitterHeart.json */; };
|
||||
4883E4CC1E5E6B0900027E57 /* AlBoardmanTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E4CB1E5E6B0900027E57 /* AlBoardmanTest.m */; };
|
||||
4883E4CE1E5E6B2D00027E57 /* HamburgerArrowTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E4CD1E5E6B2D00027E57 /* HamburgerArrowTest.m */; };
|
||||
4883E4D01E5E6B3B00027E57 /* PinJump.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E4CF1E5E6B3B00027E57 /* PinJump.m */; };
|
||||
4883E4D21E5E6B4B00027E57 /* TwitterHeartTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E4D11E5E6B4B00027E57 /* TwitterHeartTest.m */; };
|
||||
4883E4D41E5E6C6100027E57 /* LoopPlayOnceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E4D31E5E6C6100027E57 /* LoopPlayOnceTest.m */; };
|
||||
4883E4D61E5E6C7C00027E57 /* EmpyStateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E4D51E5E6C7C00027E57 /* EmpyStateTest.m */; };
|
||||
4883E4FF1E60ACAF00027E57 /* PhonePreCompTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E4FE1E60ACAF00027E57 /* PhonePreCompTest.m */; };
|
||||
4883E5011E60ACC800027E57 /* phonePreComp.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E5001E60ACC800027E57 /* phonePreComp.json */; };
|
||||
4883E5021E60ACC800027E57 /* phonePreComp.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E5001E60ACC800027E57 /* phonePreComp.json */; };
|
||||
4883E5451E60CE6100027E57 /* img_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 4883E5441E60CE6100027E57 /* img_0.png */; };
|
||||
4883E5461E60CE6100027E57 /* img_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 4883E5441E60CE6100027E57 /* img_0.png */; };
|
||||
4883E5481E60CE6800027E57 /* Image.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E5471E60CE6800027E57 /* Image.json */; };
|
||||
4883E5491E60CE6800027E57 /* Image.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E5471E60CE6800027E57 /* Image.json */; };
|
||||
4883E54B1E60CE6C00027E57 /* image_2.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E54A1E60CE6C00027E57 /* image_2.json */; };
|
||||
4883E54C1E60CE6C00027E57 /* image_2.json in Resources */ = {isa = PBXBuildFile; fileRef = 4883E54A1E60CE6C00027E57 /* image_2.json */; };
|
||||
4883E54E1E60CE8600027E57 /* ImageLoadTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E54D1E60CE8600027E57 /* ImageLoadTest.m */; };
|
||||
4883E5501E60CE9900027E57 /* ImageMoveTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883E54F1E60CE9900027E57 /* ImageMoveTest.m */; };
|
||||
48D2C7171E5D158A00CC145E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 48D2C7161E5D158A00CC145E /* main.m */; };
|
||||
48D2C71A1E5D158A00CC145E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 48D2C7191E5D158A00CC145E /* AppDelegate.m */; };
|
||||
48D2C71D1E5D158A00CC145E /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 48D2C71C1E5D158A00CC145E /* ViewController.m */; };
|
||||
48D2C7201E5D158A00CC145E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 48D2C71E1E5D158A00CC145E /* Main.storyboard */; };
|
||||
48D2C7221E5D158A00CC145E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 48D2C7211E5D158A00CC145E /* Assets.xcassets */; };
|
||||
48D2C7251E5D158A00CC145E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 48D2C7231E5D158A00CC145E /* LaunchScreen.storyboard */; };
|
||||
48D2C7301E5D158A00CC145E /* LottieLogoTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 48D2C72F1E5D158A00CC145E /* LottieLogoTest.m */; };
|
||||
48EAE1EF1E5D16E30077ED37 /* LottieLogo1.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE1ED1E5D16E30077ED37 /* LottieLogo1.json */; };
|
||||
48EAE1F01E5D16E30077ED37 /* LottieLogo1.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE1ED1E5D16E30077ED37 /* LottieLogo1.json */; };
|
||||
48EAE1F11E5D16E30077ED37 /* LottieLogo2.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE1EE1E5D16E30077ED37 /* LottieLogo2.json */; };
|
||||
48EAE1F21E5D16E30077ED37 /* LottieLogo2.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE1EE1E5D16E30077ED37 /* LottieLogo2.json */; };
|
||||
48EAE1F41E5E5BC60077ED37 /* LottieLogoTestB.m in Sources */ = {isa = PBXBuildFile; fileRef = 48EAE1F31E5E5BC60077ED37 /* LottieLogoTestB.m */; };
|
||||
48EAE1FA1E5E5EE10077ED37 /* LottieAnimationTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 48EAE1F61E5E5C900077ED37 /* LottieAnimationTestCase.m */; };
|
||||
48EAE2101E5E615E0077ED37 /* Alarm.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE1FB1E5E615E0077ED37 /* Alarm.json */; };
|
||||
48EAE2111E5E615E0077ED37 /* Alarm.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE1FB1E5E615E0077ED37 /* Alarm.json */; };
|
||||
48EAE2121E5E615E0077ED37 /* AllSet.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE1FC1E5E615E0077ED37 /* AllSet.json */; };
|
||||
48EAE2131E5E615E0077ED37 /* AllSet.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE1FC1E5E615E0077ED37 /* AllSet.json */; };
|
||||
48EAE2141E5E615E0077ED37 /* CheckSwitch.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE1FD1E5E615E0077ED37 /* CheckSwitch.json */; };
|
||||
48EAE2151E5E615E0077ED37 /* CheckSwitch.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE1FD1E5E615E0077ED37 /* CheckSwitch.json */; };
|
||||
48EAE2161E5E615E0077ED37 /* City.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE1FE1E5E615E0077ED37 /* City.json */; };
|
||||
48EAE2171E5E615E0077ED37 /* City.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE1FE1E5E615E0077ED37 /* City.json */; };
|
||||
48EAE21A1E5E615F0077ED37 /* Hosts.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE2001E5E615E0077ED37 /* Hosts.json */; };
|
||||
48EAE21B1E5E615F0077ED37 /* Hosts.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE2001E5E615E0077ED37 /* Hosts.json */; };
|
||||
48EAE2201E5E615F0077ED37 /* LightBulb.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE2031E5E615E0077ED37 /* LightBulb.json */; };
|
||||
48EAE2211E5E615F0077ED37 /* LightBulb.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE2031E5E615E0077ED37 /* LightBulb.json */; };
|
||||
48EAE2221E5E615F0077ED37 /* LoopPlayOnce.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE2041E5E615E0077ED37 /* LoopPlayOnce.json */; };
|
||||
48EAE2231E5E615F0077ED37 /* LoopPlayOnce.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE2041E5E615E0077ED37 /* LoopPlayOnce.json */; };
|
||||
48EAE2321E5E615F0077ED37 /* SplitDimensions.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE20C1E5E615E0077ED37 /* SplitDimensions.json */; };
|
||||
48EAE2331E5E615F0077ED37 /* SplitDimensions.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE20C1E5E615E0077ED37 /* SplitDimensions.json */; };
|
||||
48EAE2361E5E615F0077ED37 /* TrimPathFill.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE20E1E5E615E0077ED37 /* TrimPathFill.json */; };
|
||||
48EAE2371E5E615F0077ED37 /* TrimPathFill.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE20E1E5E615E0077ED37 /* TrimPathFill.json */; };
|
||||
48EAE2381E5E615F0077ED37 /* TrimPathsFull.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE20F1E5E615E0077ED37 /* TrimPathsFull.json */; };
|
||||
48EAE2391E5E615F0077ED37 /* TrimPathsFull.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE20F1E5E615E0077ED37 /* TrimPathsFull.json */; };
|
||||
48EAE23B1E5E61690077ED37 /* pathStrokeTests.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE23A1E5E61690077ED37 /* pathStrokeTests.json */; };
|
||||
48EAE23C1E5E61690077ED37 /* pathStrokeTests.json in Resources */ = {isa = PBXBuildFile; fileRef = 48EAE23A1E5E61690077ED37 /* pathStrokeTests.json */; };
|
||||
48EAE23E1E5E61940077ED37 /* PathStrokeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 48EAE23D1E5E61940077ED37 /* PathStrokeTest.m */; };
|
||||
48EAE2401E5E61E60077ED37 /* AlarmTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 48EAE23F1E5E61E60077ED37 /* AlarmTest.m */; };
|
||||
48EAE2421E5E621F0077ED37 /* AllSetTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 48EAE2411E5E621F0077ED37 /* AllSetTest.m */; };
|
||||
48EAE2441E5E62630077ED37 /* CheckSwitchTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 48EAE2431E5E62630077ED37 /* CheckSwitchTest.m */; };
|
||||
48EAE2461E5E62EC0077ED37 /* CityTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 48EAE2451E5E62EC0077ED37 /* CityTest.m */; };
|
||||
7430EF079D0FCC6AA8C33A04 /* libPods-Lottie-ScreenshotTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 82669855296AD13CD2C90346 /* libPods-Lottie-ScreenshotTests.a */; };
|
||||
7ACB14BFE835B99A8BA525EC /* libPods-Lottie-Screenshot.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EDDE8DDE7C18B5DBE9E91BC1 /* libPods-Lottie-Screenshot.a */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
48D2C72C1E5D158A00CC145E /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 48D2C70A1E5D158A00CC145E /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 48D2C7111E5D158A00CC145E;
|
||||
remoteInfo = "Lottie-Screenshot";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0B9CEBE2C6713C7A0FFB9B22 /* Pods-Lottie-Screenshot.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lottie-Screenshot.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Lottie-Screenshot/Pods-Lottie-Screenshot.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
217C267174982CD7145A5BF6 /* Pods-Lottie-ScreenshotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lottie-ScreenshotTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Lottie-ScreenshotTests/Pods-Lottie-ScreenshotTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
3905E1724A3AE8C2E86DC75A /* Pods-Lottie-ScreenshotUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lottie-ScreenshotUITests.release.xcconfig"; path = "Pods/Target Support Files/Pods-Lottie-ScreenshotUITests/Pods-Lottie-ScreenshotUITests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
4883E4AF1E5E68AE00027E57 /* Hosts.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Hosts.m; sourceTree = "<group>"; };
|
||||
4883E4B11E5E68C900027E57 /* LightBulb.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LightBulb.m; sourceTree = "<group>"; };
|
||||
4883E4B31E5E68DC00027E57 /* TrimPathFill.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TrimPathFill.m; sourceTree = "<group>"; };
|
||||
4883E4B51E5E68E600027E57 /* TrimPathsFull.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TrimPathsFull.m; sourceTree = "<group>"; };
|
||||
4883E4B71E5E690500027E57 /* SplitDimensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SplitDimensions.m; sourceTree = "<group>"; };
|
||||
4883E4B91E5E6AF000027E57 /* 9squares-AlBoardman.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "9squares-AlBoardman.json"; sourceTree = "<group>"; };
|
||||
4883E4BB1E5E6AF000027E57 /* EmptyState.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = EmptyState.json; sourceTree = "<group>"; };
|
||||
4883E4BC1E5E6AF000027E57 /* HamburgerArrow.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = HamburgerArrow.json; sourceTree = "<group>"; };
|
||||
4883E4BD1E5E6AF000027E57 /* PinJump.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = PinJump.json; sourceTree = "<group>"; };
|
||||
4883E4BE1E5E6AF000027E57 /* TwitterHeart.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = TwitterHeart.json; sourceTree = "<group>"; };
|
||||
4883E4CB1E5E6B0900027E57 /* AlBoardmanTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AlBoardmanTest.m; sourceTree = "<group>"; };
|
||||
4883E4CD1E5E6B2D00027E57 /* HamburgerArrowTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HamburgerArrowTest.m; sourceTree = "<group>"; };
|
||||
4883E4CF1E5E6B3B00027E57 /* PinJump.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PinJump.m; sourceTree = "<group>"; };
|
||||
4883E4D11E5E6B4B00027E57 /* TwitterHeartTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TwitterHeartTest.m; sourceTree = "<group>"; };
|
||||
4883E4D31E5E6C6100027E57 /* LoopPlayOnceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoopPlayOnceTest.m; sourceTree = "<group>"; };
|
||||
4883E4D51E5E6C7C00027E57 /* EmpyStateTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EmpyStateTest.m; sourceTree = "<group>"; };
|
||||
4883E4FE1E60ACAF00027E57 /* PhonePreCompTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhonePreCompTest.m; sourceTree = "<group>"; };
|
||||
4883E5001E60ACC800027E57 /* phonePreComp.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = phonePreComp.json; sourceTree = "<group>"; };
|
||||
4883E5441E60CE6100027E57 /* img_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = img_0.png; sourceTree = "<group>"; };
|
||||
4883E5471E60CE6800027E57 /* Image.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Image.json; sourceTree = "<group>"; };
|
||||
4883E54A1E60CE6C00027E57 /* image_2.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = image_2.json; sourceTree = "<group>"; };
|
||||
4883E54D1E60CE8600027E57 /* ImageLoadTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageLoadTest.m; sourceTree = "<group>"; };
|
||||
4883E54F1E60CE9900027E57 /* ImageMoveTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageMoveTest.m; sourceTree = "<group>"; };
|
||||
48D2C7121E5D158A00CC145E /* Lottie-Screenshot.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Lottie-Screenshot.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
48D2C7161E5D158A00CC145E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
48D2C7181E5D158A00CC145E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
48D2C7191E5D158A00CC145E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
48D2C71B1E5D158A00CC145E /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
48D2C71C1E5D158A00CC145E /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
|
||||
48D2C71F1E5D158A00CC145E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
48D2C7211E5D158A00CC145E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
48D2C7241E5D158A00CC145E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
48D2C7261E5D158A00CC145E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
48D2C72B1E5D158A00CC145E /* Lottie-ScreenshotTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Lottie-ScreenshotTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
48D2C72F1E5D158A00CC145E /* LottieLogoTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LottieLogoTest.m; sourceTree = "<group>"; };
|
||||
48D2C7311E5D158A00CC145E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
48EAE1ED1E5D16E30077ED37 /* LottieLogo1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = LottieLogo1.json; sourceTree = "<group>"; };
|
||||
48EAE1EE1E5D16E30077ED37 /* LottieLogo2.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = LottieLogo2.json; sourceTree = "<group>"; };
|
||||
48EAE1F31E5E5BC60077ED37 /* LottieLogoTestB.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LottieLogoTestB.m; sourceTree = "<group>"; };
|
||||
48EAE1F51E5E5C900077ED37 /* LottieAnimationTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LottieAnimationTestCase.h; sourceTree = "<group>"; };
|
||||
48EAE1F61E5E5C900077ED37 /* LottieAnimationTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LottieAnimationTestCase.m; sourceTree = "<group>"; };
|
||||
48EAE1FB1E5E615E0077ED37 /* Alarm.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Alarm.json; sourceTree = "<group>"; };
|
||||
48EAE1FC1E5E615E0077ED37 /* AllSet.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = AllSet.json; sourceTree = "<group>"; };
|
||||
48EAE1FD1E5E615E0077ED37 /* CheckSwitch.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = CheckSwitch.json; sourceTree = "<group>"; };
|
||||
48EAE1FE1E5E615E0077ED37 /* City.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = City.json; sourceTree = "<group>"; };
|
||||
48EAE2001E5E615E0077ED37 /* Hosts.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Hosts.json; sourceTree = "<group>"; };
|
||||
48EAE2031E5E615E0077ED37 /* LightBulb.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = LightBulb.json; sourceTree = "<group>"; };
|
||||
48EAE2041E5E615E0077ED37 /* LoopPlayOnce.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = LoopPlayOnce.json; sourceTree = "<group>"; };
|
||||
48EAE20C1E5E615E0077ED37 /* SplitDimensions.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = SplitDimensions.json; sourceTree = "<group>"; };
|
||||
48EAE20E1E5E615E0077ED37 /* TrimPathFill.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = TrimPathFill.json; sourceTree = "<group>"; };
|
||||
48EAE20F1E5E615E0077ED37 /* TrimPathsFull.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = TrimPathsFull.json; sourceTree = "<group>"; };
|
||||
48EAE23A1E5E61690077ED37 /* pathStrokeTests.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = pathStrokeTests.json; sourceTree = "<group>"; };
|
||||
48EAE23D1E5E61940077ED37 /* PathStrokeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PathStrokeTest.m; sourceTree = "<group>"; };
|
||||
48EAE23F1E5E61E60077ED37 /* AlarmTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AlarmTest.m; sourceTree = "<group>"; };
|
||||
48EAE2411E5E621F0077ED37 /* AllSetTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AllSetTest.m; sourceTree = "<group>"; };
|
||||
48EAE2431E5E62630077ED37 /* CheckSwitchTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CheckSwitchTest.m; sourceTree = "<group>"; };
|
||||
48EAE2451E5E62EC0077ED37 /* CityTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CityTest.m; sourceTree = "<group>"; };
|
||||
81296DC363CBCBB345B0CA51 /* Pods-Lottie-ScreenshotTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lottie-ScreenshotTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-Lottie-ScreenshotTests/Pods-Lottie-ScreenshotTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
82669855296AD13CD2C90346 /* libPods-Lottie-ScreenshotTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Lottie-ScreenshotTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
ED3474D7D70B8A56A28FEEB5 /* Pods-Lottie-Screenshot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lottie-Screenshot.release.xcconfig"; path = "Pods/Target Support Files/Pods-Lottie-Screenshot/Pods-Lottie-Screenshot.release.xcconfig"; sourceTree = "<group>"; };
|
||||
EDDE8DDE7C18B5DBE9E91BC1 /* libPods-Lottie-Screenshot.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Lottie-Screenshot.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
F3568C3BD34EC5B81F7D8966 /* Pods-Lottie-ScreenshotUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lottie-ScreenshotUITests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Lottie-ScreenshotUITests/Pods-Lottie-ScreenshotUITests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
F3DBA7C58B6355901ACF2F69 /* libPods-Lottie-ScreenshotUITests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Lottie-ScreenshotUITests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
48D2C70F1E5D158A00CC145E /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7ACB14BFE835B99A8BA525EC /* libPods-Lottie-Screenshot.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
48D2C7281E5D158A00CC145E /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7430EF079D0FCC6AA8C33A04 /* libPods-Lottie-ScreenshotTests.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
16945C722A4F6EC1FA2BB9AC /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0B9CEBE2C6713C7A0FFB9B22 /* Pods-Lottie-Screenshot.debug.xcconfig */,
|
||||
ED3474D7D70B8A56A28FEEB5 /* Pods-Lottie-Screenshot.release.xcconfig */,
|
||||
217C267174982CD7145A5BF6 /* Pods-Lottie-ScreenshotTests.debug.xcconfig */,
|
||||
81296DC363CBCBB345B0CA51 /* Pods-Lottie-ScreenshotTests.release.xcconfig */,
|
||||
F3568C3BD34EC5B81F7D8966 /* Pods-Lottie-ScreenshotUITests.debug.xcconfig */,
|
||||
3905E1724A3AE8C2E86DC75A /* Pods-Lottie-ScreenshotUITests.release.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
48D2C7091E5D158A00CC145E = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
48D2C7141E5D158A00CC145E /* Lottie-Screenshot */,
|
||||
48D2C72E1E5D158A00CC145E /* Lottie-ScreenshotTests */,
|
||||
48D2C7131E5D158A00CC145E /* Products */,
|
||||
16945C722A4F6EC1FA2BB9AC /* Pods */,
|
||||
F078BF1A67F6E0D4415A8245 /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
48D2C7131E5D158A00CC145E /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
48D2C7121E5D158A00CC145E /* Lottie-Screenshot.app */,
|
||||
48D2C72B1E5D158A00CC145E /* Lottie-ScreenshotTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
48D2C7141E5D158A00CC145E /* Lottie-Screenshot */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
48D2C7181E5D158A00CC145E /* AppDelegate.h */,
|
||||
48D2C7191E5D158A00CC145E /* AppDelegate.m */,
|
||||
48D2C71B1E5D158A00CC145E /* ViewController.h */,
|
||||
48D2C71C1E5D158A00CC145E /* ViewController.m */,
|
||||
48D2C71E1E5D158A00CC145E /* Main.storyboard */,
|
||||
48D2C7211E5D158A00CC145E /* Assets.xcassets */,
|
||||
48D2C7231E5D158A00CC145E /* LaunchScreen.storyboard */,
|
||||
48D2C7261E5D158A00CC145E /* Info.plist */,
|
||||
48D2C7151E5D158A00CC145E /* Supporting Files */,
|
||||
);
|
||||
path = "Lottie-Screenshot";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
48D2C7151E5D158A00CC145E /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4883E54A1E60CE6C00027E57 /* image_2.json */,
|
||||
4883E5471E60CE6800027E57 /* Image.json */,
|
||||
4883E5441E60CE6100027E57 /* img_0.png */,
|
||||
4883E5001E60ACC800027E57 /* phonePreComp.json */,
|
||||
48EAE1FB1E5E615E0077ED37 /* Alarm.json */,
|
||||
48EAE1FC1E5E615E0077ED37 /* AllSet.json */,
|
||||
48EAE1FD1E5E615E0077ED37 /* CheckSwitch.json */,
|
||||
48EAE1FE1E5E615E0077ED37 /* City.json */,
|
||||
48EAE2001E5E615E0077ED37 /* Hosts.json */,
|
||||
48EAE2031E5E615E0077ED37 /* LightBulb.json */,
|
||||
48EAE2041E5E615E0077ED37 /* LoopPlayOnce.json */,
|
||||
48EAE1ED1E5D16E30077ED37 /* LottieLogo1.json */,
|
||||
48EAE1EE1E5D16E30077ED37 /* LottieLogo2.json */,
|
||||
48EAE23A1E5E61690077ED37 /* pathStrokeTests.json */,
|
||||
48EAE20C1E5E615E0077ED37 /* SplitDimensions.json */,
|
||||
48EAE20E1E5E615E0077ED37 /* TrimPathFill.json */,
|
||||
48EAE20F1E5E615E0077ED37 /* TrimPathsFull.json */,
|
||||
4883E4B91E5E6AF000027E57 /* 9squares-AlBoardman.json */,
|
||||
4883E4BB1E5E6AF000027E57 /* EmptyState.json */,
|
||||
4883E4BC1E5E6AF000027E57 /* HamburgerArrow.json */,
|
||||
4883E4BD1E5E6AF000027E57 /* PinJump.json */,
|
||||
4883E4BE1E5E6AF000027E57 /* TwitterHeart.json */,
|
||||
48D2C7161E5D158A00CC145E /* main.m */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
48D2C72E1E5D158A00CC145E /* Lottie-ScreenshotTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
48EAE23F1E5E61E60077ED37 /* AlarmTest.m */,
|
||||
48EAE2411E5E621F0077ED37 /* AllSetTest.m */,
|
||||
48EAE2431E5E62630077ED37 /* CheckSwitchTest.m */,
|
||||
48EAE2451E5E62EC0077ED37 /* CityTest.m */,
|
||||
4883E4D51E5E6C7C00027E57 /* EmpyStateTest.m */,
|
||||
4883E4CD1E5E6B2D00027E57 /* HamburgerArrowTest.m */,
|
||||
4883E4AF1E5E68AE00027E57 /* Hosts.m */,
|
||||
4883E54D1E60CE8600027E57 /* ImageLoadTest.m */,
|
||||
4883E54F1E60CE9900027E57 /* ImageMoveTest.m */,
|
||||
4883E4B11E5E68C900027E57 /* LightBulb.m */,
|
||||
4883E4D31E5E6C6100027E57 /* LoopPlayOnceTest.m */,
|
||||
48D2C72F1E5D158A00CC145E /* LottieLogoTest.m */,
|
||||
48EAE1F31E5E5BC60077ED37 /* LottieLogoTestB.m */,
|
||||
48EAE23D1E5E61940077ED37 /* PathStrokeTest.m */,
|
||||
4883E4CF1E5E6B3B00027E57 /* PinJump.m */,
|
||||
4883E4FE1E60ACAF00027E57 /* PhonePreCompTest.m */,
|
||||
4883E4B71E5E690500027E57 /* SplitDimensions.m */,
|
||||
4883E4D11E5E6B4B00027E57 /* TwitterHeartTest.m */,
|
||||
4883E4B31E5E68DC00027E57 /* TrimPathFill.m */,
|
||||
4883E4B51E5E68E600027E57 /* TrimPathsFull.m */,
|
||||
4883E4CB1E5E6B0900027E57 /* AlBoardmanTest.m */,
|
||||
48D2C7311E5D158A00CC145E /* Info.plist */,
|
||||
48EAE1F51E5E5C900077ED37 /* LottieAnimationTestCase.h */,
|
||||
48EAE1F61E5E5C900077ED37 /* LottieAnimationTestCase.m */,
|
||||
);
|
||||
path = "Lottie-ScreenshotTests";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F078BF1A67F6E0D4415A8245 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EDDE8DDE7C18B5DBE9E91BC1 /* libPods-Lottie-Screenshot.a */,
|
||||
82669855296AD13CD2C90346 /* libPods-Lottie-ScreenshotTests.a */,
|
||||
F3DBA7C58B6355901ACF2F69 /* libPods-Lottie-ScreenshotUITests.a */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
48D2C7111E5D158A00CC145E /* Lottie-Screenshot */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 48D2C73F1E5D158A00CC145E /* Build configuration list for PBXNativeTarget "Lottie-Screenshot" */;
|
||||
buildPhases = (
|
||||
7262E183AC09BF07790C2BB4 /* [CP] Check Pods Manifest.lock */,
|
||||
48D2C70E1E5D158A00CC145E /* Sources */,
|
||||
48D2C70F1E5D158A00CC145E /* Frameworks */,
|
||||
48D2C7101E5D158A00CC145E /* Resources */,
|
||||
E4C51062D4B39AB7D073836B /* [CP] Embed Pods Frameworks */,
|
||||
3BF31A236E7869E5264CAA70 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "Lottie-Screenshot";
|
||||
productName = "Lottie-Screenshot";
|
||||
productReference = 48D2C7121E5D158A00CC145E /* Lottie-Screenshot.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
48D2C72A1E5D158A00CC145E /* Lottie-ScreenshotTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 48D2C7421E5D158A00CC145E /* Build configuration list for PBXNativeTarget "Lottie-ScreenshotTests" */;
|
||||
buildPhases = (
|
||||
832B8F0FB5766116952AF839 /* [CP] Check Pods Manifest.lock */,
|
||||
48D2C7271E5D158A00CC145E /* Sources */,
|
||||
48D2C7281E5D158A00CC145E /* Frameworks */,
|
||||
48D2C7291E5D158A00CC145E /* Resources */,
|
||||
4AB5C1C4264F7CB94F2B13A4 /* [CP] Embed Pods Frameworks */,
|
||||
68B3CABF94DF6668B5A26728 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
48D2C72D1E5D158A00CC145E /* PBXTargetDependency */,
|
||||
);
|
||||
name = "Lottie-ScreenshotTests";
|
||||
productName = "Lottie-ScreenshotTests";
|
||||
productReference = 48D2C72B1E5D158A00CC145E /* Lottie-ScreenshotTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
48D2C70A1E5D158A00CC145E /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0820;
|
||||
ORGANIZATIONNAME = "Brandon Withrow";
|
||||
TargetAttributes = {
|
||||
48D2C7111E5D158A00CC145E = {
|
||||
CreatedOnToolsVersion = 8.2.1;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
48D2C72A1E5D158A00CC145E = {
|
||||
CreatedOnToolsVersion = 8.2.1;
|
||||
ProvisioningStyle = Automatic;
|
||||
TestTargetID = 48D2C7111E5D158A00CC145E;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 48D2C70D1E5D158A00CC145E /* Build configuration list for PBXProject "Lottie-Screenshot" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 48D2C7091E5D158A00CC145E;
|
||||
productRefGroup = 48D2C7131E5D158A00CC145E /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
48D2C7111E5D158A00CC145E /* Lottie-Screenshot */,
|
||||
48D2C72A1E5D158A00CC145E /* Lottie-ScreenshotTests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
48D2C7101E5D158A00CC145E /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4883E4C91E5E6AF000027E57 /* TwitterHeart.json in Resources */,
|
||||
48EAE2201E5E615F0077ED37 /* LightBulb.json in Resources */,
|
||||
48EAE2141E5E615E0077ED37 /* CheckSwitch.json in Resources */,
|
||||
48EAE2121E5E615E0077ED37 /* AllSet.json in Resources */,
|
||||
48EAE2321E5E615F0077ED37 /* SplitDimensions.json in Resources */,
|
||||
4883E4C71E5E6AF000027E57 /* PinJump.json in Resources */,
|
||||
48D2C7251E5D158A00CC145E /* LaunchScreen.storyboard in Resources */,
|
||||
48EAE2101E5E615E0077ED37 /* Alarm.json in Resources */,
|
||||
4883E4BF1E5E6AF000027E57 /* 9squares-AlBoardman.json in Resources */,
|
||||
4883E4C51E5E6AF000027E57 /* HamburgerArrow.json in Resources */,
|
||||
4883E5451E60CE6100027E57 /* img_0.png in Resources */,
|
||||
48D2C7221E5D158A00CC145E /* Assets.xcassets in Resources */,
|
||||
48EAE2221E5E615F0077ED37 /* LoopPlayOnce.json in Resources */,
|
||||
4883E5481E60CE6800027E57 /* Image.json in Resources */,
|
||||
48EAE21A1E5E615F0077ED37 /* Hosts.json in Resources */,
|
||||
48D2C7201E5D158A00CC145E /* Main.storyboard in Resources */,
|
||||
48EAE1F11E5D16E30077ED37 /* LottieLogo2.json in Resources */,
|
||||
48EAE2161E5E615E0077ED37 /* City.json in Resources */,
|
||||
48EAE1EF1E5D16E30077ED37 /* LottieLogo1.json in Resources */,
|
||||
4883E4C31E5E6AF000027E57 /* EmptyState.json in Resources */,
|
||||
48EAE2381E5E615F0077ED37 /* TrimPathsFull.json in Resources */,
|
||||
4883E5011E60ACC800027E57 /* phonePreComp.json in Resources */,
|
||||
48EAE2361E5E615F0077ED37 /* TrimPathFill.json in Resources */,
|
||||
48EAE23B1E5E61690077ED37 /* pathStrokeTests.json in Resources */,
|
||||
4883E54B1E60CE6C00027E57 /* image_2.json in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
48D2C7291E5D158A00CC145E /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4883E5461E60CE6100027E57 /* img_0.png in Resources */,
|
||||
48EAE2211E5E615F0077ED37 /* LightBulb.json in Resources */,
|
||||
4883E4C81E5E6AF000027E57 /* PinJump.json in Resources */,
|
||||
48EAE2131E5E615E0077ED37 /* AllSet.json in Resources */,
|
||||
4883E5491E60CE6800027E57 /* Image.json in Resources */,
|
||||
4883E5021E60ACC800027E57 /* phonePreComp.json in Resources */,
|
||||
4883E4C61E5E6AF000027E57 /* HamburgerArrow.json in Resources */,
|
||||
48EAE2391E5E615F0077ED37 /* TrimPathsFull.json in Resources */,
|
||||
4883E4C41E5E6AF000027E57 /* EmptyState.json in Resources */,
|
||||
48EAE2371E5E615F0077ED37 /* TrimPathFill.json in Resources */,
|
||||
4883E54C1E60CE6C00027E57 /* image_2.json in Resources */,
|
||||
4883E4C01E5E6AF000027E57 /* 9squares-AlBoardman.json in Resources */,
|
||||
48EAE1F21E5D16E30077ED37 /* LottieLogo2.json in Resources */,
|
||||
48EAE21B1E5E615F0077ED37 /* Hosts.json in Resources */,
|
||||
48EAE2231E5E615F0077ED37 /* LoopPlayOnce.json in Resources */,
|
||||
48EAE23C1E5E61690077ED37 /* pathStrokeTests.json in Resources */,
|
||||
48EAE2331E5E615F0077ED37 /* SplitDimensions.json in Resources */,
|
||||
48EAE2151E5E615E0077ED37 /* CheckSwitch.json in Resources */,
|
||||
4883E4CA1E5E6AF000027E57 /* TwitterHeart.json in Resources */,
|
||||
48EAE2111E5E615E0077ED37 /* Alarm.json in Resources */,
|
||||
48EAE2171E5E615E0077ED37 /* City.json in Resources */,
|
||||
48EAE1F01E5D16E30077ED37 /* LottieLogo1.json in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
3BF31A236E7869E5264CAA70 /* [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-Lottie-Screenshot/Pods-Lottie-Screenshot-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
4AB5C1C4264F7CB94F2B13A4 /* [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-Lottie-ScreenshotTests/Pods-Lottie-ScreenshotTests-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
68B3CABF94DF6668B5A26728 /* [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-Lottie-ScreenshotTests/Pods-Lottie-ScreenshotTests-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
7262E183AC09BF07790C2BB4 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_ROOT}/../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";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
832B8F0FB5766116952AF839 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_ROOT}/../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";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
E4C51062D4B39AB7D073836B /* [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-Lottie-Screenshot/Pods-Lottie-Screenshot-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
48D2C70E1E5D158A00CC145E /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
48D2C71D1E5D158A00CC145E /* ViewController.m in Sources */,
|
||||
48D2C71A1E5D158A00CC145E /* AppDelegate.m in Sources */,
|
||||
48D2C7171E5D158A00CC145E /* main.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
48D2C7271E5D158A00CC145E /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
48EAE2421E5E621F0077ED37 /* AllSetTest.m in Sources */,
|
||||
4883E4B01E5E68AE00027E57 /* Hosts.m in Sources */,
|
||||
4883E4D41E5E6C6100027E57 /* LoopPlayOnceTest.m in Sources */,
|
||||
4883E4CC1E5E6B0900027E57 /* AlBoardmanTest.m in Sources */,
|
||||
48EAE23E1E5E61940077ED37 /* PathStrokeTest.m in Sources */,
|
||||
4883E4FF1E60ACAF00027E57 /* PhonePreCompTest.m in Sources */,
|
||||
48EAE1F41E5E5BC60077ED37 /* LottieLogoTestB.m in Sources */,
|
||||
48EAE2401E5E61E60077ED37 /* AlarmTest.m in Sources */,
|
||||
4883E54E1E60CE8600027E57 /* ImageLoadTest.m in Sources */,
|
||||
4883E4B81E5E690500027E57 /* SplitDimensions.m in Sources */,
|
||||
4883E4D61E5E6C7C00027E57 /* EmpyStateTest.m in Sources */,
|
||||
4883E4CE1E5E6B2D00027E57 /* HamburgerArrowTest.m in Sources */,
|
||||
4883E4B41E5E68DC00027E57 /* TrimPathFill.m in Sources */,
|
||||
48EAE2441E5E62630077ED37 /* CheckSwitchTest.m in Sources */,
|
||||
48D2C7301E5D158A00CC145E /* LottieLogoTest.m in Sources */,
|
||||
4883E4D21E5E6B4B00027E57 /* TwitterHeartTest.m in Sources */,
|
||||
4883E5501E60CE9900027E57 /* ImageMoveTest.m in Sources */,
|
||||
4883E4B61E5E68E600027E57 /* TrimPathsFull.m in Sources */,
|
||||
4883E4D01E5E6B3B00027E57 /* PinJump.m in Sources */,
|
||||
48EAE2461E5E62EC0077ED37 /* CityTest.m in Sources */,
|
||||
4883E4B21E5E68C900027E57 /* LightBulb.m in Sources */,
|
||||
48EAE1FA1E5E5EE10077ED37 /* LottieAnimationTestCase.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
48D2C72D1E5D158A00CC145E /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 48D2C7111E5D158A00CC145E /* Lottie-Screenshot */;
|
||||
targetProxy = 48D2C72C1E5D158A00CC145E /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
48D2C71E1E5D158A00CC145E /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
48D2C71F1E5D158A00CC145E /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
48D2C7231E5D158A00CC145E /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
48D2C7241E5D158A00CC145E /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
48D2C73D1E5D158A00CC145E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.2;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
48D2C73E1E5D158A00CC145E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.2;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
48D2C7401E5D158A00CC145E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 0B9CEBE2C6713C7A0FFB9B22 /* Pods-Lottie-Screenshot.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = "Lottie-Screenshot/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "-.Lottie-Screenshot";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
48D2C7411E5D158A00CC145E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = ED3474D7D70B8A56A28FEEB5 /* Pods-Lottie-Screenshot.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = "Lottie-Screenshot/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "-.Lottie-Screenshot";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
48D2C7431E5D158A00CC145E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 217C267174982CD7145A5BF6 /* Pods-Lottie-ScreenshotTests.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
INFOPLIST_FILE = "Lottie-ScreenshotTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "-.Lottie-ScreenshotTests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Lottie-Screenshot.app/Lottie-Screenshot";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
48D2C7441E5D158A00CC145E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 81296DC363CBCBB345B0CA51 /* Pods-Lottie-ScreenshotTests.release.xcconfig */;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
INFOPLIST_FILE = "Lottie-ScreenshotTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "-.Lottie-ScreenshotTests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Lottie-Screenshot.app/Lottie-Screenshot";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
48D2C70D1E5D158A00CC145E /* Build configuration list for PBXProject "Lottie-Screenshot" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
48D2C73D1E5D158A00CC145E /* Debug */,
|
||||
48D2C73E1E5D158A00CC145E /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
48D2C73F1E5D158A00CC145E /* Build configuration list for PBXNativeTarget "Lottie-Screenshot" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
48D2C7401E5D158A00CC145E /* Debug */,
|
||||
48D2C7411E5D158A00CC145E /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
48D2C7421E5D158A00CC145E /* Build configuration list for PBXNativeTarget "Lottie-ScreenshotTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
48D2C7431E5D158A00CC145E /* Debug */,
|
||||
48D2C7441E5D158A00CC145E /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 48D2C70A1E5D158A00CC145E /* Project object */;
|
||||
}
|
7
Lottie-Screenshot/Lottie-Screenshot.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
Lottie-Screenshot/Lottie-Screenshot.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:Lottie-Screenshot.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
10
Lottie-Screenshot/Lottie-Screenshot.xcworkspace/contents.xcworkspacedata
generated
Normal file
10
Lottie-Screenshot/Lottie-Screenshot.xcworkspace/contents.xcworkspacedata
generated
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Lottie-Screenshot.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
1
Lottie-Screenshot/Lottie-Screenshot/9squares-AlBoardman.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/9squares-AlBoardman.json
Executable file
File diff suppressed because one or more lines are too long
2767
Lottie-Screenshot/Lottie-Screenshot/Alarm.json
Executable file
2767
Lottie-Screenshot/Lottie-Screenshot/Alarm.json
Executable file
File diff suppressed because it is too large
Load Diff
1
Lottie-Screenshot/Lottie-Screenshot/AllSet.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/AllSet.json
Executable file
File diff suppressed because one or more lines are too long
17
Lottie-Screenshot/Lottie-Screenshot/AppDelegate.h
Normal file
17
Lottie-Screenshot/Lottie-Screenshot/AppDelegate.h
Normal file
@ -0,0 +1,17 @@
|
||||
//
|
||||
// AppDelegate.h
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/21/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
||||
|
||||
@property (strong, nonatomic) UIWindow *window;
|
||||
|
||||
|
||||
@end
|
||||
|
51
Lottie-Screenshot/Lottie-Screenshot/AppDelegate.m
Normal file
51
Lottie-Screenshot/Lottie-Screenshot/AppDelegate.m
Normal file
@ -0,0 +1,51 @@
|
||||
//
|
||||
// AppDelegate.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/21/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
@interface AppDelegate ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
// Override point for customization after application launch.
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
- (void)applicationWillResignActive:(UIApplication *)application {
|
||||
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
|
||||
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
|
||||
}
|
||||
|
||||
|
||||
- (void)applicationDidEnterBackground:(UIApplication *)application {
|
||||
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
|
||||
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
|
||||
}
|
||||
|
||||
|
||||
- (void)applicationWillEnterForeground:(UIApplication *)application {
|
||||
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
|
||||
}
|
||||
|
||||
|
||||
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
||||
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
|
||||
}
|
||||
|
||||
|
||||
- (void)applicationWillTerminate:(UIApplication *)application {
|
||||
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
|
||||
}
|
||||
|
||||
|
||||
@end
|
@ -0,0 +1,38 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11134" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11106"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11134" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11106"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="tne-QT-ifu">
|
||||
<objects>
|
||||
<viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
1
Lottie-Screenshot/Lottie-Screenshot/CheckSwitch.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/CheckSwitch.json
Executable file
File diff suppressed because one or more lines are too long
1
Lottie-Screenshot/Lottie-Screenshot/City.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/City.json
Executable file
File diff suppressed because one or more lines are too long
1
Lottie-Screenshot/Lottie-Screenshot/EmptyState.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/EmptyState.json
Executable file
File diff suppressed because one or more lines are too long
1
Lottie-Screenshot/Lottie-Screenshot/HamburgerArrow.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/HamburgerArrow.json
Executable file
File diff suppressed because one or more lines are too long
1
Lottie-Screenshot/Lottie-Screenshot/Hosts.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/Hosts.json
Executable file
File diff suppressed because one or more lines are too long
1
Lottie-Screenshot/Lottie-Screenshot/Image.json
Normal file
1
Lottie-Screenshot/Lottie-Screenshot/Image.json
Normal file
@ -0,0 +1 @@
|
||||
{"assets":[{"id":"image_0","w":400,"h":211,"u":"images/","p":"img_0.png"}],"layers":[{"ddd":0,"ind":0,"ty":2,"nm":"weaccept.jpg","cl":"jpg","refId":"image_0","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[90]},{"t":60.0000024438501}]},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[0,0,0],"e":[200,400,0],"to":[33.3333320617676,66.6666641235352,0],"ti":[-33.3333320617676,-66.6666641235352,0]},{"t":60.0000024438501}]},"a":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[0,0,0],"e":[35,270,0],"to":[5.83333349227905,45,0],"ti":[-5.83333349227905,-45,0]},{"t":60.0000024438501}]},"s":{"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":0,"s":[100,100,100],"e":[150,150,100]},{"t":60.0000024438501}]}},"ao":0,"ip":0,"op":61.0000024845809,"st":0,"bm":0,"sr":1}],"v":"4.5.0","ddd":0,"ip":0,"op":61.0000024845809,"fr":29.9700012207031,"w":600,"h":600}
|
38
Lottie-Screenshot/Lottie-Screenshot/Info.plist
Normal file
38
Lottie-Screenshot/Lottie-Screenshot/Info.plist
Normal file
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
1
Lottie-Screenshot/Lottie-Screenshot/LightBulb.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/LightBulb.json
Executable file
File diff suppressed because one or more lines are too long
1
Lottie-Screenshot/Lottie-Screenshot/LoopPlayOnce.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/LoopPlayOnce.json
Executable file
File diff suppressed because one or more lines are too long
1
Lottie-Screenshot/Lottie-Screenshot/LottieLogo1.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/LottieLogo1.json
Executable file
File diff suppressed because one or more lines are too long
1
Lottie-Screenshot/Lottie-Screenshot/LottieLogo2.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/LottieLogo2.json
Executable file
File diff suppressed because one or more lines are too long
1
Lottie-Screenshot/Lottie-Screenshot/PinJump.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/PinJump.json
Executable file
File diff suppressed because one or more lines are too long
1
Lottie-Screenshot/Lottie-Screenshot/SplitDimensions.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/SplitDimensions.json
Executable file
@ -0,0 +1 @@
|
||||
{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"s":true,"x":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[20.5],"e":[92]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":37,"s":[92],"e":[20.5]},{"t":119}]},"y":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[77.75],"e":[24.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":68,"s":[24.5],"e":[74.75]},{"t":119}]}},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[26.135,26.135]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,0,0,1]},"o":{"k":100},"nm":"Fill 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1"}],"ip":0,"op":120,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":120,"fr":60,"w":100,"h":100}
|
1
Lottie-Screenshot/Lottie-Screenshot/TrimPathFill.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/TrimPathFill.json
Executable file
@ -0,0 +1 @@
|
||||
{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[200,200,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[147.008,97.246]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":50,"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.06,1,1]},"o":{"k":100},"w":{"k":11},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,0,0,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-54.496,-56.377],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":4,"mn":"ADBE Vector Group"}],"ip":0,"op":1800,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[200,200,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[100.922,-82.055],[100.922,82.055],[-100.922,82.055],[-100.922,-82.055]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":50,"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.09,1,1]},"o":{"k":100},"w":{"k":21},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,0,0,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[70.992,93.828],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":4,"mn":"ADBE Vector Group"}],"ip":0,"op":1800,"st":0,"bm":0,"sr":1}],"v":"4.5.0","ddd":0,"ip":0,"op":1800,"fr":60,"w":400,"h":400}
|
1
Lottie-Screenshot/Lottie-Screenshot/TrimPathsFull.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/TrimPathsFull.json
Executable file
File diff suppressed because one or more lines are too long
1
Lottie-Screenshot/Lottie-Screenshot/TwitterHeart.json
Executable file
1
Lottie-Screenshot/Lottie-Screenshot/TwitterHeart.json
Executable file
File diff suppressed because one or more lines are too long
15
Lottie-Screenshot/Lottie-Screenshot/ViewController.h
Normal file
15
Lottie-Screenshot/Lottie-Screenshot/ViewController.h
Normal file
@ -0,0 +1,15 @@
|
||||
//
|
||||
// ViewController.h
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/21/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface ViewController : UIViewController
|
||||
|
||||
|
||||
@end
|
||||
|
29
Lottie-Screenshot/Lottie-Screenshot/ViewController.m
Normal file
29
Lottie-Screenshot/Lottie-Screenshot/ViewController.m
Normal file
@ -0,0 +1,29 @@
|
||||
//
|
||||
// ViewController.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/21/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import "ViewController.h"
|
||||
|
||||
@interface ViewController ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation ViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view, typically from a nib.
|
||||
}
|
||||
|
||||
|
||||
- (void)didReceiveMemoryWarning {
|
||||
[super didReceiveMemoryWarning];
|
||||
// Dispose of any resources that can be recreated.
|
||||
}
|
||||
|
||||
|
||||
@end
|
1
Lottie-Screenshot/Lottie-Screenshot/image_2.json
Normal file
1
Lottie-Screenshot/Lottie-Screenshot/image_2.json
Normal file
@ -0,0 +1 @@
|
||||
{"assets":[{"id":"image_0","w":400,"h":211,"u":"images/","p":"img_0.png"}],"layers":[{"ddd":0,"ind":0,"ty":3,"nm":"Null 1","ks":{"o":{"k":0},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[250,180,0],"e":[250,876,0],"to":[0,116,0],"ti":[0,-116,0]},{"t":119}]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":120,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":2,"nm":"img_0.png","cl":"png","parent":0,"refId":"image_0","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[6,-18,0]},"a":{"k":[200,105.5,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":120,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 1","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[0,0,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[432.184,232.152]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect"},{"ty":"st","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"w":{"k":2},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.36,0.82,0.47,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[7.092,-19.924],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":120,"st":0,"bm":0,"sr":1}],"v":"4.5.0","ddd":0,"ip":0,"op":120,"fr":30,"w":500,"h":1000}
|
BIN
Lottie-Screenshot/Lottie-Screenshot/img_0.png
Normal file
BIN
Lottie-Screenshot/Lottie-Screenshot/img_0.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 149 KiB |
16
Lottie-Screenshot/Lottie-Screenshot/main.m
Normal file
16
Lottie-Screenshot/Lottie-Screenshot/main.m
Normal file
@ -0,0 +1,16 @@
|
||||
//
|
||||
// main.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/21/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "AppDelegate.h"
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
||||
}
|
||||
}
|
1
Lottie-Screenshot/Lottie-Screenshot/pathStrokeTests.json
Normal file
1
Lottie-Screenshot/Lottie-Screenshot/pathStrokeTests.json
Normal file
File diff suppressed because one or more lines are too long
1
Lottie-Screenshot/Lottie-Screenshot/phonePreComp.json
Normal file
1
Lottie-Screenshot/Lottie-Screenshot/phonePreComp.json
Normal file
File diff suppressed because one or more lines are too long
37
Lottie-Screenshot/Lottie-ScreenshotTests/AlBoardmanTest.m
Normal file
37
Lottie-Screenshot/Lottie-ScreenshotTests/AlBoardmanTest.m
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// AlBoardmanTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface AlBoardmanTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation AlBoardmanTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"9squares-AlBoardman";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testAlBoardmanTest0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testAlBoardmanTest50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testAlBoardmanTest100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
36
Lottie-Screenshot/Lottie-ScreenshotTests/AlarmTest.m
Normal file
36
Lottie-Screenshot/Lottie-ScreenshotTests/AlarmTest.m
Normal file
@ -0,0 +1,36 @@
|
||||
//
|
||||
// AlarmTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface AlarmTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation AlarmTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"Alarm";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testAlarm0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testAlarm50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testAlarm100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
@end
|
40
Lottie-Screenshot/Lottie-ScreenshotTests/AllSetTest.m
Normal file
40
Lottie-Screenshot/Lottie-ScreenshotTests/AllSetTest.m
Normal file
@ -0,0 +1,40 @@
|
||||
//
|
||||
// AllSetTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface AllSetTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation AllSetTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"AllSet";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testAllSet0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testAllSet30 {
|
||||
[self testAnimationProgress:0.3];
|
||||
}
|
||||
|
||||
- (void)testAllSet50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testAllSet100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
@end
|
36
Lottie-Screenshot/Lottie-ScreenshotTests/CheckSwitchTest.m
Normal file
36
Lottie-Screenshot/Lottie-ScreenshotTests/CheckSwitchTest.m
Normal file
@ -0,0 +1,36 @@
|
||||
//
|
||||
// CheckSwitchTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface CheckSwitchTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation CheckSwitchTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"CheckSwitch";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testCheckSwitch0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testCheckSwitch50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testCheckSwitch100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
@end
|
45
Lottie-Screenshot/Lottie-ScreenshotTests/CityTest.m
Normal file
45
Lottie-Screenshot/Lottie-ScreenshotTests/CityTest.m
Normal file
@ -0,0 +1,45 @@
|
||||
//
|
||||
// CityTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
|
||||
@interface CityTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation CityTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"City";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testCity0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testCity15 {
|
||||
[self testAnimationProgress:0.15];
|
||||
}
|
||||
|
||||
- (void)testCity25 {
|
||||
[self testAnimationProgress:0.25];
|
||||
}
|
||||
|
||||
- (void)testCity50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testCity100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
@end
|
37
Lottie-Screenshot/Lottie-ScreenshotTests/EmpyStateTest.m
Normal file
37
Lottie-Screenshot/Lottie-ScreenshotTests/EmpyStateTest.m
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// EmpyStateTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface EmpyStateTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation EmpyStateTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"EmptyState";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testEmpyStateTest0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testEmpyStateTest50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testEmpyStateTest100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
@ -0,0 +1,37 @@
|
||||
//
|
||||
// HamburgerArrowTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface HamburgerArrowTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation HamburgerArrowTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"HamburgerArrow";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testHamburgerArrowTest0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testHamburgerArrowTest50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testHamburgerArrowTest100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
45
Lottie-Screenshot/Lottie-ScreenshotTests/Hosts.m
Normal file
45
Lottie-Screenshot/Lottie-ScreenshotTests/Hosts.m
Normal file
@ -0,0 +1,45 @@
|
||||
//
|
||||
// Hosts.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface Hosts : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation Hosts
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"Hosts";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testHosts0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testHosts15 {
|
||||
[self testAnimationProgress:0.15];
|
||||
}
|
||||
|
||||
- (void)testHosts25 {
|
||||
[self testAnimationProgress:0.25];
|
||||
}
|
||||
|
||||
- (void)testHosts50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testHosts100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
37
Lottie-Screenshot/Lottie-ScreenshotTests/ImageLoadTest.m
Normal file
37
Lottie-Screenshot/Lottie-ScreenshotTests/ImageLoadTest.m
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// ImageLoadTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/24/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface ImageLoadTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation ImageLoadTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"Image";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testImageLoadTest0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testImageLoadTest50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testImageLoadTest100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
37
Lottie-Screenshot/Lottie-ScreenshotTests/ImageMoveTest.m
Normal file
37
Lottie-Screenshot/Lottie-ScreenshotTests/ImageMoveTest.m
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// ImageMoveTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/24/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface ImageMoveTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation ImageMoveTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"image_2";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testImageMoveTest0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testImageMoveTest50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testImageMoveTest100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
22
Lottie-Screenshot/Lottie-ScreenshotTests/Info.plist
Normal file
22
Lottie-Screenshot/Lottie-ScreenshotTests/Info.plist
Normal file
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
37
Lottie-Screenshot/Lottie-ScreenshotTests/LightBulb.m
Normal file
37
Lottie-Screenshot/Lottie-ScreenshotTests/LightBulb.m
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// LightBulb.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface LightBulb : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation LightBulb
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"LightBulb";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testLightBulb0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testLightBulb50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testLightBulb100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
37
Lottie-Screenshot/Lottie-ScreenshotTests/LoopPlayOnceTest.m
Normal file
37
Lottie-Screenshot/Lottie-ScreenshotTests/LoopPlayOnceTest.m
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// LoopPlayOnceTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface LoopPlayOnceTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation LoopPlayOnceTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"LoopPlayOnce";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testLoopPlayOnceTest0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testLoopPlayOnceTest50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testLoopPlayOnceTest100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
@ -0,0 +1,18 @@
|
||||
//
|
||||
// LottieAnimationTestCase.h
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <FBSnapshotTestCase/FBSnapshotTestCase.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
|
||||
@interface LottieAnimationTestCase : FBSnapshotTestCase
|
||||
|
||||
@property (nonatomic, strong) NSString *animationName;
|
||||
|
||||
- (void)testAnimationProgress:(float)progress;
|
||||
|
||||
@end
|
@ -0,0 +1,51 @@
|
||||
//
|
||||
// LottieAnimationTestCase.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import "LottieAnimationTestCase.h"
|
||||
@interface LottieAnimationTestCase ()
|
||||
|
||||
@property (nonatomic, strong) UIWindow *window;
|
||||
@property (nonatomic, strong) LOTAnimationView *animationView;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@implementation LottieAnimationTestCase
|
||||
|
||||
- (void)setUp {
|
||||
[super setUp];
|
||||
// self.recordMode = YES;
|
||||
self.usesDrawViewHierarchyInRect = YES;
|
||||
self.animationView = [LOTAnimationView animationNamed:self.animationName];
|
||||
self.window = [[UIWindow alloc] initWithFrame:self.animationView.bounds];
|
||||
self.window.rootViewController = [[UIViewController alloc] init];
|
||||
[self.window.rootViewController.view addSubview:self.animationView];
|
||||
[self.window makeKeyAndVisible];
|
||||
}
|
||||
|
||||
- (void)testAnimationProgress:(float)progress {
|
||||
XCTestExpectation *expectation = [self expectationWithDescription:@"Image"];
|
||||
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
|
||||
[NSThread sleepForTimeInterval:0.1];
|
||||
[expectation fulfill];
|
||||
}];
|
||||
|
||||
self.animationView.animationProgress = progress;
|
||||
[self waitForExpectationsWithTimeout:1 handler:^(NSError * _Nullable error) {
|
||||
FBSnapshotVerifyView(self.animationView.layer, nil);
|
||||
}];
|
||||
}
|
||||
|
||||
//-(void)tearDown {
|
||||
// [super tearDown];
|
||||
// [self.animationView removeFromSuperview];
|
||||
// self.animationView = nil;
|
||||
// [self.window resignKeyWindow];
|
||||
//}
|
||||
|
||||
@end
|
44
Lottie-Screenshot/Lottie-ScreenshotTests/LottieLogoTest.m
Normal file
44
Lottie-Screenshot/Lottie-ScreenshotTests/LottieLogoTest.m
Normal file
@ -0,0 +1,44 @@
|
||||
//
|
||||
// Lottie_ScreenshotUITests.m
|
||||
// Lottie-ScreenshotUITests
|
||||
//
|
||||
// Created by Brandon Withrow on 2/21/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
#import <Lottie/Lottie.h>
|
||||
|
||||
@interface LottieLogoTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation LottieLogoTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"LottieLogo1";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testLottieLogo0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testLottieLogo15 {
|
||||
[self testAnimationProgress:0.15];
|
||||
}
|
||||
|
||||
- (void)testLottieLogo25 {
|
||||
[self testAnimationProgress:0.25];
|
||||
}
|
||||
|
||||
- (void)testLottieLogo50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testLottieLogo100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
@end
|
43
Lottie-Screenshot/Lottie-ScreenshotTests/LottieLogoTestB.m
Normal file
43
Lottie-Screenshot/Lottie-ScreenshotTests/LottieLogoTestB.m
Normal file
@ -0,0 +1,43 @@
|
||||
//
|
||||
// LottieLogoTestB.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface LottieLogoTestB : LottieAnimationTestCase
|
||||
@end
|
||||
|
||||
@implementation LottieLogoTestB
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"LottieLogo2";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testLottieLogo0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testLottieLogo15 {
|
||||
[self testAnimationProgress:0.15];
|
||||
}
|
||||
|
||||
- (void)testLottieLogo25 {
|
||||
[self testAnimationProgress:0.25];
|
||||
}
|
||||
|
||||
- (void)testLottieLogo50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testLottieLogo100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
@end
|
36
Lottie-Screenshot/Lottie-ScreenshotTests/PathStrokeTest.m
Normal file
36
Lottie-Screenshot/Lottie-ScreenshotTests/PathStrokeTest.m
Normal file
@ -0,0 +1,36 @@
|
||||
//
|
||||
// PathStrokeTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface PathStrokeTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation PathStrokeTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"pathStrokeTests";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testPathStroke0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testPathStroke50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testPathStroke100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
@end
|
37
Lottie-Screenshot/Lottie-ScreenshotTests/PhonePreCompTest.m
Normal file
37
Lottie-Screenshot/Lottie-ScreenshotTests/PhonePreCompTest.m
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// PhonePreCompTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/24/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface PhonePreCompTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation PhonePreCompTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"phonePreComp";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testPhonePreCompTest25 {
|
||||
[self testAnimationProgress:0.25];
|
||||
}
|
||||
|
||||
- (void)testPhonePreCompTest50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testPhonePreCompTest100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
37
Lottie-Screenshot/Lottie-ScreenshotTests/PinJump.m
Normal file
37
Lottie-Screenshot/Lottie-ScreenshotTests/PinJump.m
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// PinJump.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface PinJump : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation PinJump
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"PinJump";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testPinJump0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testPinJump50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testPinJump100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
37
Lottie-Screenshot/Lottie-ScreenshotTests/SplitDimensions.m
Normal file
37
Lottie-Screenshot/Lottie-ScreenshotTests/SplitDimensions.m
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// SplitDimensions.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface SplitDimensions : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation SplitDimensions
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"SplitDimensions";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testSplitDimensions0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testSplitDimensions50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testSplitDimensions100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
29
Lottie-Screenshot/Lottie-ScreenshotTests/TrimPathFill.m
Normal file
29
Lottie-Screenshot/Lottie-ScreenshotTests/TrimPathFill.m
Normal file
@ -0,0 +1,29 @@
|
||||
//
|
||||
// TrimPathFill.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface TrimPathFill : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation TrimPathFill
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"TrimPathFill";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testTrimPathFill100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
37
Lottie-Screenshot/Lottie-ScreenshotTests/TrimPathsFull.m
Normal file
37
Lottie-Screenshot/Lottie-ScreenshotTests/TrimPathsFull.m
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// TrimPathsFull.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface TrimPathsFull : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation TrimPathsFull
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"TrimPathsFull";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testTrimPathsFull0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testTrimPathsFull50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testTrimPathsFull100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
37
Lottie-Screenshot/Lottie-ScreenshotTests/TwitterHeartTest.m
Normal file
37
Lottie-Screenshot/Lottie-ScreenshotTests/TwitterHeartTest.m
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// TwitterHeartTest.m
|
||||
// Lottie-Screenshot
|
||||
//
|
||||
// Created by Brandon Withrow on 2/22/17.
|
||||
// Copyright © 2017 Brandon Withrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <Lottie/Lottie.h>
|
||||
#import "LottieAnimationTestCase.h"
|
||||
|
||||
@interface TwitterHeartTest : LottieAnimationTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation TwitterHeartTest
|
||||
|
||||
- (void)setUp {
|
||||
self.animationName = @"TwitterHeart";
|
||||
[super setUp];
|
||||
}
|
||||
|
||||
- (void)testTwitterHeartTest0 {
|
||||
[self testAnimationProgress:0];
|
||||
}
|
||||
|
||||
- (void)testTwitterHeartTest50 {
|
||||
[self testAnimationProgress:0.5];
|
||||
}
|
||||
|
||||
- (void)testTwitterHeartTest100 {
|
||||
[self testAnimationProgress:1];
|
||||
}
|
||||
|
||||
|
||||
@end
|
17
Lottie-Screenshot/Podfile
Normal file
17
Lottie-Screenshot/Podfile
Normal file
@ -0,0 +1,17 @@
|
||||
# Uncomment the next line to define a global platform for your project
|
||||
# platform :ios, '9.0'
|
||||
|
||||
target 'Lottie-Screenshot' do
|
||||
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
|
||||
# use_frameworks!
|
||||
|
||||
# Pods for Lottie-Screenshot
|
||||
|
||||
target 'Lottie-ScreenshotTests' do
|
||||
inherit! :search_paths
|
||||
# Pods for testing
|
||||
pod 'FBSnapshotTestCase/Core'
|
||||
pod 'lottie-ios', :path => '../'
|
||||
end
|
||||
|
||||
end
|
19
Lottie-Screenshot/Podfile.lock
Normal file
19
Lottie-Screenshot/Podfile.lock
Normal file
@ -0,0 +1,19 @@
|
||||
PODS:
|
||||
- FBSnapshotTestCase/Core (2.1.4)
|
||||
- lottie-ios (1.0.4)
|
||||
|
||||
DEPENDENCIES:
|
||||
- FBSnapshotTestCase/Core
|
||||
- lottie-ios (from `../`)
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
lottie-ios:
|
||||
:path: ../
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
FBSnapshotTestCase: 094f9f314decbabe373b87cc339bea235a63e07a
|
||||
lottie-ios: 8b2c5ba38105430a72f03ce54be90d8dac950161
|
||||
|
||||
PODFILE CHECKSUM: 3901ca88392ceeedc459164e7080c5f357e54e04
|
||||
|
||||
COCOAPODS: 1.1.1
|
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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 <UIKit/UIKit.h>
|
||||
|
||||
@interface UIApplication (StrictKeyWindow)
|
||||
|
||||
/**
|
||||
@return The receiver's @c keyWindow. Raises an assertion if @c nil.
|
||||
*/
|
||||
- (UIWindow *)fb_strictKeyWindow;
|
||||
|
||||
@end
|
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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 <FBSnapshotTestCase/UIApplication+StrictKeyWindow.h>
|
||||
|
||||
@implementation UIApplication (StrictKeyWindow)
|
||||
|
||||
- (UIWindow *)fb_strictKeyWindow
|
||||
{
|
||||
UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
|
||||
if (!keyWindow) {
|
||||
[NSException raise:@"FBSnapshotTestCaseNilKeyWindowException"
|
||||
format:@"Snapshot tests must be hosted by an application with a key window. Please ensure your test"
|
||||
" host sets up a key window at launch (either via storyboards or programmatically) and doesn't"
|
||||
" do anything to remove it while snapshot tests are running."];
|
||||
}
|
||||
return keyWindow;
|
||||
}
|
||||
|
||||
@end
|
37
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h
generated
Normal file
37
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h
generated
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// Created by Gabriel Handford on 3/1/09.
|
||||
// Copyright 2009-2013. All rights reserved.
|
||||
// Created by John Boiles on 10/20/11.
|
||||
// Copyright (c) 2011. All rights reserved
|
||||
// Modified by Felix Schulze on 2/11/13.
|
||||
// Copyright 2013. All rights reserved.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person
|
||||
// obtaining a copy of this software and associated documentation
|
||||
// files (the "Software"), to deal in the Software without
|
||||
// restriction, including without limitation the rights to use,
|
||||
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following
|
||||
// conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be
|
||||
// included in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
// OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface UIImage (Compare)
|
||||
|
||||
- (BOOL)fb_compareWithImage:(UIImage *)image tolerance:(CGFloat)tolerance;
|
||||
|
||||
@end
|
134
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m
generated
Normal file
134
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m
generated
Normal file
@ -0,0 +1,134 @@
|
||||
//
|
||||
// Created by Gabriel Handford on 3/1/09.
|
||||
// Copyright 2009-2013. All rights reserved.
|
||||
// Created by John Boiles on 10/20/11.
|
||||
// Copyright (c) 2011. All rights reserved
|
||||
// Modified by Felix Schulze on 2/11/13.
|
||||
// Copyright 2013. All rights reserved.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person
|
||||
// obtaining a copy of this software and associated documentation
|
||||
// files (the "Software"), to deal in the Software without
|
||||
// restriction, including without limitation the rights to use,
|
||||
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following
|
||||
// conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be
|
||||
// included in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
// OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
#import <FBSnapshotTestCase/UIImage+Compare.h>
|
||||
|
||||
// This makes debugging much more fun
|
||||
typedef union {
|
||||
uint32_t raw;
|
||||
unsigned char bytes[4];
|
||||
struct {
|
||||
char red;
|
||||
char green;
|
||||
char blue;
|
||||
char alpha;
|
||||
} __attribute__ ((packed)) pixels;
|
||||
} FBComparePixel;
|
||||
|
||||
@implementation UIImage (Compare)
|
||||
|
||||
- (BOOL)fb_compareWithImage:(UIImage *)image tolerance:(CGFloat)tolerance
|
||||
{
|
||||
NSAssert(CGSizeEqualToSize(self.size, image.size), @"Images must be same size.");
|
||||
|
||||
CGSize referenceImageSize = CGSizeMake(CGImageGetWidth(self.CGImage), CGImageGetHeight(self.CGImage));
|
||||
CGSize imageSize = CGSizeMake(CGImageGetWidth(image.CGImage), CGImageGetHeight(image.CGImage));
|
||||
|
||||
// The images have the equal size, so we could use the smallest amount of bytes because of byte padding
|
||||
size_t minBytesPerRow = MIN(CGImageGetBytesPerRow(self.CGImage), CGImageGetBytesPerRow(image.CGImage));
|
||||
size_t referenceImageSizeBytes = referenceImageSize.height * minBytesPerRow;
|
||||
void *referenceImagePixels = calloc(1, referenceImageSizeBytes);
|
||||
void *imagePixels = calloc(1, referenceImageSizeBytes);
|
||||
|
||||
if (!referenceImagePixels || !imagePixels) {
|
||||
free(referenceImagePixels);
|
||||
free(imagePixels);
|
||||
return NO;
|
||||
}
|
||||
|
||||
CGContextRef referenceImageContext = CGBitmapContextCreate(referenceImagePixels,
|
||||
referenceImageSize.width,
|
||||
referenceImageSize.height,
|
||||
CGImageGetBitsPerComponent(self.CGImage),
|
||||
minBytesPerRow,
|
||||
CGImageGetColorSpace(self.CGImage),
|
||||
(CGBitmapInfo)kCGImageAlphaPremultipliedLast
|
||||
);
|
||||
CGContextRef imageContext = CGBitmapContextCreate(imagePixels,
|
||||
imageSize.width,
|
||||
imageSize.height,
|
||||
CGImageGetBitsPerComponent(image.CGImage),
|
||||
minBytesPerRow,
|
||||
CGImageGetColorSpace(image.CGImage),
|
||||
(CGBitmapInfo)kCGImageAlphaPremultipliedLast
|
||||
);
|
||||
|
||||
if (!referenceImageContext || !imageContext) {
|
||||
CGContextRelease(referenceImageContext);
|
||||
CGContextRelease(imageContext);
|
||||
free(referenceImagePixels);
|
||||
free(imagePixels);
|
||||
return NO;
|
||||
}
|
||||
|
||||
CGContextDrawImage(referenceImageContext, CGRectMake(0, 0, referenceImageSize.width, referenceImageSize.height), self.CGImage);
|
||||
CGContextDrawImage(imageContext, CGRectMake(0, 0, imageSize.width, imageSize.height), image.CGImage);
|
||||
|
||||
CGContextRelease(referenceImageContext);
|
||||
CGContextRelease(imageContext);
|
||||
|
||||
BOOL imageEqual = YES;
|
||||
|
||||
// Do a fast compare if we can
|
||||
if (tolerance == 0) {
|
||||
imageEqual = (memcmp(referenceImagePixels, imagePixels, referenceImageSizeBytes) == 0);
|
||||
} else {
|
||||
// Go through each pixel in turn and see if it is different
|
||||
const NSInteger pixelCount = referenceImageSize.width * referenceImageSize.height;
|
||||
|
||||
FBComparePixel *p1 = referenceImagePixels;
|
||||
FBComparePixel *p2 = imagePixels;
|
||||
|
||||
NSInteger numDiffPixels = 0;
|
||||
for (int n = 0; n < pixelCount; ++n) {
|
||||
// If this pixel is different, increment the pixel diff count and see
|
||||
// if we have hit our limit.
|
||||
if (p1->raw != p2->raw) {
|
||||
numDiffPixels ++;
|
||||
|
||||
CGFloat percent = (CGFloat)numDiffPixels / pixelCount;
|
||||
if (percent > tolerance) {
|
||||
imageEqual = NO;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
p1++;
|
||||
p2++;
|
||||
}
|
||||
}
|
||||
|
||||
free(referenceImagePixels);
|
||||
free(imagePixels);
|
||||
|
||||
return imageEqual;
|
||||
}
|
||||
|
||||
@end
|
37
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h
generated
Normal file
37
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h
generated
Normal file
@ -0,0 +1,37 @@
|
||||
//
|
||||
// Created by Gabriel Handford on 3/1/09.
|
||||
// Copyright 2009-2013. All rights reserved.
|
||||
// Created by John Boiles on 10/20/11.
|
||||
// Copyright (c) 2011. All rights reserved
|
||||
// Modified by Felix Schulze on 2/11/13.
|
||||
// Copyright 2013. All rights reserved.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person
|
||||
// obtaining a copy of this software and associated documentation
|
||||
// files (the "Software"), to deal in the Software without
|
||||
// restriction, including without limitation the rights to use,
|
||||
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following
|
||||
// conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be
|
||||
// included in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
// OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface UIImage (Diff)
|
||||
|
||||
- (UIImage *)fb_diffWithImage:(UIImage *)image;
|
||||
|
||||
@end
|
56
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m
generated
Normal file
56
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m
generated
Normal file
@ -0,0 +1,56 @@
|
||||
//
|
||||
// Created by Gabriel Handford on 3/1/09.
|
||||
// Copyright 2009-2013. All rights reserved.
|
||||
// Created by John Boiles on 10/20/11.
|
||||
// Copyright (c) 2011. All rights reserved
|
||||
// Modified by Felix Schulze on 2/11/13.
|
||||
// Copyright 2013. All rights reserved.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person
|
||||
// obtaining a copy of this software and associated documentation
|
||||
// files (the "Software"), to deal in the Software without
|
||||
// restriction, including without limitation the rights to use,
|
||||
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following
|
||||
// conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be
|
||||
// included in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
// OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
#import <FBSnapshotTestCase/UIImage+Diff.h>
|
||||
|
||||
@implementation UIImage (Diff)
|
||||
|
||||
- (UIImage *)fb_diffWithImage:(UIImage *)image
|
||||
{
|
||||
if (!image) {
|
||||
return nil;
|
||||
}
|
||||
CGSize imageSize = CGSizeMake(MAX(self.size.width, image.size.width), MAX(self.size.height, image.size.height));
|
||||
UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0);
|
||||
CGContextRef context = UIGraphicsGetCurrentContext();
|
||||
[self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)];
|
||||
CGContextSetAlpha(context, 0.5);
|
||||
CGContextBeginTransparencyLayer(context, NULL);
|
||||
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
|
||||
CGContextSetBlendMode(context, kCGBlendModeDifference);
|
||||
CGContextSetFillColorWithColor(context,[UIColor whiteColor].CGColor);
|
||||
CGContextFillRect(context, CGRectMake(0, 0, self.size.width, self.size.height));
|
||||
CGContextEndTransparencyLayer(context);
|
||||
UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext();
|
||||
UIGraphicsEndImageContext();
|
||||
return returnImage;
|
||||
}
|
||||
|
||||
@end
|
24
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h
generated
Normal file
24
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h
generated
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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 <UIKit/UIKit.h>
|
||||
|
||||
@interface UIImage (Snapshot)
|
||||
|
||||
/// Uses renderInContext: to get a snapshot of the layer.
|
||||
+ (UIImage *)fb_imageForLayer:(CALayer *)layer;
|
||||
|
||||
/// Uses renderInContext: to get a snapshot of the view layer.
|
||||
+ (UIImage *)fb_imageForViewLayer:(UIView *)view;
|
||||
|
||||
/// Uses drawViewHierarchyInRect: to get a snapshot of the view and adds the view into a window if needed.
|
||||
+ (UIImage *)fb_imageForView:(UIView *)view;
|
||||
|
||||
@end
|
76
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m
generated
Normal file
76
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m
generated
Normal file
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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 <FBSnapshotTestCase/UIImage+Snapshot.h>
|
||||
#import <FBSnapshotTestCase/UIApplication+StrictKeyWindow.h>
|
||||
|
||||
@implementation UIImage (Snapshot)
|
||||
|
||||
+ (UIImage *)fb_imageForLayer:(CALayer *)layer
|
||||
{
|
||||
if (layer.presentationLayer) {
|
||||
layer = layer.presentationLayer;
|
||||
}
|
||||
CGRect bounds = layer.bounds;
|
||||
NSAssert1(CGRectGetWidth(bounds), @"Zero width for layer %@", layer);
|
||||
NSAssert1(CGRectGetHeight(bounds), @"Zero height for layer %@", layer);
|
||||
|
||||
UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0);
|
||||
CGContextRef context = UIGraphicsGetCurrentContext();
|
||||
NSAssert1(context, @"Could not generate context for layer %@", layer);
|
||||
CGContextSaveGState(context);
|
||||
[layer layoutIfNeeded];
|
||||
[layer renderInContext:context];
|
||||
CGContextRestoreGState(context);
|
||||
|
||||
UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();
|
||||
UIGraphicsEndImageContext();
|
||||
return snapshot;
|
||||
}
|
||||
|
||||
+ (UIImage *)fb_imageForViewLayer:(UIView *)view
|
||||
{
|
||||
[view layoutIfNeeded];
|
||||
return [self fb_imageForLayer:view.layer];
|
||||
}
|
||||
|
||||
+ (UIImage *)fb_imageForView:(UIView *)view
|
||||
{
|
||||
CGRect bounds = view.bounds;
|
||||
NSAssert1(CGRectGetWidth(bounds), @"Zero width for view %@", view);
|
||||
NSAssert1(CGRectGetHeight(bounds), @"Zero height for view %@", view);
|
||||
|
||||
// If the input view is already a UIWindow, then just use that. Otherwise wrap in a window.
|
||||
UIWindow *window = [view isKindOfClass:[UIWindow class]] ? (UIWindow *)view : view.window;
|
||||
BOOL removeFromSuperview = NO;
|
||||
if (!window) {
|
||||
window = [[UIApplication sharedApplication] fb_strictKeyWindow];
|
||||
}
|
||||
|
||||
if (!view.window && view != window) {
|
||||
[window addSubview:view];
|
||||
removeFromSuperview = YES;
|
||||
}
|
||||
|
||||
UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0);
|
||||
[view layoutIfNeeded];
|
||||
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
|
||||
|
||||
UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();
|
||||
UIGraphicsEndImageContext();
|
||||
|
||||
if (removeFromSuperview) {
|
||||
[view removeFromSuperview];
|
||||
}
|
||||
|
||||
return snapshot;
|
||||
}
|
||||
|
||||
@end
|
180
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h
generated
Normal file
180
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h
generated
Normal file
@ -0,0 +1,180 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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 <FBSnapshotTestCase/FBSnapshotTestCasePlatform.h>
|
||||
#import <FBSnapshotTestCase/FBSnapshotTestController.h>
|
||||
|
||||
#import <QuartzCore/QuartzCore.h>
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
/*
|
||||
There are three ways of setting reference image directories.
|
||||
|
||||
1. Set the preprocessor macro FB_REFERENCE_IMAGE_DIR to a double quoted
|
||||
c-string with the path.
|
||||
2. Set an environment variable named FB_REFERENCE_IMAGE_DIR with the path. This
|
||||
takes precedence over the preprocessor macro to allow for run-time override.
|
||||
3. Keep everything unset, which will cause the reference images to be looked up
|
||||
inside the bundle holding the current test, in the
|
||||
Resources/ReferenceImages_* directories.
|
||||
*/
|
||||
#ifndef FB_REFERENCE_IMAGE_DIR
|
||||
#define FB_REFERENCE_IMAGE_DIR ""
|
||||
#endif
|
||||
|
||||
/**
|
||||
Similar to our much-loved XCTAssert() macros. Use this to perform your test. No need to write an explanation, though.
|
||||
@param view The view to snapshot
|
||||
@param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method.
|
||||
@param suffixes An NSOrderedSet of strings for the different suffixes
|
||||
@param tolerance The percentage of pixels that can differ and still count as an 'identical' view
|
||||
*/
|
||||
#define FBSnapshotVerifyViewWithOptions(view__, identifier__, suffixes__, tolerance__) \
|
||||
FBSnapshotVerifyViewOrLayerWithOptions(View, view__, identifier__, suffixes__, tolerance__)
|
||||
|
||||
#define FBSnapshotVerifyView(view__, identifier__) \
|
||||
FBSnapshotVerifyViewWithOptions(view__, identifier__, FBSnapshotTestCaseDefaultSuffixes(), 0)
|
||||
|
||||
|
||||
/**
|
||||
Similar to our much-loved XCTAssert() macros. Use this to perform your test. No need to write an explanation, though.
|
||||
@param layer The layer to snapshot
|
||||
@param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method.
|
||||
@param suffixes An NSOrderedSet of strings for the different suffixes
|
||||
@param tolerance The percentage of pixels that can differ and still count as an 'identical' layer
|
||||
*/
|
||||
#define FBSnapshotVerifyLayerWithOptions(layer__, identifier__, suffixes__, tolerance__) \
|
||||
FBSnapshotVerifyViewOrLayerWithOptions(Layer, layer__, identifier__, suffixes__, tolerance__)
|
||||
|
||||
#define FBSnapshotVerifyLayer(layer__, identifier__) \
|
||||
FBSnapshotVerifyLayerWithOptions(layer__, identifier__, FBSnapshotTestCaseDefaultSuffixes(), 0)
|
||||
|
||||
|
||||
#define FBSnapshotVerifyViewOrLayerWithOptions(what__, viewOrLayer__, identifier__, suffixes__, tolerance__) \
|
||||
{ \
|
||||
NSString *errorDescription = [self snapshotVerifyViewOrLayer:viewOrLayer__ identifier:identifier__ suffixes:suffixes__ tolerance:tolerance__]; \
|
||||
BOOL noErrors = (errorDescription == nil); \
|
||||
XCTAssertTrue(noErrors, @"%@", errorDescription); \
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
The base class of view snapshotting tests. If you have small UI component, it's often easier to configure it in a test
|
||||
and compare an image of the view to a reference image that write lots of complex layout-code tests.
|
||||
|
||||
In order to flip the tests in your subclass to record the reference images set @c recordMode to @c YES.
|
||||
|
||||
@attention When recording, the reference image directory should be explicitly
|
||||
set, otherwise the images may be written to somewhere inside the
|
||||
simulator directory.
|
||||
|
||||
For example:
|
||||
@code
|
||||
- (void)setUp
|
||||
{
|
||||
[super setUp];
|
||||
self.recordMode = YES;
|
||||
}
|
||||
@endcode
|
||||
*/
|
||||
@interface FBSnapshotTestCase : XCTestCase
|
||||
|
||||
/**
|
||||
When YES, the test macros will save reference images, rather than performing an actual test.
|
||||
*/
|
||||
@property (readwrite, nonatomic, assign) BOOL recordMode;
|
||||
|
||||
/**
|
||||
When @c YES appends the name of the device model and OS to the snapshot file name.
|
||||
The default value is @c NO.
|
||||
*/
|
||||
@property (readwrite, nonatomic, assign, getter=isDeviceAgnostic) BOOL deviceAgnostic;
|
||||
|
||||
/**
|
||||
When YES, renders a snapshot of the complete view hierarchy as visible onscreen.
|
||||
There are several things that do not work if renderInContext: is used.
|
||||
- UIVisualEffect #70
|
||||
- UIAppearance #91
|
||||
- Size Classes #92
|
||||
|
||||
@attention If the view does't belong to a UIWindow, it will create one and add the view as a subview.
|
||||
*/
|
||||
@property (readwrite, nonatomic, assign) BOOL usesDrawViewHierarchyInRect;
|
||||
|
||||
- (void)setUp NS_REQUIRES_SUPER;
|
||||
- (void)tearDown NS_REQUIRES_SUPER;
|
||||
|
||||
/**
|
||||
Performs the comparison or records a snapshot of the layer if recordMode is YES.
|
||||
@param viewOrLayer The UIView or CALayer to snapshot
|
||||
@param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method.
|
||||
@param suffixes An NSOrderedSet of strings for the different suffixes
|
||||
@param tolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care
|
||||
@returns nil if the comparison (or saving of the reference image) succeeded. Otherwise it contains an error description.
|
||||
*/
|
||||
- (NSString *)snapshotVerifyViewOrLayer:(id)viewOrLayer
|
||||
identifier:(NSString *)identifier
|
||||
suffixes:(NSOrderedSet *)suffixes
|
||||
tolerance:(CGFloat)tolerance;
|
||||
|
||||
/**
|
||||
Performs the comparison or records a snapshot of the layer if recordMode is YES.
|
||||
@param layer The Layer to snapshot
|
||||
@param referenceImagesDirectory The directory in which reference images are stored.
|
||||
@param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method.
|
||||
@param tolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care
|
||||
@param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc).
|
||||
@returns YES if the comparison (or saving of the reference image) succeeded.
|
||||
*/
|
||||
- (BOOL)compareSnapshotOfLayer:(CALayer *)layer
|
||||
referenceImagesDirectory:(NSString *)referenceImagesDirectory
|
||||
identifier:(NSString *)identifier
|
||||
tolerance:(CGFloat)tolerance
|
||||
error:(NSError **)errorPtr;
|
||||
|
||||
/**
|
||||
Performs the comparison or records a snapshot of the view if recordMode is YES.
|
||||
@param view The view to snapshot
|
||||
@param referenceImagesDirectory The directory in which reference images are stored.
|
||||
@param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method.
|
||||
@param tolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care
|
||||
@param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc).
|
||||
@returns YES if the comparison (or saving of the reference image) succeeded.
|
||||
*/
|
||||
- (BOOL)compareSnapshotOfView:(UIView *)view
|
||||
referenceImagesDirectory:(NSString *)referenceImagesDirectory
|
||||
identifier:(NSString *)identifier
|
||||
tolerance:(CGFloat)tolerance
|
||||
error:(NSError **)errorPtr;
|
||||
|
||||
/**
|
||||
Checks if reference image with identifier based name exists in the reference images directory.
|
||||
@param referenceImagesDirectory The directory in which reference images are stored.
|
||||
@param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method.
|
||||
@param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc).
|
||||
@returns YES if reference image exists.
|
||||
*/
|
||||
- (BOOL)referenceImageRecordedInDirectory:(NSString *)referenceImagesDirectory
|
||||
identifier:(NSString *)identifier
|
||||
error:(NSError **)errorPtr;
|
||||
|
||||
/**
|
||||
Returns the reference image directory.
|
||||
|
||||
Helper function used to implement the assert macros.
|
||||
|
||||
@param dir directory to use if environment variable not specified. Ignored if null or empty.
|
||||
*/
|
||||
- (NSString *)getReferenceImageDirectoryWithDefault:(NSString *)dir;
|
||||
|
||||
@end
|
192
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m
generated
Normal file
192
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m
generated
Normal file
@ -0,0 +1,192 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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 <FBSnapshotTestCase/FBSnapshotTestCase.h>
|
||||
#import <FBSnapshotTestCase/FBSnapshotTestController.h>
|
||||
|
||||
@implementation FBSnapshotTestCase
|
||||
{
|
||||
FBSnapshotTestController *_snapshotController;
|
||||
}
|
||||
|
||||
#pragma mark - Overrides
|
||||
|
||||
- (void)setUp
|
||||
{
|
||||
[super setUp];
|
||||
_snapshotController = [[FBSnapshotTestController alloc] initWithTestName:NSStringFromClass([self class])];
|
||||
}
|
||||
|
||||
- (void)tearDown
|
||||
{
|
||||
_snapshotController = nil;
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (BOOL)recordMode
|
||||
{
|
||||
return _snapshotController.recordMode;
|
||||
}
|
||||
|
||||
- (void)setRecordMode:(BOOL)recordMode
|
||||
{
|
||||
NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__);
|
||||
_snapshotController.recordMode = recordMode;
|
||||
}
|
||||
|
||||
- (BOOL)isDeviceAgnostic
|
||||
{
|
||||
return _snapshotController.deviceAgnostic;
|
||||
}
|
||||
|
||||
- (void)setDeviceAgnostic:(BOOL)deviceAgnostic
|
||||
{
|
||||
NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__);
|
||||
_snapshotController.deviceAgnostic = deviceAgnostic;
|
||||
}
|
||||
|
||||
- (BOOL)usesDrawViewHierarchyInRect
|
||||
{
|
||||
return _snapshotController.usesDrawViewHierarchyInRect;
|
||||
}
|
||||
|
||||
- (void)setUsesDrawViewHierarchyInRect:(BOOL)usesDrawViewHierarchyInRect
|
||||
{
|
||||
NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__);
|
||||
_snapshotController.usesDrawViewHierarchyInRect = usesDrawViewHierarchyInRect;
|
||||
}
|
||||
|
||||
#pragma mark - Public API
|
||||
|
||||
- (NSString *)snapshotVerifyViewOrLayer:(id)viewOrLayer
|
||||
identifier:(NSString *)identifier
|
||||
suffixes:(NSOrderedSet *)suffixes
|
||||
tolerance:(CGFloat)tolerance
|
||||
{
|
||||
if (nil == viewOrLayer) {
|
||||
return @"Object to be snapshotted must not be nil";
|
||||
}
|
||||
NSString *referenceImageDirectory = [self getReferenceImageDirectoryWithDefault:(@ FB_REFERENCE_IMAGE_DIR)];
|
||||
if (referenceImageDirectory == nil) {
|
||||
return @"Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as Environment variable in your scheme.";
|
||||
}
|
||||
if (suffixes.count == 0) {
|
||||
return [NSString stringWithFormat:@"Suffixes set cannot be empty %@", suffixes];
|
||||
}
|
||||
|
||||
BOOL testSuccess = NO;
|
||||
NSError *error = nil;
|
||||
NSMutableArray *errors = [NSMutableArray array];
|
||||
|
||||
if (self.recordMode) {
|
||||
NSString *referenceImagesDirectory = [NSString stringWithFormat:@"%@%@", referenceImageDirectory, suffixes.firstObject];
|
||||
BOOL referenceImageSaved = [self _compareSnapshotOfViewOrLayer:viewOrLayer referenceImagesDirectory:referenceImagesDirectory identifier:(identifier) tolerance:tolerance error:&error];
|
||||
if (!referenceImageSaved) {
|
||||
[errors addObject:error];
|
||||
}
|
||||
} else {
|
||||
for (NSString *suffix in suffixes) {
|
||||
NSString *referenceImagesDirectory = [NSString stringWithFormat:@"%@%@", referenceImageDirectory, suffix];
|
||||
BOOL referenceImageAvailable = [self referenceImageRecordedInDirectory:referenceImagesDirectory identifier:(identifier) error:&error];
|
||||
|
||||
if (referenceImageAvailable) {
|
||||
BOOL comparisonSuccess = [self _compareSnapshotOfViewOrLayer:viewOrLayer referenceImagesDirectory:referenceImagesDirectory identifier:identifier tolerance:tolerance error:&error];
|
||||
[errors removeAllObjects];
|
||||
if (comparisonSuccess) {
|
||||
testSuccess = YES;
|
||||
break;
|
||||
} else {
|
||||
[errors addObject:error];
|
||||
}
|
||||
} else {
|
||||
[errors addObject:error];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!testSuccess) {
|
||||
return [NSString stringWithFormat:@"Snapshot comparison failed: %@", errors.firstObject];
|
||||
}
|
||||
if (self.recordMode) {
|
||||
return @"Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!";
|
||||
}
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (BOOL)compareSnapshotOfLayer:(CALayer *)layer
|
||||
referenceImagesDirectory:(NSString *)referenceImagesDirectory
|
||||
identifier:(NSString *)identifier
|
||||
tolerance:(CGFloat)tolerance
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
return [self _compareSnapshotOfViewOrLayer:layer
|
||||
referenceImagesDirectory:referenceImagesDirectory
|
||||
identifier:identifier
|
||||
tolerance:tolerance
|
||||
error:errorPtr];
|
||||
}
|
||||
|
||||
- (BOOL)compareSnapshotOfView:(UIView *)view
|
||||
referenceImagesDirectory:(NSString *)referenceImagesDirectory
|
||||
identifier:(NSString *)identifier
|
||||
tolerance:(CGFloat)tolerance
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
return [self _compareSnapshotOfViewOrLayer:view
|
||||
referenceImagesDirectory:referenceImagesDirectory
|
||||
identifier:identifier
|
||||
tolerance:tolerance
|
||||
error:errorPtr];
|
||||
}
|
||||
|
||||
- (BOOL)referenceImageRecordedInDirectory:(NSString *)referenceImagesDirectory
|
||||
identifier:(NSString *)identifier
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__);
|
||||
_snapshotController.referenceImagesDirectory = referenceImagesDirectory;
|
||||
UIImage *referenceImage = [_snapshotController referenceImageForSelector:self.invocation.selector
|
||||
identifier:identifier
|
||||
error:errorPtr];
|
||||
|
||||
return (referenceImage != nil);
|
||||
}
|
||||
|
||||
- (NSString *)getReferenceImageDirectoryWithDefault:(NSString *)dir
|
||||
{
|
||||
NSString *envReferenceImageDirectory = [NSProcessInfo processInfo].environment[@"FB_REFERENCE_IMAGE_DIR"];
|
||||
if (envReferenceImageDirectory) {
|
||||
return envReferenceImageDirectory;
|
||||
}
|
||||
if (dir && dir.length > 0) {
|
||||
return dir;
|
||||
}
|
||||
return [[NSBundle bundleForClass:self.class].resourcePath stringByAppendingPathComponent:@"ReferenceImages"];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - Private API
|
||||
|
||||
- (BOOL)_compareSnapshotOfViewOrLayer:(id)viewOrLayer
|
||||
referenceImagesDirectory:(NSString *)referenceImagesDirectory
|
||||
identifier:(NSString *)identifier
|
||||
tolerance:(CGFloat)tolerance
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
_snapshotController.referenceImagesDirectory = referenceImagesDirectory;
|
||||
return [_snapshotController compareSnapshotOfViewOrLayer:viewOrLayer
|
||||
selector:self.invocation.selector
|
||||
identifier:identifier
|
||||
tolerance:tolerance
|
||||
error:errorPtr];
|
||||
}
|
||||
|
||||
@end
|
44
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h
generated
Normal file
44
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h
generated
Normal file
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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 <Foundation/Foundation.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
Returns a Boolean value that indicates whether the snapshot test is running in 64Bit.
|
||||
This method is a convenience for creating the suffixes set based on the architecture
|
||||
that the test is running.
|
||||
|
||||
@returns @c YES if the test is running in 64bit, otherwise @c NO.
|
||||
*/
|
||||
BOOL FBSnapshotTestCaseIs64Bit(void);
|
||||
|
||||
/**
|
||||
Returns a default set of strings that is used to append a suffix based on the architectures.
|
||||
@warning Do not modify this function, you can create your own and use it with @c FBSnapshotVerifyViewWithOptions()
|
||||
|
||||
@returns An @c NSOrderedSet object containing strings that are appended to the reference images directory.
|
||||
*/
|
||||
NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void);
|
||||
|
||||
/**
|
||||
Returns a fully «normalized» file name.
|
||||
Strips punctuation and spaces and replaces them with @c _. Also appends the device model, running OS and screen size to the file name.
|
||||
|
||||
@returns An @c NSString object containing the passed @c fileName with the device model, OS and screen size appended at the end.
|
||||
*/
|
||||
NSString *FBDeviceAgnosticNormalizedFileName(NSString *fileName);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
51
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m
generated
Normal file
51
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m
generated
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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 <FBSnapshotTestCase/FBSnapshotTestCasePlatform.h>
|
||||
#import <FBSnapshotTestCase/UIApplication+StrictKeyWindow.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
BOOL FBSnapshotTestCaseIs64Bit(void)
|
||||
{
|
||||
#if __LP64__
|
||||
return YES;
|
||||
#else
|
||||
return NO;
|
||||
#endif
|
||||
}
|
||||
|
||||
NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void)
|
||||
{
|
||||
NSMutableOrderedSet *suffixesSet = [[NSMutableOrderedSet alloc] init];
|
||||
[suffixesSet addObject:@"_32"];
|
||||
[suffixesSet addObject:@"_64"];
|
||||
if (FBSnapshotTestCaseIs64Bit()) {
|
||||
return [suffixesSet reversedOrderedSet];
|
||||
}
|
||||
return [suffixesSet copy];
|
||||
}
|
||||
|
||||
NSString *FBDeviceAgnosticNormalizedFileName(NSString *fileName)
|
||||
{
|
||||
UIDevice *device = [UIDevice currentDevice];
|
||||
UIWindow *keyWindow = [[UIApplication sharedApplication] fb_strictKeyWindow];
|
||||
CGSize screenSize = keyWindow.bounds.size;
|
||||
NSString *os = device.systemVersion;
|
||||
|
||||
fileName = [NSString stringWithFormat:@"%@_%@%@_%.0fx%.0f", fileName, device.model, os, screenSize.width, screenSize.height];
|
||||
|
||||
NSMutableCharacterSet *invalidCharacters = [NSMutableCharacterSet new];
|
||||
[invalidCharacters formUnionWithCharacterSet:[NSCharacterSet whitespaceCharacterSet]];
|
||||
[invalidCharacters formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]];
|
||||
NSArray *validComponents = [fileName componentsSeparatedByCharactersInSet:invalidCharacters];
|
||||
fileName = [validComponents componentsJoinedByString:@"_"];
|
||||
|
||||
return fileName;
|
||||
}
|
166
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h
generated
Normal file
166
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h
generated
Normal file
@ -0,0 +1,166 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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 <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
typedef NS_ENUM(NSInteger, FBSnapshotTestControllerErrorCode) {
|
||||
FBSnapshotTestControllerErrorCodeUnknown,
|
||||
FBSnapshotTestControllerErrorCodeNeedsRecord,
|
||||
FBSnapshotTestControllerErrorCodePNGCreationFailed,
|
||||
FBSnapshotTestControllerErrorCodeImagesDifferentSizes,
|
||||
FBSnapshotTestControllerErrorCodeImagesDifferent,
|
||||
};
|
||||
/**
|
||||
Errors returned by the methods of FBSnapshotTestController use this domain.
|
||||
*/
|
||||
extern NSString *const FBSnapshotTestControllerErrorDomain;
|
||||
|
||||
/**
|
||||
Errors returned by the methods of FBSnapshotTestController sometimes contain this key in the `userInfo` dictionary.
|
||||
*/
|
||||
extern NSString *const FBReferenceImageFilePathKey;
|
||||
|
||||
/**
|
||||
Errors returned by the methods of FBSnapshotTestController sometimes contain this key in the `userInfo` dictionary.
|
||||
*/
|
||||
extern NSString *const FBReferenceImageKey;
|
||||
|
||||
/**
|
||||
Errors returned by the methods of FBSnapshotTestController sometimes contain this key in the `userInfo` dictionary.
|
||||
*/
|
||||
extern NSString *const FBCapturedImageKey;
|
||||
|
||||
/**
|
||||
Errors returned by the methods of FBSnapshotTestController sometimes contain this key in the `userInfo` dictionary.
|
||||
*/
|
||||
extern NSString *const FBDiffedImageKey;
|
||||
|
||||
/**
|
||||
Provides the heavy-lifting for FBSnapshotTestCase. It loads and saves images, along with performing the actual pixel-
|
||||
by-pixel comparison of images.
|
||||
Instances are initialized with the test class, and directories to read and write to.
|
||||
*/
|
||||
@interface FBSnapshotTestController : NSObject
|
||||
|
||||
/**
|
||||
Record snapshots.
|
||||
*/
|
||||
@property (readwrite, nonatomic, assign) BOOL recordMode;
|
||||
|
||||
/**
|
||||
When @c YES appends the name of the device model and OS to the snapshot file name.
|
||||
The default value is @c NO.
|
||||
*/
|
||||
@property (readwrite, nonatomic, assign, getter=isDeviceAgnostic) BOOL deviceAgnostic;
|
||||
|
||||
/**
|
||||
Uses drawViewHierarchyInRect:afterScreenUpdates: to draw the image instead of renderInContext:
|
||||
*/
|
||||
@property (readwrite, nonatomic, assign) BOOL usesDrawViewHierarchyInRect;
|
||||
|
||||
/**
|
||||
The directory in which referfence images are stored.
|
||||
*/
|
||||
@property (readwrite, nonatomic, copy) NSString *referenceImagesDirectory;
|
||||
|
||||
/**
|
||||
@param testClass The subclass of FBSnapshotTestCase that is using this controller.
|
||||
@returns An instance of FBSnapshotTestController.
|
||||
*/
|
||||
- (instancetype)initWithTestClass:(Class)testClass;
|
||||
|
||||
/**
|
||||
Designated initializer.
|
||||
@param testName The name of the tests.
|
||||
@returns An instance of FBSnapshotTestController.
|
||||
*/
|
||||
- (instancetype)initWithTestName:(NSString *)testName;
|
||||
|
||||
/**
|
||||
Performs the comparison of the layer.
|
||||
@param layer The Layer to snapshot.
|
||||
@param selector The test method being run.
|
||||
@param identifier An optional identifier, used is there are muliptle snapshot tests in a given -test method.
|
||||
@param error An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc).
|
||||
@returns YES if the comparison (or saving of the reference image) succeeded.
|
||||
*/
|
||||
- (BOOL)compareSnapshotOfLayer:(CALayer *)layer
|
||||
selector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
error:(NSError **)errorPtr;
|
||||
|
||||
/**
|
||||
Performs the comparison of the view.
|
||||
@param view The view to snapshot.
|
||||
@param selector The test method being run.
|
||||
@param identifier An optional identifier, used is there are muliptle snapshot tests in a given -test method.
|
||||
@param error An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc).
|
||||
@returns YES if the comparison (or saving of the reference image) succeeded.
|
||||
*/
|
||||
- (BOOL)compareSnapshotOfView:(UIView *)view
|
||||
selector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
error:(NSError **)errorPtr;
|
||||
|
||||
/**
|
||||
Performs the comparison of a view or layer.
|
||||
@param view The view or layer to snapshot.
|
||||
@param selector The test method being run.
|
||||
@param identifier An optional identifier, used is there are muliptle snapshot tests in a given -test method.
|
||||
@param tolerance The percentage of pixels that can differ and still be considered 'identical'
|
||||
@param error An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc).
|
||||
@returns YES if the comparison (or saving of the reference image) succeeded.
|
||||
*/
|
||||
- (BOOL)compareSnapshotOfViewOrLayer:(id)viewOrLayer
|
||||
selector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
tolerance:(CGFloat)tolerance
|
||||
error:(NSError **)errorPtr;
|
||||
|
||||
/**
|
||||
Loads a reference image.
|
||||
@param selector The test method being run.
|
||||
@param identifier The optional identifier, used when multiple images are tested in a single -test method.
|
||||
@param errorPtr An error, if this methods returns nil, the error will be something useful.
|
||||
@returns An image.
|
||||
*/
|
||||
- (UIImage *)referenceImageForSelector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
error:(NSError **)errorPtr;
|
||||
|
||||
/**
|
||||
Performs a pixel-by-pixel comparison of the two images with an allowable margin of error.
|
||||
@param referenceImage The reference (correct) image.
|
||||
@param image The image to test against the reference.
|
||||
@param tolerance The percentage of pixels that can differ and still be considered 'identical'
|
||||
@param errorPtr An error that indicates why the comparison failed if it does.
|
||||
@returns YES if the comparison succeeded and the images are the same(ish).
|
||||
*/
|
||||
- (BOOL)compareReferenceImage:(UIImage *)referenceImage
|
||||
toImage:(UIImage *)image
|
||||
tolerance:(CGFloat)tolerance
|
||||
error:(NSError **)errorPtr;
|
||||
|
||||
/**
|
||||
Saves the reference image and the test image to `failedOutputDirectory`.
|
||||
@param referenceImage The reference (correct) image.
|
||||
@param testImage The image to test against the reference.
|
||||
@param selector The test method being run.
|
||||
@param identifier The optional identifier, used when multiple images are tested in a single -test method.
|
||||
@param errorPtr An error that indicates why the comparison failed if it does.
|
||||
@returns YES if the save succeeded.
|
||||
*/
|
||||
- (BOOL)saveFailedReferenceImage:(UIImage *)referenceImage
|
||||
testImage:(UIImage *)testImage
|
||||
selector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
error:(NSError **)errorPtr;
|
||||
@end
|
358
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m
generated
Normal file
358
Lottie-Screenshot/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m
generated
Normal file
@ -0,0 +1,358 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 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 <FBSnapshotTestCase/FBSnapshotTestController.h>
|
||||
#import <FBSnapshotTestCase/FBSnapshotTestCasePlatform.h>
|
||||
#import <FBSnapshotTestCase/UIImage+Compare.h>
|
||||
#import <FBSnapshotTestCase/UIImage+Diff.h>
|
||||
#import <FBSnapshotTestCase/UIImage+Snapshot.h>
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NSString *const FBSnapshotTestControllerErrorDomain = @"FBSnapshotTestControllerErrorDomain";
|
||||
NSString *const FBReferenceImageFilePathKey = @"FBReferenceImageFilePathKey";
|
||||
NSString *const FBReferenceImageKey = @"FBReferenceImageKey";
|
||||
NSString *const FBCapturedImageKey = @"FBCapturedImageKey";
|
||||
NSString *const FBDiffedImageKey = @"FBDiffedImageKey";
|
||||
|
||||
typedef NS_ENUM(NSUInteger, FBTestSnapshotFileNameType) {
|
||||
FBTestSnapshotFileNameTypeReference,
|
||||
FBTestSnapshotFileNameTypeFailedReference,
|
||||
FBTestSnapshotFileNameTypeFailedTest,
|
||||
FBTestSnapshotFileNameTypeFailedTestDiff,
|
||||
};
|
||||
|
||||
@implementation FBSnapshotTestController
|
||||
{
|
||||
NSString *_testName;
|
||||
NSFileManager *_fileManager;
|
||||
}
|
||||
|
||||
#pragma mark - Initializers
|
||||
|
||||
- (instancetype)initWithTestClass:(Class)testClass;
|
||||
{
|
||||
return [self initWithTestName:NSStringFromClass(testClass)];
|
||||
}
|
||||
|
||||
- (instancetype)initWithTestName:(NSString *)testName
|
||||
{
|
||||
if (self = [super init]) {
|
||||
_testName = [testName copy];
|
||||
_deviceAgnostic = NO;
|
||||
|
||||
_fileManager = [[NSFileManager alloc] init];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Overrides
|
||||
|
||||
- (NSString *)description
|
||||
{
|
||||
return [NSString stringWithFormat:@"%@ %@", [super description], _referenceImagesDirectory];
|
||||
}
|
||||
|
||||
#pragma mark - Public API
|
||||
|
||||
- (BOOL)compareSnapshotOfLayer:(CALayer *)layer
|
||||
selector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
return [self compareSnapshotOfViewOrLayer:layer
|
||||
selector:selector
|
||||
identifier:identifier
|
||||
tolerance:0
|
||||
error:errorPtr];
|
||||
}
|
||||
|
||||
- (BOOL)compareSnapshotOfView:(UIView *)view
|
||||
selector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
return [self compareSnapshotOfViewOrLayer:view
|
||||
selector:selector
|
||||
identifier:identifier
|
||||
tolerance:0
|
||||
error:errorPtr];
|
||||
}
|
||||
|
||||
- (BOOL)compareSnapshotOfViewOrLayer:(id)viewOrLayer
|
||||
selector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
tolerance:(CGFloat)tolerance
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
if (self.recordMode) {
|
||||
return [self _recordSnapshotOfViewOrLayer:viewOrLayer selector:selector identifier:identifier error:errorPtr];
|
||||
} else {
|
||||
return [self _performPixelComparisonWithViewOrLayer:viewOrLayer selector:selector identifier:identifier tolerance:tolerance error:errorPtr];
|
||||
}
|
||||
}
|
||||
|
||||
- (UIImage *)referenceImageForSelector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
NSString *filePath = [self _referenceFilePathForSelector:selector identifier:identifier];
|
||||
UIImage *image = [UIImage imageWithContentsOfFile:filePath];
|
||||
if (nil == image && NULL != errorPtr) {
|
||||
BOOL exists = [_fileManager fileExistsAtPath:filePath];
|
||||
if (!exists) {
|
||||
*errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain
|
||||
code:FBSnapshotTestControllerErrorCodeNeedsRecord
|
||||
userInfo:@{
|
||||
FBReferenceImageFilePathKey: filePath,
|
||||
NSLocalizedDescriptionKey: @"Unable to load reference image.",
|
||||
NSLocalizedFailureReasonErrorKey: @"Reference image not found. You need to run the test in record mode",
|
||||
}];
|
||||
} else {
|
||||
*errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain
|
||||
code:FBSnapshotTestControllerErrorCodeUnknown
|
||||
userInfo:nil];
|
||||
}
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
- (BOOL)compareReferenceImage:(UIImage *)referenceImage
|
||||
toImage:(UIImage *)image
|
||||
tolerance:(CGFloat)tolerance
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
BOOL sameImageDimensions = CGSizeEqualToSize(referenceImage.size, image.size);
|
||||
if (sameImageDimensions && [referenceImage fb_compareWithImage:image tolerance:tolerance]) {
|
||||
return YES;
|
||||
}
|
||||
|
||||
if (NULL != errorPtr) {
|
||||
NSString *errorDescription = sameImageDimensions ? @"Images different" : @"Images different sizes";
|
||||
NSString *errorReason = sameImageDimensions ? [NSString stringWithFormat:@"image pixels differed by more than %.2f%% from the reference image", tolerance * 100]
|
||||
: [NSString stringWithFormat:@"referenceImage:%@, image:%@", NSStringFromCGSize(referenceImage.size), NSStringFromCGSize(image.size)];
|
||||
FBSnapshotTestControllerErrorCode errorCode = sameImageDimensions ? FBSnapshotTestControllerErrorCodeImagesDifferent : FBSnapshotTestControllerErrorCodeImagesDifferentSizes;
|
||||
|
||||
*errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain
|
||||
code:errorCode
|
||||
userInfo:@{
|
||||
NSLocalizedDescriptionKey: errorDescription,
|
||||
NSLocalizedFailureReasonErrorKey: errorReason,
|
||||
FBReferenceImageKey: referenceImage,
|
||||
FBCapturedImageKey: image,
|
||||
FBDiffedImageKey: [referenceImage fb_diffWithImage:image],
|
||||
}];
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)saveFailedReferenceImage:(UIImage *)referenceImage
|
||||
testImage:(UIImage *)testImage
|
||||
selector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
NSData *referencePNGData = UIImagePNGRepresentation(referenceImage);
|
||||
NSData *testPNGData = UIImagePNGRepresentation(testImage);
|
||||
|
||||
NSString *referencePath = [self _failedFilePathForSelector:selector
|
||||
identifier:identifier
|
||||
fileNameType:FBTestSnapshotFileNameTypeFailedReference];
|
||||
|
||||
NSError *creationError = nil;
|
||||
BOOL didCreateDir = [_fileManager createDirectoryAtPath:[referencePath stringByDeletingLastPathComponent]
|
||||
withIntermediateDirectories:YES
|
||||
attributes:nil
|
||||
error:&creationError];
|
||||
if (!didCreateDir) {
|
||||
if (NULL != errorPtr) {
|
||||
*errorPtr = creationError;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
if (![referencePNGData writeToFile:referencePath options:NSDataWritingAtomic error:errorPtr]) {
|
||||
return NO;
|
||||
}
|
||||
|
||||
NSString *testPath = [self _failedFilePathForSelector:selector
|
||||
identifier:identifier
|
||||
fileNameType:FBTestSnapshotFileNameTypeFailedTest];
|
||||
|
||||
if (![testPNGData writeToFile:testPath options:NSDataWritingAtomic error:errorPtr]) {
|
||||
return NO;
|
||||
}
|
||||
|
||||
NSString *diffPath = [self _failedFilePathForSelector:selector
|
||||
identifier:identifier
|
||||
fileNameType:FBTestSnapshotFileNameTypeFailedTestDiff];
|
||||
|
||||
UIImage *diffImage = [referenceImage fb_diffWithImage:testImage];
|
||||
NSData *diffImageData = UIImagePNGRepresentation(diffImage);
|
||||
|
||||
if (![diffImageData writeToFile:diffPath options:NSDataWritingAtomic error:errorPtr]) {
|
||||
return NO;
|
||||
}
|
||||
|
||||
NSLog(@"If you have Kaleidoscope installed you can run this command to see an image diff:\n"
|
||||
@"ksdiff \"%@\" \"%@\"", referencePath, testPath);
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
#pragma mark - Private API
|
||||
|
||||
- (NSString *)_fileNameForSelector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
fileNameType:(FBTestSnapshotFileNameType)fileNameType
|
||||
{
|
||||
NSString *fileName = nil;
|
||||
switch (fileNameType) {
|
||||
case FBTestSnapshotFileNameTypeFailedReference:
|
||||
fileName = @"reference_";
|
||||
break;
|
||||
case FBTestSnapshotFileNameTypeFailedTest:
|
||||
fileName = @"failed_";
|
||||
break;
|
||||
case FBTestSnapshotFileNameTypeFailedTestDiff:
|
||||
fileName = @"diff_";
|
||||
break;
|
||||
default:
|
||||
fileName = @"";
|
||||
break;
|
||||
}
|
||||
fileName = [fileName stringByAppendingString:NSStringFromSelector(selector)];
|
||||
if (0 < identifier.length) {
|
||||
fileName = [fileName stringByAppendingFormat:@"_%@", identifier];
|
||||
}
|
||||
|
||||
if (self.isDeviceAgnostic) {
|
||||
fileName = FBDeviceAgnosticNormalizedFileName(fileName);
|
||||
}
|
||||
|
||||
if ([[UIScreen mainScreen] scale] > 1) {
|
||||
fileName = [fileName stringByAppendingFormat:@"@%.fx", [[UIScreen mainScreen] scale]];
|
||||
}
|
||||
fileName = [fileName stringByAppendingPathExtension:@"png"];
|
||||
return fileName;
|
||||
}
|
||||
|
||||
- (NSString *)_referenceFilePathForSelector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
{
|
||||
NSString *fileName = [self _fileNameForSelector:selector
|
||||
identifier:identifier
|
||||
fileNameType:FBTestSnapshotFileNameTypeReference];
|
||||
NSString *filePath = [_referenceImagesDirectory stringByAppendingPathComponent:_testName];
|
||||
filePath = [filePath stringByAppendingPathComponent:fileName];
|
||||
return filePath;
|
||||
}
|
||||
|
||||
- (NSString *)_failedFilePathForSelector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
fileNameType:(FBTestSnapshotFileNameType)fileNameType
|
||||
{
|
||||
NSString *fileName = [self _fileNameForSelector:selector
|
||||
identifier:identifier
|
||||
fileNameType:fileNameType];
|
||||
NSString *folderPath = NSTemporaryDirectory();
|
||||
if (getenv("IMAGE_DIFF_DIR")) {
|
||||
folderPath = @(getenv("IMAGE_DIFF_DIR"));
|
||||
}
|
||||
NSString *filePath = [folderPath stringByAppendingPathComponent:_testName];
|
||||
filePath = [filePath stringByAppendingPathComponent:fileName];
|
||||
return filePath;
|
||||
}
|
||||
|
||||
- (BOOL)_performPixelComparisonWithViewOrLayer:(id)viewOrLayer
|
||||
selector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
tolerance:(CGFloat)tolerance
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
UIImage *referenceImage = [self referenceImageForSelector:selector identifier:identifier error:errorPtr];
|
||||
if (nil != referenceImage) {
|
||||
UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer];
|
||||
BOOL imagesSame = [self compareReferenceImage:referenceImage toImage:snapshot tolerance:tolerance error:errorPtr];
|
||||
if (!imagesSame) {
|
||||
NSError *saveError = nil;
|
||||
if ([self saveFailedReferenceImage:referenceImage testImage:snapshot selector:selector identifier:identifier error:&saveError] == NO) {
|
||||
NSLog(@"Error saving test images: %@", saveError);
|
||||
}
|
||||
}
|
||||
return imagesSame;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)_recordSnapshotOfViewOrLayer:(id)viewOrLayer
|
||||
selector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer];
|
||||
return [self _saveReferenceImage:snapshot selector:selector identifier:identifier error:errorPtr];
|
||||
}
|
||||
|
||||
- (BOOL)_saveReferenceImage:(UIImage *)image
|
||||
selector:(SEL)selector
|
||||
identifier:(NSString *)identifier
|
||||
error:(NSError **)errorPtr
|
||||
{
|
||||
BOOL didWrite = NO;
|
||||
if (nil != image) {
|
||||
NSString *filePath = [self _referenceFilePathForSelector:selector identifier:identifier];
|
||||
NSData *pngData = UIImagePNGRepresentation(image);
|
||||
if (nil != pngData) {
|
||||
NSError *creationError = nil;
|
||||
BOOL didCreateDir = [_fileManager createDirectoryAtPath:[filePath stringByDeletingLastPathComponent]
|
||||
withIntermediateDirectories:YES
|
||||
attributes:nil
|
||||
error:&creationError];
|
||||
if (!didCreateDir) {
|
||||
if (NULL != errorPtr) {
|
||||
*errorPtr = creationError;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
didWrite = [pngData writeToFile:filePath options:NSDataWritingAtomic error:errorPtr];
|
||||
if (didWrite) {
|
||||
NSLog(@"Reference image save at: %@", filePath);
|
||||
}
|
||||
} else {
|
||||
if (nil != errorPtr) {
|
||||
*errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain
|
||||
code:FBSnapshotTestControllerErrorCodePNGCreationFailed
|
||||
userInfo:@{
|
||||
FBReferenceImageFilePathKey: filePath,
|
||||
}];
|
||||
}
|
||||
}
|
||||
}
|
||||
return didWrite;
|
||||
}
|
||||
|
||||
- (UIImage *)_imageForViewOrLayer:(id)viewOrLayer
|
||||
{
|
||||
if ([viewOrLayer isKindOfClass:[UIView class]]) {
|
||||
if (_usesDrawViewHierarchyInRect) {
|
||||
return [UIImage fb_imageForView:viewOrLayer];
|
||||
} else {
|
||||
return [UIImage fb_imageForViewLayer:viewOrLayer];
|
||||
}
|
||||
} else if ([viewOrLayer isKindOfClass:[CALayer class]]) {
|
||||
return [UIImage fb_imageForLayer:viewOrLayer];
|
||||
} else {
|
||||
[NSException raise:@"Only UIView and CALayer classes can be snapshotted" format:@"%@", viewOrLayer];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
@end
|
29
Lottie-Screenshot/Pods/FBSnapshotTestCase/LICENSE
generated
Normal file
29
Lottie-Screenshot/Pods/FBSnapshotTestCase/LICENSE
generated
Normal file
@ -0,0 +1,29 @@
|
||||
BSD License
|
||||
|
||||
For the FBSnapshotTestCase software
|
||||
|
||||
Copyright (c) 2013, Facebook, Inc.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name Facebook nor the names of its contributors may be used to
|
||||
endorse or promote products derived from this software without specific
|
||||
prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
97
Lottie-Screenshot/Pods/FBSnapshotTestCase/README.md
generated
Normal file
97
Lottie-Screenshot/Pods/FBSnapshotTestCase/README.md
generated
Normal file
@ -0,0 +1,97 @@
|
||||
FBSnapshotTestCase
|
||||
======================
|
||||
|
||||
[](https://travis-ci.org/facebook/ios-snapshot-test-case) [](http://cocoadocs.org/docsets/FBSnapshotTestCase/)
|
||||
|
||||
What it does
|
||||
------------
|
||||
|
||||
A "snapshot test case" takes a configured `UIView` or `CALayer` and uses the
|
||||
`renderInContext:` method to get an image snapshot of its contents. It
|
||||
compares this snapshot to a "reference image" stored in your source code
|
||||
repository and fails the test if the two images don't match.
|
||||
|
||||
Why?
|
||||
----
|
||||
|
||||
At Facebook we write a lot of UI code. As you might imagine, each type of
|
||||
feed story is rendered using a subclass of `UIView`. There are a lot of edge
|
||||
cases that we want to handle correctly:
|
||||
|
||||
- What if there is more text than can fit in the space available?
|
||||
- What if an image doesn't match the size of an image view?
|
||||
- What should the highlighted state look like?
|
||||
|
||||
It's straightforward to test logic code, but less obvious how you should test
|
||||
views. You can do a lot of rectangle asserts, but these are hard to understand
|
||||
or visualize. Looking at an image diff shows you exactly what changed and how
|
||||
it will look to users.
|
||||
|
||||
We developed `FBSnapshotTestCase` to make snapshot tests easy.
|
||||
|
||||
Installation with CocoaPods
|
||||
---------------------------
|
||||
|
||||
1. Add the following lines to your Podfile:
|
||||
|
||||
```
|
||||
target "Tests" do
|
||||
pod 'FBSnapshotTestCase'
|
||||
end
|
||||
```
|
||||
|
||||
If you support iOS 7 use `FBSnapshotTestCase/Core` instead, which doesn't contain Swift support.
|
||||
|
||||
Replace "Tests" with the name of your test project.
|
||||
|
||||
2. There are [three ways](https://github.com/facebook/ios-snapshot-test-case/blob/master/FBSnapshotTestCase/FBSnapshotTestCase.h#L19-L29) of setting reference image directories, the recommended one is to define `FB_REFERENCE_IMAGE_DIR` in your scheme. This should point to the directory where you want reference images to be stored. At Facebook, we normally use this:
|
||||
|
||||
|Name|Value|
|
||||
|:---|:----|
|
||||
|`FB_REFERENCE_IMAGE_DIR`|`$(SOURCE_ROOT)/$(PROJECT_NAME)Tests/ReferenceImages`|
|
||||
|
||||
|
||||

|
||||
|
||||
Creating a snapshot test
|
||||
------------------------
|
||||
|
||||
1. Subclass `FBSnapshotTestCase` instead of `XCTestCase`.
|
||||
2. From within your test, use `FBSnapshotVerifyView`.
|
||||
3. Run the test once with `self.recordMode = YES;` in the test's `-setUp`
|
||||
method. (This creates the reference images on disk.)
|
||||
4. Remove the line enabling record mode and run the test.
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Automatically names reference images on disk according to test class and
|
||||
selector.
|
||||
- Prints a descriptive error message to the console on failure. (Bonus:
|
||||
failure message includes a one-line command to see an image diff if
|
||||
you have [Kaleidoscope](http://www.kaleidoscopeapp.com) installed.)
|
||||
- Supply an optional "identifier" if you want to perform multiple snapshots
|
||||
in a single test method.
|
||||
- Support for `CALayer` via `FBSnapshotVerifyLayer`.
|
||||
- `usesDrawViewHierarchyInRect` to handle cases like `UIVisualEffect`, `UIAppearance` and Size Classes.
|
||||
- `isDeviceAgnostic` to allow appending the device model (`iPhone`, `iPad`, `iPod Touch`, etc), OS version and screen size to the images (allowing to have multiple tests for the same «snapshot» for different `OS`s and devices).
|
||||
|
||||
Notes
|
||||
-----
|
||||
|
||||
Your unit test must be an "application test", not a "logic test." (That is, it
|
||||
must be run within the Simulator so that it has access to UIKit.) In Xcode 5
|
||||
and later new projects only offer application tests, but older projects will
|
||||
have separate targets for the two types.
|
||||
|
||||
Authors
|
||||
-------
|
||||
|
||||
`FBSnapshotTestCase` was written at Facebook by
|
||||
[Jonathan Dann](https://facebook.com/j.p.dann) with significant contributions by
|
||||
[Todd Krabach](https://facebook.com/toddkrabach).
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
`FBSnapshotTestCase` is BSD-licensed. See `LICENSE`.
|
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCase.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCase.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h
|
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h
|
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestController.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/FBSnapshotTestController.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h
|
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/UIApplication+StrictKeyWindow.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/UIApplication+StrictKeyWindow.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.h
|
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Compare.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Compare.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h
|
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Diff.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Diff.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h
|
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Snapshot.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/FBSnapshotTestCase/UIImage+Snapshot.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h
|
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/CAAnimationGroup+LOTAnimatableGroup.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/CAAnimationGroup+LOTAnimatableGroup.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../../../lottie-ios/Classes/Extensions/CAAnimationGroup+LOTAnimatableGroup.h
|
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/CADisplayLink.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/CADisplayLink.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../../../lottie-ios/Classes/MacCompatability/CADisplayLink.h
|
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/CALayer+Compat.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/CALayer+Compat.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../../../lottie-ios/Classes/MacCompatability/CALayer+Compat.h
|
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/CGGeometry+LOTAdditions.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/CGGeometry+LOTAdditions.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../../../lottie-ios/Classes/Extensions/CGGeometry+LOTAdditions.h
|
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableBoundsValue.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableBoundsValue.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatableBoundsValue.h
|
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableColorValue.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableColorValue.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatableColorValue.h
|
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableLayer.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableLayer.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../../../lottie-ios/Classes/AnimatableLayers/LOTAnimatableLayer.h
|
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableNumberValue.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableNumberValue.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatableNumberValue.h
|
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatablePointValue.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatablePointValue.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatablePointValue.h
|
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableScaleValue.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableScaleValue.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatableScaleValue.h
|
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableShapeValue.h
generated
Symbolic link
1
Lottie-Screenshot/Pods/Headers/Private/lottie-ios/Lottie/LOTAnimatableShapeValue.h
generated
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../../../lottie-ios/Classes/AnimatableProperties/LOTAnimatableShapeValue.h
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user