diff --git a/Demo/YYImageDemo.xcodeproj/project.pbxproj b/Demo/YYImageDemo.xcodeproj/project.pbxproj index 13b6ced..3d70b28 100644 --- a/Demo/YYImageDemo.xcodeproj/project.pbxproj +++ b/Demo/YYImageDemo.xcodeproj/project.pbxproj @@ -3,239 +3,258 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 48; objects = { /* Begin PBXBuildFile section */ - D93B2D521BDB944B009B66B0 /* UIView+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = D93B2D511BDB944B009B66B0 /* UIView+YYAdd.m */; settings = {ASSET_TAGS = (); }; }; - D93B2D611BDB96DE009B66B0 /* YYImageExample.m in Sources */ = {isa = PBXBuildFile; fileRef = D93B2D541BDB96DE009B66B0 /* YYImageExample.m */; settings = {ASSET_TAGS = (); }; }; - D93B2D621BDB96DE009B66B0 /* YYImageDisplayExample.m in Sources */ = {isa = PBXBuildFile; fileRef = D93B2D561BDB96DE009B66B0 /* YYImageDisplayExample.m */; settings = {ASSET_TAGS = (); }; }; - D93B2D631BDB96DE009B66B0 /* YYImageProgressiveExample.m in Sources */ = {isa = PBXBuildFile; fileRef = D93B2D581BDB96DE009B66B0 /* YYImageProgressiveExample.m */; settings = {ASSET_TAGS = (); }; }; - D93B2D661BDB96DE009B66B0 /* YYImageExampleHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = D93B2D5E1BDB96DE009B66B0 /* YYImageExampleHelper.m */; settings = {ASSET_TAGS = (); }; }; - D93B2D6D1BDB99BA009B66B0 /* UIControl+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = D93B2D6A1BDB99BA009B66B0 /* UIControl+YYAdd.m */; settings = {ASSET_TAGS = (); }; }; - D93B2D6E1BDB99BA009B66B0 /* UIGestureRecognizer+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = D93B2D6C1BDB99BA009B66B0 /* UIGestureRecognizer+YYAdd.m */; settings = {ASSET_TAGS = (); }; }; - D93B2D701BDBA586009B66B0 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D93B2D6F1BDBA586009B66B0 /* libz.tbd */; }; - D93B2D801BDBBE66009B66B0 /* niconiconi@2x.gif in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D741BDBBE66009B66B0 /* niconiconi@2x.gif */; settings = {ASSET_TAGS = (); }; }; - D93B2D811BDBBE66009B66B0 /* google@2x.webp in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D751BDBBE66009B66B0 /* google@2x.webp */; settings = {ASSET_TAGS = (); }; }; - D93B2D821BDBBE66009B66B0 /* nyancat@2x.webp in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D761BDBBE66009B66B0 /* nyancat@2x.webp */; settings = {ASSET_TAGS = (); }; }; - D93B2D831BDBBE66009B66B0 /* pia@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D771BDBBE66009B66B0 /* pia@2x.png */; settings = {ASSET_TAGS = (); }; }; - D93B2D841BDBBE66009B66B0 /* cube@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D781BDBBE66009B66B0 /* cube@2x.png */; settings = {ASSET_TAGS = (); }; }; - D93B2D851BDBBE66009B66B0 /* wall-e@2x.webp in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D791BDBBE66009B66B0 /* wall-e@2x.webp */; settings = {ASSET_TAGS = (); }; }; - D93B2D861BDBBE66009B66B0 /* mew_baseline.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D7A1BDBBE66009B66B0 /* mew_baseline.jpg */; settings = {ASSET_TAGS = (); }; }; - D93B2D871BDBBE66009B66B0 /* mew_progressive.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D7B1BDBBE66009B66B0 /* mew_progressive.jpg */; settings = {ASSET_TAGS = (); }; }; - D93B2D881BDBBE66009B66B0 /* mew_baseline.png in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D7C1BDBBE66009B66B0 /* mew_baseline.png */; settings = {ASSET_TAGS = (); }; }; - D93B2D891BDBBE66009B66B0 /* mew_interlaced.png in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D7D1BDBBE66009B66B0 /* mew_interlaced.png */; settings = {ASSET_TAGS = (); }; }; - D93B2D8A1BDBBE66009B66B0 /* mew_baseline.gif in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D7E1BDBBE66009B66B0 /* mew_baseline.gif */; settings = {ASSET_TAGS = (); }; }; - D93B2D8B1BDBBE66009B66B0 /* mew_interlaced.gif in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D7F1BDBBE66009B66B0 /* mew_interlaced.gif */; settings = {ASSET_TAGS = (); }; }; - D93B2D8E1BDBBE74009B66B0 /* ResourceTwitter.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D8C1BDBBE74009B66B0 /* ResourceTwitter.bundle */; settings = {ASSET_TAGS = (); }; }; - D93B2D8F1BDBBE74009B66B0 /* EmoticonWeibo.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D93B2D8D1BDBBE74009B66B0 /* EmoticonWeibo.bundle */; settings = {ASSET_TAGS = (); }; }; - D946DE071BD13D75006B77F7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DE061BD13D75006B77F7 /* main.m */; }; - D946DE0A1BD13D75006B77F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DE091BD13D75006B77F7 /* AppDelegate.m */; }; - D946DE0D1BD13D75006B77F7 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DE0C1BD13D75006B77F7 /* ViewController.m */; }; - D946DE101BD13D75006B77F7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D946DE0E1BD13D75006B77F7 /* Main.storyboard */; }; - D946DE121BD13D75006B77F7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D946DE111BD13D75006B77F7 /* Assets.xcassets */; }; - D946DE151BD13D75006B77F7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D946DE131BD13D75006B77F7 /* LaunchScreen.storyboard */; }; - D946DE391BD13E28006B77F7 /* YYAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DE301BD13E28006B77F7 /* YYAnimatedImageView.m */; settings = {ASSET_TAGS = (); }; }; - D946DE3A1BD13E28006B77F7 /* YYFrameImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DE321BD13E28006B77F7 /* YYFrameImage.m */; settings = {ASSET_TAGS = (); }; }; - D946DE3B1BD13E28006B77F7 /* YYImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DE341BD13E28006B77F7 /* YYImage.m */; settings = {ASSET_TAGS = (); }; }; - D946DE3C1BD13E28006B77F7 /* YYImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DE361BD13E28006B77F7 /* YYImageCoder.m */; settings = {ASSET_TAGS = (); }; }; - D946DE3D1BD13E28006B77F7 /* YYSpriteSheetImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DE381BD13E28006B77F7 /* YYSpriteSheetImage.m */; settings = {ASSET_TAGS = (); }; }; - D946DE3F1BD13E32006B77F7 /* WebP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D946DE3E1BD13E32006B77F7 /* WebP.framework */; settings = {ASSET_TAGS = (); }; }; + D91A60311F057230008CD5D3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D91A60301F057230008CD5D3 /* AppDelegate.m */; }; + D91A60341F057230008CD5D3 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D91A60331F057230008CD5D3 /* ViewController.m */; }; + D91A60371F057230008CD5D3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D91A60351F057230008CD5D3 /* Main.storyboard */; }; + D91A60391F057230008CD5D3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D91A60381F057230008CD5D3 /* Assets.xcassets */; }; + D91A603C1F057230008CD5D3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D91A603A1F057230008CD5D3 /* LaunchScreen.storyboard */; }; + D91A603F1F057230008CD5D3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D91A603E1F057230008CD5D3 /* main.m */; }; + D97F40941F0573DA00DFD481 /* YYAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = D97F408B1F0573DA00DFD481 /* YYAnimatedImageView.m */; }; + D97F40951F0573DA00DFD481 /* YYFrameImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D97F408D1F0573DA00DFD481 /* YYFrameImage.m */; }; + D97F40961F0573DA00DFD481 /* YYImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D97F408F1F0573DA00DFD481 /* YYImage.m */; }; + D97F40971F0573DA00DFD481 /* YYImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D97F40911F0573DA00DFD481 /* YYImageCoder.m */; }; + D97F40981F0573DA00DFD481 /* YYSpriteSheetImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D97F40931F0573DA00DFD481 /* YYSpriteSheetImage.m */; }; + D97F409A1F05740B00DFD481 /* WebP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D97F40991F05740B00DFD481 /* WebP.framework */; }; + D97F409D1F05741000DFD481 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D97F409C1F05741000DFD481 /* libz.tbd */; }; + D9D17EB91F05750000051419 /* cube@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EAB1F05750000051419 /* cube@2x.png */; }; + D9D17EBA1F05750000051419 /* EmoticonWeibo.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EAC1F05750000051419 /* EmoticonWeibo.bundle */; }; + D9D17EBB1F05750000051419 /* google@2x.webp in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EAD1F05750000051419 /* google@2x.webp */; }; + D9D17EBC1F05750000051419 /* mew_baseline.gif in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EAE1F05750000051419 /* mew_baseline.gif */; }; + D9D17EBD1F05750000051419 /* mew_baseline.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EAF1F05750000051419 /* mew_baseline.jpg */; }; + D9D17EBE1F05750000051419 /* mew_baseline.png in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EB01F05750000051419 /* mew_baseline.png */; }; + D9D17EBF1F05750000051419 /* mew_interlaced.gif in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EB11F05750000051419 /* mew_interlaced.gif */; }; + D9D17EC01F05750000051419 /* mew_interlaced.png in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EB21F05750000051419 /* mew_interlaced.png */; }; + D9D17EC11F05750000051419 /* mew_progressive.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EB31F05750000051419 /* mew_progressive.jpg */; }; + D9D17EC21F05750000051419 /* niconiconi@2x.gif in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EB41F05750000051419 /* niconiconi@2x.gif */; }; + D9D17EC31F05750000051419 /* nyancat@2x.webp in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EB51F05750000051419 /* nyancat@2x.webp */; }; + D9D17EC41F05750000051419 /* pia@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EB61F05750000051419 /* pia@2x.png */; }; + D9D17EC51F05750000051419 /* ResourceTwitter.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EB71F05750000051419 /* ResourceTwitter.bundle */; }; + D9D17EC61F05750000051419 /* wall-e@2x.webp in Resources */ = {isa = PBXBuildFile; fileRef = D9D17EB81F05750000051419 /* wall-e@2x.webp */; }; + D9D17ECE1F05751700051419 /* UIControl+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D17EC91F05751700051419 /* UIControl+YYAdd.m */; }; + D9D17ECF1F05751700051419 /* UIGestureRecognizer+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D17ECB1F05751700051419 /* UIGestureRecognizer+YYAdd.m */; }; + D9D17ED01F05751700051419 /* UIView+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D17ECD1F05751700051419 /* UIView+YYAdd.m */; }; + D9D17EE01F05756400051419 /* YYImageDisplayExample.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D17ED91F05756400051419 /* YYImageDisplayExample.m */; }; + D9D17EE11F05756400051419 /* YYImageExample.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D17EDB1F05756400051419 /* YYImageExample.m */; }; + D9D17EE21F05756400051419 /* YYImageExampleHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D17EDD1F05756400051419 /* YYImageExampleHelper.m */; }; + D9D17EE31F05756400051419 /* YYImageProgressiveExample.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D17EDF1F05756400051419 /* YYImageProgressiveExample.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - D93B2D501BDB944B009B66B0 /* UIView+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+YYAdd.h"; sourceTree = ""; }; - D93B2D511BDB944B009B66B0 /* UIView+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+YYAdd.m"; sourceTree = ""; }; - D93B2D531BDB96DE009B66B0 /* YYImageExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageExample.h; sourceTree = ""; }; - D93B2D541BDB96DE009B66B0 /* YYImageExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageExample.m; sourceTree = ""; }; - D93B2D551BDB96DE009B66B0 /* YYImageDisplayExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageDisplayExample.h; sourceTree = ""; }; - D93B2D561BDB96DE009B66B0 /* YYImageDisplayExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageDisplayExample.m; sourceTree = ""; }; - D93B2D571BDB96DE009B66B0 /* YYImageProgressiveExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageProgressiveExample.h; sourceTree = ""; }; - D93B2D581BDB96DE009B66B0 /* YYImageProgressiveExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageProgressiveExample.m; sourceTree = ""; }; - D93B2D591BDB96DE009B66B0 /* YYWebImageExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYWebImageExample.h; sourceTree = ""; }; - D93B2D5A1BDB96DE009B66B0 /* YYWebImageExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYWebImageExample.m; sourceTree = ""; }; - D93B2D5B1BDB96DE009B66B0 /* YYImageBenchmark.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageBenchmark.h; sourceTree = ""; }; - D93B2D5C1BDB96DE009B66B0 /* YYImageBenchmark.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageBenchmark.m; sourceTree = ""; }; - D93B2D5D1BDB96DE009B66B0 /* YYImageExampleHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageExampleHelper.h; sourceTree = ""; }; - D93B2D5E1BDB96DE009B66B0 /* YYImageExampleHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageExampleHelper.m; sourceTree = ""; }; - D93B2D5F1BDB96DE009B66B0 /* YYBPGCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYBPGCoder.h; sourceTree = ""; }; - D93B2D601BDB96DE009B66B0 /* YYBPGCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYBPGCoder.m; sourceTree = ""; }; - D93B2D691BDB99BA009B66B0 /* UIControl+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIControl+YYAdd.h"; sourceTree = ""; }; - D93B2D6A1BDB99BA009B66B0 /* UIControl+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIControl+YYAdd.m"; sourceTree = ""; }; - D93B2D6B1BDB99BA009B66B0 /* UIGestureRecognizer+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIGestureRecognizer+YYAdd.h"; sourceTree = ""; }; - D93B2D6C1BDB99BA009B66B0 /* UIGestureRecognizer+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIGestureRecognizer+YYAdd.m"; sourceTree = ""; }; - D93B2D6F1BDBA586009B66B0 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - D93B2D741BDBBE66009B66B0 /* niconiconi@2x.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "niconiconi@2x.gif"; sourceTree = ""; }; - D93B2D751BDBBE66009B66B0 /* google@2x.webp */ = {isa = PBXFileReference; lastKnownFileType = file; path = "google@2x.webp"; sourceTree = ""; }; - D93B2D761BDBBE66009B66B0 /* nyancat@2x.webp */ = {isa = PBXFileReference; lastKnownFileType = file; path = "nyancat@2x.webp"; sourceTree = ""; }; - D93B2D771BDBBE66009B66B0 /* pia@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pia@2x.png"; sourceTree = ""; }; - D93B2D781BDBBE66009B66B0 /* cube@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cube@2x.png"; sourceTree = ""; }; - D93B2D791BDBBE66009B66B0 /* wall-e@2x.webp */ = {isa = PBXFileReference; lastKnownFileType = file; path = "wall-e@2x.webp"; sourceTree = ""; }; - D93B2D7A1BDBBE66009B66B0 /* mew_baseline.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = mew_baseline.jpg; sourceTree = ""; }; - D93B2D7B1BDBBE66009B66B0 /* mew_progressive.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = mew_progressive.jpg; sourceTree = ""; }; - D93B2D7C1BDBBE66009B66B0 /* mew_baseline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mew_baseline.png; sourceTree = ""; }; - D93B2D7D1BDBBE66009B66B0 /* mew_interlaced.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mew_interlaced.png; sourceTree = ""; }; - D93B2D7E1BDBBE66009B66B0 /* mew_baseline.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = mew_baseline.gif; sourceTree = ""; }; - D93B2D7F1BDBBE66009B66B0 /* mew_interlaced.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = mew_interlaced.gif; sourceTree = ""; }; - D93B2D8C1BDBBE74009B66B0 /* ResourceTwitter.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ResourceTwitter.bundle; sourceTree = ""; }; - D93B2D8D1BDBBE74009B66B0 /* EmoticonWeibo.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = EmoticonWeibo.bundle; sourceTree = ""; }; - D946DE021BD13D75006B77F7 /* YYImageDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = YYImageDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; - D946DE061BD13D75006B77F7 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - D946DE081BD13D75006B77F7 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - D946DE091BD13D75006B77F7 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - D946DE0B1BD13D75006B77F7 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; - D946DE0C1BD13D75006B77F7 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; - D946DE0F1BD13D75006B77F7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - D946DE111BD13D75006B77F7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - D946DE141BD13D75006B77F7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - D946DE161BD13D75006B77F7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D946DE2F1BD13E28006B77F7 /* YYAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYAnimatedImageView.h; sourceTree = ""; }; - D946DE301BD13E28006B77F7 /* YYAnimatedImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYAnimatedImageView.m; sourceTree = ""; }; - D946DE311BD13E28006B77F7 /* YYFrameImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYFrameImage.h; sourceTree = ""; }; - D946DE321BD13E28006B77F7 /* YYFrameImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYFrameImage.m; sourceTree = ""; }; - D946DE331BD13E28006B77F7 /* YYImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImage.h; sourceTree = ""; }; - D946DE341BD13E28006B77F7 /* YYImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImage.m; sourceTree = ""; }; - D946DE351BD13E28006B77F7 /* YYImageCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageCoder.h; sourceTree = ""; }; - D946DE361BD13E28006B77F7 /* YYImageCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageCoder.m; sourceTree = ""; }; - D946DE371BD13E28006B77F7 /* YYSpriteSheetImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYSpriteSheetImage.h; sourceTree = ""; }; - D946DE381BD13E28006B77F7 /* YYSpriteSheetImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYSpriteSheetImage.m; sourceTree = ""; }; - D946DE3E1BD13E32006B77F7 /* WebP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebP.framework; path = ../Vendor/WebP.framework; sourceTree = ""; }; + D91A602C1F057230008CD5D3 /* YYImageDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = YYImageDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + D91A602F1F057230008CD5D3 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = YYImageDemo/AppDelegate.h; sourceTree = ""; }; + D91A60301F057230008CD5D3 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = YYImageDemo/AppDelegate.m; sourceTree = ""; }; + D91A60321F057230008CD5D3 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ViewController.h; path = YYImageDemo/ViewController.h; sourceTree = ""; }; + D91A60331F057230008CD5D3 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ViewController.m; path = YYImageDemo/ViewController.m; sourceTree = ""; }; + D91A60361F057230008CD5D3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + D91A60381F057230008CD5D3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = YYImageDemo/Assets.xcassets; sourceTree = ""; }; + D91A603B1F057230008CD5D3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + D91A603D1F057230008CD5D3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = YYImageDemo/Info.plist; sourceTree = ""; }; + D91A603E1F057230008CD5D3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = main.m; path = YYImageDemo/main.m; sourceTree = ""; }; + D97F408A1F0573DA00DFD481 /* YYAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYAnimatedImageView.h; sourceTree = ""; }; + D97F408B1F0573DA00DFD481 /* YYAnimatedImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYAnimatedImageView.m; sourceTree = ""; }; + D97F408C1F0573DA00DFD481 /* YYFrameImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYFrameImage.h; sourceTree = ""; }; + D97F408D1F0573DA00DFD481 /* YYFrameImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYFrameImage.m; sourceTree = ""; }; + D97F408E1F0573DA00DFD481 /* YYImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImage.h; sourceTree = ""; }; + D97F408F1F0573DA00DFD481 /* YYImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImage.m; sourceTree = ""; }; + D97F40901F0573DA00DFD481 /* YYImageCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageCoder.h; sourceTree = ""; }; + D97F40911F0573DA00DFD481 /* YYImageCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageCoder.m; sourceTree = ""; }; + D97F40921F0573DA00DFD481 /* YYSpriteSheetImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYSpriteSheetImage.h; sourceTree = ""; }; + D97F40931F0573DA00DFD481 /* YYSpriteSheetImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYSpriteSheetImage.m; sourceTree = ""; }; + D97F40991F05740B00DFD481 /* WebP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebP.framework; path = ../Vendor/WebP.framework; sourceTree = ""; }; + D97F409C1F05741000DFD481 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + D9D17EAB1F05750000051419 /* cube@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cube@2x.png"; sourceTree = ""; }; + D9D17EAC1F05750000051419 /* EmoticonWeibo.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = EmoticonWeibo.bundle; sourceTree = ""; }; + D9D17EAD1F05750000051419 /* google@2x.webp */ = {isa = PBXFileReference; lastKnownFileType = file; path = "google@2x.webp"; sourceTree = ""; }; + D9D17EAE1F05750000051419 /* mew_baseline.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = mew_baseline.gif; sourceTree = ""; }; + D9D17EAF1F05750000051419 /* mew_baseline.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = mew_baseline.jpg; sourceTree = ""; }; + D9D17EB01F05750000051419 /* mew_baseline.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mew_baseline.png; sourceTree = ""; }; + D9D17EB11F05750000051419 /* mew_interlaced.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = mew_interlaced.gif; sourceTree = ""; }; + D9D17EB21F05750000051419 /* mew_interlaced.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mew_interlaced.png; sourceTree = ""; }; + D9D17EB31F05750000051419 /* mew_progressive.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = mew_progressive.jpg; sourceTree = ""; }; + D9D17EB41F05750000051419 /* niconiconi@2x.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "niconiconi@2x.gif"; sourceTree = ""; }; + D9D17EB51F05750000051419 /* nyancat@2x.webp */ = {isa = PBXFileReference; lastKnownFileType = file; path = "nyancat@2x.webp"; sourceTree = ""; }; + D9D17EB61F05750000051419 /* pia@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pia@2x.png"; sourceTree = ""; }; + D9D17EB71F05750000051419 /* ResourceTwitter.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ResourceTwitter.bundle; sourceTree = ""; }; + D9D17EB81F05750000051419 /* wall-e@2x.webp */ = {isa = PBXFileReference; lastKnownFileType = file; path = "wall-e@2x.webp"; sourceTree = ""; }; + D9D17EC81F05751700051419 /* UIControl+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIControl+YYAdd.h"; sourceTree = ""; }; + D9D17EC91F05751700051419 /* UIControl+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIControl+YYAdd.m"; sourceTree = ""; }; + D9D17ECA1F05751700051419 /* UIGestureRecognizer+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIGestureRecognizer+YYAdd.h"; sourceTree = ""; }; + D9D17ECB1F05751700051419 /* UIGestureRecognizer+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIGestureRecognizer+YYAdd.m"; sourceTree = ""; }; + D9D17ECC1F05751700051419 /* UIView+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+YYAdd.h"; sourceTree = ""; }; + D9D17ECD1F05751700051419 /* UIView+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+YYAdd.m"; sourceTree = ""; }; + D9D17ED21F05754E00051419 /* YYBPGCoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YYBPGCoder.h; sourceTree = ""; }; + D9D17ED31F05754E00051419 /* YYBPGCoder.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YYBPGCoder.m; sourceTree = ""; }; + D9D17ED41F05754E00051419 /* YYImageBenchmark.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YYImageBenchmark.h; sourceTree = ""; }; + D9D17ED51F05754E00051419 /* YYImageBenchmark.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YYImageBenchmark.m; sourceTree = ""; }; + D9D17ED61F05754E00051419 /* YYWebImageExample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YYWebImageExample.h; sourceTree = ""; }; + D9D17ED71F05754E00051419 /* YYWebImageExample.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YYWebImageExample.m; sourceTree = ""; }; + D9D17ED81F05756400051419 /* YYImageDisplayExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageDisplayExample.h; sourceTree = ""; }; + D9D17ED91F05756400051419 /* YYImageDisplayExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageDisplayExample.m; sourceTree = ""; }; + D9D17EDA1F05756400051419 /* YYImageExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageExample.h; sourceTree = ""; }; + D9D17EDB1F05756400051419 /* YYImageExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageExample.m; sourceTree = ""; }; + D9D17EDC1F05756400051419 /* YYImageExampleHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageExampleHelper.h; sourceTree = ""; }; + D9D17EDD1F05756400051419 /* YYImageExampleHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageExampleHelper.m; sourceTree = ""; }; + D9D17EDE1F05756400051419 /* YYImageProgressiveExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageProgressiveExample.h; sourceTree = ""; }; + D9D17EDF1F05756400051419 /* YYImageProgressiveExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageProgressiveExample.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - D946DDFF1BD13D75006B77F7 /* Frameworks */ = { + D91A60291F057230008CD5D3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D93B2D701BDBA586009B66B0 /* libz.tbd in Frameworks */, - D946DE3F1BD13E32006B77F7 /* WebP.framework in Frameworks */, + D97F409D1F05741000DFD481 /* libz.tbd in Frameworks */, + D97F409A1F05740B00DFD481 /* WebP.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - D93B2D681BDB97D8009B66B0 /* Not available */ = { + D91A60231F057230008CD5D3 = { isa = PBXGroup; children = ( - D93B2D591BDB96DE009B66B0 /* YYWebImageExample.h */, - D93B2D5A1BDB96DE009B66B0 /* YYWebImageExample.m */, - D93B2D5B1BDB96DE009B66B0 /* YYImageBenchmark.h */, - D93B2D5C1BDB96DE009B66B0 /* YYImageBenchmark.m */, - D93B2D5F1BDB96DE009B66B0 /* YYBPGCoder.h */, - D93B2D601BDB96DE009B66B0 /* YYBPGCoder.m */, - ); - name = "Not available"; - sourceTree = ""; - }; - D93B2D731BDBBDFC009B66B0 /* Resources */ = { - isa = PBXGroup; - children = ( - D93B2D8C1BDBBE74009B66B0 /* ResourceTwitter.bundle */, - D93B2D8D1BDBBE74009B66B0 /* EmoticonWeibo.bundle */, - D93B2D741BDBBE66009B66B0 /* niconiconi@2x.gif */, - D93B2D751BDBBE66009B66B0 /* google@2x.webp */, - D93B2D761BDBBE66009B66B0 /* nyancat@2x.webp */, - D93B2D771BDBBE66009B66B0 /* pia@2x.png */, - D93B2D781BDBBE66009B66B0 /* cube@2x.png */, - D93B2D791BDBBE66009B66B0 /* wall-e@2x.webp */, - D93B2D7A1BDBBE66009B66B0 /* mew_baseline.jpg */, - D93B2D7B1BDBBE66009B66B0 /* mew_progressive.jpg */, - D93B2D7C1BDBBE66009B66B0 /* mew_baseline.png */, - D93B2D7D1BDBBE66009B66B0 /* mew_interlaced.png */, - D93B2D7E1BDBBE66009B66B0 /* mew_baseline.gif */, - D93B2D7F1BDBBE66009B66B0 /* mew_interlaced.gif */, - ); - name = Resources; - sourceTree = ""; - }; - D946DDF91BD13D75006B77F7 = { - isa = PBXGroup; - children = ( - D93B2D6F1BDBA586009B66B0 /* libz.tbd */, - D946DE3E1BD13E32006B77F7 /* WebP.framework */, - D946DE2E1BD13E28006B77F7 /* YYImage */, - D946DE041BD13D75006B77F7 /* YYImageDemo */, - D946DE031BD13D75006B77F7 /* Products */, + D97F40891F0573DA00DFD481 /* YYImage */, + D91A602E1F057230008CD5D3 /* YYImageDemo */, + D9D17EAA1F0574E800051419 /* Resources */, + D97F40881F0573C400DFD481 /* Supporting Files */, + D91A602D1F057230008CD5D3 /* Products */, + D97F409B1F05741000DFD481 /* Frameworks */, ); sourceTree = ""; }; - D946DE031BD13D75006B77F7 /* Products */ = { + D91A602D1F057230008CD5D3 /* Products */ = { isa = PBXGroup; children = ( - D946DE021BD13D75006B77F7 /* YYImageDemo.app */, + D91A602C1F057230008CD5D3 /* YYImageDemo.app */, ); name = Products; sourceTree = ""; }; - D946DE041BD13D75006B77F7 /* YYImageDemo */ = { + D91A602E1F057230008CD5D3 /* YYImageDemo */ = { isa = PBXGroup; children = ( - D93B2D531BDB96DE009B66B0 /* YYImageExample.h */, - D93B2D541BDB96DE009B66B0 /* YYImageExample.m */, - D93B2D551BDB96DE009B66B0 /* YYImageDisplayExample.h */, - D93B2D561BDB96DE009B66B0 /* YYImageDisplayExample.m */, - D93B2D571BDB96DE009B66B0 /* YYImageProgressiveExample.h */, - D93B2D581BDB96DE009B66B0 /* YYImageProgressiveExample.m */, - D93B2D5D1BDB96DE009B66B0 /* YYImageExampleHelper.h */, - D93B2D5E1BDB96DE009B66B0 /* YYImageExampleHelper.m */, - D93B2D731BDBBDFC009B66B0 /* Resources */, - D93B2D681BDB97D8009B66B0 /* Not available */, - D946DE051BD13D75006B77F7 /* Supporting Files */, + D9D17ED81F05756400051419 /* YYImageDisplayExample.h */, + D9D17ED91F05756400051419 /* YYImageDisplayExample.m */, + D9D17EDA1F05756400051419 /* YYImageExample.h */, + D9D17EDB1F05756400051419 /* YYImageExample.m */, + D9D17EDC1F05756400051419 /* YYImageExampleHelper.h */, + D9D17EDD1F05756400051419 /* YYImageExampleHelper.m */, + D9D17EDE1F05756400051419 /* YYImageProgressiveExample.h */, + D9D17EDF1F05756400051419 /* YYImageProgressiveExample.m */, ); path = YYImageDemo; sourceTree = ""; }; - D946DE051BD13D75006B77F7 /* Supporting Files */ = { + D97F40881F0573C400DFD481 /* Supporting Files */ = { isa = PBXGroup; children = ( - D946DE081BD13D75006B77F7 /* AppDelegate.h */, - D946DE091BD13D75006B77F7 /* AppDelegate.m */, - D946DE0B1BD13D75006B77F7 /* ViewController.h */, - D946DE0C1BD13D75006B77F7 /* ViewController.m */, - D93B2D501BDB944B009B66B0 /* UIView+YYAdd.h */, - D93B2D511BDB944B009B66B0 /* UIView+YYAdd.m */, - D93B2D691BDB99BA009B66B0 /* UIControl+YYAdd.h */, - D93B2D6A1BDB99BA009B66B0 /* UIControl+YYAdd.m */, - D93B2D6B1BDB99BA009B66B0 /* UIGestureRecognizer+YYAdd.h */, - D93B2D6C1BDB99BA009B66B0 /* UIGestureRecognizer+YYAdd.m */, - D946DE0E1BD13D75006B77F7 /* Main.storyboard */, - D946DE111BD13D75006B77F7 /* Assets.xcassets */, - D946DE131BD13D75006B77F7 /* LaunchScreen.storyboard */, - D946DE161BD13D75006B77F7 /* Info.plist */, - D946DE061BD13D75006B77F7 /* main.m */, + D9D17ED11F05753800051419 /* Not Available */, + D9D17EC71F05750B00051419 /* Utils */, + D91A602F1F057230008CD5D3 /* AppDelegate.h */, + D91A60301F057230008CD5D3 /* AppDelegate.m */, + D91A60321F057230008CD5D3 /* ViewController.h */, + D91A60331F057230008CD5D3 /* ViewController.m */, + D91A60351F057230008CD5D3 /* Main.storyboard */, + D91A60381F057230008CD5D3 /* Assets.xcassets */, + D91A603A1F057230008CD5D3 /* LaunchScreen.storyboard */, + D91A603D1F057230008CD5D3 /* Info.plist */, + D91A603E1F057230008CD5D3 /* main.m */, ); name = "Supporting Files"; sourceTree = ""; }; - D946DE2E1BD13E28006B77F7 /* YYImage */ = { + D97F40891F0573DA00DFD481 /* YYImage */ = { isa = PBXGroup; children = ( - D946DE331BD13E28006B77F7 /* YYImage.h */, - D946DE341BD13E28006B77F7 /* YYImage.m */, - D946DE311BD13E28006B77F7 /* YYFrameImage.h */, - D946DE321BD13E28006B77F7 /* YYFrameImage.m */, - D946DE371BD13E28006B77F7 /* YYSpriteSheetImage.h */, - D946DE381BD13E28006B77F7 /* YYSpriteSheetImage.m */, - D946DE351BD13E28006B77F7 /* YYImageCoder.h */, - D946DE361BD13E28006B77F7 /* YYImageCoder.m */, - D946DE2F1BD13E28006B77F7 /* YYAnimatedImageView.h */, - D946DE301BD13E28006B77F7 /* YYAnimatedImageView.m */, + D97F408A1F0573DA00DFD481 /* YYAnimatedImageView.h */, + D97F408B1F0573DA00DFD481 /* YYAnimatedImageView.m */, + D97F408C1F0573DA00DFD481 /* YYFrameImage.h */, + D97F408D1F0573DA00DFD481 /* YYFrameImage.m */, + D97F408E1F0573DA00DFD481 /* YYImage.h */, + D97F408F1F0573DA00DFD481 /* YYImage.m */, + D97F40901F0573DA00DFD481 /* YYImageCoder.h */, + D97F40911F0573DA00DFD481 /* YYImageCoder.m */, + D97F40921F0573DA00DFD481 /* YYSpriteSheetImage.h */, + D97F40931F0573DA00DFD481 /* YYSpriteSheetImage.m */, ); name = YYImage; path = ../YYImage; sourceTree = ""; }; + D97F409B1F05741000DFD481 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D97F40991F05740B00DFD481 /* WebP.framework */, + D97F409C1F05741000DFD481 /* libz.tbd */, + ); + name = Frameworks; + sourceTree = ""; + }; + D9D17EAA1F0574E800051419 /* Resources */ = { + isa = PBXGroup; + children = ( + D9D17EAB1F05750000051419 /* cube@2x.png */, + D9D17EAC1F05750000051419 /* EmoticonWeibo.bundle */, + D9D17EAD1F05750000051419 /* google@2x.webp */, + D9D17EAE1F05750000051419 /* mew_baseline.gif */, + D9D17EAF1F05750000051419 /* mew_baseline.jpg */, + D9D17EB01F05750000051419 /* mew_baseline.png */, + D9D17EB11F05750000051419 /* mew_interlaced.gif */, + D9D17EB21F05750000051419 /* mew_interlaced.png */, + D9D17EB31F05750000051419 /* mew_progressive.jpg */, + D9D17EB41F05750000051419 /* niconiconi@2x.gif */, + D9D17EB51F05750000051419 /* nyancat@2x.webp */, + D9D17EB61F05750000051419 /* pia@2x.png */, + D9D17EB71F05750000051419 /* ResourceTwitter.bundle */, + D9D17EB81F05750000051419 /* wall-e@2x.webp */, + ); + name = Resources; + path = YYImageDemo; + sourceTree = ""; + }; + D9D17EC71F05750B00051419 /* Utils */ = { + isa = PBXGroup; + children = ( + D9D17EC81F05751700051419 /* UIControl+YYAdd.h */, + D9D17EC91F05751700051419 /* UIControl+YYAdd.m */, + D9D17ECA1F05751700051419 /* UIGestureRecognizer+YYAdd.h */, + D9D17ECB1F05751700051419 /* UIGestureRecognizer+YYAdd.m */, + D9D17ECC1F05751700051419 /* UIView+YYAdd.h */, + D9D17ECD1F05751700051419 /* UIView+YYAdd.m */, + ); + name = Utils; + path = YYImageDemo; + sourceTree = ""; + }; + D9D17ED11F05753800051419 /* Not Available */ = { + isa = PBXGroup; + children = ( + D9D17ED21F05754E00051419 /* YYBPGCoder.h */, + D9D17ED31F05754E00051419 /* YYBPGCoder.m */, + D9D17ED41F05754E00051419 /* YYImageBenchmark.h */, + D9D17ED51F05754E00051419 /* YYImageBenchmark.m */, + D9D17ED61F05754E00051419 /* YYWebImageExample.h */, + D9D17ED71F05754E00051419 /* YYWebImageExample.m */, + ); + name = "Not Available"; + path = YYImageDemo; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - D946DE011BD13D75006B77F7 /* YYImageDemo */ = { + D91A602B1F057230008CD5D3 /* YYImageDemo */ = { isa = PBXNativeTarget; - buildConfigurationList = D946DE191BD13D75006B77F7 /* Build configuration list for PBXNativeTarget "YYImageDemo" */; + buildConfigurationList = D91A60421F057230008CD5D3 /* Build configuration list for PBXNativeTarget "YYImageDemo" */; buildPhases = ( - D946DDFE1BD13D75006B77F7 /* Sources */, - D946DDFF1BD13D75006B77F7 /* Frameworks */, - D946DE001BD13D75006B77F7 /* Resources */, + D91A60281F057230008CD5D3 /* Sources */, + D91A60291F057230008CD5D3 /* Frameworks */, + D91A602A1F057230008CD5D3 /* Resources */, ); buildRules = ( ); @@ -243,136 +262,149 @@ ); name = YYImageDemo; productName = YYImageDemo; - productReference = D946DE021BD13D75006B77F7 /* YYImageDemo.app */; + productReference = D91A602C1F057230008CD5D3 /* YYImageDemo.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D946DDFA1BD13D75006B77F7 /* Project object */ = { + D91A60241F057230008CD5D3 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0700; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = ibireme; TargetAttributes = { - D946DE011BD13D75006B77F7 = { - CreatedOnToolsVersion = 7.0.1; + D91A602B1F057230008CD5D3 = { + CreatedOnToolsVersion = 9.0; }; }; }; - buildConfigurationList = D946DDFD1BD13D75006B77F7 /* Build configuration list for PBXProject "YYImageDemo" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + buildConfigurationList = D91A60271F057230008CD5D3 /* Build configuration list for PBXProject "YYImageDemo" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); - mainGroup = D946DDF91BD13D75006B77F7; - productRefGroup = D946DE031BD13D75006B77F7 /* Products */; + mainGroup = D91A60231F057230008CD5D3; + productRefGroup = D91A602D1F057230008CD5D3 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - D946DE011BD13D75006B77F7 /* YYImageDemo */, + D91A602B1F057230008CD5D3 /* YYImageDemo */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - D946DE001BD13D75006B77F7 /* Resources */ = { + D91A602A1F057230008CD5D3 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - D93B2D801BDBBE66009B66B0 /* niconiconi@2x.gif in Resources */, - D93B2D831BDBBE66009B66B0 /* pia@2x.png in Resources */, - D93B2D881BDBBE66009B66B0 /* mew_baseline.png in Resources */, - D946DE151BD13D75006B77F7 /* LaunchScreen.storyboard in Resources */, - D93B2D871BDBBE66009B66B0 /* mew_progressive.jpg in Resources */, - D946DE121BD13D75006B77F7 /* Assets.xcassets in Resources */, - D93B2D8F1BDBBE74009B66B0 /* EmoticonWeibo.bundle in Resources */, - D93B2D891BDBBE66009B66B0 /* mew_interlaced.png in Resources */, - D93B2D811BDBBE66009B66B0 /* google@2x.webp in Resources */, - D946DE101BD13D75006B77F7 /* Main.storyboard in Resources */, - D93B2D8E1BDBBE74009B66B0 /* ResourceTwitter.bundle in Resources */, - D93B2D821BDBBE66009B66B0 /* nyancat@2x.webp in Resources */, - D93B2D851BDBBE66009B66B0 /* wall-e@2x.webp in Resources */, - D93B2D8A1BDBBE66009B66B0 /* mew_baseline.gif in Resources */, - D93B2D8B1BDBBE66009B66B0 /* mew_interlaced.gif in Resources */, - D93B2D861BDBBE66009B66B0 /* mew_baseline.jpg in Resources */, - D93B2D841BDBBE66009B66B0 /* cube@2x.png in Resources */, + D9D17EC41F05750000051419 /* pia@2x.png in Resources */, + D91A603C1F057230008CD5D3 /* LaunchScreen.storyboard in Resources */, + D91A60391F057230008CD5D3 /* Assets.xcassets in Resources */, + D9D17EBD1F05750000051419 /* mew_baseline.jpg in Resources */, + D9D17EC61F05750000051419 /* wall-e@2x.webp in Resources */, + D91A60371F057230008CD5D3 /* Main.storyboard in Resources */, + D9D17EB91F05750000051419 /* cube@2x.png in Resources */, + D9D17EBE1F05750000051419 /* mew_baseline.png in Resources */, + D9D17EC01F05750000051419 /* mew_interlaced.png in Resources */, + D9D17EC11F05750000051419 /* mew_progressive.jpg in Resources */, + D9D17EC51F05750000051419 /* ResourceTwitter.bundle in Resources */, + D9D17EBC1F05750000051419 /* mew_baseline.gif in Resources */, + D9D17EC31F05750000051419 /* nyancat@2x.webp in Resources */, + D9D17EBF1F05750000051419 /* mew_interlaced.gif in Resources */, + D9D17EC21F05750000051419 /* niconiconi@2x.gif in Resources */, + D9D17EBA1F05750000051419 /* EmoticonWeibo.bundle in Resources */, + D9D17EBB1F05750000051419 /* google@2x.webp in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - D946DDFE1BD13D75006B77F7 /* Sources */ = { + D91A60281F057230008CD5D3 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D93B2D631BDB96DE009B66B0 /* YYImageProgressiveExample.m in Sources */, - D946DE0D1BD13D75006B77F7 /* ViewController.m in Sources */, - D93B2D621BDB96DE009B66B0 /* YYImageDisplayExample.m in Sources */, - D93B2D6D1BDB99BA009B66B0 /* UIControl+YYAdd.m in Sources */, - D946DE3A1BD13E28006B77F7 /* YYFrameImage.m in Sources */, - D946DE0A1BD13D75006B77F7 /* AppDelegate.m in Sources */, - D946DE071BD13D75006B77F7 /* main.m in Sources */, - D946DE3D1BD13E28006B77F7 /* YYSpriteSheetImage.m in Sources */, - D93B2D6E1BDB99BA009B66B0 /* UIGestureRecognizer+YYAdd.m in Sources */, - D93B2D521BDB944B009B66B0 /* UIView+YYAdd.m in Sources */, - D946DE391BD13E28006B77F7 /* YYAnimatedImageView.m in Sources */, - D946DE3C1BD13E28006B77F7 /* YYImageCoder.m in Sources */, - D93B2D611BDB96DE009B66B0 /* YYImageExample.m in Sources */, - D93B2D661BDB96DE009B66B0 /* YYImageExampleHelper.m in Sources */, - D946DE3B1BD13E28006B77F7 /* YYImage.m in Sources */, + D91A60341F057230008CD5D3 /* ViewController.m in Sources */, + D97F40951F0573DA00DFD481 /* YYFrameImage.m in Sources */, + D9D17ED01F05751700051419 /* UIView+YYAdd.m in Sources */, + D91A603F1F057230008CD5D3 /* main.m in Sources */, + D9D17EE21F05756400051419 /* YYImageExampleHelper.m in Sources */, + D9D17ECF1F05751700051419 /* UIGestureRecognizer+YYAdd.m in Sources */, + D9D17EE31F05756400051419 /* YYImageProgressiveExample.m in Sources */, + D9D17ECE1F05751700051419 /* UIControl+YYAdd.m in Sources */, + D9D17EE11F05756400051419 /* YYImageExample.m in Sources */, + D91A60311F057230008CD5D3 /* AppDelegate.m in Sources */, + D97F40981F0573DA00DFD481 /* YYSpriteSheetImage.m in Sources */, + D97F40941F0573DA00DFD481 /* YYAnimatedImageView.m in Sources */, + D9D17EE01F05756400051419 /* YYImageDisplayExample.m in Sources */, + D97F40971F0573DA00DFD481 /* YYImageCoder.m in Sources */, + D97F40961F0573DA00DFD481 /* YYImage.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ - D946DE0E1BD13D75006B77F7 /* Main.storyboard */ = { + D91A60351F057230008CD5D3 /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( - D946DE0F1BD13D75006B77F7 /* Base */, + D91A60361F057230008CD5D3 /* Base */, ); name = Main.storyboard; + path = YYImageDemo; sourceTree = ""; }; - D946DE131BD13D75006B77F7 /* LaunchScreen.storyboard */ = { + D91A603A1F057230008CD5D3 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( - D946DE141BD13D75006B77F7 /* Base */, + D91A603B1F057230008CD5D3 /* Base */, ); name = LaunchScreen.storyboard; + path = YYImageDemo; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ - D946DE171BD13D75006B77F7 /* Debug */ = { + D91A60401F057230008CD5D3 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = 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_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -386,36 +418,48 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; + STRIP_PNG_TEXT = NO; }; name = Debug; }; - D946DE181BD13D75006B77F7 /* Release */ = { + D91A60411F057230008CD5D3 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = 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_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COMPRESS_PNG_FILES = NO; 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_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -423,67 +467,62 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + STRIP_PNG_TEXT = NO; VALIDATE_PRODUCT = YES; }; name = Release; }; - D946DE1A1BD13D75006B77F7 /* Debug */ = { + D91A60431F057230008CD5D3 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - COMPRESS_PNG_FILES = NO; FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/../Vendor\""; INFOPLIST_FILE = YYImageDemo/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ""; PRODUCT_BUNDLE_IDENTIFIER = com.ibireme.YYImageDemo; PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_PNG_TEXT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - D946DE1B1BD13D75006B77F7 /* Release */ = { + D91A60441F057230008CD5D3 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - COMPRESS_PNG_FILES = NO; FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/../Vendor\""; INFOPLIST_FILE = YYImageDemo/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ""; PRODUCT_BUNDLE_IDENTIFIER = com.ibireme.YYImageDemo; PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_PNG_TEXT = NO; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - D946DDFD1BD13D75006B77F7 /* Build configuration list for PBXProject "YYImageDemo" */ = { + D91A60271F057230008CD5D3 /* Build configuration list for PBXProject "YYImageDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( - D946DE171BD13D75006B77F7 /* Debug */, - D946DE181BD13D75006B77F7 /* Release */, + D91A60401F057230008CD5D3 /* Debug */, + D91A60411F057230008CD5D3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D946DE191BD13D75006B77F7 /* Build configuration list for PBXNativeTarget "YYImageDemo" */ = { + D91A60421F057230008CD5D3 /* Build configuration list for PBXNativeTarget "YYImageDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( - D946DE1A1BD13D75006B77F7 /* Debug */, - D946DE1B1BD13D75006B77F7 /* Release */, + D91A60431F057230008CD5D3 /* Debug */, + D91A60441F057230008CD5D3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D946DDFA1BD13D75006B77F7 /* Project object */; + rootObject = D91A60241F057230008CD5D3 /* Project object */; } diff --git a/Demo/YYImageDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/Demo/YYImageDemo/Assets.xcassets/AppIcon.appiconset/Contents.json index 118c98f..1d060ed 100644 --- a/Demo/YYImageDemo/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Demo/YYImageDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,15 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "29x29", @@ -29,6 +39,51 @@ "idiom" : "iphone", "size" : "60x60", "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" } ], "info" : { diff --git a/Demo/YYImageDemo/Base.lproj/LaunchScreen.storyboard b/Demo/YYImageDemo/Base.lproj/LaunchScreen.storyboard index 2e721e1..36a25eb 100644 --- a/Demo/YYImageDemo/Base.lproj/LaunchScreen.storyboard +++ b/Demo/YYImageDemo/Base.lproj/LaunchScreen.storyboard @@ -1,7 +1,13 @@ - - + + + + + - + + + + @@ -13,10 +19,9 @@ - + - - + diff --git a/Demo/YYImageDemo/Base.lproj/Main.storyboard b/Demo/YYImageDemo/Base.lproj/Main.storyboard index b63b1d1..845b931 100644 --- a/Demo/YYImageDemo/Base.lproj/Main.storyboard +++ b/Demo/YYImageDemo/Base.lproj/Main.storyboard @@ -1,8 +1,13 @@ - - + + + + + - + + + @@ -14,15 +19,13 @@ - + - - + - diff --git a/Demo/YYImageDemo/Info.plist b/Demo/YYImageDemo/Info.plist index 6905cc6..16be3b6 100644 --- a/Demo/YYImageDemo/Info.plist +++ b/Demo/YYImageDemo/Info.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - en + $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -16,8 +16,6 @@ APPL CFBundleShortVersionString 1.0 - CFBundleSignature - ???? CFBundleVersion 1 LSRequiresIPhoneOS @@ -36,5 +34,12 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + diff --git a/Framework/Info.plist b/Framework/Info.plist index e52b996..f0993d5 100644 --- a/Framework/Info.plist +++ b/Framework/Info.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - en + $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -16,8 +16,6 @@ FMWK CFBundleShortVersionString 1.0.4 - CFBundleSignature - ???? CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/Framework/YYImage-Static.xcodeproj/project.pbxproj b/Framework/YYImage-Static.xcodeproj/project.pbxproj deleted file mode 100644 index 7c91f64..0000000 --- a/Framework/YYImage-Static.xcodeproj/project.pbxproj +++ /dev/null @@ -1,379 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - D946DDDD1BD13276006B77F7 /* YYAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D946DDD31BD13276006B77F7 /* YYAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D946DDDE1BD13276006B77F7 /* YYAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DDD41BD13276006B77F7 /* YYAnimatedImageView.m */; settings = {ASSET_TAGS = (); }; }; - D946DDDF1BD13276006B77F7 /* YYFrameImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D946DDD51BD13276006B77F7 /* YYFrameImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D946DDE01BD13276006B77F7 /* YYFrameImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DDD61BD13276006B77F7 /* YYFrameImage.m */; settings = {ASSET_TAGS = (); }; }; - D946DDE11BD13276006B77F7 /* YYImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D946DDD71BD13276006B77F7 /* YYImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D946DDE21BD13276006B77F7 /* YYImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DDD81BD13276006B77F7 /* YYImage.m */; settings = {ASSET_TAGS = (); }; }; - D946DDE31BD13276006B77F7 /* YYImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D946DDD91BD13276006B77F7 /* YYImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D946DDE41BD13276006B77F7 /* YYImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DDDA1BD13276006B77F7 /* YYImageCoder.m */; settings = {ASSET_TAGS = (); }; }; - D946DDE51BD13276006B77F7 /* YYSpriteSheetImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D946DDDB1BD13276006B77F7 /* YYSpriteSheetImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D946DDE61BD13276006B77F7 /* YYSpriteSheetImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D946DDDC1BD13276006B77F7 /* YYSpriteSheetImage.m */; settings = {ASSET_TAGS = (); }; }; - D946DDE81BD1346A006B77F7 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D946DDE71BD1346A006B77F7 /* libz.tbd */; }; - D946DDEA1BD1346F006B77F7 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D946DDE91BD1346F006B77F7 /* MobileCoreServices.framework */; }; - D946DDEC1BD13474006B77F7 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D946DDEB1BD13474006B77F7 /* AssetsLibrary.framework */; }; - D946DDEE1BD13478006B77F7 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D946DDED1BD13478006B77F7 /* ImageIO.framework */; }; - D946DDF01BD1347D006B77F7 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D946DDEF1BD1347D006B77F7 /* QuartzCore.framework */; }; - D946DDF21BD13482006B77F7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D946DDF11BD13482006B77F7 /* CoreFoundation.framework */; }; - D946DDF41BD13486006B77F7 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D946DDF31BD13486006B77F7 /* UIKit.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - D946DDBE1BD131EA006B77F7 /* YYImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = YYImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D946DDCF1BD1322C006B77F7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D946DDD31BD13276006B77F7 /* YYAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYAnimatedImageView.h; sourceTree = ""; }; - D946DDD41BD13276006B77F7 /* YYAnimatedImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYAnimatedImageView.m; sourceTree = ""; }; - D946DDD51BD13276006B77F7 /* YYFrameImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYFrameImage.h; sourceTree = ""; }; - D946DDD61BD13276006B77F7 /* YYFrameImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYFrameImage.m; sourceTree = ""; }; - D946DDD71BD13276006B77F7 /* YYImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImage.h; sourceTree = ""; }; - D946DDD81BD13276006B77F7 /* YYImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImage.m; sourceTree = ""; }; - D946DDD91BD13276006B77F7 /* YYImageCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageCoder.h; sourceTree = ""; }; - D946DDDA1BD13276006B77F7 /* YYImageCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageCoder.m; sourceTree = ""; }; - D946DDDB1BD13276006B77F7 /* YYSpriteSheetImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYSpriteSheetImage.h; sourceTree = ""; }; - D946DDDC1BD13276006B77F7 /* YYSpriteSheetImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYSpriteSheetImage.m; sourceTree = ""; }; - D946DDE71BD1346A006B77F7 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; - D946DDE91BD1346F006B77F7 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; - D946DDEB1BD13474006B77F7 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/AssetsLibrary.framework; sourceTree = DEVELOPER_DIR; }; - D946DDED1BD13478006B77F7 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; - D946DDEF1BD1347D006B77F7 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - D946DDF11BD13482006B77F7 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; - D946DDF31BD13486006B77F7 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - D946DDF71BD1356C006B77F7 /* WebP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebP.framework; path = ../Vendor/WebP.framework; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - D946DDB91BD131EA006B77F7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D946DDF41BD13486006B77F7 /* UIKit.framework in Frameworks */, - D946DDF21BD13482006B77F7 /* CoreFoundation.framework in Frameworks */, - D946DDF01BD1347D006B77F7 /* QuartzCore.framework in Frameworks */, - D946DDEE1BD13478006B77F7 /* ImageIO.framework in Frameworks */, - D946DDEC1BD13474006B77F7 /* AssetsLibrary.framework in Frameworks */, - D946DDEA1BD1346F006B77F7 /* MobileCoreServices.framework in Frameworks */, - D946DDE81BD1346A006B77F7 /* libz.tbd in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - D946DDB31BD131EA006B77F7 = { - isa = PBXGroup; - children = ( - D946DDD21BD13276006B77F7 /* YYImage */, - D946DDD11BD1326F006B77F7 /* Supporting Files */, - D946DDBF1BD131EA006B77F7 /* Products */, - ); - sourceTree = ""; - }; - D946DDBF1BD131EA006B77F7 /* Products */ = { - isa = PBXGroup; - children = ( - D946DDBE1BD131EA006B77F7 /* YYImage.framework */, - ); - name = Products; - sourceTree = ""; - }; - D946DDD11BD1326F006B77F7 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - D946DDF71BD1356C006B77F7 /* WebP.framework */, - D946DDF31BD13486006B77F7 /* UIKit.framework */, - D946DDF11BD13482006B77F7 /* CoreFoundation.framework */, - D946DDEF1BD1347D006B77F7 /* QuartzCore.framework */, - D946DDED1BD13478006B77F7 /* ImageIO.framework */, - D946DDEB1BD13474006B77F7 /* AssetsLibrary.framework */, - D946DDE91BD1346F006B77F7 /* MobileCoreServices.framework */, - D946DDE71BD1346A006B77F7 /* libz.tbd */, - D946DDCF1BD1322C006B77F7 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - D946DDD21BD13276006B77F7 /* YYImage */ = { - isa = PBXGroup; - children = ( - D946DDD71BD13276006B77F7 /* YYImage.h */, - D946DDD81BD13276006B77F7 /* YYImage.m */, - D946DDD51BD13276006B77F7 /* YYFrameImage.h */, - D946DDD61BD13276006B77F7 /* YYFrameImage.m */, - D946DDDB1BD13276006B77F7 /* YYSpriteSheetImage.h */, - D946DDDC1BD13276006B77F7 /* YYSpriteSheetImage.m */, - D946DDD91BD13276006B77F7 /* YYImageCoder.h */, - D946DDDA1BD13276006B77F7 /* YYImageCoder.m */, - D946DDD31BD13276006B77F7 /* YYAnimatedImageView.h */, - D946DDD41BD13276006B77F7 /* YYAnimatedImageView.m */, - ); - name = YYImage; - path = ../YYImage; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - D946DDBA1BD131EA006B77F7 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - D946DDDF1BD13276006B77F7 /* YYFrameImage.h in Headers */, - D946DDDD1BD13276006B77F7 /* YYAnimatedImageView.h in Headers */, - D946DDE31BD13276006B77F7 /* YYImageCoder.h in Headers */, - D946DDE11BD13276006B77F7 /* YYImage.h in Headers */, - D946DDE51BD13276006B77F7 /* YYSpriteSheetImage.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - D946DDBD1BD131EA006B77F7 /* YYImage */ = { - isa = PBXNativeTarget; - buildConfigurationList = D946DDCC1BD131EA006B77F7 /* Build configuration list for PBXNativeTarget "YYImage" */; - buildPhases = ( - D946DDB81BD131EA006B77F7 /* Sources */, - D946DDB91BD131EA006B77F7 /* Frameworks */, - D946DDBA1BD131EA006B77F7 /* Headers */, - D946DDBB1BD131EA006B77F7 /* Resources */, - D946DDBC1BD131EA006B77F7 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = YYImage; - productName = YYImage; - productReference = D946DDBE1BD131EA006B77F7 /* YYImage.framework */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - D946DDB41BD131EA006B77F7 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0700; - ORGANIZATIONNAME = ibireme; - TargetAttributes = { - D946DDBD1BD131EA006B77F7 = { - CreatedOnToolsVersion = 7.0.1; - }; - }; - }; - buildConfigurationList = D946DDB71BD131EA006B77F7 /* Build configuration list for PBXProject "YYImage-Static" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = D946DDB31BD131EA006B77F7; - productRefGroup = D946DDBF1BD131EA006B77F7 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - D946DDBD1BD131EA006B77F7 /* YYImage */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - D946DDBB1BD131EA006B77F7 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - D946DDBC1BD131EA006B77F7 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /usr/bin/python; - shellScript = "# TAG: BUILD SCRIPT (do not remove this comment)\n# Build script generated using https://github.com/kstenerud/iOS-Universal-Framework Mk 8 (beta 2012-06-16)\nimport logging\n\n\n##############################################################################\n#\n# Configuration\n#\n##############################################################################\n\n# Select which kind of framework to build.\n#\n# Note: Due to issues with Xcode's build process, if you select\n# 'embeddedframework', it will still show the regular framework\n# (as a symlink) along side of the embedded framework. Be sure to\n# instruct your users to copy/move the embedded framework in this case!\n#\n# If your framework contains resources such as images, nibs, momds, plists,\n# zipfiles and such, choose 'embeddedframework'.\n#\n# If your framework contains no resources, choose 'framework'.\n#\nconfig_framework_type = 'framework'\n#config_framework_type = 'embeddedframework'\n\n# Open the build directory in Finder when the universal framework is\n# successfully built.\n#\n# This value can be overridden by setting the UFW_OPEN_BUILD_DIR env variable\n# to True or False.\n#\n# Recommended setting: True\n#\nconfig_open_build_dir = True\n\n# If true, ensures that all public headers are stored in the framework under\n# the same directory hierarchy as they were in the source tree.\n#\n# Xcode by default places all headers at the same top level, but every other\n# build tool in the known universe preserves directory structure. For simple\n# libraries it doesn't really matter much, but for ports of existing software\n# packages or for bigger libraries, it makes sense to have more structure.\n#\n# The default is set to \"False\" since that's what most Xcode users are used to.\n#\n# Recommended setting: True for deep hierarchy projects, False otherwise.\n#\nconfig_deep_header_hierarchy = False\n\n# Specify where the top of the public header hierarchy is. This path is\n# relative to the project's dir (PROJECT_DIR). You can reference environment\n# variables using templating syntax (e.g. \"${TARGET_NAME}/Some/Subdir\")\n#\n# NOTE: Only used if config_deep_header_hierarchy is True.\n#\n# If this is set to None, the script will attempt to figure out for itself\n# where the top of the header hierarchy is by looking for common path prefixes\n# in the public header files. This process can fail if:\n# - You only have one public header file.\n# - Your source header files don't all have a common root.\n#\n# A common approach is to use \"${TARGET_NAME}\", working under the assumption\n# that all of your header files share the common root of a directory under\n# your project with the same name as your target (which is the Xcode default).\n#\n# Recommended setting: \"${TARGET_NAME}\"\n#\nconfig_deep_header_top = \"${TARGET_NAME}\"\n\n# Warn when \"DerivedData\" is detected in any of the header, library, or\n# framework search paths. In almost all cases, references to directories under\n# DerivedData are added as a result of an Xcode bug and must be manually\n# removed.\n#\n# Recommended setting: True\n#\nconfig_warn_derived_data = True\n\n# Warn if no headers were marked public in this framework.\n#\n# Recommended setting: True\n#\nconfig_warn_no_public_headers = True\n\n# Cause the build to fail if any warnings are issued.\n#\n# Recommended setting: True\n#\nconfig_fail_on_warnings = True\n\n# Minimum log level\n#\n# Recommended setting: logging.INFO\n#\nconfig_log_level = logging.INFO\n\n\n##############################################################################\n#\n# Don't touch anything below here unless you know what you're doing.\n#\n##############################################################################\n\nimport collections\nimport json\nimport os\nimport re\nimport shlex\nimport shutil\nimport string\nimport subprocess\nimport sys\nimport time\nimport traceback\n\n\n##############################################################################\n#\n# Globals\n#\n##############################################################################\n\nlog = logging.getLogger('UFW')\n\nissued_warnings = False\n\n\n##############################################################################\n#\n# Classes\n#\n##############################################################################\n\n# Allows the slave build to communicate with the master build.\n#\nclass BuildState:\n\n def __init__(self):\n self.reload()\n\n def reset(self):\n self.slave_platform = None\n self.slave_architectures = []\n self.slave_linked_archive_paths = []\n self.slave_built_fw_path = None\n self.slave_built_embedded_fw_path = None\n\n def set_slave_properties(self, architectures,\n linked_archive_paths,\n built_fw_path,\n built_embedded_fw_path):\n self.slave_platform = os.environ['PLATFORM_NAME']\n self.slave_architectures = architectures\n self.slave_linked_archive_paths = linked_archive_paths\n self.slave_built_fw_path = built_fw_path\n self.slave_built_embedded_fw_path = built_embedded_fw_path\n\n def get_save_path(self):\n return os.path.join(os.environ['PROJECT_TEMP_DIR'], \"ufw_build_state.json\")\n\n def persist(self):\n filename = self.get_save_path()\n parent = os.path.dirname(filename)\n if not os.path.isdir(parent):\n os.makedirs(parent)\n with open(filename, \"w\") as f:\n f.write(json.dumps(self.__dict__))\n\n def reload(self):\n self.reset()\n filename = self.get_save_path()\n if os.path.exists(filename):\n with open(filename, \"r\") as f:\n new_dict = json.loads(f.read())\n if new_dict is not None:\n self.__dict__ = dict(self.__dict__.items() + new_dict.items())\n\n\n# Holds information about the current project and build environment.\n#\nclass Project:\n\n def __init__(self, filename):\n sourcecode_types = ['sourcecode.c.c',\n 'sourcecode.c.objc',\n 'sourcecode.cpp.cpp',\n 'sourcecode.cpp.objcpp',\n 'sourcecode.asm.asm',\n 'sourcecode.asm.llvm',\n 'sourcecode.nasm']\n\n self.build_state = BuildState()\n self.project_data = self.load_from_file(filename)\n self.target = filter(lambda x: x['name'] == os.environ['TARGET_NAME'], self.project_data['targets'])[0]\n self.public_headers = self.get_build_phase_files('PBXHeadersBuildPhase', lambda x: x.get('settings', False) and x['settings'].get('ATTRIBUTES', False) and 'Public' in x['settings']['ATTRIBUTES'])\n self.static_libraries = self.get_build_phase_files('PBXFrameworksBuildPhase', lambda x: x['fileRef']['fileType'] == 'archive.ar' and x['fileRef']['sourceTree'] not in ['DEVELOPER_DIR', 'SDKROOT'])\n self.static_frameworks = self.get_build_phase_files('PBXFrameworksBuildPhase', lambda x: x['fileRef']['fileType'] == 'wrapper.framework' and x['fileRef']['sourceTree'] not in ['DEVELOPER_DIR', 'SDKROOT'])\n self.compilable_sources = self.get_build_phase_files('PBXSourcesBuildPhase', lambda x: x['fileRef']['fileType'] in sourcecode_types)\n self.header_paths = [os.path.join(*x['pathComponents']) for x in self.public_headers]\n\n self.headers_dir = os.path.join(os.environ['TARGET_BUILD_DIR'], os.environ['CONTENTS_FOLDER_PATH'], 'Headers')\n self.libtool_path = os.path.join(os.environ['DT_TOOLCHAIN_DIR'], 'usr', 'bin', 'libtool')\n self.project_filename = os.path.join(os.environ['PROJECT_FILE_PATH'], \"project.pbxproj\")\n self.local_exe_path = os.path.join(os.environ['TARGET_BUILD_DIR'], os.environ['EXECUTABLE_PATH'])\n self.local_architectures = os.environ['ARCHS'].split(' ')\n self.local_built_fw_path = os.path.join(os.environ['TARGET_BUILD_DIR'], os.environ['WRAPPER_NAME'])\n self.local_built_embedded_fw_path = os.path.splitext(self.local_built_fw_path)[0] + \".embeddedframework\"\n self.local_linked_archive_paths = [self.get_linked_ufw_archive_path(arch) for arch in self.local_architectures]\n self.local_platform = os.environ['PLATFORM_NAME']\n other_platforms = os.environ['SUPPORTED_PLATFORMS'].split(' ')\n other_platforms.remove(self.local_platform)\n self.other_platform = other_platforms[0]\n\n sdk_name = os.environ['SDK_NAME']\n if not sdk_name.startswith(self.local_platform):\n raise Exception(\"%s didn't start with %s\" % (sdk_name, self.local_platform))\n self.sdk_version = sdk_name[len(self.local_platform):]\n\n # Load an Xcode project file.\n #\n def load_from_file(self, filename):\n project_file = json.loads(subprocess.check_output([\"plutil\", \"-convert\", \"json\", \"-o\", \"-\", filename]))\n all_objects = project_file['objects']\n del project_file['objects']\n for obj in all_objects.values():\n self.fix_keys(obj)\n self.unpack_objects(self.build_dereference_list(all_objects, None, None, project_file))\n self.unpack_objects(self.build_dereference_list(all_objects, None, None, all_objects.values()))\n project_data = project_file['rootObject']\n self.build_full_paths(project_data, splitpath(os.environ['SOURCE_ROOT']))\n return project_data\n\n def is_key(self, obj): \n return isinstance(obj, basestring) and len(obj) == 24 and re.search('^[0-9a-fA-F]+$', obj) is not None\n \n def build_dereference_list(self, all_objects, parent, key, obj):\n deref_list = []\n if self.is_key(obj):\n dereferenced = all_objects.get(obj, obj)\n if dereferenced is not obj:\n deref_list.append((parent, key, obj, dereferenced))\n elif isinstance(obj, collections.Mapping):\n for k, v in obj.iteritems():\n deref_list += self.build_dereference_list(all_objects, obj, k, v)\n elif isinstance(obj, collections.Iterable) and not isinstance(obj, basestring):\n for item in obj:\n deref_list += self.build_dereference_list(all_objects, obj, None, item)\n return deref_list\n \n def unpack_objects(self, deref_list):\n for parent, key, orig, obj in deref_list:\n if key is None:\n parent.remove(orig)\n parent.append(obj)\n else:\n parent[key] = obj\n\n # Store the full path, separated into components, to a node inside the node\n # as \"pathComponents\". Also recurse into that node if it's a group.\n #\n def build_full_paths(self, node, base_path):\n # Some nodes are relative to a different source tree, specified as an\n # env variable.\n if node.get('sourceTree', '') != '':\n new_base_path = os.environ.get(node['sourceTree'], None)\n if new_base_path:\n base_path = splitpath(new_base_path)\n # Add the current node's path, if any.\n if node.get('path', False):\n base_path = base_path + splitpath(node['path'])\n node['pathComponents'] = base_path\n # Recurse if this is a group.\n if node['isa'] == 'PBXGroup':\n for child in node['children']:\n self.build_full_paths(child, base_path)\n elif node['isa'] == 'PBXProject':\n self.build_full_paths(node['mainGroup'], base_path)\n self.build_full_paths(node['productRefGroup'], base_path)\n for child in node['targets']:\n self.build_full_paths(child, base_path)\n projectRefs = node.get('projectReferences', None)\n if projectRefs is not None:\n for child in projectRefs[0].values():\n self.build_full_paths(child, base_path)\n\n # Fix up any inconvenient keys.\n #\n def fix_keys(self, obj):\n key_remappings = {'lastKnownFileType': 'fileType', 'explicitFileType': 'fileType'}\n for key in list(set(key_remappings.keys()) & set(obj.keys())):\n obj[key_remappings[key]] = obj[key]\n del obj[key]\n\n # Get the files from a build phase.\n #\n def get_build_phase_files(self, build_phase_name, filter_func):\n build_phase = filter(lambda x: x['isa'] == build_phase_name, self.target['buildPhases'])[0]\n build_files = filter(filter_func, build_phase['files'])\n return [x['fileRef'] for x in build_files]\n\n # Get the truncated paths of all headers that start with the specified\n # relative path. Paths are read and returned as fully separated lists.\n # e.g. ['Some', 'Path', 'To', 'A', 'Header'] with relative_path of\n # ['Some', 'Path'] gets truncated to ['To', 'A', 'Header']\n #\n def movable_headers_relative_to(self, relative_path):\n rel_path_length = len(relative_path)\n result = filter(lambda path: len(path) >= rel_path_length and\n path[:rel_path_length] == relative_path, self.header_paths)\n return [path[rel_path_length:] for path in result]\n\n # Get the full path to where a linkable archive (library or framework)\n # is supposed to be.\n #\n def get_linked_archive_path(self, architecture):\n return os.path.join(os.environ['OBJECT_FILE_DIR_%s' % os.environ['CURRENT_VARIANT']],\n architecture,\n os.environ['EXECUTABLE_NAME'])\n\n # Get the full path to our custom linked archive of the project.\n #\n def get_linked_ufw_archive_path(self, architecture):\n return self.get_linked_archive_path(architecture) + \".ufwbuild\"\n\n # Get the full path to the executable of an archive.\n #\n def get_exe_path(self, node):\n path = os.path.join(*node['pathComponents'])\n if node['fileType'] == 'wrapper.framework':\n # Frameworks are directories, so go one deeper\n path = os.path.join(path, os.path.splitext(node['pathComponents'][-1])[0])\n return path\n\n # Get the path to the directory containing the archive.\n #\n def get_containing_path(self, node):\n return os.path.join(*node['pathComponents'])\n \n def get_archive_search_paths(self):\n log.info(\"Search paths = %s\" % set([self.get_containing_path(fw) for fw in self.static_frameworks] + [self.get_containing_path(fw) for fw in self.static_libraries]))\n return set([self.get_containing_path(fw) for fw in self.static_frameworks] + [self.get_containing_path(fw) for fw in self.static_libraries])\n\n # Command to link all objects of a single architecture.\n #\n def get_single_arch_link_command(self, architecture):\n cmd = [self.libtool_path,\n \"-static\",\n \"-arch_only\", architecture,\n \"-syslibroot\", os.environ['SDKROOT'],\n \"-L%s\" % os.environ['TARGET_BUILD_DIR'],\n \"-filelist\", os.environ['LINK_FILE_LIST_%s_%s' % (os.environ['CURRENT_VARIANT'], architecture)]]\n if os.environ.get('OTHER_LDFLAGS', False):\n cmd += [os.environ['OTHER_LDFLAGS']]\n if os.environ.get('WARNING_LDFLAGS', False):\n cmd += [os.environ['WARNING_LDFLAGS']]\n# cmd += [\"-L%s\" % libpath for libpath in self.get_archive_search_paths()]\n cmd += [self.get_exe_path(fw) for fw in self.static_frameworks]\n cmd += [self.get_exe_path(lib) for lib in self.static_libraries]\n cmd += [\"-o\", self.get_linked_ufw_archive_path(architecture)]\n return cmd\n\n # Command to link all local architectures for the current configuration\n # into an archive. This reads all libraries + the UFW-built archives and\n # overwrites the final product.\n #\n def get_local_archs_link_command(self):\n cmd = [self.libtool_path,\n \"-static\"]\n cmd += self.local_linked_archive_paths\n cmd += [self.get_exe_path(fw) for fw in self.static_frameworks]\n cmd += [self.get_exe_path(lib) for lib in self.static_libraries]\n cmd += [\"-o\", os.path.join(os.environ['TARGET_BUILD_DIR'], os.environ['EXECUTABLE_PATH'])]\n return cmd\n\n # Command to link all architectures into a universal archive.\n # This reads all UFW-built archives and overwrites the final product.\n #\n def get_all_archs_link_command(self):\n cmd = [self.libtool_path,\n \"-static\"]\n cmd += self.local_linked_archive_paths + self.build_state.slave_linked_archive_paths\n cmd += [\"-o\", os.path.join(os.environ['TARGET_BUILD_DIR'], os.environ['EXECUTABLE_PATH'])]\n return cmd\n\n # Build up an environment for the slave process. This uses BUILD_ROOT\n # and TEMP_ROOT to convert all environment variables to values suitable\n # for the slave build environment so that xcodebuild doesn't try to build\n # in the project directory under \"build\".\n #\n def get_slave_environment(self):\n ignored = ['LD_MAP_FILE_PATH',\n 'HEADER_SEARCH_PATHS',\n 'LIBRARY_SEARCH_PATHS',\n 'FRAMEWORK_SEARCH_PATHS']\n build_root = os.environ['BUILD_ROOT']\n temp_root = os.environ['TEMP_ROOT']\n newenv = {}\n for key, value in os.environ.items():\n if key not in ignored and not key.startswith('LINK_FILE_LIST_') and not key.startswith('LD_DEPENDENCY_'):\n if build_root in value or temp_root in value:\n newenv[key] = value.replace(self.local_platform, self.other_platform)\n return newenv\n\n # Command to invoke xcodebuild on the slave platform.\n #\n def get_slave_project_build_command(self):\n cmd = [\"xcodebuild\",\n \"-project\",\n os.environ['PROJECT_FILE_PATH'],\n \"-target\",\n os.environ['TARGET_NAME'],\n \"-configuration\",\n os.environ['CONFIGURATION'],\n \"-sdk\",\n self.other_platform + self.sdk_version]\n cmd += [\"%s=%s\" % (key, value) for key, value in self.get_slave_environment().items()]\n cmd += [\"UFW_MASTER_PLATFORM=\" + os.environ['PLATFORM_NAME']]\n cmd += [os.environ['ACTION']]\n return cmd\n\n\n\n##############################################################################\n#\n# Utility Functions\n#\n##############################################################################\n\n# Split a path into a list of path components.\n#\ndef splitpath(path, maxdepth=20):\n (head, tail) = os.path.split(path)\n return splitpath(head, maxdepth - 1) + [tail] if maxdepth and head and head != path else [ head or tail ]\n\n# Remove all subdirectories under a path.\n#\ndef remove_subdirs(path, ignore_files):\n if os.path.exists(path):\n for filename in filter(lambda x: x not in ignore_files, os.listdir(path)):\n fullpath = os.path.join(path, filename)\n if os.path.isdir(fullpath):\n log.info(\"Remove %s\" % fullpath)\n shutil.rmtree(fullpath)\n\n# Make whatever parent paths are necessary for a path to exist.\n#\ndef ensure_path_exists(path):\n if not os.path.isdir(path):\n os.makedirs(path)\n\n# Make whatever parent paths are necessary for a path's parent to exist.\n#\ndef ensure_parent_exists(path):\n parent = os.path.dirname(path)\n if not os.path.isdir(parent):\n os.makedirs(parent)\n\n# Remove a file or dir if it exists.\n#\ndef remove_path(path):\n if os.path.exists(path):\n if os.path.isdir(path) and not os.path.islink(path):\n shutil.rmtree(path)\n else:\n os.remove(path)\n\n# Move a file or dir, replacing the destination if it exists.\n#\ndef move_file(src, dst):\n if src == dst or not os.path.isfile(src):\n return\n log.info(\"Move %s to %s\" % (src, dst))\n ensure_parent_exists(dst)\n remove_path(dst)\n shutil.move(src, dst)\n\n# Copy a file or dir, replacing the destination if it exists already.\n#\ndef copy_overwrite(src, dst):\n if src != dst:\n remove_path(dst)\n ensure_parent_exists(dst)\n shutil.copytree(src, dst, symlinks=True)\n\n# Attempt to symlink link_path -> link_to.\n# link_to must be a path relative to link_path's parent and must exist.\n# If link_path already exists, do nothing.\n#\ndef attempt_symlink(link_path, link_to):\n # Only allow linking to an existing file\n os.stat(os.path.abspath(os.path.join(link_path, \"..\", link_to)))\n\n # Only make the link if it hasn't already been made\n if not os.path.exists(link_path):\n log.info(\"Symlink %s -> %s\" % (link_path, link_to))\n os.symlink(link_to, link_path)\n\n# Takes the last entry in an array-based path and returns a normal path\n# relative to base_path.\n#\ndef top_level_file_path(base_path, path_list):\n return os.path.join(base_path, os.path.split(path_list[-1])[-1])\n\n# Takes all entries in an array-based path and returns a normal path\n# relative to base_path.\n#\ndef full_file_path(base_path, path_list):\n return os.path.join(*([base_path] + path_list))\n\n# Print a command before executing it.\n# Also print out all output from the command to STDOUT.\n#\ndef print_and_call(cmd):\n log.info(\"Cmd \" + \" \".join(cmd))\n p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)\n result = p.communicate()[0]\n if len(result) > 0:\n log.info(result)\n if p.returncode != 0:\n raise subprocess.CalledProcessError(p.returncode, cmd)\n\n# Special print-and-call command for the slave build that strips out\n# xcodebuild's spammy list of environment variables.\n#\ndef print_and_call_slave_build(cmd, other_platform):\n separator = '=== BUILD NATIVE TARGET '\n p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)\n result = p.communicate()[0].split(separator)\n if len(result) == 1:\n result = result[0]\n else:\n result = separator + result[1]\n log.info(\"Cmd \" + \" \".join(cmd) + \"\\n\" + result)\n if p.returncode != 0:\n raise subprocess.CalledProcessError(p.returncode, cmd)\n\n# Issue a warning and record that a warning has been issued.\n#\ndef issue_warning(msg, *args, **kwargs):\n global issued_warnings\n issued_warnings = True\n log.warn(msg, *args, **kwargs)\n\n\n\n##############################################################################\n#\n# Main Application\n#\n##############################################################################\n\n# Check if we are running as master.\n#\ndef is_master():\n return os.environ.get('UFW_MASTER_PLATFORM', os.environ['PLATFORM_NAME']) == os.environ['PLATFORM_NAME']\n\n# DerivedData should almost never appear in any framework, library, or header\n# search paths. However, Xcode will sometimes add them in, so we check to make\n# sure.\n#\ndef check_for_derived_data_in_search_paths(project):\n search_path_keys = [\"FRAMEWORK_SEARCH_PATHS\", \"LIBRARY_SEARCH_PATHS\", \"HEADER_SEARCH_PATHS\"]\n build_configs = project.target['buildConfigurationList']['buildConfigurations']\n build_settings = filter(lambda x: x['name'] == os.environ['CONFIGURATION'], build_configs)[0]['buildSettings']\n \n found_something = False\n for path_key in filter(lambda x: x in build_settings, search_path_keys):\n path = build_settings[path_key]\n if \"DerivedData\" in path:\n found_something = True\n log.warn(\"Derived data in %s\" % path)\n issue_warning(\"'%s' contains reference to 'DerivedData'.\" % path_key)\n if found_something:\n log.warn(\"Check your build settings and remove any entries that contain paths inside the DerivedData folder.\")\n log.warn(\"Otherwise you can disable this warning by changing 'config_warn_derived_data' in this script.\")\n\n# Link local architectures into their respective archives.\n#\ndef link_local_archs(project):\n for arch in project.local_architectures:\n print_and_call(project.get_single_arch_link_command(arch))\n\n# Link only the local architectures into the final product, not the slave\n# architectures. For iphoneos, this will be armv6, armv7. For simulator, this\n# will be i386.\n#\ndef link_combine_local_archs(project):\n print_and_call(project.get_local_archs_link_command())\n\n# Link all architectures into the final product.\n#\ndef link_combine_all_archs(project):\n print_and_call(project.get_all_archs_link_command())\n\n# Check if we should open the build directory after a successful build.\n#\ndef should_open_build_dir():\n env_setting = os.environ.get('UFW_OPEN_BUILD_DIR', None)\n if env_setting is not None:\n return env_setting\n\n return config_open_build_dir\n\n# Open the build dir in Finder.\n#\ndef open_build_dir():\n print_and_call(['open', os.environ['TARGET_BUILD_DIR']])\n\n# Check if the build was started by selecting \"Archive\" under \"Product\" in\n# Xcode.\n#\ndef is_archive_build():\n # ACTION is always 'build', but perhaps Apple will fix this someday?\n archive_build = os.environ['ACTION'] == 'archive'\n\n if not archive_build:\n # This can be passed in as an env variable when building from command line.\n archive_build = os.environ.get('UFW_ACTION', None) == 'archive'\n\n build_dir = splitpath(os.environ['BUILD_DIR'])\n if not archive_build:\n # This partial path is used when you select \"archive\" from within Xcode.\n archive_build = 'ArchiveIntermediates' in build_dir\n\n # It only counts as a full archive build if this target is being built into\n # its own build dir (not being built as a dependency of another target)\n if archive_build:\n archive_build = os.environ['TARGET_NAME'] in build_dir\n \n return archive_build\n\n# Xcode by default throws all public headers into the top level directory.\n# This function moves them to their expected deep hierarchy.\n#\ndef build_deep_header_hierarchy(project):\n header_path_top = config_deep_header_top\n if not header_path_top:\n header_path_top = os.path.commonprefix(project.header_paths)\n else:\n header_path_top = splitpath(header_path_top)\n\n built_headers_path = os.path.join(os.environ['TARGET_BUILD_DIR'], os.environ['PUBLIC_HEADERS_FOLDER_PATH'])\n movable_headers = project.movable_headers_relative_to(header_path_top)\n\n # Remove subdirs if they only contain files that have been rebuilt\n ignore_headers = filter(lambda x: not os.path.isfile(top_level_file_path(built_headers_path, x)), movable_headers)\n remove_subdirs(built_headers_path, [file[0] for file in ignore_headers])\n\n # Move rebuilt headers into their proper subdirs\n for header in movable_headers:\n move_file(top_level_file_path(built_headers_path, header), full_file_path(built_headers_path, header))\n\n# Add all symlinks needed to make a full framework structure:\n#\n# MyFramework.framework\n# |-- MyFramework -> Versions/Current/MyFramework\n# |-- Headers -> Versions/Current/Headers\n# |-- Resources -> Versions/Current/Resources\n# `-- Versions\n# |-- A\n# | |-- MyFramework\n# | |-- Headers\n# | | `-- MyFramework.h\n# | `-- Resources\n# | |-- Info.plist\n# | |-- MyViewController.nib\n# | `-- en.lproj\n# | `-- InfoPlist.strings\n# `-- Current -> A\n#\ndef add_symlinks_to_framework(project):\n base_dir = project.local_built_fw_path\n attempt_symlink(os.path.join(base_dir, \"Versions\", \"Current\"), os.environ['FRAMEWORK_VERSION'])\n if os.path.isdir(os.path.join(base_dir, \"Versions\", \"Current\", \"Headers\")):\n attempt_symlink(os.path.join(base_dir, \"Headers\"), os.path.join(\"Versions\", \"Current\", \"Headers\"))\n if os.path.isdir(os.path.join(base_dir, \"Versions\", \"Current\", \"Resources\")):\n attempt_symlink(os.path.join(base_dir, \"Resources\"), os.path.join(\"Versions\", \"Current\", \"Resources\"))\n attempt_symlink(os.path.join(base_dir, os.environ['EXECUTABLE_NAME']), os.path.join(\"Versions\", \"Current\", os.environ['EXECUTABLE_NAME']))\n\n# Build an embedded framework structure.\n# An embedded framework contains the actual framework, plus a \"Resources\"\n# directory containing symlinks to all resources found in the actual framework,\n# with the exception of \"Info.plist\" and anything ending in \".lproj\":\n#\n# MyFramework.embeddedframework\n# |-- MyFramework.framework\n# | |-- MyFramework -> Versions/Current/MyFramework\n# | |-- Headers -> Versions/Current/Headers\n# | |-- Resources -> Versions/Current/Resources\n# | `-- Versions\n# | |-- A\n# | | |-- MyFramework\n# | | |-- Headers\n# | | | `-- MyFramework.h\n# | | `-- Resources\n# | | |-- Info.plist\n# | | |-- MyViewController.nib\n# | | `-- en.lproj\n# | | `-- InfoPlist.strings\n# | `-- Current -> A\n# `-- Resources\n# `-- MyViewController.nib -> ../MyFramework.framework/Resources/MyViewController.nib\n#\ndef build_embedded_framework(project):\n fw_path = project.local_built_fw_path\n embedded_path = project.local_built_embedded_fw_path\n fw_name = os.environ['WRAPPER_NAME']\n\n if (os.path.islink(fw_path)):\n # If the framework path is a link, the build result already in embeddedframework.\n # Just recreate embeddedframework's Resources\n remove_path(os.path.join(embedded_path, \"Resources\"))\n else:\n remove_path(embedded_path)\n ensure_path_exists(embedded_path)\n copy_overwrite(fw_path, os.path.join(embedded_path, fw_name))\n\n # Create embeddedframework's Resources \n ensure_path_exists(os.path.join(embedded_path, \"Resources\"))\n symlink_source = os.path.join(\"..\", fw_name, \"Resources\")\n symlink_path = os.path.join(embedded_path, \"Resources\")\n if os.path.isdir(os.path.join(fw_path, \"Resources\")):\n for file in filter(lambda x: x != \"Info.plist\" and not x.endswith(\".lproj\"), os.listdir(os.path.join(fw_path, \"Resources\"))):\n attempt_symlink(os.path.join(symlink_path, file), os.path.join(symlink_source, file))\n\n # Remove the normal framework and replace it with a symlink to the copy\n # in the embedded framework. This is needed because Xcode runs its strip\n # phase AFTER the script runs.\n embed_fw_wrapper = os.path.splitext(os.environ['WRAPPER_NAME'])[0] + \".embeddedframework\"\n remove_path(fw_path)\n attempt_symlink(fw_path, os.path.join(embed_fw_wrapper, os.environ['WRAPPER_NAME']))\n\n\n# Run the build process in slave mode to build the other configuration\n# (device/simulator).\n#\ndef run_slave_build(project):\n print_and_call_slave_build(project.get_slave_project_build_command(), project.other_platform)\n\n# Run the build process.\n#\ndef run_build():\n project = Project(os.path.join(os.environ['PROJECT_FILE_PATH'], \"project.pbxproj\"))\n\n # Issue warnings only if we're master.\n if is_master():\n if len(project.compilable_sources) == 0:\n raise Exception(\"No compilable sources found. Please add at least one source file to build target %s.\" % os.environ['TARGET_NAME'])\n\n if config_warn_derived_data:\n check_for_derived_data_in_search_paths(project)\n if config_warn_no_public_headers and len(project.public_headers) == 0:\n issue_warning('No headers in build target %s were marked public. Please move at least one header to \"Public\" in the \"Copy Headers\" build phase.' % os.environ['TARGET_NAME'])\n\n # Only build slave if this is an archive build.\n if is_archive_build():\n if is_master():\n log.debug(\"Building as MASTER\")\n # The slave-side linker tries to include this (nonexistent) path as\n # a library path.\n ensure_path_exists(project.get_slave_environment()['BUILT_PRODUCTS_DIR'])\n project.build_state.persist()\n run_slave_build(project)\n project.build_state.reload()\n else:\n log.debug(\"Building as SLAVE\")\n project.build_state.reload()\n project.build_state.set_slave_properties(project.local_architectures,\n project.local_linked_archive_paths,\n project.local_built_fw_path,\n project.local_built_embedded_fw_path)\n project.build_state.persist()\n\n link_local_archs(project)\n \n # Only do a universal binary when building an archive.\n if is_archive_build() and is_master():\n link_combine_all_archs(project)\n else:\n link_combine_local_archs(project)\n\n if config_deep_header_hierarchy:\n build_deep_header_hierarchy(project)\n\n add_symlinks_to_framework(project)\n \n if is_master():\n if config_framework_type == 'embeddedframework':\n build_embedded_framework(project)\n elif config_framework_type != 'framework':\n raise Exception(\"%s: Unknown framework type for config_framework_type\" % config_framework_type)\n\n\nif __name__ == \"__main__\":\n log_handler = logging.StreamHandler()\n log_handler.setFormatter(logging.Formatter(\"%(name)s (\" + os.environ['PLATFORM_NAME'] + \"): %(levelname)s: %(message)s\"))\n log.addHandler(log_handler)\n log.setLevel(config_log_level)\n\n error_code = 0\n prefix = \"M\" if is_master() else \"S\"\n log_handler.setFormatter(logging.Formatter(\"%(name)s (\" + prefix + \" \" + os.environ['PLATFORM_NAME'] + \"): %(levelname)s: %(message)s\"))\n\n log.debug(\"Begin build process\")\n\n if config_deep_header_top:\n config_deep_header_top = string.Template(config_deep_header_top).substitute(os.environ)\n\n try:\n run_build()\n if issued_warnings:\n if config_fail_on_warnings:\n error_code = 1\n log.warn(\"Build completed with warnings\")\n else:\n log.info(\"Build completed\")\n if not is_archive_build():\n log.info(\"Note: This is *NOT* a universal framework build. To build as a universal framework, do an archive build.\")\n log.info(\"To do an archive build from command line, use \\\"xcodebuild -configuration Release UFW_ACTION=archive clean build\\\"\")\n except Exception:\n traceback.print_exc(file=sys.stdout)\n error_code = 1\n log.error(\"Build failed\")\n finally:\n if error_code == 0 and is_archive_build() and is_master():\n log.info(\"Built framework is in \" + os.environ['TARGET_BUILD_DIR'])\n if should_open_build_dir():\n open_build_dir()\n sys.exit(error_code)\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - D946DDB81BD131EA006B77F7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D946DDDE1BD13276006B77F7 /* YYAnimatedImageView.m in Sources */, - D946DDE01BD13276006B77F7 /* YYFrameImage.m in Sources */, - D946DDE21BD13276006B77F7 /* YYImage.m in Sources */, - D946DDE41BD13276006B77F7 /* YYImageCoder.m in Sources */, - D946DDE61BD13276006B77F7 /* YYSpriteSheetImage.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - D946DDCA1BD131EA006B77F7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - 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_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - 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; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - }; - name = Debug; - }; - D946DDCB1BD131EA006B77F7 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - 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_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - 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; - MTL_ENABLE_DEBUG_INFO = NO; - }; - name = Release; - }; - D946DDCD1BD131EA006B77F7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - CONTENTS_FOLDER_PATH = "$(WRAPPER_NAME)/Versions/$(FRAMEWORK_VERSION)"; - DEAD_CODE_STRIPPING = NO; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/../Vendor\""; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = Info.plist; - INFOPLIST_PATH = "$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/Info.plist"; - INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - LINK_WITH_STANDARD_LIBRARIES = NO; - MACH_O_TYPE = mh_object; - PRODUCT_BUNDLE_IDENTIFIER = com.ibireme.YYImage; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - UNLOCALIZED_RESOURCES_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Resources"; - WRAPPER_EXTENSION = framework; - }; - name = Debug; - }; - D946DDCE1BD131EA006B77F7 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - CONTENTS_FOLDER_PATH = "$(WRAPPER_NAME)/Versions/$(FRAMEWORK_VERSION)"; - DEAD_CODE_STRIPPING = NO; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/../Vendor\""; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = Info.plist; - INFOPLIST_PATH = "$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/Info.plist"; - INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - LINK_WITH_STANDARD_LIBRARIES = NO; - MACH_O_TYPE = mh_object; - PRODUCT_BUNDLE_IDENTIFIER = com.ibireme.YYImage; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - UNLOCALIZED_RESOURCES_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Resources"; - WRAPPER_EXTENSION = framework; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - D946DDB71BD131EA006B77F7 /* Build configuration list for PBXProject "YYImage-Static" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D946DDCA1BD131EA006B77F7 /* Debug */, - D946DDCB1BD131EA006B77F7 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - D946DDCC1BD131EA006B77F7 /* Build configuration list for PBXNativeTarget "YYImage" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D946DDCD1BD131EA006B77F7 /* Debug */, - D946DDCE1BD131EA006B77F7 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = D946DDB41BD131EA006B77F7 /* Project object */; -} diff --git a/Framework/YYImage-Static.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Framework/YYImage-Static.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index ed42d59..0000000 --- a/Framework/YYImage-Static.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Framework/YYImage.xcodeproj/project.pbxproj b/Framework/YYImage.xcodeproj/project.pbxproj index 1484829..60b115a 100644 --- a/Framework/YYImage.xcodeproj/project.pbxproj +++ b/Framework/YYImage.xcodeproj/project.pbxproj @@ -3,149 +3,149 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 48; objects = { /* Begin PBXBuildFile section */ - D9D41AE91BD1033700CD8EBF /* YYAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D9D41ACF1BD1033700CD8EBF /* YYAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D9D41AEA1BD1033700CD8EBF /* YYAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D41AD01BD1033700CD8EBF /* YYAnimatedImageView.m */; }; - D9D41AEB1BD1033700CD8EBF /* YYFrameImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9D41AD11BD1033700CD8EBF /* YYFrameImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D9D41AEC1BD1033700CD8EBF /* YYFrameImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D41AD21BD1033700CD8EBF /* YYFrameImage.m */; }; - D9D41AED1BD1033700CD8EBF /* YYImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9D41AD31BD1033700CD8EBF /* YYImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D9D41AEE1BD1033700CD8EBF /* YYImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D41AD41BD1033700CD8EBF /* YYImage.m */; }; - D9D41AF11BD1033700CD8EBF /* YYImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D9D41AD71BD1033700CD8EBF /* YYImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D9D41AF21BD1033700CD8EBF /* YYImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D41AD81BD1033700CD8EBF /* YYImageCoder.m */; }; - D9D41AF31BD1033700CD8EBF /* YYSpriteSheetImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9D41AD91BD1033700CD8EBF /* YYSpriteSheetImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D9D41AF41BD1033700CD8EBF /* YYSpriteSheetImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D41ADA1BD1033700CD8EBF /* YYSpriteSheetImage.m */; }; - D9D41AFB1BD10CE700CD8EBF /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9D41AFA1BD10CE700CD8EBF /* UIKit.framework */; }; - D9D41AFD1BD10CEC00CD8EBF /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9D41AFC1BD10CEC00CD8EBF /* CoreFoundation.framework */; }; - D9D41AFF1BD10CF200CD8EBF /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9D41AFE1BD10CF200CD8EBF /* QuartzCore.framework */; }; - D9D41B011BD10CF600CD8EBF /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9D41B001BD10CF600CD8EBF /* Accelerate.framework */; }; - D9D41B031BD10CFA00CD8EBF /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D9D41B021BD10CFA00CD8EBF /* libz.tbd */; }; - D9D41B051BD10D0700CD8EBF /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9D41B041BD10D0700CD8EBF /* ImageIO.framework */; }; - D9D41B071BD10D0D00CD8EBF /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9D41B061BD10D0D00CD8EBF /* MobileCoreServices.framework */; }; - D9D41B091BD10D1E00CD8EBF /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9D41B081BD10D1E00CD8EBF /* AssetsLibrary.framework */; }; + D9A995351F05644B0062698B /* YYAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D9A9952B1F05644A0062698B /* YYAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D9A995361F05644B0062698B /* YYAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = D9A9952C1F05644A0062698B /* YYAnimatedImageView.m */; }; + D9A995371F05644B0062698B /* YYFrameImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9A9952D1F05644A0062698B /* YYFrameImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D9A995381F05644B0062698B /* YYFrameImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9A9952E1F05644A0062698B /* YYFrameImage.m */; }; + D9A995391F05644B0062698B /* YYImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9A9952F1F05644A0062698B /* YYImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D9A9953A1F05644B0062698B /* YYImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9A995301F05644A0062698B /* YYImage.m */; }; + D9A9953B1F05644B0062698B /* YYImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D9A995311F05644A0062698B /* YYImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D9A9953C1F05644B0062698B /* YYImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D9A995321F05644A0062698B /* YYImageCoder.m */; }; + D9A9953D1F05644B0062698B /* YYSpriteSheetImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9A995331F05644A0062698B /* YYSpriteSheetImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D9A9953E1F05644B0062698B /* YYSpriteSheetImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9A995341F05644A0062698B /* YYSpriteSheetImage.m */; }; + D9A995481F0564D40062698B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9A995471F0564C40062698B /* UIKit.framework */; }; + D9A995491F0564D40062698B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9A995461F0564BF0062698B /* CoreFoundation.framework */; }; + D9A9954A1F0564D40062698B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9A995451F0564BB0062698B /* QuartzCore.framework */; }; + D9A9954B1F0564D40062698B /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9A995441F0564B70062698B /* Accelerate.framework */; }; + D9A9954C1F0564D40062698B /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9A995431F0564B20062698B /* ImageIO.framework */; }; + D9A9954D1F0564D40062698B /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9A995421F0564AF0062698B /* MobileCoreServices.framework */; }; + D9A9954E1F0564D40062698B /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9A995411F0564A70062698B /* AssetsLibrary.framework */; }; + D9A9954F1F0564D40062698B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D9A995401F05649B0062698B /* libz.tbd */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - D9D41AB61BD102F300CD8EBF /* YYImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = YYImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D9D41AC11BD1030300CD8EBF /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D9D41ACF1BD1033700CD8EBF /* YYAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYAnimatedImageView.h; sourceTree = ""; }; - D9D41AD01BD1033700CD8EBF /* YYAnimatedImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYAnimatedImageView.m; sourceTree = ""; }; - D9D41AD11BD1033700CD8EBF /* YYFrameImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYFrameImage.h; sourceTree = ""; }; - D9D41AD21BD1033700CD8EBF /* YYFrameImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYFrameImage.m; sourceTree = ""; }; - D9D41AD31BD1033700CD8EBF /* YYImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImage.h; sourceTree = ""; }; - D9D41AD41BD1033700CD8EBF /* YYImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImage.m; sourceTree = ""; }; - D9D41AD71BD1033700CD8EBF /* YYImageCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageCoder.h; sourceTree = ""; }; - D9D41AD81BD1033700CD8EBF /* YYImageCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageCoder.m; sourceTree = ""; }; - D9D41AD91BD1033700CD8EBF /* YYSpriteSheetImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYSpriteSheetImage.h; sourceTree = ""; }; - D9D41ADA1BD1033700CD8EBF /* YYSpriteSheetImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYSpriteSheetImage.m; sourceTree = ""; }; - D9D41AFA1BD10CE700CD8EBF /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - D9D41AFC1BD10CEC00CD8EBF /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; - D9D41AFE1BD10CF200CD8EBF /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - D9D41B001BD10CF600CD8EBF /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; - D9D41B021BD10CFA00CD8EBF /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - D9D41B041BD10D0700CD8EBF /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; }; - D9D41B061BD10D0D00CD8EBF /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; - D9D41B081BD10D1E00CD8EBF /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; }; + D9A9951F1F0564180062698B /* YYImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = YYImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D9A995231F0564180062698B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D9A9952B1F05644A0062698B /* YYAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYAnimatedImageView.h; sourceTree = ""; }; + D9A9952C1F05644A0062698B /* YYAnimatedImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYAnimatedImageView.m; sourceTree = ""; }; + D9A9952D1F05644A0062698B /* YYFrameImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYFrameImage.h; sourceTree = ""; }; + D9A9952E1F05644A0062698B /* YYFrameImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYFrameImage.m; sourceTree = ""; }; + D9A9952F1F05644A0062698B /* YYImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImage.h; sourceTree = ""; }; + D9A995301F05644A0062698B /* YYImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImage.m; sourceTree = ""; }; + D9A995311F05644A0062698B /* YYImageCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageCoder.h; sourceTree = ""; }; + D9A995321F05644A0062698B /* YYImageCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageCoder.m; sourceTree = ""; }; + D9A995331F05644A0062698B /* YYSpriteSheetImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYSpriteSheetImage.h; sourceTree = ""; }; + D9A995341F05644A0062698B /* YYSpriteSheetImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYSpriteSheetImage.m; sourceTree = ""; }; + D9A995401F05649B0062698B /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + D9A995411F0564A70062698B /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; }; + D9A995421F0564AF0062698B /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; + D9A995431F0564B20062698B /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; }; + D9A995441F0564B70062698B /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; + D9A995451F0564BB0062698B /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + D9A995461F0564BF0062698B /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; + D9A995471F0564C40062698B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - D9D41AB21BD102F300CD8EBF /* Frameworks */ = { + D9A9951B1F0564180062698B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D9D41B031BD10CFA00CD8EBF /* libz.tbd in Frameworks */, - D9D41B091BD10D1E00CD8EBF /* AssetsLibrary.framework in Frameworks */, - D9D41B071BD10D0D00CD8EBF /* MobileCoreServices.framework in Frameworks */, - D9D41B051BD10D0700CD8EBF /* ImageIO.framework in Frameworks */, - D9D41B011BD10CF600CD8EBF /* Accelerate.framework in Frameworks */, - D9D41AFF1BD10CF200CD8EBF /* QuartzCore.framework in Frameworks */, - D9D41AFD1BD10CEC00CD8EBF /* CoreFoundation.framework in Frameworks */, - D9D41AFB1BD10CE700CD8EBF /* UIKit.framework in Frameworks */, + D9A995481F0564D40062698B /* UIKit.framework in Frameworks */, + D9A995491F0564D40062698B /* CoreFoundation.framework in Frameworks */, + D9A9954A1F0564D40062698B /* QuartzCore.framework in Frameworks */, + D9A9954B1F0564D40062698B /* Accelerate.framework in Frameworks */, + D9A9954C1F0564D40062698B /* ImageIO.framework in Frameworks */, + D9A9954D1F0564D40062698B /* MobileCoreServices.framework in Frameworks */, + D9A9954E1F0564D40062698B /* AssetsLibrary.framework in Frameworks */, + D9A9954F1F0564D40062698B /* libz.tbd in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - D9D41AAC1BD102F300CD8EBF = { + D9A995151F0564180062698B = { isa = PBXGroup; children = ( - D9D41AC31BD1033700CD8EBF /* YYImage */, - D9D41AF91BD1033C00CD8EBF /* Supporting Files */, - D9D41AB71BD102F300CD8EBF /* Products */, + D9A9952A1F05644A0062698B /* YYImage */, + D9A995201F0564180062698B /* Products */, + D9A9953F1F05649B0062698B /* Frameworks */, ); sourceTree = ""; }; - D9D41AB71BD102F300CD8EBF /* Products */ = { + D9A995201F0564180062698B /* Products */ = { isa = PBXGroup; children = ( - D9D41AB61BD102F300CD8EBF /* YYImage.framework */, + D9A9951F1F0564180062698B /* YYImage.framework */, ); name = Products; sourceTree = ""; }; - D9D41AC31BD1033700CD8EBF /* YYImage */ = { + D9A9952A1F05644A0062698B /* YYImage */ = { isa = PBXGroup; children = ( - D9D41AD31BD1033700CD8EBF /* YYImage.h */, - D9D41AD41BD1033700CD8EBF /* YYImage.m */, - D9D41AD11BD1033700CD8EBF /* YYFrameImage.h */, - D9D41AD21BD1033700CD8EBF /* YYFrameImage.m */, - D9D41AD91BD1033700CD8EBF /* YYSpriteSheetImage.h */, - D9D41ADA1BD1033700CD8EBF /* YYSpriteSheetImage.m */, - D9D41AD71BD1033700CD8EBF /* YYImageCoder.h */, - D9D41AD81BD1033700CD8EBF /* YYImageCoder.m */, - D9D41ACF1BD1033700CD8EBF /* YYAnimatedImageView.h */, - D9D41AD01BD1033700CD8EBF /* YYAnimatedImageView.m */, + D9A9952F1F05644A0062698B /* YYImage.h */, + D9A995301F05644A0062698B /* YYImage.m */, + D9A995331F05644A0062698B /* YYSpriteSheetImage.h */, + D9A995341F05644A0062698B /* YYSpriteSheetImage.m */, + D9A9952D1F05644A0062698B /* YYFrameImage.h */, + D9A9952E1F05644A0062698B /* YYFrameImage.m */, + D9A9952B1F05644A0062698B /* YYAnimatedImageView.h */, + D9A9952C1F05644A0062698B /* YYAnimatedImageView.m */, + D9A995311F05644A0062698B /* YYImageCoder.h */, + D9A995321F05644A0062698B /* YYImageCoder.m */, ); name = YYImage; path = ../YYImage; sourceTree = ""; }; - D9D41AF91BD1033C00CD8EBF /* Supporting Files */ = { + D9A9953F1F05649B0062698B /* Frameworks */ = { isa = PBXGroup; children = ( - D9D41AFA1BD10CE700CD8EBF /* UIKit.framework */, - D9D41AFC1BD10CEC00CD8EBF /* CoreFoundation.framework */, - D9D41AFE1BD10CF200CD8EBF /* QuartzCore.framework */, - D9D41B041BD10D0700CD8EBF /* ImageIO.framework */, - D9D41B001BD10CF600CD8EBF /* Accelerate.framework */, - D9D41B081BD10D1E00CD8EBF /* AssetsLibrary.framework */, - D9D41B061BD10D0D00CD8EBF /* MobileCoreServices.framework */, - D9D41B021BD10CFA00CD8EBF /* libz.tbd */, - D9D41AC11BD1030300CD8EBF /* Info.plist */, + D9A995471F0564C40062698B /* UIKit.framework */, + D9A995461F0564BF0062698B /* CoreFoundation.framework */, + D9A995451F0564BB0062698B /* QuartzCore.framework */, + D9A995441F0564B70062698B /* Accelerate.framework */, + D9A995431F0564B20062698B /* ImageIO.framework */, + D9A995421F0564AF0062698B /* MobileCoreServices.framework */, + D9A995411F0564A70062698B /* AssetsLibrary.framework */, + D9A995401F05649B0062698B /* libz.tbd */, + D9A995231F0564180062698B /* Info.plist */, ); - name = "Supporting Files"; + name = Frameworks; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - D9D41AB31BD102F300CD8EBF /* Headers */ = { + D9A9951C1F0564180062698B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D9D41AEB1BD1033700CD8EBF /* YYFrameImage.h in Headers */, - D9D41AE91BD1033700CD8EBF /* YYAnimatedImageView.h in Headers */, - D9D41AF11BD1033700CD8EBF /* YYImageCoder.h in Headers */, - D9D41AED1BD1033700CD8EBF /* YYImage.h in Headers */, - D9D41AF31BD1033700CD8EBF /* YYSpriteSheetImage.h in Headers */, + D9A995371F05644B0062698B /* YYFrameImage.h in Headers */, + D9A995351F05644B0062698B /* YYAnimatedImageView.h in Headers */, + D9A9953B1F05644B0062698B /* YYImageCoder.h in Headers */, + D9A995391F05644B0062698B /* YYImage.h in Headers */, + D9A9953D1F05644B0062698B /* YYSpriteSheetImage.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - D9D41AB51BD102F300CD8EBF /* YYImage */ = { + D9A9951E1F0564180062698B /* YYImage */ = { isa = PBXNativeTarget; - buildConfigurationList = D9D41ABE1BD102F300CD8EBF /* Build configuration list for PBXNativeTarget "YYImage" */; + buildConfigurationList = D9A995271F0564180062698B /* Build configuration list for PBXNativeTarget "YYImage" */; buildPhases = ( - D9D41AB11BD102F300CD8EBF /* Sources */, - D9D41AB21BD102F300CD8EBF /* Frameworks */, - D9D41AB31BD102F300CD8EBF /* Headers */, - D9D41AB41BD102F300CD8EBF /* Resources */, + D9A9951A1F0564180062698B /* Sources */, + D9A9951B1F0564180062698B /* Frameworks */, + D9A9951C1F0564180062698B /* Headers */, + D9A9951D1F0564180062698B /* Resources */, ); buildRules = ( ); @@ -153,42 +153,42 @@ ); name = YYImage; productName = YYImage; - productReference = D9D41AB61BD102F300CD8EBF /* YYImage.framework */; + productReference = D9A9951F1F0564180062698B /* YYImage.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D9D41AAD1BD102F300CD8EBF /* Project object */ = { + D9A995161F0564180062698B /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = ibireme; TargetAttributes = { - D9D41AB51BD102F300CD8EBF = { - CreatedOnToolsVersion = 7.0; + D9A9951E1F0564180062698B = { + CreatedOnToolsVersion = 9.0; }; }; }; - buildConfigurationList = D9D41AB01BD102F300CD8EBF /* Build configuration list for PBXProject "YYImage" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + buildConfigurationList = D9A995191F0564180062698B /* Build configuration list for PBXProject "YYImage" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = D9D41AAC1BD102F300CD8EBF; - productRefGroup = D9D41AB71BD102F300CD8EBF /* Products */; + mainGroup = D9A995151F0564180062698B; + productRefGroup = D9A995201F0564180062698B /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - D9D41AB51BD102F300CD8EBF /* YYImage */, + D9A9951E1F0564180062698B /* YYImage */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - D9D41AB41BD102F300CD8EBF /* Resources */ = { + D9A9951D1F0564180062698B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -198,47 +198,55 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - D9D41AB11BD102F300CD8EBF /* Sources */ = { + D9A9951A1F0564180062698B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D9D41AEE1BD1033700CD8EBF /* YYImage.m in Sources */, - D9D41AEA1BD1033700CD8EBF /* YYAnimatedImageView.m in Sources */, - D9D41AEC1BD1033700CD8EBF /* YYFrameImage.m in Sources */, - D9D41AF41BD1033700CD8EBF /* YYSpriteSheetImage.m in Sources */, - D9D41AF21BD1033700CD8EBF /* YYImageCoder.m in Sources */, + D9A995361F05644B0062698B /* YYAnimatedImageView.m in Sources */, + D9A995381F05644B0062698B /* YYFrameImage.m in Sources */, + D9A9953A1F05644B0062698B /* YYImage.m in Sources */, + D9A9953C1F05644B0062698B /* YYImageCoder.m in Sources */, + D9A9953E1F05644B0062698B /* YYSpriteSheetImage.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ - D9D41ABC1BD102F300CD8EBF /* Debug */ = { + D9A995251F0564180062698B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = 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_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -256,38 +264,45 @@ MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - D9D41ABD1BD102F300CD8EBF /* Release */ = { + D9A995261F0564180062698B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = 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_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -298,71 +313,72 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - D9D41ABF1BD102F300CD8EBF /* Debug */ = { + D9A995281F0564180062698B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.ibireme.YYImage; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - D9D41AC01BD102F300CD8EBF /* Release */ = { + D9A995291F0564180062698B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.ibireme.YYImage; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - D9D41AB01BD102F300CD8EBF /* Build configuration list for PBXProject "YYImage" */ = { + D9A995191F0564180062698B /* Build configuration list for PBXProject "YYImage" */ = { isa = XCConfigurationList; buildConfigurations = ( - D9D41ABC1BD102F300CD8EBF /* Debug */, - D9D41ABD1BD102F300CD8EBF /* Release */, + D9A995251F0564180062698B /* Debug */, + D9A995261F0564180062698B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D9D41ABE1BD102F300CD8EBF /* Build configuration list for PBXNativeTarget "YYImage" */ = { + D9A995271F0564180062698B /* Build configuration list for PBXNativeTarget "YYImage" */ = { isa = XCConfigurationList; buildConfigurations = ( - D9D41ABF1BD102F300CD8EBF /* Debug */, - D9D41AC01BD102F300CD8EBF /* Release */, + D9A995281F0564180062698B /* Debug */, + D9A995291F0564180062698B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D9D41AAD1BD102F300CD8EBF /* Project object */; + rootObject = D9A995161F0564180062698B /* Project object */; } diff --git a/Framework/YYImage.xcodeproj/xcshareddata/xcschemes/YYImage.xcscheme b/Framework/YYImage.xcodeproj/xcshareddata/xcschemes/YYImage.xcscheme index dd4c5c9..dd8d84a 100644 --- a/Framework/YYImage.xcodeproj/xcshareddata/xcschemes/YYImage.xcscheme +++ b/Framework/YYImage.xcodeproj/xcshareddata/xcschemes/YYImage.xcscheme @@ -1,6 +1,6 @@ @@ -26,6 +26,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" shouldUseLaunchSchemeArgsEnv = "YES"> @@ -36,6 +37,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" @@ -45,7 +47,7 @@ @@ -63,7 +65,7 @@ diff --git a/Vendor/WebP.framework/Headers/config.h b/Vendor/WebP.framework/Headers/config.h index 70b1fbd..076aaff 100644 --- a/Vendor/WebP.framework/Headers/config.h +++ b/Vendor/WebP.framework/Headers/config.h @@ -78,7 +78,7 @@ #define PACKAGE_NAME "libwebp" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libwebp 0.5.0" +#define PACKAGE_STRING "libwebp 0.6.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "libwebp" @@ -87,7 +87,7 @@ #define PACKAGE_URL "http://developers.google.com/speed/webp" /* Define to the version of this package. */ -#define PACKAGE_VERSION "0.5.0" +#define PACKAGE_VERSION "0.6.0" /* Define to necessary symbol if this constant uses a non-standard name on your system. */ @@ -97,14 +97,11 @@ #define STDC_HEADERS 1 /* Version number of package */ -#define VERSION "0.5.0" +#define VERSION "0.6.0" /* Enable experimental code */ /* #undef WEBP_EXPERIMENTAL_FEATURES */ -/* Define to 1 to force aligned memory operations */ -/* #undef WEBP_FORCE_ALIGNED */ - /* Set to 1 if AVX2 is supported */ /* #undef WEBP_HAVE_AVX2 */ @@ -117,6 +114,12 @@ /* Set to 1 if JPEG library is installed */ /* #undef WEBP_HAVE_JPEG */ +/* Set to 1 if NEON is supported */ +/* #undef WEBP_HAVE_NEON */ + +/* Set to 1 if runtime detection of NEON is enabled */ +/* #undef WEBP_HAVE_NEON_RTCD */ + /* Set to 1 if PNG library is installed */ /* #undef WEBP_HAVE_PNG */ diff --git a/Vendor/WebP.framework/Headers/decode.h b/Vendor/WebP.framework/Headers/decode.h index 143e4fb..4c5e74a 100644 --- a/Vendor/WebP.framework/Headers/decode.h +++ b/Vendor/WebP.framework/Headers/decode.h @@ -39,8 +39,8 @@ typedef struct WebPDecoderConfig WebPDecoderConfig; WEBP_EXTERN(int) WebPGetDecoderVersion(void); // Retrieve basic header information: width, height. -// This function will also validate the header and return 0 in -// case of formatting error. +// This function will also validate the header, returning true on success, +// false otherwise. '*width' and '*height' are only valid on successful return. // Pointers 'width' and 'height' can be passed NULL if deemed irrelevant. WEBP_EXTERN(int) WebPGetInfo(const uint8_t* data, size_t data_size, int* width, int* height); @@ -197,7 +197,10 @@ struct WebPYUVABuffer { // view as YUVA struct WebPDecBuffer { WEBP_CSP_MODE colorspace; // Colorspace. int width, height; // Dimensions. - int is_external_memory; // If true, 'internal_memory' pointer is not used. + int is_external_memory; // If non-zero, 'internal_memory' pointer is not + // used. If value is '2' or more, the external + // memory is considered 'slow' and multiple + // read/write will be avoided. union { WebPRGBABuffer RGBA; WebPYUVABuffer YUVA; @@ -205,7 +208,7 @@ struct WebPDecBuffer { uint32_t pad[4]; // padding for later use uint8_t* private_memory; // Internally allocated memory (only when - // is_external_memory is false). Should not be used + // is_external_memory is 0). Should not be used // externally, but accessed via the buffer union. }; @@ -245,19 +248,19 @@ typedef enum VP8StatusCode { // picture is only partially decoded, pending additional input. // Code example: // -// WebPInitDecBuffer(&buffer); -// buffer.colorspace = mode; +// WebPInitDecBuffer(&output_buffer); +// output_buffer.colorspace = mode; // ... -// WebPIDecoder* idec = WebPINewDecoder(&buffer); -// while (has_more_data) { -// // ... (get additional data) +// WebPIDecoder* idec = WebPINewDecoder(&output_buffer); +// while (additional_data_is_available) { +// // ... (get additional data in some new_data[] buffer) // status = WebPIAppend(idec, new_data, new_data_size); -// if (status != VP8_STATUS_SUSPENDED || -// break; +// if (status != VP8_STATUS_OK && status != VP8_STATUS_SUSPENDED) { +// break; // an error occurred. // } // // // The above call decodes the current available buffer. -// // Part of the image can now be refreshed by calling to +// // Part of the image can now be refreshed by calling // // WebPIDecGetRGB()/WebPIDecGetYUVA() etc. // } // WebPIDelete(idec); @@ -269,7 +272,7 @@ typedef enum VP8StatusCode { // that of the returned WebPIDecoder object. // The supplied 'output_buffer' content MUST NOT be changed between calls to // WebPIAppend() or WebPIUpdate() unless 'output_buffer.is_external_memory' is -// set to 1. In such a case, it is allowed to modify the pointers, size and +// not set to 0. In such a case, it is allowed to modify the pointers, size and // stride of output_buffer.u.RGBA or output_buffer.u.YUVA, provided they remain // within valid bounds. // All other fields of WebPDecBuffer MUST remain constant between calls. @@ -468,16 +471,18 @@ static WEBP_INLINE int WebPInitDecoderConfig(WebPDecoderConfig* config) { // parameter, in which case the features will be parsed and stored into // config->input. Otherwise, 'data' can be NULL and no parsing will occur. // Note that 'config' can be NULL too, in which case a default configuration -// is used. +// is used. If 'config' is not NULL, it must outlive the WebPIDecoder object +// as some references to its fields will be used. No internal copy of 'config' +// is made. // The return WebPIDecoder object must always be deleted calling WebPIDelete(). // Returns NULL in case of error (and config->status will then reflect -// the error condition). +// the error condition, if available). WEBP_EXTERN(WebPIDecoder*) WebPIDecode(const uint8_t* data, size_t data_size, WebPDecoderConfig* config); // Non-incremental version. This version decodes the full data at once, taking // 'config' into account. Returns decoding status (which should be VP8_STATUS_OK -// if the decoding was successful). +// if the decoding was successful). Note that 'config' cannot be NULL. WEBP_EXTERN(VP8StatusCode) WebPDecode(const uint8_t* data, size_t data_size, WebPDecoderConfig* config); diff --git a/Vendor/WebP.framework/Headers/encode.h b/Vendor/WebP.framework/Headers/encode.h index c382ea7..35fde1d 100644 --- a/Vendor/WebP.framework/Headers/encode.h +++ b/Vendor/WebP.framework/Headers/encode.h @@ -20,7 +20,7 @@ extern "C" { #endif -#define WEBP_ENCODER_ABI_VERSION 0x0209 // MAJOR(8b) + MINOR(8b) +#define WEBP_ENCODER_ABI_VERSION 0x020e // MAJOR(8b) + MINOR(8b) // Note: forward declaring enumerations is not allowed in (strict) C and C++, // the types are left here for reference. @@ -134,19 +134,17 @@ struct WebPConfig { int thread_level; // If non-zero, try and use multi-threaded encoding. int low_memory; // If set, reduce memory usage (but increase CPU use). - int near_lossless; // Near lossless encoding [0 = off(default) .. 100]. - // This feature is experimental. + int near_lossless; // Near lossless encoding [0 = max loss .. 100 = off + // (default)]. int exact; // if non-zero, preserve the exact RGB values under // transparent area. Otherwise, discard this invisible // RGB information for better compression. The default // value is 0. -#ifdef WEBP_EXPERIMENTAL_FEATURES - int delta_palettization; + int use_delta_palette; // reserved for future lossless feature + int use_sharp_yuv; // if needed, use sharp (and slow) RGB->YUV conversion + uint32_t pad[2]; // padding for later use -#else - uint32_t pad[3]; // padding for later use -#endif // WEBP_EXPERIMENTAL_FEATURES }; // Enumerate some predefined settings for WebPConfig, depending on the type @@ -388,9 +386,24 @@ WEBP_EXTERN(void) WebPPictureFree(WebPPicture* picture); // Returns false in case of memory allocation error. WEBP_EXTERN(int) WebPPictureCopy(const WebPPicture* src, WebPPicture* dst); +// Compute the single distortion for packed planes of samples. +// 'src' will be compared to 'ref', and the raw distortion stored into +// '*distortion'. The refined metric (log(MSE), log(1 - ssim),...' will be +// stored in '*result'. +// 'x_step' is the horizontal stride (in bytes) between samples. +// 'src/ref_stride' is the byte distance between rows. +// Returns false in case of error (bad parameter, memory allocation error, ...). +WEBP_EXTERN(int) WebPPlaneDistortion(const uint8_t* src, size_t src_stride, + const uint8_t* ref, size_t ref_stride, + int width, int height, + size_t x_step, + int type, // 0 = PSNR, 1 = SSIM, 2 = LSIM + float* distortion, float* result); + // Compute PSNR, SSIM or LSIM distortion metric between two pictures. Results -// are in dB, stored in result[] in the Y/U/V/Alpha/All or B/G/R/A/All order. -// Returns false in case of error (src and ref don't have same dimension, ...) +// are in dB, stored in result[] in the B/G/R/A/All order. The distortion is +// always performed using ARGB samples. Hence if the input is YUV(A), the +// picture will be internally converted to ARGB (just for the measurement). // Warning: this function is rather CPU-intensive. WEBP_EXTERN(int) WebPPictureDistortion( const WebPPicture* src, const WebPPicture* ref, @@ -473,18 +486,20 @@ WEBP_EXTERN(int) WebPPictureARGBToYUVA(WebPPicture* picture, WEBP_EXTERN(int) WebPPictureARGBToYUVADithered( WebPPicture* picture, WebPEncCSP colorspace, float dithering); -// Performs 'smart' RGBA->YUVA420 downsampling and colorspace conversion. +// Performs 'sharp' RGBA->YUVA420 downsampling and colorspace conversion. // Downsampling is handled with extra care in case of color clipping. This // method is roughly 2x slower than WebPPictureARGBToYUVA() but produces better -// YUV representation. +// and sharper YUV representation. // Returns false in case of error. +WEBP_EXTERN(int) WebPPictureSharpARGBToYUVA(WebPPicture* picture); +// kept for backward compatibility: WEBP_EXTERN(int) WebPPictureSmartARGBToYUVA(WebPPicture* picture); // Converts picture->yuv to picture->argb and sets picture->use_argb to true. -// The input format must be YUV_420 or YUV_420A. -// Note that the use of this method is discouraged if one has access to the -// raw ARGB samples, since using YUV420 is comparatively lossy. Also, the -// conversion from YUV420 to ARGB incurs a small loss too. +// The input format must be YUV_420 or YUV_420A. The conversion from YUV420 to +// ARGB incurs a small loss too. +// Note that the use of this colorspace is discouraged if one has access to the +// raw ARGB samples, since using YUV420 is comparatively lossy. // Returns false in case of error. WEBP_EXTERN(int) WebPPictureYUVAToARGB(WebPPicture* picture); diff --git a/Vendor/WebP.framework/Headers/extras.h b/Vendor/WebP.framework/Headers/extras.h deleted file mode 100644 index 1c24be2..0000000 --- a/Vendor/WebP.framework/Headers/extras.h +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2015 Google Inc. All Rights Reserved. -// -// Use of this source code is governed by a BSD-style license -// that can be found in the COPYING file in the root of the source -// tree. An additional intellectual property rights grant can be found -// in the file PATENTS. All contributing project authors may -// be found in the AUTHORS file in the root of the source tree. -// ----------------------------------------------------------------------------- -// - -#ifndef WEBP_WEBP_EXTRAS_H_ -#define WEBP_WEBP_EXTRAS_H_ - -#include "./types.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#include "./encode.h" - -#define WEBP_EXTRAS_ABI_VERSION 0x0000 // MAJOR(8b) + MINOR(8b) - -//------------------------------------------------------------------------------ - -// Returns the version number of the extras library, packed in hexadecimal using -// 8bits for each of major/minor/revision. E.g: v2.5.7 is 0x020507. -WEBP_EXTERN(int) WebPGetExtrasVersion(void); - -//------------------------------------------------------------------------------ -// Ad-hoc colorspace importers. - -// Import luma sample (gray scale image) into 'picture'. The 'picture' -// width and height must be set prior to calling this function. -WEBP_EXTERN(int) WebPImportGray(const uint8_t* gray, WebPPicture* picture); - -// Import rgb sample in RGB565 packed format into 'picture'. The 'picture' -// width and height must be set prior to calling this function. -WEBP_EXTERN(int) WebPImportRGB565(const uint8_t* rgb565, WebPPicture* pic); - -// Import rgb sample in RGB4444 packed format into 'picture'. The 'picture' -// width and height must be set prior to calling this function. -WEBP_EXTERN(int) WebPImportRGB4444(const uint8_t* rgb4444, WebPPicture* pic); - -//------------------------------------------------------------------------------ - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif /* WEBP_WEBP_EXTRAS_H_ */ diff --git a/Vendor/WebP.framework/Headers/format_constants.h b/Vendor/WebP.framework/Headers/format_constants.h index b6e78a6..329fc8a 100644 --- a/Vendor/WebP.framework/Headers/format_constants.h +++ b/Vendor/WebP.framework/Headers/format_constants.h @@ -72,14 +72,13 @@ typedef enum { #define RIFF_HEADER_SIZE 12 // Size of the RIFF header ("RIFFnnnnWEBP"). #define ANMF_CHUNK_SIZE 16 // Size of an ANMF chunk. #define ANIM_CHUNK_SIZE 6 // Size of an ANIM chunk. -#define FRGM_CHUNK_SIZE 6 // Size of a FRGM chunk. #define VP8X_CHUNK_SIZE 10 // Size of a VP8X chunk. #define MAX_CANVAS_SIZE (1 << 24) // 24-bit max for VP8X width/height. #define MAX_IMAGE_AREA (1ULL << 32) // 32-bit max for width x height. #define MAX_LOOP_COUNT (1 << 16) // maximum value for loop-count #define MAX_DURATION (1 << 24) // maximum duration -#define MAX_POSITION_OFFSET (1 << 24) // maximum frame/fragment x/y offset +#define MAX_POSITION_OFFSET (1 << 24) // maximum frame x/y offset // Maximum chunk payload is such that adding the header and padding won't // overflow a uint32_t. diff --git a/Vendor/WebP.framework/Headers/mux.h b/Vendor/WebP.framework/Headers/mux.h index b72658c..daccc65 100644 --- a/Vendor/WebP.framework/Headers/mux.h +++ b/Vendor/WebP.framework/Headers/mux.h @@ -21,13 +21,13 @@ extern "C" { #endif -#define WEBP_MUX_ABI_VERSION 0x0106 // MAJOR(8b) + MINOR(8b) +#define WEBP_MUX_ABI_VERSION 0x0108 // MAJOR(8b) + MINOR(8b) //------------------------------------------------------------------------------ // Mux API // // This API allows manipulation of WebP container images containing features -// like color profile, metadata, animation and fragmented images. +// like color profile, metadata, animation. // // Code Example#1: Create a WebPMux object with image data, color profile and // XMP metadata. @@ -81,16 +81,16 @@ typedef enum WebPMuxError { // IDs for different types of chunks. typedef enum WebPChunkId { - WEBP_CHUNK_VP8X, // VP8X - WEBP_CHUNK_ICCP, // ICCP - WEBP_CHUNK_ANIM, // ANIM - WEBP_CHUNK_ANMF, // ANMF - WEBP_CHUNK_FRGM, // FRGM - WEBP_CHUNK_ALPHA, // ALPH - WEBP_CHUNK_IMAGE, // VP8/VP8L - WEBP_CHUNK_EXIF, // EXIF - WEBP_CHUNK_XMP, // XMP - WEBP_CHUNK_UNKNOWN, // Other chunks. + WEBP_CHUNK_VP8X, // VP8X + WEBP_CHUNK_ICCP, // ICCP + WEBP_CHUNK_ANIM, // ANIM + WEBP_CHUNK_ANMF, // ANMF + WEBP_CHUNK_DEPRECATED, // (deprecated from FRGM) + WEBP_CHUNK_ALPHA, // ALPH + WEBP_CHUNK_IMAGE, // VP8/VP8L + WEBP_CHUNK_EXIF, // EXIF + WEBP_CHUNK_XMP, // XMP + WEBP_CHUNK_UNKNOWN, // Other chunks. WEBP_CHUNK_NIL } WebPChunkId; @@ -142,7 +142,7 @@ static WEBP_INLINE WebPMux* WebPMuxCreate(const WebPData* bitstream, // Non-image chunks. // Note: Only non-image related chunks should be managed through chunk APIs. -// (Image related chunks are: "ANMF", "FRGM", "VP8 ", "VP8L" and "ALPH"). +// (Image related chunks are: "ANMF", "VP8 ", "VP8L" and "ALPH"). // To add, get and delete images, use WebPMuxSetImage(), WebPMuxPushFrame(), // WebPMuxGetFrame() and WebPMuxDeleteFrame(). @@ -195,7 +195,7 @@ WEBP_EXTERN(WebPMuxError) WebPMuxDeleteChunk( //------------------------------------------------------------------------------ // Images. -// Encapsulates data about a single frame/fragment. +// Encapsulates data about a single frame. struct WebPMuxFrameInfo { WebPData bitstream; // image data: can be a raw VP8/VP8L bitstream // or a single-image WebP file. @@ -203,19 +203,19 @@ struct WebPMuxFrameInfo { int y_offset; // y-offset of the frame. int duration; // duration of the frame (in milliseconds). - WebPChunkId id; // frame type: should be one of WEBP_CHUNK_ANMF, - // WEBP_CHUNK_FRGM or WEBP_CHUNK_IMAGE + WebPChunkId id; // frame type: should be one of WEBP_CHUNK_ANMF + // or WEBP_CHUNK_IMAGE WebPMuxAnimDispose dispose_method; // Disposal method for the frame. WebPMuxAnimBlend blend_method; // Blend operation for the frame. uint32_t pad[1]; // padding for later use }; -// Sets the (non-animated and non-fragmented) image in the mux object. -// Note: Any existing images (including frames/fragments) will be removed. +// Sets the (non-animated) image in the mux object. +// Note: Any existing images (including frames) will be removed. // Parameters: // mux - (in/out) object in which the image is to be set // bitstream - (in) can be a raw VP8/VP8L bitstream or a single-image -// WebP file (non-animated and non-fragmented) +// WebP file (non-animated) // copy_data - (in) value 1 indicates given data WILL be copied to the mux // object and value 0 indicates data will NOT be copied. // Returns: @@ -226,9 +226,8 @@ WEBP_EXTERN(WebPMuxError) WebPMuxSetImage( WebPMux* mux, const WebPData* bitstream, int copy_data); // Adds a frame at the end of the mux object. -// Notes: (1) frame.id should be one of WEBP_CHUNK_ANMF or WEBP_CHUNK_FRGM -// (2) For setting a non-animated non-fragmented image, use -// WebPMuxSetImage() instead. +// Notes: (1) frame.id should be WEBP_CHUNK_ANMF +// (2) For setting a non-animated image, use WebPMuxSetImage() instead. // (3) Type of frame being pushed must be same as the frames in mux. // (4) As WebP only supports even offsets, any odd offset will be snapped // to an even location using: offset &= ~1 @@ -431,9 +430,10 @@ struct WebPAnimEncoderOptions { // frames in the output. The library may insert some key // frames as needed to satisfy this criteria. // Note that these conditions should hold: kmax > kmin - // and kmin >= kmax / 2 + 1. Also, if kmin == 0, then - // key-frame insertion is disabled; and if kmax == 0, - // then all frames will be key-frames. + // and kmin >= kmax / 2 + 1. Also, if kmax <= 0, then + // key-frame insertion is disabled; and if kmax == 1, + // then all frames will be key-frames (kmin value does + // not matter for these special cases). int allow_mixed; // If true, use mixed compression mode; may choose // either lossy and lossless for each frame. int verbose; // If true, print info and warning messages to stderr. diff --git a/Vendor/WebP.framework/Headers/mux_types.h b/Vendor/WebP.framework/Headers/mux_types.h index c94043a..b37e2c6 100644 --- a/Vendor/WebP.framework/Headers/mux_types.h +++ b/Vendor/WebP.framework/Headers/mux_types.h @@ -31,12 +31,13 @@ typedef struct WebPData WebPData; // VP8X Feature Flags. typedef enum WebPFeatureFlags { - FRAGMENTS_FLAG = 0x00000001, ANIMATION_FLAG = 0x00000002, XMP_FLAG = 0x00000004, EXIF_FLAG = 0x00000008, ALPHA_FLAG = 0x00000010, - ICCP_FLAG = 0x00000020 + ICCP_FLAG = 0x00000020, + + ALL_VALID_FLAGS = 0x0000003e } WebPFeatureFlags; // Dispose method (animation only). Indicates how the area used by the current diff --git a/Vendor/WebP.framework/WebP b/Vendor/WebP.framework/WebP index 5d88df8..28fddff 100644 Binary files a/Vendor/WebP.framework/WebP and b/Vendor/WebP.framework/WebP differ diff --git a/Vendor/WebP.sh b/Vendor/WebP.sh index 3db9637..5edb8e7 100755 --- a/Vendor/WebP.sh +++ b/Vendor/WebP.sh @@ -42,9 +42,6 @@ LIBLIST='' if [[ -z "${SDK}" ]]; then echo "iOS SDK not available" exit 1 -elif [[ ${SDK} < 6.0 ]]; then - echo "You need iOS SDK version 6.0 or above" - exit 1 else echo "iOS SDK Version ${SDK}" fi