Merge pull request #2306 from dreampiggy/renaming_coder_protocol_and_coders

Renaming coder protocol and coders
This commit is contained in:
Bogdan Poplauschi 2018-04-26 19:08:34 +03:00
commit ebfe2cedc2
35 changed files with 453 additions and 453 deletions

View File

@ -75,42 +75,42 @@
321B37982083290E00C0EA77 /* SDWebImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 321B37802083290E00C0EA77 /* SDWebImageLoadersManager.m */; };
321DB3612011D4D70015D2CB /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 321DB35F2011D4D60015D2CB /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
321DB3622011D4D70015D2CB /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 321DB3602011D4D60015D2CB /* NSButton+WebCache.m */; };
321E60861F38E8C800405457 /* SDWebImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDWebImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60871F38E8C800405457 /* SDWebImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDWebImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60881F38E8C800405457 /* SDWebImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDWebImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60891F38E8C800405457 /* SDWebImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDWebImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E608A1F38E8C800405457 /* SDWebImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDWebImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E608B1F38E8C800405457 /* SDWebImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDWebImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E608C1F38E8C800405457 /* SDWebImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDWebImageCoder.m */; };
321E608D1F38E8C800405457 /* SDWebImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDWebImageCoder.m */; };
321E608E1F38E8C800405457 /* SDWebImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDWebImageCoder.m */; };
321E608F1F38E8C800405457 /* SDWebImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDWebImageCoder.m */; };
321E60901F38E8C800405457 /* SDWebImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDWebImageCoder.m */; };
321E60911F38E8C800405457 /* SDWebImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDWebImageCoder.m */; };
321E60941F38E8ED00405457 /* SDWebImageImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDWebImageImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60951F38E8ED00405457 /* SDWebImageImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDWebImageImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60961F38E8ED00405457 /* SDWebImageImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDWebImageImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60971F38E8ED00405457 /* SDWebImageImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDWebImageImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60981F38E8ED00405457 /* SDWebImageImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDWebImageImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60991F38E8ED00405457 /* SDWebImageImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDWebImageImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E609A1F38E8ED00405457 /* SDWebImageImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDWebImageImageIOCoder.m */; };
321E609B1F38E8ED00405457 /* SDWebImageImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDWebImageImageIOCoder.m */; };
321E609C1F38E8ED00405457 /* SDWebImageImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDWebImageImageIOCoder.m */; };
321E609D1F38E8ED00405457 /* SDWebImageImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDWebImageImageIOCoder.m */; };
321E609E1F38E8ED00405457 /* SDWebImageImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDWebImageImageIOCoder.m */; };
321E609F1F38E8ED00405457 /* SDWebImageImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDWebImageImageIOCoder.m */; };
321E60A21F38E8F600405457 /* SDWebImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDWebImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60A31F38E8F600405457 /* SDWebImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDWebImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60A41F38E8F600405457 /* SDWebImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDWebImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60A51F38E8F600405457 /* SDWebImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDWebImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60A61F38E8F600405457 /* SDWebImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDWebImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60A71F38E8F600405457 /* SDWebImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDWebImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60A81F38E8F600405457 /* SDWebImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDWebImageGIFCoder.m */; };
321E60A91F38E8F600405457 /* SDWebImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDWebImageGIFCoder.m */; };
321E60AA1F38E8F600405457 /* SDWebImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDWebImageGIFCoder.m */; };
321E60AB1F38E8F600405457 /* SDWebImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDWebImageGIFCoder.m */; };
321E60AC1F38E8F600405457 /* SDWebImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDWebImageGIFCoder.m */; };
321E60AD1F38E8F600405457 /* SDWebImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDWebImageGIFCoder.m */; };
321E60861F38E8C800405457 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60871F38E8C800405457 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60881F38E8C800405457 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60891F38E8C800405457 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E608A1F38E8C800405457 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E608B1F38E8C800405457 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E608C1F38E8C800405457 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDImageCoder.m */; };
321E608D1F38E8C800405457 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDImageCoder.m */; };
321E608E1F38E8C800405457 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDImageCoder.m */; };
321E608F1F38E8C800405457 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDImageCoder.m */; };
321E60901F38E8C800405457 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDImageCoder.m */; };
321E60911F38E8C800405457 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDImageCoder.m */; };
321E60941F38E8ED00405457 /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60951F38E8ED00405457 /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60961F38E8ED00405457 /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60971F38E8ED00405457 /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60981F38E8ED00405457 /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60991F38E8ED00405457 /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E609A1F38E8ED00405457 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDImageIOCoder.m */; };
321E609B1F38E8ED00405457 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDImageIOCoder.m */; };
321E609C1F38E8ED00405457 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDImageIOCoder.m */; };
321E609D1F38E8ED00405457 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDImageIOCoder.m */; };
321E609E1F38E8ED00405457 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDImageIOCoder.m */; };
321E609F1F38E8ED00405457 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDImageIOCoder.m */; };
321E60A21F38E8F600405457 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60A31F38E8F600405457 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60A41F38E8F600405457 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60A51F38E8F600405457 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60A61F38E8F600405457 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60A71F38E8F600405457 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60A81F38E8F600405457 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDImageGIFCoder.m */; };
321E60A91F38E8F600405457 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDImageGIFCoder.m */; };
321E60AA1F38E8F600405457 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDImageGIFCoder.m */; };
321E60AB1F38E8F600405457 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDImageGIFCoder.m */; };
321E60AC1F38E8F600405457 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDImageGIFCoder.m */; };
321E60AD1F38E8F600405457 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDImageGIFCoder.m */; };
321E60BE1F38E91700405457 /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60BC1F38E91700405457 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60BF1F38E91700405457 /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60BC1F38E91700405457 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; };
321E60C01F38E91700405457 /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60BC1F38E91700405457 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -398,18 +398,18 @@
325312D1200F09910046BF1E /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 325312C7200F09910046BF1E /* SDWebImageTransition.m */; };
325312D2200F09910046BF1E /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 325312C7200F09910046BF1E /* SDWebImageTransition.m */; };
325312D3200F09910046BF1E /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 325312C7200F09910046BF1E /* SDWebImageTransition.m */; };
327054D4206CD8B3006EA328 /* SDWebImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDWebImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
327054D5206CD8B3006EA328 /* SDWebImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDWebImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
327054D6206CD8B3006EA328 /* SDWebImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDWebImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
327054D7206CD8B3006EA328 /* SDWebImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDWebImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
327054D8206CD8B3006EA328 /* SDWebImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDWebImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
327054D9206CD8B3006EA328 /* SDWebImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDWebImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
327054DA206CD8B3006EA328 /* SDWebImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDWebImageAPNGCoder.m */; };
327054DB206CD8B3006EA328 /* SDWebImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDWebImageAPNGCoder.m */; };
327054DC206CD8B3006EA328 /* SDWebImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDWebImageAPNGCoder.m */; };
327054DD206CD8B3006EA328 /* SDWebImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDWebImageAPNGCoder.m */; };
327054DE206CD8B3006EA328 /* SDWebImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDWebImageAPNGCoder.m */; };
327054DF206CD8B3006EA328 /* SDWebImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDWebImageAPNGCoder.m */; };
327054D4206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
327054D5206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
327054D6206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
327054D7206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
327054D8206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
327054D9206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
327054DA206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDImageAPNGCoder.m */; };
327054DB206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDImageAPNGCoder.m */; };
327054DC206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDImageAPNGCoder.m */; };
327054DD206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDImageAPNGCoder.m */; };
327054DE206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDImageAPNGCoder.m */; };
327054DF206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDImageAPNGCoder.m */; };
328BB69C2081FED200760D6C /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 328BB69A2081FED200760D6C /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; };
328BB69D2081FED200760D6C /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 328BB69A2081FED200760D6C /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; };
328BB69E2081FED200760D6C /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 328BB69A2081FED200760D6C /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -597,24 +597,24 @@
32FDE88C20888726008D7530 /* UIImage+WebP.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88520888726008D7530 /* UIImage+WebP.m */; };
32FDE88D20888726008D7530 /* UIImage+WebP.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88520888726008D7530 /* UIImage+WebP.m */; };
32FDE88E20888726008D7530 /* UIImage+WebP.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88520888726008D7530 /* UIImage+WebP.m */; };
32FDE88F20888726008D7530 /* SDWebImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88620888726008D7530 /* SDWebImageWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89020888726008D7530 /* SDWebImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88620888726008D7530 /* SDWebImageWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89120888726008D7530 /* SDWebImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88620888726008D7530 /* SDWebImageWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89220888726008D7530 /* SDWebImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88620888726008D7530 /* SDWebImageWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89320888726008D7530 /* SDWebImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88620888726008D7530 /* SDWebImageWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89420888726008D7530 /* SDWebImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88620888726008D7530 /* SDWebImageWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE88F20888726008D7530 /* SDImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88620888726008D7530 /* SDImageWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89020888726008D7530 /* SDImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88620888726008D7530 /* SDImageWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89120888726008D7530 /* SDImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88620888726008D7530 /* SDImageWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89220888726008D7530 /* SDImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88620888726008D7530 /* SDImageWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89320888726008D7530 /* SDImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88620888726008D7530 /* SDImageWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89420888726008D7530 /* SDImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88620888726008D7530 /* SDImageWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89520888726008D7530 /* UIImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88720888726008D7530 /* UIImage+WebP.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89620888726008D7530 /* UIImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88720888726008D7530 /* UIImage+WebP.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89720888726008D7530 /* UIImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88720888726008D7530 /* UIImage+WebP.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89820888726008D7530 /* UIImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88720888726008D7530 /* UIImage+WebP.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89920888726008D7530 /* UIImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88720888726008D7530 /* UIImage+WebP.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89A20888726008D7530 /* UIImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE88720888726008D7530 /* UIImage+WebP.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE89B20888726008D7530 /* SDWebImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88820888726008D7530 /* SDWebImageWebPCoder.m */; };
32FDE89C20888726008D7530 /* SDWebImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88820888726008D7530 /* SDWebImageWebPCoder.m */; };
32FDE89D20888726008D7530 /* SDWebImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88820888726008D7530 /* SDWebImageWebPCoder.m */; };
32FDE89E20888726008D7530 /* SDWebImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88820888726008D7530 /* SDWebImageWebPCoder.m */; };
32FDE89F20888726008D7530 /* SDWebImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88820888726008D7530 /* SDWebImageWebPCoder.m */; };
32FDE8A020888726008D7530 /* SDWebImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88820888726008D7530 /* SDWebImageWebPCoder.m */; };
32FDE89B20888726008D7530 /* SDImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88820888726008D7530 /* SDImageWebPCoder.m */; };
32FDE89C20888726008D7530 /* SDImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88820888726008D7530 /* SDImageWebPCoder.m */; };
32FDE89D20888726008D7530 /* SDImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88820888726008D7530 /* SDImageWebPCoder.m */; };
32FDE89E20888726008D7530 /* SDImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88820888726008D7530 /* SDImageWebPCoder.m */; };
32FDE89F20888726008D7530 /* SDImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88820888726008D7530 /* SDImageWebPCoder.m */; };
32FDE8A020888726008D7530 /* SDImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE88820888726008D7530 /* SDImageWebPCoder.m */; };
32FDE8A220888789008D7530 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A2CAE031AB4BB5400B6BC39 /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
32FDE8A320888789008D7530 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A2CAE031AB4BB5400B6BC39 /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
4314D1231D0E0E3B004B36C9 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D86148C56230056699D /* SDImageCache.m */; };
@ -1519,18 +1519,18 @@
80377EE41F2F66D500F89830 /* vp8li_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = 80377E841F2F66D000F89830 /* vp8li_dec.h */; };
80377EE51F2F66D500F89830 /* webp_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 80377E851F2F66D000F89830 /* webp_dec.c */; };
80377EE61F2F66D500F89830 /* webpi_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = 80377E861F2F66D000F89830 /* webpi_dec.h */; };
807A12281F89636300EC2A9B /* SDWebImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDWebImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
807A12291F89636300EC2A9B /* SDWebImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDWebImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
807A122A1F89636300EC2A9B /* SDWebImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDWebImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
807A122B1F89636300EC2A9B /* SDWebImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDWebImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
807A122C1F89636300EC2A9B /* SDWebImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDWebImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
807A122D1F89636300EC2A9B /* SDWebImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDWebImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
807A122E1F89636300EC2A9B /* SDWebImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDWebImageCodersManager.m */; };
807A122F1F89636300EC2A9B /* SDWebImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDWebImageCodersManager.m */; };
807A12301F89636300EC2A9B /* SDWebImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDWebImageCodersManager.m */; };
807A12311F89636300EC2A9B /* SDWebImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDWebImageCodersManager.m */; };
807A12321F89636300EC2A9B /* SDWebImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDWebImageCodersManager.m */; };
807A12331F89636300EC2A9B /* SDWebImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDWebImageCodersManager.m */; };
807A12281F89636300EC2A9B /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
807A12291F89636300EC2A9B /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
807A122A1F89636300EC2A9B /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
807A122B1F89636300EC2A9B /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
807A122C1F89636300EC2A9B /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
807A122D1F89636300EC2A9B /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
807A122E1F89636300EC2A9B /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDImageCodersManager.m */; };
807A122F1F89636300EC2A9B /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDImageCodersManager.m */; };
807A12301F89636300EC2A9B /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDImageCodersManager.m */; };
807A12311F89636300EC2A9B /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDImageCodersManager.m */; };
807A12321F89636300EC2A9B /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDImageCodersManager.m */; };
807A12331F89636300EC2A9B /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDImageCodersManager.m */; };
A18A6CC7172DC28500419892 /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = A18A6CC5172DC28500419892 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; };
A18A6CC9172DC28500419892 /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = A18A6CC6172DC28500419892 /* UIImage+GIF.m */; };
AB615303192DA24600A2D8E9 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = AB615301192DA24600A2D8E9 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -1551,12 +1551,12 @@
321B37802083290E00C0EA77 /* SDWebImageLoadersManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageLoadersManager.m; sourceTree = "<group>"; };
321DB35F2011D4D60015D2CB /* NSButton+WebCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/NSButton+WebCache.h"; sourceTree = "<group>"; };
321DB3602011D4D60015D2CB /* NSButton+WebCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/NSButton+WebCache.m"; sourceTree = "<group>"; };
321E60841F38E8C800405457 /* SDWebImageCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageCoder.h; sourceTree = "<group>"; };
321E60851F38E8C800405457 /* SDWebImageCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageCoder.m; sourceTree = "<group>"; };
321E60921F38E8ED00405457 /* SDWebImageImageIOCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageImageIOCoder.h; sourceTree = "<group>"; };
321E60931F38E8ED00405457 /* SDWebImageImageIOCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageImageIOCoder.m; sourceTree = "<group>"; };
321E60A01F38E8F600405457 /* SDWebImageGIFCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageGIFCoder.h; sourceTree = "<group>"; };
321E60A11F38E8F600405457 /* SDWebImageGIFCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageGIFCoder.m; sourceTree = "<group>"; };
321E60841F38E8C800405457 /* SDImageCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDImageCoder.h; sourceTree = "<group>"; };
321E60851F38E8C800405457 /* SDImageCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDImageCoder.m; sourceTree = "<group>"; };
321E60921F38E8ED00405457 /* SDImageIOCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDImageIOCoder.h; sourceTree = "<group>"; };
321E60931F38E8ED00405457 /* SDImageIOCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDImageIOCoder.m; sourceTree = "<group>"; };
321E60A01F38E8F600405457 /* SDImageGIFCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDImageGIFCoder.h; sourceTree = "<group>"; };
321E60A11F38E8F600405457 /* SDImageGIFCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDImageGIFCoder.m; sourceTree = "<group>"; };
321E60BC1F38E91700405457 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+ForceDecode.h"; sourceTree = "<group>"; };
321E60BD1F38E91700405457 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+ForceDecode.m"; sourceTree = "<group>"; };
323F8B131F38EF770092B609 /* alpha_enc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = alpha_enc.c; sourceTree = "<group>"; };
@ -1604,8 +1604,8 @@
324DF4B3200A14DC008A84CC /* SDWebImageDefine.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDWebImageDefine.m; sourceTree = "<group>"; };
325312C6200F09910046BF1E /* SDWebImageTransition.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDWebImageTransition.h; sourceTree = "<group>"; };
325312C7200F09910046BF1E /* SDWebImageTransition.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDWebImageTransition.m; sourceTree = "<group>"; };
327054D2206CD8B3006EA328 /* SDWebImageAPNGCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageAPNGCoder.h; sourceTree = "<group>"; };
327054D3206CD8B3006EA328 /* SDWebImageAPNGCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageAPNGCoder.m; sourceTree = "<group>"; };
327054D2206CD8B3006EA328 /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDImageAPNGCoder.h; sourceTree = "<group>"; };
327054D3206CD8B3006EA328 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDImageAPNGCoder.m; sourceTree = "<group>"; };
328BB69A2081FED200760D6C /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDWebImageCacheKeyFilter.h; sourceTree = "<group>"; };
328BB69B2081FED200760D6C /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDWebImageCacheKeyFilter.m; sourceTree = "<group>"; };
328BB6A82081FEE500760D6C /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDWebImageCacheSerializer.h; sourceTree = "<group>"; };
@ -1637,9 +1637,9 @@
32FDE87A2088871B008D7530 /* MKAnnotationView+WebCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MKAnnotationView+WebCache.m"; sourceTree = "<group>"; };
32FDE87B2088871B008D7530 /* MKAnnotationView+WebCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MKAnnotationView+WebCache.h"; sourceTree = "<group>"; };
32FDE88520888726008D7530 /* UIImage+WebP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+WebP.m"; sourceTree = "<group>"; };
32FDE88620888726008D7530 /* SDWebImageWebPCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageWebPCoder.h; sourceTree = "<group>"; };
32FDE88620888726008D7530 /* SDImageWebPCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDImageWebPCoder.h; sourceTree = "<group>"; };
32FDE88720888726008D7530 /* UIImage+WebP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+WebP.h"; sourceTree = "<group>"; };
32FDE88820888726008D7530 /* SDWebImageWebPCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageWebPCoder.m; sourceTree = "<group>"; };
32FDE88820888726008D7530 /* SDImageWebPCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDImageWebPCoder.m; sourceTree = "<group>"; };
32FDE8A4208887A6008D7530 /* SDWebImage.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = SDWebImage.modulemap; sourceTree = "<group>"; };
4314D1991D0E0E3B004B36C9 /* libSDWebImage watchOS static.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libSDWebImage watchOS static.a"; sourceTree = BUILT_PRODUCTS_DIR; };
431BB7031D06D2C1006A3455 /* SDWebImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@ -1797,8 +1797,8 @@
80377E841F2F66D000F89830 /* vp8li_dec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vp8li_dec.h; sourceTree = "<group>"; };
80377E851F2F66D000F89830 /* webp_dec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = webp_dec.c; sourceTree = "<group>"; };
80377E861F2F66D000F89830 /* webpi_dec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = webpi_dec.h; sourceTree = "<group>"; };
807A12261F89636300EC2A9B /* SDWebImageCodersManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDWebImageCodersManager.h; sourceTree = "<group>"; };
807A12271F89636300EC2A9B /* SDWebImageCodersManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDWebImageCodersManager.m; sourceTree = "<group>"; };
807A12261F89636300EC2A9B /* SDImageCodersManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDImageCodersManager.h; sourceTree = "<group>"; };
807A12271F89636300EC2A9B /* SDImageCodersManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDImageCodersManager.m; sourceTree = "<group>"; };
A18A6CC5172DC28500419892 /* UIImage+GIF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+GIF.h"; sourceTree = "<group>"; };
A18A6CC6172DC28500419892 /* UIImage+GIF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+GIF.m"; sourceTree = "<group>"; };
AB615301192DA24600A2D8E9 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+WebCacheOperation.h"; sourceTree = "<group>"; };
@ -1869,16 +1869,16 @@
321E60831F38E88F00405457 /* Decoder */ = {
isa = PBXGroup;
children = (
807A12261F89636300EC2A9B /* SDWebImageCodersManager.h */,
807A12271F89636300EC2A9B /* SDWebImageCodersManager.m */,
321E60841F38E8C800405457 /* SDWebImageCoder.h */,
321E60851F38E8C800405457 /* SDWebImageCoder.m */,
321E60921F38E8ED00405457 /* SDWebImageImageIOCoder.h */,
321E60931F38E8ED00405457 /* SDWebImageImageIOCoder.m */,
321E60A01F38E8F600405457 /* SDWebImageGIFCoder.h */,
321E60A11F38E8F600405457 /* SDWebImageGIFCoder.m */,
327054D2206CD8B3006EA328 /* SDWebImageAPNGCoder.h */,
327054D3206CD8B3006EA328 /* SDWebImageAPNGCoder.m */,
807A12261F89636300EC2A9B /* SDImageCodersManager.h */,
807A12271F89636300EC2A9B /* SDImageCodersManager.m */,
321E60841F38E8C800405457 /* SDImageCoder.h */,
321E60851F38E8C800405457 /* SDImageCoder.m */,
321E60921F38E8ED00405457 /* SDImageIOCoder.h */,
321E60931F38E8ED00405457 /* SDImageIOCoder.m */,
321E60A01F38E8F600405457 /* SDImageGIFCoder.h */,
321E60A11F38E8F600405457 /* SDImageGIFCoder.m */,
327054D2206CD8B3006EA328 /* SDImageAPNGCoder.h */,
327054D3206CD8B3006EA328 /* SDImageAPNGCoder.m */,
3290FA021FA478AF0047D20C /* SDImageFrame.h */,
3290FA031FA478AF0047D20C /* SDImageFrame.m */,
32CF1C051FA496B000004BD1 /* SDImageCoderHelper.h */,
@ -1996,8 +1996,8 @@
children = (
32FDE88720888726008D7530 /* UIImage+WebP.h */,
32FDE88520888726008D7530 /* UIImage+WebP.m */,
32FDE88620888726008D7530 /* SDWebImageWebPCoder.h */,
32FDE88820888726008D7530 /* SDWebImageWebPCoder.m */,
32FDE88620888726008D7530 /* SDImageWebPCoder.h */,
32FDE88820888726008D7530 /* SDImageWebPCoder.m */,
);
path = WebP;
sourceTree = "<group>";
@ -2404,14 +2404,14 @@
4369C27A1D9807EC007E863A /* UIView+WebCache.h in Headers */,
32F21B5420788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.h in Headers */,
80377DCC1F2F66A700F89830 /* lossless_common.h in Headers */,
321E60971F38E8ED00405457 /* SDWebImageImageIOCoder.h in Headers */,
321E60971F38E8ED00405457 /* SDImageIOCoder.h in Headers */,
43A918671D8308FE00B3925F /* SDImageCacheConfig.h in Headers */,
327054D7206CD8B3006EA328 /* SDWebImageAPNGCoder.h in Headers */,
327054D7206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */,
431739571CDFC8B70008FEB9 /* encode.h in Headers */,
323F8B711F38EF770092B609 /* delta_palettization_enc.h in Headers */,
3290FA071FA478AF0047D20C /* SDImageFrame.h in Headers */,
324DF4B7200A14DC008A84CC /* SDWebImageDefine.h in Headers */,
807A122B1F89636300EC2A9B /* SDWebImageCodersManager.h in Headers */,
807A122B1F89636300EC2A9B /* SDImageCodersManager.h in Headers */,
80377EC61F2F66D500F89830 /* webpi_dec.h in Headers */,
80377C591F2F666300F89830 /* random_utils.h in Headers */,
80377DD91F2F66A700F89830 /* lossless.h in Headers */,
@ -2432,14 +2432,14 @@
00733A701BC4880E00A5A117 /* UIImageView+HighlightedWebCache.h in Headers */,
323F8BDB1F38EF770092B609 /* vp8i_enc.h in Headers */,
80377C461F2F666300F89830 /* bit_reader_inl_utils.h in Headers */,
32FDE89220888726008D7530 /* SDWebImageWebPCoder.h in Headers */,
32FDE89220888726008D7530 /* SDImageWebPCoder.h in Headers */,
00733A671BC4880E00A5A117 /* SDImageCache.h in Headers */,
00733A711BC4880E00A5A117 /* UIImageView+WebCache.h in Headers */,
00733A631BC4880E00A5A117 /* SDWebImageCompat.h in Headers */,
00733A661BC4880E00A5A117 /* SDWebImageDownloaderOperation.h in Headers */,
80377C5D1F2F666300F89830 /* thread_utils.h in Headers */,
328BB6D02082581100760D6C /* SDMemoryCache.h in Headers */,
321E60891F38E8C800405457 /* SDWebImageCoder.h in Headers */,
321E60891F38E8C800405457 /* SDImageCoder.h in Headers */,
00733A721BC4880E00A5A117 /* UIView+WebCacheOperation.h in Headers */,
321B37842083290E00C0EA77 /* SDWebImageLoader.h in Headers */,
80377C481F2F666300F89830 /* bit_reader_utils.h in Headers */,
@ -2452,7 +2452,7 @@
00733A6A1BC4880E00A5A117 /* SDWebImagePrefetcher.h in Headers */,
00733A641BC4880E00A5A117 /* SDWebImageOperation.h in Headers */,
32484766201775F600AF9E5A /* SDAnimatedImageView+WebCache.h in Headers */,
321E60A51F38E8F600405457 /* SDWebImageGIFCoder.h in Headers */,
321E60A51F38E8F600405457 /* SDImageGIFCoder.h in Headers */,
32CF1C0A1FA496B000004BD1 /* SDImageCoderHelper.h in Headers */,
80377C4D1F2F666300F89830 /* endian_inl_utils.h in Headers */,
431739581CDFC8B70008FEB9 /* format_constants.h in Headers */,
@ -2494,15 +2494,15 @@
80377C1D1F2F666300F89830 /* huffman_encode_utils.h in Headers */,
80377E9A1F2F66D400F89830 /* common_dec.h in Headers */,
32D1221F2080B2EB003685A3 /* SDImageCacheDefine.h in Headers */,
327054D5206CD8B3006EA328 /* SDWebImageAPNGCoder.h in Headers */,
327054D5206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */,
328BB6AB2081FEE500760D6C /* SDWebImageCacheSerializer.h in Headers */,
32B9B538206ED4230026769D /* SDWebImageDownloaderConfig.h in Headers */,
80377C231F2F666300F89830 /* quant_levels_utils.h in Headers */,
321E60BF1F38E91700405457 /* UIImage+ForceDecode.h in Headers */,
80377EA61F2F66D400F89830 /* webpi_dec.h in Headers */,
807A12291F89636300EC2A9B /* SDWebImageCodersManager.h in Headers */,
807A12291F89636300EC2A9B /* SDImageCodersManager.h in Headers */,
32F7C0852030719600873181 /* UIImage+Transform.h in Headers */,
32FDE89020888726008D7530 /* SDWebImageWebPCoder.h in Headers */,
32FDE89020888726008D7530 /* SDImageWebPCoder.h in Headers */,
80377C141F2F666300F89830 /* bit_reader_utils.h in Headers */,
328BB69D2081FED200760D6C /* SDWebImageCacheKeyFilter.h in Headers */,
323F8C0F1F38EF770092B609 /* muxi.h in Headers */,
@ -2521,11 +2521,11 @@
80377C121F2F666300F89830 /* bit_reader_inl_utils.h in Headers */,
4314D1701D0E0E3B004B36C9 /* mux.h in Headers */,
321B378E2083290E00C0EA77 /* SDWebImageLoadersManager.h in Headers */,
321E60871F38E8C800405457 /* SDWebImageCoder.h in Headers */,
321E60871F38E8C800405457 /* SDImageCoder.h in Headers */,
80377EA21F2F66D400F89830 /* vp8i_dec.h in Headers */,
320CAE162086F50500CFFC80 /* SDWebImageError.h in Headers */,
3248476A201775F600AF9E5A /* SDAnimatedImageView.h in Headers */,
321E60951F38E8ED00405457 /* SDWebImageImageIOCoder.h in Headers */,
321E60951F38E8ED00405457 /* SDImageIOCoder.h in Headers */,
80377C211F2F666300F89830 /* quant_levels_dec_utils.h in Headers */,
4314D1721D0E0E3B004B36C9 /* SDWebImageCompat.h in Headers */,
32484776201775F600AF9E5A /* SDAnimatedImage.h in Headers */,
@ -2551,7 +2551,7 @@
323F8BE51F38EF770092B609 /* vp8li_enc.h in Headers */,
324DF4B5200A14DC008A84CC /* SDWebImageDefine.h in Headers */,
80377C191F2F666300F89830 /* endian_inl_utils.h in Headers */,
321E60A31F38E8F600405457 /* SDWebImageGIFCoder.h in Headers */,
321E60A31F38E8F600405457 /* SDImageGIFCoder.h in Headers */,
32FDE8A320888789008D7530 /* SDWebImage.h in Headers */,
32F21B5220788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.h in Headers */,
4369C2781D9807EC007E863A /* UIView+WebCache.h in Headers */,
@ -2594,7 +2594,7 @@
80377C691F2F666400F89830 /* filters_utils.h in Headers */,
80377EC81F2F66D500F89830 /* alphai_dec.h in Headers */,
43A62A1B1D0E0A800089D7DD /* decode.h in Headers */,
321E608A1F38E8C800405457 /* SDWebImageCoder.h in Headers */,
321E608A1F38E8C800405457 /* SDImageCoder.h in Headers */,
32484767201775F600AF9E5A /* SDAnimatedImageView+WebCache.h in Headers */,
80377C601F2F666400F89830 /* bit_reader_inl_utils.h in Headers */,
32FDE89920888726008D7530 /* UIImage+WebP.h in Headers */,
@ -2618,7 +2618,7 @@
80377E031F2F66A800F89830 /* dsp.h in Headers */,
80377C661F2F666400F89830 /* color_cache_utils.h in Headers */,
3290FA081FA478AF0047D20C /* SDImageFrame.h in Headers */,
321E60A61F38E8F600405457 /* SDWebImageGIFCoder.h in Headers */,
321E60A61F38E8F600405457 /* SDImageGIFCoder.h in Headers */,
431BB6E71D06D2C1006A3455 /* SDWebImageCompat.h in Headers */,
80377E211F2F66A800F89830 /* neon.h in Headers */,
80377C711F2F666400F89830 /* quant_levels_utils.h in Headers */,
@ -2642,10 +2642,10 @@
32C0FDE52013426C001B8F2D /* SDWebImageIndicator.h in Headers */,
80377ED61F2F66D500F89830 /* webpi_dec.h in Headers */,
323F8BE81F38EF770092B609 /* vp8li_enc.h in Headers */,
32FDE89320888726008D7530 /* SDWebImageWebPCoder.h in Headers */,
32FDE89320888726008D7530 /* SDImageWebPCoder.h in Headers */,
323F8B8A1F38EF770092B609 /* histogram_enc.h in Headers */,
80377E1E1F2F66A800F89830 /* lossless.h in Headers */,
321E60981F38E8ED00405457 /* SDWebImageImageIOCoder.h in Headers */,
321E60981F38E8ED00405457 /* SDImageIOCoder.h in Headers */,
328BB6D12082581100760D6C /* SDMemoryCache.h in Headers */,
4369C27B1D9807EC007E863A /* UIView+WebCache.h in Headers */,
80377ED11F2F66D500F89830 /* vp8_dec.h in Headers */,
@ -2662,7 +2662,7 @@
431BB6F61D06D2C1006A3455 /* UIImage+MultiFormat.h in Headers */,
320CAE192086F50500CFFC80 /* SDWebImageError.h in Headers */,
32F21B5520788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.h in Headers */,
807A122C1F89636300EC2A9B /* SDWebImageCodersManager.h in Headers */,
807A122C1F89636300EC2A9B /* SDImageCodersManager.h in Headers */,
323F8BFA1F38EF770092B609 /* animi.h in Headers */,
431BB6F91D06D2C1006A3455 /* UIImage+GIF.h in Headers */,
32F7C0732030114C00873181 /* SDImageTransformer.h in Headers */,
@ -2673,7 +2673,7 @@
323F8BDC1F38EF770092B609 /* vp8i_enc.h in Headers */,
80377ED21F2F66D500F89830 /* vp8i_dec.h in Headers */,
32484779201775F600AF9E5A /* SDAnimatedImage.h in Headers */,
327054D8206CD8B3006EA328 /* SDWebImageAPNGCoder.h in Headers */,
327054D8206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */,
43A918681D8308FE00B3925F /* SDImageCacheConfig.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -2684,7 +2684,7 @@
files = (
80377C7E1F2F666400F89830 /* bit_writer_utils.h in Headers */,
80377ED81F2F66D500F89830 /* alphai_dec.h in Headers */,
321E60A71F38E8F600405457 /* SDWebImageGIFCoder.h in Headers */,
321E60A71F38E8F600405457 /* SDImageGIFCoder.h in Headers */,
324DF4B9200A14DC008A84CC /* SDWebImageDefine.h in Headers */,
32F7C0892030719600873181 /* UIImage+Transform.h in Headers */,
80377EDA1F2F66D500F89830 /* common_dec.h in Headers */,
@ -2702,9 +2702,9 @@
80377C8D1F2F666400F89830 /* random_utils.h in Headers */,
4397D2C31D0DDD8C00BB2784 /* SDWebImageManager.h in Headers */,
323F8B551F38EF770092B609 /* backward_references_enc.h in Headers */,
327054D9206CD8B3006EA328 /* SDWebImageAPNGCoder.h in Headers */,
327054D9206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */,
80377C811F2F666400F89830 /* endian_inl_utils.h in Headers */,
321E60991F38E8ED00405457 /* SDWebImageImageIOCoder.h in Headers */,
321E60991F38E8ED00405457 /* SDImageIOCoder.h in Headers */,
323F8B8B1F38EF770092B609 /* histogram_enc.h in Headers */,
4397D2C41D0DDD8C00BB2784 /* SDImageCache.h in Headers */,
3248476E201775F600AF9E5A /* SDAnimatedImageView.h in Headers */,
@ -2727,7 +2727,7 @@
329A185E1FFF5DFD008C9A2F /* UIImage+WebCache.h in Headers */,
320224BB203979BA00E9F285 /* SDAnimatedImageRep.h in Headers */,
328BB6C62082581100760D6C /* SDDiskCache.h in Headers */,
32FDE89420888726008D7530 /* SDWebImageWebPCoder.h in Headers */,
32FDE89420888726008D7530 /* SDImageWebPCoder.h in Headers */,
80377E761F2F66A800F89830 /* yuv.h in Headers */,
80377C7A1F2F666400F89830 /* bit_reader_inl_utils.h in Headers */,
80377E631F2F66A800F89830 /* lossless.h in Headers */,
@ -2760,7 +2760,7 @@
4397D2E61D0DDD8C00BB2784 /* encode.h in Headers */,
32FDE89A20888726008D7530 /* UIImage+WebP.h in Headers */,
80377C7C1F2F666400F89830 /* bit_reader_utils.h in Headers */,
321E608B1F38E8C800405457 /* SDWebImageCoder.h in Headers */,
321E608B1F38E8C800405457 /* SDImageCoder.h in Headers */,
323F8B731F38EF770092B609 /* delta_palettization_enc.h in Headers */,
321E60C31F38E91700405457 /* UIImage+ForceDecode.h in Headers */,
32D122352080B2EB003685A3 /* SDImageCachesManager.h in Headers */,
@ -2771,7 +2771,7 @@
4397D2EB1D0DDD8C00BB2784 /* NSData+ImageContentType.h in Headers */,
80377C851F2F666400F89830 /* huffman_encode_utils.h in Headers */,
321DB3612011D4D70015D2CB /* NSButton+WebCache.h in Headers */,
807A122D1F89636300EC2A9B /* SDWebImageCodersManager.h in Headers */,
807A122D1F89636300EC2A9B /* SDImageCodersManager.h in Headers */,
4397D2ED1D0DDD8C00BB2784 /* mux_types.h in Headers */,
80377C831F2F666400F89830 /* filters_utils.h in Headers */,
80377E651F2F66A800F89830 /* msa_macro.h in Headers */,
@ -2801,15 +2801,15 @@
4369C2791D9807EC007E863A /* UIView+WebCache.h in Headers */,
32F21B5320788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.h in Headers */,
80377D871F2F66A700F89830 /* lossless_common.h in Headers */,
321E60961F38E8ED00405457 /* SDWebImageImageIOCoder.h in Headers */,
321E60961F38E8ED00405457 /* SDImageIOCoder.h in Headers */,
4A2CAE041AB4BB5400B6BC39 /* SDWebImage.h in Headers */,
327054D6206CD8B3006EA328 /* SDWebImageAPNGCoder.h in Headers */,
327054D6206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */,
431739511CDFC8B70008FEB9 /* format_constants.h in Headers */,
43A918661D8308FE00B3925F /* SDImageCacheConfig.h in Headers */,
323F8B701F38EF770092B609 /* delta_palettization_enc.h in Headers */,
3290FA061FA478AF0047D20C /* SDImageFrame.h in Headers */,
324DF4B6200A14DC008A84CC /* SDWebImageDefine.h in Headers */,
807A122A1F89636300EC2A9B /* SDWebImageCodersManager.h in Headers */,
807A122A1F89636300EC2A9B /* SDImageCodersManager.h in Headers */,
80377EB61F2F66D400F89830 /* webpi_dec.h in Headers */,
4A2CAE211AB4BB7000B6BC39 /* SDWebImageManager.h in Headers */,
80377D941F2F66A700F89830 /* lossless.h in Headers */,
@ -2828,7 +2828,7 @@
323F8B641F38EF770092B609 /* cost_enc.h in Headers */,
328BB6C32082581100760D6C /* SDDiskCache.h in Headers */,
4A2CAE1D1AB4BB6800B6BC39 /* SDWebImageDownloaderOperation.h in Headers */,
32FDE89120888726008D7530 /* SDWebImageWebPCoder.h in Headers */,
32FDE89120888726008D7530 /* SDImageWebPCoder.h in Headers */,
323F8BDA1F38EF770092B609 /* vp8i_enc.h in Headers */,
4317394E1CDFC8B70008FEB9 /* decode.h in Headers */,
80377C2C1F2F666300F89830 /* bit_reader_inl_utils.h in Headers */,
@ -2837,7 +2837,7 @@
4A2CAE251AB4BB7000B6BC39 /* SDWebImagePrefetcher.h in Headers */,
80377C431F2F666300F89830 /* thread_utils.h in Headers */,
328BB6CF2082581100760D6C /* SDMemoryCache.h in Headers */,
321E60881F38E8C800405457 /* SDWebImageCoder.h in Headers */,
321E60881F38E8C800405457 /* SDImageCoder.h in Headers */,
4A2CAE371AB4BB7500B6BC39 /* UIView+WebCacheOperation.h in Headers */,
321B37832083290E00C0EA77 /* SDWebImageLoader.h in Headers */,
80377C2E1F2F666300F89830 /* bit_reader_utils.h in Headers */,
@ -2850,7 +2850,7 @@
4A2CAE1A1AB4BB6400B6BC39 /* SDWebImageOperation.h in Headers */,
80377C331F2F666300F89830 /* endian_inl_utils.h in Headers */,
32484765201775F600AF9E5A /* SDAnimatedImageView+WebCache.h in Headers */,
321E60A41F38E8F600405457 /* SDWebImageGIFCoder.h in Headers */,
321E60A41F38E8F600405457 /* SDImageGIFCoder.h in Headers */,
32CF1C091FA496B000004BD1 /* SDImageCoderHelper.h in Headers */,
4A2CAE1B1AB4BB6800B6BC39 /* SDWebImageDownloader.h in Headers */,
431739501CDFC8B70008FEB9 /* encode.h in Headers */,
@ -2894,7 +2894,7 @@
323F8C0E1F38EF770092B609 /* muxi.h in Headers */,
325312C8200F09910046BF1E /* SDWebImageTransition.h in Headers */,
32C0FDE12013426C001B8F2D /* SDWebImageIndicator.h in Headers */,
321E60A21F38E8F600405457 /* SDWebImageGIFCoder.h in Headers */,
321E60A21F38E8F600405457 /* SDImageGIFCoder.h in Headers */,
5D5B9142188EE8DD006D06BD /* NSData+ImageContentType.h in Headers */,
80377BFE1F2F665300F89830 /* color_cache_utils.h in Headers */,
328BB6C12082581100760D6C /* SDDiskCache.h in Headers */,
@ -2907,12 +2907,12 @@
3290FA041FA478AF0047D20C /* SDImageFrame.h in Headers */,
80377D1D1F2F66A100F89830 /* yuv.h in Headers */,
43CE75D01CFE98E0006C64D0 /* FLAnimatedImageView+WebCache.h in Headers */,
807A12281F89636300EC2A9B /* SDWebImageCodersManager.h in Headers */,
807A12281F89636300EC2A9B /* SDImageCodersManager.h in Headers */,
32B9B537206ED4230026769D /* SDWebImageDownloaderConfig.h in Headers */,
80377C051F2F665300F89830 /* huffman_utils.h in Headers */,
80377E881F2F66D000F89830 /* alphai_dec.h in Headers */,
32484775201775F600AF9E5A /* SDAnimatedImage.h in Headers */,
321E60941F38E8ED00405457 /* SDWebImageImageIOCoder.h in Headers */,
321E60941F38E8ED00405457 /* SDImageIOCoder.h in Headers */,
431738BD1CDFC2660008FEB9 /* decode.h in Headers */,
80377D0B1F2F66A100F89830 /* mips_macro.h in Headers */,
329A18591FFF5DFD008C9A2F /* UIImage+WebCache.h in Headers */,
@ -2938,7 +2938,7 @@
80377C0B1F2F665300F89830 /* random_utils.h in Headers */,
80377E921F2F66D000F89830 /* vp8i_dec.h in Headers */,
5376131F155AD0D5005750A4 /* UIButton+WebCache.h in Headers */,
327054D4206CD8B3006EA328 /* SDWebImageAPNGCoder.h in Headers */,
327054D4206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */,
53761320155AD0D5005750A4 /* UIImageView+WebCache.h in Headers */,
328BB69C2081FED200760D6C /* SDWebImageCacheKeyFilter.h in Headers */,
530E49E816464C25002868E7 /* SDWebImageOperation.h in Headers */,
@ -2955,12 +2955,12 @@
323F8B621F38EF770092B609 /* cost_enc.h in Headers */,
43CE75761CFE9427006C64D0 /* FLAnimatedImage.h in Headers */,
323F8BE41F38EF770092B609 /* vp8li_enc.h in Headers */,
32FDE88F20888726008D7530 /* SDWebImageWebPCoder.h in Headers */,
32FDE88F20888726008D7530 /* SDImageWebPCoder.h in Headers */,
320CAE152086F50500CFFC80 /* SDWebImageError.h in Headers */,
323F8B861F38EF770092B609 /* histogram_enc.h in Headers */,
321B37812083290E00C0EA77 /* SDWebImageLoader.h in Headers */,
323F8BF61F38EF770092B609 /* animi.h in Headers */,
321E60861F38E8C800405457 /* SDWebImageCoder.h in Headers */,
321E60861F38E8C800405457 /* SDImageCoder.h in Headers */,
80377C0D1F2F665300F89830 /* rescaler_utils.h in Headers */,
32484763201775F600AF9E5A /* SDAnimatedImageView+WebCache.h in Headers */,
80377E911F2F66D000F89830 /* vp8_dec.h in Headers */,
@ -3271,9 +3271,9 @@
323F8B991F38EF770092B609 /* near_lossless_enc.c in Sources */,
80377DE81F2F66A700F89830 /* yuv_mips_dsp_r2.c in Sources */,
80377EC31F2F66D500F89830 /* vp8l_dec.c in Sources */,
327054DD206CD8B3006EA328 /* SDWebImageAPNGCoder.m in Sources */,
327054DD206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */,
325312D1200F09910046BF1E /* SDWebImageTransition.m in Sources */,
321E609D1F38E8ED00405457 /* SDWebImageImageIOCoder.m in Sources */,
321E609D1F38E8ED00405457 /* SDImageIOCoder.m in Sources */,
323F8B9F1F38EF770092B609 /* picture_csp_enc.c in Sources */,
43C892A31D9D6DDD0022038D /* demux.c in Sources */,
00733A611BC4880000A5A117 /* UIImageView+WebCache.m in Sources */,
@ -3298,11 +3298,11 @@
80377DAA1F2F66A700F89830 /* alpha_processing_sse2.c in Sources */,
43A9186E1D8308FE00B3925F /* SDImageCacheConfig.m in Sources */,
80377C471F2F666300F89830 /* bit_reader_utils.c in Sources */,
321E60AB1F38E8F600405457 /* SDWebImageGIFCoder.m in Sources */,
321E60AB1F38E8F600405457 /* SDImageGIFCoder.m in Sources */,
323F8BD51F38EF770092B609 /* tree_enc.c in Sources */,
80377DBB1F2F66A700F89830 /* dec_sse2.c in Sources */,
323F8B831F38EF770092B609 /* histogram_enc.c in Sources */,
321E608F1F38E8C800405457 /* SDWebImageCoder.m in Sources */,
321E608F1F38E8C800405457 /* SDImageCoder.m in Sources */,
00733A581BC4880000A5A117 /* SDWebImageManager.m in Sources */,
323F8B411F38EF770092B609 /* alpha_enc.c in Sources */,
323F8BC31F38EF770092B609 /* quant_enc.c in Sources */,
@ -3322,7 +3322,7 @@
321B378A2083290E00C0EA77 /* SDWebImageLoader.m in Sources */,
32484772201775F600AF9E5A /* SDAnimatedImage.m in Sources */,
323F8C1D1F38EF770092B609 /* muxread.c in Sources */,
807A12311F89636300EC2A9B /* SDWebImageCodersManager.m in Sources */,
807A12311F89636300EC2A9B /* SDImageCodersManager.m in Sources */,
80377C491F2F666300F89830 /* bit_writer_utils.c in Sources */,
323F8B471F38EF770092B609 /* analysis_enc.c in Sources */,
80377DB51F2F66A700F89830 /* cpu.c in Sources */,
@ -3333,7 +3333,7 @@
80377EC01F2F66D500F89830 /* vp8_dec.c in Sources */,
80377C521F2F666300F89830 /* huffman_utils.c in Sources */,
80377DD81F2F66A700F89830 /* lossless.c in Sources */,
32FDE89E20888726008D7530 /* SDWebImageWebPCoder.m in Sources */,
32FDE89E20888726008D7530 /* SDImageWebPCoder.m in Sources */,
80377DE11F2F66A700F89830 /* rescaler_sse2.c in Sources */,
324DF4BD200A14DC008A84CC /* SDWebImageDefine.m in Sources */,
80377DAC1F2F66A700F89830 /* alpha_processing.c in Sources */,
@ -3399,7 +3399,7 @@
80377D4B1F2F66A700F89830 /* lossless_msa.c in Sources */,
323F8B5D1F38EF770092B609 /* cost_enc.c in Sources */,
80377D3B1F2F66A700F89830 /* enc_sse41.c in Sources */,
321E608D1F38E8C800405457 /* SDWebImageCoder.m in Sources */,
321E608D1F38E8C800405457 /* SDImageCoder.m in Sources */,
80377D3A1F2F66A700F89830 /* enc_sse2.c in Sources */,
80377D381F2F66A700F89830 /* enc_msa.c in Sources */,
4314D1311D0E0E3B004B36C9 /* SDWebImageDownloader.m in Sources */,
@ -3422,9 +3422,9 @@
3290FA0B1FA478AF0047D20C /* SDImageFrame.m in Sources */,
80377C2A1F2F666300F89830 /* utils.c in Sources */,
323F8B4B1F38EF770092B609 /* backward_references_enc.c in Sources */,
807A122F1F89636300EC2A9B /* SDWebImageCodersManager.m in Sources */,
807A122F1F89636300EC2A9B /* SDImageCodersManager.m in Sources */,
4314D1361D0E0E3B004B36C9 /* SDWebImageManager.m in Sources */,
321E609B1F38E8ED00405457 /* SDWebImageImageIOCoder.m in Sources */,
321E609B1F38E8ED00405457 /* SDImageIOCoder.m in Sources */,
80377D4E1F2F66A700F89830 /* lossless.c in Sources */,
80377D351F2F66A700F89830 /* enc_avx2.c in Sources */,
80377D201F2F66A700F89830 /* alpha_processing_sse2.c in Sources */,
@ -3488,7 +3488,7 @@
80377C221F2F666300F89830 /* quant_levels_utils.c in Sources */,
80377D2E1F2F66A700F89830 /* dec_mips32.c in Sources */,
323F8BD31F38EF770092B609 /* tree_enc.c in Sources */,
327054DB206CD8B3006EA328 /* SDWebImageAPNGCoder.m in Sources */,
327054DB206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */,
80377D5C1F2F66A700F89830 /* upsampling_sse2.c in Sources */,
323F8BC71F38EF770092B609 /* syntax_enc.c in Sources */,
328BB6D42082581100760D6C /* SDMemoryCache.m in Sources */,
@ -3508,7 +3508,7 @@
80377E971F2F66D400F89830 /* alpha_dec.c in Sources */,
323F8B691F38EF770092B609 /* delta_palettization_enc.c in Sources */,
4314D1501D0E0E3B004B36C9 /* UIView+WebCacheOperation.m in Sources */,
321E60A91F38E8F600405457 /* SDWebImageGIFCoder.m in Sources */,
321E60A91F38E8F600405457 /* SDImageGIFCoder.m in Sources */,
80377D5A1F2F66A700F89830 /* upsampling_msa.c in Sources */,
80377D491F2F66A700F89830 /* lossless_enc.c in Sources */,
80377C171F2F666300F89830 /* color_cache_utils.c in Sources */,
@ -3518,7 +3518,7 @@
80377D5D1F2F66A700F89830 /* upsampling.c in Sources */,
80377D251F2F66A700F89830 /* argb.c in Sources */,
80377D281F2F66A700F89830 /* cost_mips32.c in Sources */,
32FDE89C20888726008D7530 /* SDWebImageWebPCoder.m in Sources */,
32FDE89C20888726008D7530 /* SDImageWebPCoder.m in Sources */,
323F8BF11F38EF770092B609 /* anim_encode.c in Sources */,
4314D1551D0E0E3B004B36C9 /* UIImageView+HighlightedWebCache.m in Sources */,
80377E991F2F66D400F89830 /* buffer_dec.c in Sources */,
@ -3566,7 +3566,7 @@
80377E1A1F2F66A800F89830 /* lossless_msa.c in Sources */,
323F8B601F38EF770092B609 /* cost_enc.c in Sources */,
80377E0A1F2F66A800F89830 /* enc_sse41.c in Sources */,
321E60901F38E8C800405457 /* SDWebImageCoder.m in Sources */,
321E60901F38E8C800405457 /* SDImageCoder.m in Sources */,
80377E091F2F66A800F89830 /* enc_sse2.c in Sources */,
431BB6921D06D2C1006A3455 /* NSData+ImageContentType.m in Sources */,
80377E071F2F66A800F89830 /* enc_msa.c in Sources */,
@ -3590,9 +3590,9 @@
80377E2F1F2F66A800F89830 /* yuv_sse2.c in Sources */,
431BB6AA1D06D2C1006A3455 /* SDWebImageManager.m in Sources */,
323F8B4E1F38EF770092B609 /* backward_references_enc.c in Sources */,
807A12321F89636300EC2A9B /* SDWebImageCodersManager.m in Sources */,
807A12321F89636300EC2A9B /* SDImageCodersManager.m in Sources */,
80377C761F2F666400F89830 /* thread_utils.c in Sources */,
321E609E1F38E8ED00405457 /* SDWebImageImageIOCoder.m in Sources */,
321E609E1F38E8ED00405457 /* SDImageIOCoder.m in Sources */,
80377E1D1F2F66A800F89830 /* lossless.c in Sources */,
80377E041F2F66A800F89830 /* enc_avx2.c in Sources */,
80377DEF1F2F66A800F89830 /* alpha_processing_sse2.c in Sources */,
@ -3654,7 +3654,7 @@
80377E301F2F66A800F89830 /* yuv.c in Sources */,
43A9186F1D8308FE00B3925F /* SDImageCacheConfig.m in Sources */,
323F8BD61F38EF770092B609 /* tree_enc.c in Sources */,
327054DE206CD8B3006EA328 /* SDWebImageAPNGCoder.m in Sources */,
327054DE206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */,
80377DFD1F2F66A800F89830 /* dec_mips32.c in Sources */,
323F8BCA1F38EF770092B609 /* syntax_enc.c in Sources */,
328BB6D72082581100760D6C /* SDMemoryCache.m in Sources */,
@ -3674,7 +3674,7 @@
80377EC71F2F66D500F89830 /* alpha_dec.c in Sources */,
323F8B6C1F38EF770092B609 /* delta_palettization_enc.c in Sources */,
80377C681F2F666400F89830 /* filters_utils.c in Sources */,
321E60AC1F38E8F600405457 /* SDWebImageGIFCoder.m in Sources */,
321E60AC1F38E8F600405457 /* SDImageGIFCoder.m in Sources */,
80377E291F2F66A800F89830 /* upsampling_msa.c in Sources */,
80377E181F2F66A800F89830 /* lossless_enc.c in Sources */,
431BB6C01D06D2C1006A3455 /* SDImageCache.m in Sources */,
@ -3684,7 +3684,7 @@
80377E2C1F2F66A800F89830 /* upsampling.c in Sources */,
80377DF41F2F66A800F89830 /* argb.c in Sources */,
80377DF71F2F66A800F89830 /* cost_mips32.c in Sources */,
32FDE89F20888726008D7530 /* SDWebImageWebPCoder.m in Sources */,
32FDE89F20888726008D7530 /* SDImageWebPCoder.m in Sources */,
323F8BF41F38EF770092B609 /* anim_encode.c in Sources */,
80377C6E1F2F666400F89830 /* quant_levels_dec_utils.c in Sources */,
80377EC91F2F66D500F89830 /* buffer_dec.c in Sources */,
@ -3706,7 +3706,7 @@
80377E471F2F66A800F89830 /* dec.c in Sources */,
80377C921F2F666400F89830 /* utils.c in Sources */,
4397D27E1D0DDD8C00BB2784 /* UIImage+GIF.m in Sources */,
321E60911F38E8C800405457 /* SDWebImageCoder.m in Sources */,
321E60911F38E8C800405457 /* SDImageCoder.m in Sources */,
80377C8A1F2F666400F89830 /* quant_levels_utils.c in Sources */,
4397D2F71D0DE2DF00BB2784 /* NSImage+Compatibility.m in Sources */,
80377E751F2F66A800F89830 /* yuv.c in Sources */,
@ -3743,7 +3743,7 @@
80377E581F2F66A800F89830 /* lossless_enc_mips32.c in Sources */,
4397D28F1D0DDD8C00BB2784 /* SDWebImageDownloaderOperation.m in Sources */,
323F8BB91F38EF770092B609 /* picture_tools_enc.c in Sources */,
32FDE8A020888726008D7530 /* SDWebImageWebPCoder.m in Sources */,
32FDE8A020888726008D7530 /* SDImageWebPCoder.m in Sources */,
80377E451F2F66A800F89830 /* dec_sse2.c in Sources */,
80377E3F1F2F66A800F89830 /* cpu.c in Sources */,
80377E4C1F2F66A800F89830 /* enc_msa.c in Sources */,
@ -3769,7 +3769,7 @@
4397D2921D0DDD8C00BB2784 /* SDWebImagePrefetcher.m in Sources */,
323F8BBF1F38EF770092B609 /* predictor_enc.c in Sources */,
32FDE88E20888726008D7530 /* UIImage+WebP.m in Sources */,
807A12331F89636300EC2A9B /* SDWebImageCodersManager.m in Sources */,
807A12331F89636300EC2A9B /* SDImageCodersManager.m in Sources */,
323F8BD11F38EF770092B609 /* token_enc.c in Sources */,
323F8B4F1F38EF770092B609 /* backward_references_enc.c in Sources */,
80377E4D1F2F66A800F89830 /* enc_neon.c in Sources */,
@ -3815,8 +3815,8 @@
80377ED91F2F66D500F89830 /* buffer_dec.c in Sources */,
4397D2A11D0DDD8C00BB2784 /* SDWebImageManager.m in Sources */,
323F8BCB1F38EF770092B609 /* syntax_enc.c in Sources */,
321E60AD1F38E8F600405457 /* SDWebImageGIFCoder.m in Sources */,
327054DF206CD8B3006EA328 /* SDWebImageAPNGCoder.m in Sources */,
321E60AD1F38E8F600405457 /* SDImageGIFCoder.m in Sources */,
327054DF206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */,
80377E341F2F66A800F89830 /* alpha_processing_sse2.c in Sources */,
4397D2A61D0DDD8C00BB2784 /* SDWebImageCompat.m in Sources */,
80377E6F1F2F66A800F89830 /* upsampling_neon.c in Sources */,
@ -3831,7 +3831,7 @@
80377E321F2F66A800F89830 /* alpha_processing_mips_dsp_r2.c in Sources */,
323F8B611F38EF770092B609 /* cost_enc.c in Sources */,
80377EDE1F2F66D500F89830 /* quant_dec.c in Sources */,
321E609F1F38E8ED00405457 /* SDWebImageImageIOCoder.m in Sources */,
321E609F1F38E8ED00405457 /* SDImageIOCoder.m in Sources */,
323F8B5B1F38EF770092B609 /* config_enc.c in Sources */,
80377E361F2F66A800F89830 /* alpha_processing.c in Sources */,
80377E351F2F66A800F89830 /* alpha_processing_sse41.c in Sources */,
@ -3940,9 +3940,9 @@
323F8B981F38EF770092B609 /* near_lossless_enc.c in Sources */,
80377D6F1F2F66A700F89830 /* cost.c in Sources */,
80377EB31F2F66D400F89830 /* vp8l_dec.c in Sources */,
327054DC206CD8B3006EA328 /* SDWebImageAPNGCoder.m in Sources */,
327054DC206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */,
325312D0200F09910046BF1E /* SDWebImageTransition.m in Sources */,
321E609C1F38E8ED00405457 /* SDWebImageImageIOCoder.m in Sources */,
321E609C1F38E8ED00405457 /* SDImageIOCoder.m in Sources */,
323F8B9E1F38EF770092B609 /* picture_csp_enc.c in Sources */,
80377D9E1F2F66A700F89830 /* upsampling_mips_dsp_r2.c in Sources */,
80377DA31F2F66A700F89830 /* yuv_mips_dsp_r2.c in Sources */,
@ -3966,11 +3966,11 @@
80377D771F2F66A700F89830 /* dec_sse41.c in Sources */,
80377D891F2F66A700F89830 /* lossless_enc_mips32.c in Sources */,
80377D861F2F66A700F89830 /* filters.c in Sources */,
321E60AA1F38E8F600405457 /* SDWebImageGIFCoder.m in Sources */,
321E60AA1F38E8F600405457 /* SDImageGIFCoder.m in Sources */,
323F8BD41F38EF770092B609 /* tree_enc.c in Sources */,
80377D651F2F66A700F89830 /* alpha_processing_sse2.c in Sources */,
323F8B821F38EF770092B609 /* histogram_enc.c in Sources */,
321E608E1F38E8C800405457 /* SDWebImageCoder.m in Sources */,
321E608E1F38E8C800405457 /* SDImageCoder.m in Sources */,
4A2CAE301AB4BB7500B6BC39 /* UIImage+MultiFormat.m in Sources */,
323F8B401F38EF770092B609 /* alpha_enc.c in Sources */,
80377C2D1F2F666300F89830 /* bit_reader_utils.c in Sources */,
@ -3992,7 +3992,7 @@
32484771201775F600AF9E5A /* SDAnimatedImage.m in Sources */,
80377C3C1F2F666300F89830 /* quant_levels_utils.c in Sources */,
323F8C1C1F38EF770092B609 /* muxread.c in Sources */,
807A12301F89636300EC2A9B /* SDWebImageCodersManager.m in Sources */,
807A12301F89636300EC2A9B /* SDImageCodersManager.m in Sources */,
80377C2F1F2F666300F89830 /* bit_writer_utils.c in Sources */,
323F8B461F38EF770092B609 /* analysis_enc.c in Sources */,
80377D8C1F2F66A700F89830 /* lossless_enc_sse2.c in Sources */,
@ -4003,7 +4003,7 @@
80377D911F2F66A700F89830 /* lossless_neon.c in Sources */,
80377EB01F2F66D400F89830 /* vp8_dec.c in Sources */,
80377C381F2F666300F89830 /* huffman_utils.c in Sources */,
32FDE89D20888726008D7530 /* SDWebImageWebPCoder.m in Sources */,
32FDE89D20888726008D7530 /* SDImageWebPCoder.m in Sources */,
80377C3A1F2F666300F89830 /* quant_levels_dec_utils.c in Sources */,
324DF4BC200A14DC008A84CC /* SDWebImageDefine.m in Sources */,
80377D931F2F66A700F89830 /* lossless.c in Sources */,
@ -4109,8 +4109,8 @@
32F7C07E2030719600873181 /* UIImage+Transform.m in Sources */,
80377CE51F2F66A100F89830 /* cost.c in Sources */,
80377E931F2F66D000F89830 /* vp8l_dec.c in Sources */,
321E609A1F38E8ED00405457 /* SDWebImageImageIOCoder.m in Sources */,
327054DA206CD8B3006EA328 /* SDWebImageAPNGCoder.m in Sources */,
321E609A1F38E8ED00405457 /* SDImageIOCoder.m in Sources */,
327054DA206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */,
325312CE200F09910046BF1E /* SDWebImageTransition.m in Sources */,
323F8B9C1F38EF770092B609 /* picture_csp_enc.c in Sources */,
80377D141F2F66A100F89830 /* upsampling_mips_dsp_r2.c in Sources */,
@ -4136,11 +4136,11 @@
80377CED1F2F66A100F89830 /* dec_sse41.c in Sources */,
80377CFF1F2F66A100F89830 /* lossless_enc_mips32.c in Sources */,
80377CFC1F2F66A100F89830 /* filters.c in Sources */,
321E60A81F38E8F600405457 /* SDWebImageGIFCoder.m in Sources */,
321E60A81F38E8F600405457 /* SDImageGIFCoder.m in Sources */,
323F8BD21F38EF770092B609 /* tree_enc.c in Sources */,
80377CDB1F2F66A100F89830 /* alpha_processing_sse2.c in Sources */,
323F8B801F38EF770092B609 /* histogram_enc.c in Sources */,
321E608C1F38E8C800405457 /* SDWebImageCoder.m in Sources */,
321E608C1F38E8C800405457 /* SDImageCoder.m in Sources */,
5376130E155AD0D5005750A4 /* UIButton+WebCache.m in Sources */,
323F8B3E1F38EF770092B609 /* alpha_enc.c in Sources */,
80377BF91F2F665300F89830 /* bit_reader_utils.c in Sources */,
@ -4161,7 +4161,7 @@
321B37872083290E00C0EA77 /* SDWebImageLoader.m in Sources */,
3248476F201775F600AF9E5A /* SDAnimatedImage.m in Sources */,
323F8C1A1F38EF770092B609 /* muxread.c in Sources */,
807A122E1F89636300EC2A9B /* SDWebImageCodersManager.m in Sources */,
807A122E1F89636300EC2A9B /* SDImageCodersManager.m in Sources */,
80377BFB1F2F665300F89830 /* bit_writer_utils.c in Sources */,
323F8B441F38EF770092B609 /* analysis_enc.c in Sources */,
80377D021F2F66A100F89830 /* lossless_enc_sse2.c in Sources */,
@ -4173,7 +4173,7 @@
80377E901F2F66D000F89830 /* vp8_dec.c in Sources */,
80377C041F2F665300F89830 /* huffman_utils.c in Sources */,
80377C061F2F665300F89830 /* quant_levels_dec_utils.c in Sources */,
32FDE89B20888726008D7530 /* SDWebImageWebPCoder.m in Sources */,
32FDE89B20888726008D7530 /* SDImageWebPCoder.m in Sources */,
80377D091F2F66A100F89830 /* lossless.c in Sources */,
324DF4BA200A14DC008A84CC /* SDWebImageDefine.m in Sources */,
80377D121F2F66A100F89830 /* rescaler_sse2.c in Sources */,

View File

@ -7,24 +7,24 @@
*/
#import "SDWebImageCompat.h"
#import "SDWebImageCoder.h"
#import "SDImageCoder.h"
/**
This is the protocol for SDAnimatedImage class only but not for SDWebImageAnimatedCoder. If you want to provide a custom animated image class with full advanced function, you can conform to this instead of the base protocol.
This is the protocol for SDAnimatedImage class only but not for SDAnimatedImageCoder. If you want to provide a custom animated image class with full advanced function, you can conform to this instead of the base protocol.
*/
@protocol SDAnimatedImage <SDAnimatedImageProvider>
@required
/**
Initializes the image with an animated coder. You can use the coder to decode the image frame later.
@note Normally we use `initWithData:scale:` to create custom animated image class. However, for progressive image decoding, we will use this with animated coder which conforms to `SDWebImageProgressiveCoder` as well instead.
@note Normally we use `initWithData:scale:` to create custom animated image class. However, for progressive image decoding, we will use this with animated coder which conforms to `SDProgressiveImageCoder` as well instead.
@param animatedCoder An animated coder which conform `SDWebImageAnimatedCoder` protocol
@param animatedCoder An animated coder which conform `SDAnimatedImageCoder` protocol
@param scale The scale factor to assume when interpreting the image data. Applying a scale factor of 1.0 results in an image whose size matches the pixel-based dimensions of the image. Applying a different scale factor changes the size of the image as reported by the `size` property.
@return An initialized object
*/
- (nullable instancetype)initWithAnimatedCoder:(nonnull id<SDWebImageAnimatedCoder>)animatedCoder scale:(CGFloat)scale;
- (nullable instancetype)initWithAnimatedCoder:(nonnull id<SDAnimatedImageCoder>)animatedCoder scale:(CGFloat)scale;
@optional
/**
@ -63,7 +63,7 @@
- (nullable instancetype)initWithContentsOfFile:(nonnull NSString *)path;
- (nullable instancetype)initWithData:(nonnull NSData *)data;
- (nullable instancetype)initWithData:(nonnull NSData *)data scale:(CGFloat)scale;
- (nullable instancetype)initWithAnimatedCoder:(nonnull id<SDWebImageAnimatedCoder>)animatedCoder scale:(CGFloat)scale;
- (nullable instancetype)initWithAnimatedCoder:(nonnull id<SDAnimatedImageCoder>)animatedCoder scale:(CGFloat)scale;
/**
Current animated image format.

View File

@ -9,8 +9,8 @@
#import "SDAnimatedImage.h"
#import "NSImage+Compatibility.h"
#import "UIImage+WebCache.h"
#import "SDWebImageCoder.h"
#import "SDWebImageCodersManager.h"
#import "SDImageCoder.h"
#import "SDImageCodersManager.h"
#import "SDImageFrame.h"
#define LOCK(...) dispatch_semaphore_wait(self->_lock, DISPATCH_TIME_FOREVER); \
@ -197,7 +197,7 @@ static NSArray *SDBundlePreferredScales() {
@interface SDAnimatedImage ()
@property (nonatomic, strong) id<SDWebImageAnimatedCoder> coder;
@property (nonatomic, strong) id<SDAnimatedImageCoder> coder;
@property (nonatomic, assign, readwrite) SDImageFormat animatedImageFormat;
@property (atomic, copy) NSArray<SDImageFrame *> *loadedAnimatedImageFrames; // Mark as atomic to keep thread-safe
@property (nonatomic, assign, getter=isAllFramesLoaded) BOOL allFramesLoaded;
@ -285,11 +285,11 @@ static NSArray *SDBundlePreferredScales() {
return nil;
}
data = [data copy]; // avoid mutable data
id<SDWebImageAnimatedCoder> animatedCoder = nil;
for (id<SDWebImageCoder>coder in [SDWebImageCodersManager sharedManager].coders) {
if ([coder conformsToProtocol:@protocol(SDWebImageAnimatedCoder)]) {
id<SDAnimatedImageCoder> animatedCoder = nil;
for (id<SDImageCoder>coder in [SDImageCodersManager sharedManager].coders) {
if ([coder conformsToProtocol:@protocol(SDAnimatedImageCoder)]) {
if ([coder canDecodeFromData:data]) {
animatedCoder = [[[coder class] alloc] initWithAnimatedImageData:data options:@{SDWebImageCoderDecodeScaleFactor : @(scale)}];
animatedCoder = [[[coder class] alloc] initWithAnimatedImageData:data options:@{SDImageCoderDecodeScaleFactor : @(scale)}];
break;
}
}
@ -300,7 +300,7 @@ static NSArray *SDBundlePreferredScales() {
return [self initWithAnimatedCoder:animatedCoder scale:scale];
}
- (instancetype)initWithAnimatedCoder:(id<SDWebImageAnimatedCoder>)animatedCoder scale:(CGFloat)scale {
- (instancetype)initWithAnimatedCoder:(id<SDAnimatedImageCoder>)animatedCoder scale:(CGFloat)scale {
if (!animatedCoder) {
return nil;
}
@ -356,11 +356,11 @@ static NSArray *SDBundlePreferredScales() {
if (!animatedImageData) {
return self;
}
id<SDWebImageAnimatedCoder> animatedCoder = nil;
for (id<SDWebImageCoder>coder in [SDWebImageCodersManager sharedManager].coders) {
if ([coder conformsToProtocol:@protocol(SDWebImageAnimatedCoder)]) {
id<SDAnimatedImageCoder> animatedCoder = nil;
for (id<SDImageCoder>coder in [SDImageCodersManager sharedManager].coders) {
if ([coder conformsToProtocol:@protocol(SDAnimatedImageCoder)]) {
if ([coder canDecodeFromData:animatedImageData]) {
animatedCoder = [[[coder class] alloc] initWithAnimatedImageData:animatedImageData options:@{SDWebImageCoderDecodeScaleFactor : @(scale)}];
animatedCoder = [[[coder class] alloc] initWithAnimatedImageData:animatedImageData options:@{SDImageCoderDecodeScaleFactor : @(scale)}];
break;
}
}

View File

@ -11,8 +11,8 @@
#if SD_MAC
// A subclass of `NSBitmapImageRep` to fix that GIF loop count issue because `NSBitmapImageRep` will reset `NSImageCurrentFrameDuration` by using `kCGImagePropertyGIFDelayTime` but not `kCGImagePropertyGIFUnclampedDelayTime`.
// Built in GIF coder use this instead of `NSBitmapImageRep` for better GIF rendering. If you do not want this, only enable `SDWebImageImageIOCoder`, which just call `NSImage` API and actually use `NSBitmapImageRep` for GIF image.
// This also support APNG format using `SDWebImageAPNGCoder`. Which provide full alpha-channel support and the correct duration match the `kCGImagePropertyAPNGUnclampedDelayTime`.
// Built in GIF coder use this instead of `NSBitmapImageRep` for better GIF rendering. If you do not want this, only enable `SDImageIOCoder`, which just call `NSImage` API and actually use `NSBitmapImageRep` for GIF image.
// This also support APNG format using `SDImageAPNGCoder`. Which provide full alpha-channel support and the correct duration match the `kCGImagePropertyAPNGUnclampedDelayTime`.
@interface SDAnimatedImageRep : NSBitmapImageRep

View File

@ -10,16 +10,16 @@
#if SD_MAC
#import "SDWebImageGIFCoder.h"
#import "SDWebImageAPNGCoder.h"
#import "SDImageGIFCoder.h"
#import "SDImageAPNGCoder.h"
@interface SDWebImageGIFCoder ()
@interface SDImageGIFCoder ()
- (float)sd_frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source;
@end
@interface SDWebImageAPNGCoder ()
@interface SDImageAPNGCoder ()
- (float)sd_frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source;
- (NSUInteger)sd_imageLoopCountWithSource:(CGImageSourceRef)source;
@ -64,7 +64,7 @@
// Do initilize about frame count, current frame/duration and loop count
[self setProperty:NSImageFrameCount withValue:@(frameCount)];
[self setProperty:NSImageCurrentFrame withValue:@(0)];
NSUInteger loopCount = [[SDWebImageAPNGCoder sharedCoder] sd_imageLoopCountWithSource:imageSource];
NSUInteger loopCount = [[SDImageAPNGCoder sharedCoder] sd_imageLoopCountWithSource:imageSource];
[self setProperty:NSImageLoopCount withValue:@(loopCount)];
}
}
@ -89,10 +89,10 @@
float frameDuration = 0;
if (CFStringCompare(type, kUTTypeGIF, 0) == kCFCompareEqualTo) {
// GIF
frameDuration = [[SDWebImageGIFCoder sharedCoder] sd_frameDurationAtIndex:index source:imageSource];
frameDuration = [[SDImageGIFCoder sharedCoder] sd_frameDurationAtIndex:index source:imageSource];
} else if (CFStringCompare(type, kUTTypePNG, 0) == kCFCompareEqualTo) {
// APNG
frameDuration = [[SDWebImageAPNGCoder sharedCoder] sd_frameDurationAtIndex:index source:imageSource];
frameDuration = [[SDImageAPNGCoder sharedCoder] sd_frameDurationAtIndex:index source:imageSource];
}
if (!frameDuration) {
return;

View File

@ -53,7 +53,7 @@
/**
Whehter or not to enable incremental image load for animated image. This is for the animated image which `sd_isIncremental` is YES (See `UIImage+WebCache.h`). If enable, animated image rendering will stop at the last frame available currently, and continue when another `setImage:` trigger, where the new animated image's `animatedImageData` should be updated from the previous one. If the `sd_isIncremental` is NO. The incremental image load stop.
@note If you are confused about this description, open Chrome browser to view some large GIF images with low network speed to see the animation behavior.
@note The best practice to use incremental load is using `initWithAnimatedCoder:scale` in `SDAnimatedImage` with animated coder which conform to `SDWebImageProgressiveCoder` as well. Then call incremental update and incremental decode method to produce the image.
@note The best practice to use incremental load is using `initWithAnimatedCoder:scale` in `SDAnimatedImage` with animated coder which conform to `SDProgressiveImageCoder` as well. Then call incremental update and incremental decode method to produce the image.
Default is YES. Set to NO to only render the static poster for incremental animated image.
*/
@property (nonatomic, assign) BOOL shouldIncrementalLoad;

View File

@ -7,13 +7,13 @@
*/
#import <Foundation/Foundation.h>
#import "SDWebImageCoder.h"
#import "SDImageCoder.h"
/**
Built in coder using ImageIO that supports APNG encoding/decoding
*/
@interface SDWebImageAPNGCoder : NSObject <SDWebImageProgressiveCoder, SDWebImageAnimatedCoder>
@interface SDImageAPNGCoder : NSObject <SDProgressiveImageCoder, SDAnimatedImageCoder>
@property (nonatomic, class, readonly, nonnull) SDWebImageAPNGCoder *sharedCoder;
@property (nonatomic, class, readonly, nonnull) SDImageAPNGCoder *sharedCoder;
@end

View File

@ -6,7 +6,7 @@
* file that was distributed with this source code.
*/
#import "SDWebImageAPNGCoder.h"
#import "SDImageAPNGCoder.h"
#import <ImageIO/ImageIO.h>
#import "NSData+ImageContentType.h"
#import "UIImage+WebCache.h"
@ -31,7 +31,7 @@ const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef
@implementation SDAPNGCoderFrame
@end
@implementation SDWebImageAPNGCoder {
@implementation SDImageAPNGCoder {
size_t _width, _height;
CGImageSourceRef _imageSource;
NSData *_imageData;
@ -63,10 +63,10 @@ const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef
}
+ (instancetype)sharedCoder {
static SDWebImageAPNGCoder *coder;
static SDImageAPNGCoder *coder;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
coder = [[SDWebImageAPNGCoder alloc] init];
coder = [[SDImageAPNGCoder alloc] init];
});
return coder;
}
@ -76,13 +76,13 @@ const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef
return ([NSData sd_imageFormatForImageData:data] == SDImageFormatPNG);
}
- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDWebImageCoderOptions *)options {
- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderOptions *)options {
if (!data) {
return nil;
}
CGFloat scale = 1;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}
@ -104,7 +104,7 @@ const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef
size_t count = CGImageSourceGetCount(source);
UIImage *animatedImage;
BOOL decodeFirstFrame = [options[SDWebImageCoderDecodeFirstFrameOnly] boolValue];
BOOL decodeFirstFrame = [options[SDImageCoderDecodeFirstFrameOnly] boolValue];
if (decodeFirstFrame || count <= 1) {
animatedImage = [[UIImage alloc] initWithData:data scale:scale];
} else {
@ -178,7 +178,7 @@ const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef
return (format == SDImageFormatPNG);
}
- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDWebImageCoderOptions *)options {
- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDImageCoderOptions *)options {
if (!image) {
return nil;
}
@ -199,12 +199,12 @@ const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef
}
NSMutableDictionary *properties = [NSMutableDictionary dictionary];
double compressionQuality = 1;
if ([options valueForKey:SDWebImageCoderEncodeCompressionQuality]) {
compressionQuality = [[options valueForKey:SDWebImageCoderEncodeCompressionQuality] doubleValue];
if ([options valueForKey:SDImageCoderEncodeCompressionQuality]) {
compressionQuality = [[options valueForKey:SDImageCoderEncodeCompressionQuality] doubleValue];
}
[properties setValue:@(compressionQuality) forKey:(__bridge_transfer NSString *)kCGImageDestinationLossyCompressionQuality];
BOOL encodeFirstFrame = [options[SDWebImageCoderEncodeFirstFrameOnly] boolValue];
BOOL encodeFirstFrame = [options[SDImageCoderEncodeFirstFrameOnly] boolValue];
if (encodeFirstFrame || frames.count == 0) {
// for static single PNG images
CGImageDestinationAddImage(imageDestination, image.CGImage, (__bridge CFDictionaryRef)properties);
@ -240,14 +240,14 @@ const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef
return ([NSData sd_imageFormatForImageData:data] == SDImageFormatPNG);
}
- (instancetype)initIncrementalWithOptions:(nullable SDWebImageCoderOptions *)options {
- (instancetype)initIncrementalWithOptions:(nullable SDImageCoderOptions *)options {
self = [super init];
if (self) {
CFStringRef imageUTType = [NSData sd_UTTypeFromSDImageFormat:SDImageFormatPNG];
_imageSource = CGImageSourceCreateIncremental((__bridge CFDictionaryRef)@{(__bridge_transfer NSString *)kCGImageSourceTypeIdentifierHint : (__bridge_transfer NSString *)imageUTType});
CGFloat scale = 1;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}
@ -288,7 +288,7 @@ const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef
[self scanAndCheckFramesValidWithImageSource:_imageSource];
}
- (UIImage *)incrementalDecodedImageWithOptions:(SDWebImageCoderOptions *)options {
- (UIImage *)incrementalDecodedImageWithOptions:(SDImageCoderOptions *)options {
UIImage *image;
if (_width + _height > 0) {
@ -297,8 +297,8 @@ const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef
if (partialImageRef) {
CGFloat scale = _scale;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}
@ -315,8 +315,8 @@ const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef
return image;
}
#pragma mark - SDWebImageAnimatedCoder
- (nullable instancetype)initWithAnimatedImageData:(nullable NSData *)data options:(nullable SDWebImageCoderOptions *)options {
#pragma mark - SDAnimatedImageCoder
- (nullable instancetype)initWithAnimatedImageData:(nullable NSData *)data options:(nullable SDImageCoderOptions *)options {
if (!data) {
return nil;
}
@ -333,8 +333,8 @@ const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef
return nil;
}
CGFloat scale = 1;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}

View File

@ -11,7 +11,7 @@
#import "SDDiskCache.h"
#import "NSImage+Compatibility.h"
#import "UIImage+WebCache.h"
#import "SDWebImageCodersManager.h"
#import "SDImageCodersManager.h"
#import "SDImageTransformer.h"
#import "SDImageCoderHelper.h"
#import "SDAnimatedImage.h"
@ -182,7 +182,7 @@
} else {
format = SDImageFormatJPEG;
}
data = [[SDWebImageCodersManager sharedManager] encodedDataWithImage:image format:format options:nil];
data = [[SDImageCodersManager sharedManager] encodedDataWithImage:image format:format options:nil];
}
[self _storeImageDataToDisk:data forKey:key];
}

View File

@ -7,7 +7,7 @@
*/
#import "SDImageCacheDefine.h"
#import "SDWebImageCodersManager.h"
#import "SDImageCodersManager.h"
#import "SDImageCoderHelper.h"
#import "SDAnimatedImage.h"
#import "UIImage+WebCache.h"
@ -33,7 +33,7 @@ UIImage * _Nullable SDImageCacheDecodeImageData(NSData * _Nonnull imageData, NSS
}
}
if (!image) {
image = [[SDWebImageCodersManager sharedManager] decodedImageWithData:imageData options:@{SDWebImageCoderDecodeFirstFrameOnly : @(decodeFirstFrame), SDWebImageCoderDecodeScaleFactor : @(scale)}];
image = [[SDImageCodersManager sharedManager] decodedImageWithData:imageData options:@{SDImageCoderDecodeFirstFrameOnly : @(decodeFirstFrame), SDImageCoderDecodeScaleFactor : @(scale)}];
}
if (image) {
BOOL shouldDecode = (options & SDWebImageAvoidDecodeImage) == 0;

View File

@ -10,33 +10,33 @@
#import "SDWebImageCompat.h"
#import "NSData+ImageContentType.h"
typedef NSString * SDWebImageCoderOption NS_STRING_ENUM;
typedef NSDictionary<SDWebImageCoderOption, id> SDWebImageCoderOptions;
typedef NSString * SDImageCoderOption NS_STRING_ENUM;
typedef NSDictionary<SDImageCoderOption, id> SDImageCoderOptions;
#pragma mark - Coder Options
// These options are for image decoding
/**
A Boolean value indicating whether to decode the first frame only for animated image during decoding. (NSNumber). If not provide, decode animated image if need.
@note works for `SDWebImageCoder`.
@note works for `SDImageCoder`.
*/
FOUNDATION_EXPORT SDWebImageCoderOption _Nonnull const SDWebImageCoderDecodeFirstFrameOnly;
FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderDecodeFirstFrameOnly;
/**
A CGFloat value which is greater than or equal to 1.0. This value specify the image scale factor for decoding. If not provide, use 1.0. (NSNumber)
@note works for `SDWebImageCoder`, `SDWebImageProgressiveCoder`, `SDWebImageAnimatedCoder`.
@note works for `SDImageCoder`, `SDProgressiveImageCoder`, `SDAnimatedImageCoder`.
*/
FOUNDATION_EXPORT SDWebImageCoderOption _Nonnull const SDWebImageCoderDecodeScaleFactor;
FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderDecodeScaleFactor;
// These options are for image encoding
/**
A Boolean value indicating whether to encode the first frame only for animated image during encoding. (NSNumber). If not provide, encode animated image if need.
@note works for `SDWebImageCoder`.
@note works for `SDImageCoder`.
*/
FOUNDATION_EXPORT SDWebImageCoderOption _Nonnull const SDWebImageCoderEncodeFirstFrameOnly;
FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderEncodeFirstFrameOnly;
/**
A double value between 0.0-1.0 indicating the encode compression quality to produce the image data. 1.0 resulting in no compression and 0.0 resulting in the maximum compression possible. If not provide, use 1.0. (NSNumber)
@note works for `SDWebImageCoder`
@note works for `SDImageCoder`
*/
FOUNDATION_EXPORT SDWebImageCoderOption _Nonnull const SDWebImageCoderEncodeCompressionQuality;
FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderEncodeCompressionQuality;
#pragma mark - Coder
/**
@ -45,7 +45,7 @@ FOUNDATION_EXPORT SDWebImageCoderOption _Nonnull const SDWebImageCoderEncodeComp
You do not need to specify image scale during decoding because we may scale image later.
@note Pay attention that these methods are not called from main queue.
*/
@protocol SDWebImageCoder <NSObject>
@protocol SDImageCoder <NSObject>
@required
#pragma mark - Decoding
@ -62,11 +62,11 @@ FOUNDATION_EXPORT SDWebImageCoderOption _Nonnull const SDWebImageCoderEncodeComp
@note This protocol may supports decode animated image frames. You can use `+[SDImageCoderHelper animatedImageWithFrames:]` to produce an animated image with frames.
@param data The image data to be decoded
@param options A dictionary containing any decoding options. Pass @{SDWebImageCoderDecodeFirstFrameOnly: @(YES)} to decode the first frame only.
@param options A dictionary containing any decoding options. Pass @{SDImageCoderDecodeFirstFrameOnly: @(YES)} to decode the first frame only.
@return The decoded image from data
*/
- (nullable UIImage *)decodedImageWithData:(nullable NSData *)data
options:(nullable SDWebImageCoderOptions *)options;
options:(nullable SDImageCoderOptions *)options;
#pragma mark - Encoding
@ -84,12 +84,12 @@ FOUNDATION_EXPORT SDWebImageCoderOption _Nonnull const SDWebImageCoderEncodeComp
@param image The image to be encoded
@param format The image format to encode, you should note `SDImageFormatUndefined` format is also possible
@param options A dictionary containing any encoding options. Pass @{SDWebImageCoderEncodeCompressionQuality: @(1)} to specify compression quality.
@param options A dictionary containing any encoding options. Pass @{SDImageCoderEncodeCompressionQuality: @(1)} to specify compression quality.
@return The encoded image data
*/
- (nullable NSData *)encodedDataWithImage:(nullable UIImage *)image
format:(SDImageFormat)format
options:(nullable SDWebImageCoderOptions *)options;
options:(nullable SDImageCoderOptions *)options;
@end
@ -99,7 +99,7 @@ FOUNDATION_EXPORT SDWebImageCoderOption _Nonnull const SDWebImageCoderEncodeComp
These methods are all required to implement.
@note Pay attention that these methods are not called from main queue.
*/
@protocol SDWebImageProgressiveCoder <SDWebImageCoder>
@protocol SDProgressiveImageCoder <SDImageCoder>
@required
/**
@ -114,10 +114,10 @@ FOUNDATION_EXPORT SDWebImageCoderOption _Nonnull const SDWebImageCoderEncodeComp
Because incremental decoding need to keep the decoded context, we will alloc a new instance with the same class for each download operation to avoid conflicts
This init method should not return nil
@param options A dictionary containing any progressive decoding options (instance-level). Pass @{SDWebImageCoderDecodeScaleFactor: @(1.0)} to specify scale factor for progressive animated image (each frames should use the same scale).
@param options A dictionary containing any progressive decoding options (instance-level). Pass @{SDImageCoderDecodeScaleFactor: @(1.0)} to specify scale factor for progressive animated image (each frames should use the same scale).
@return A new instance to do incremental decoding for the specify image format
*/
- (nonnull instancetype)initIncrementalWithOptions:(nullable SDWebImageCoderOptions *)options;
- (nonnull instancetype)initIncrementalWithOptions:(nullable SDImageCoderOptions *)options;
/**
Update the incremental decoding when new image data available
@ -129,18 +129,18 @@ FOUNDATION_EXPORT SDWebImageCoderOption _Nonnull const SDWebImageCoderEncodeComp
/**
Incremental decode the current image data to image.
@note Due to the performance issue for progressive decoding and the integration for image view. This method may only return the first frame image even if the image data is animated image. If you want progressive animated image decoding, conform to `SDWebImageAnimatedCoder` protocol as well and use `animatedImageFrameAtIndex:` instead.
@note Due to the performance issue for progressive decoding and the integration for image view. This method may only return the first frame image even if the image data is animated image. If you want progressive animated image decoding, conform to `SDAnimatedImageCoder` protocol as well and use `animatedImageFrameAtIndex:` instead.
@param options A dictionary containing any progressive decoding options. Pass @{SDWebImageCoderDecodeScaleFactor: @(1.0)} to specify scale factor for progressive image
@param options A dictionary containing any progressive decoding options. Pass @{SDImageCoderDecodeScaleFactor: @(1.0)} to specify scale factor for progressive image
@return The decoded image from current data
*/
- (nullable UIImage *)incrementalDecodedImageWithOptions:(nullable SDWebImageCoderOptions *)options;
- (nullable UIImage *)incrementalDecodedImageWithOptions:(nullable SDImageCoderOptions *)options;
@end
#pragma mark - Animated Image Provider
/**
This is the animated image protocol to provide the basic function for animated image rendering. It's adopted by `SDAnimatedImage` and `SDWebImageAnimatedCoder`
This is the animated image protocol to provide the basic function for animated image rendering. It's adopted by `SDAnimatedImage` and `SDAnimatedImageCoder`
*/
@protocol SDAnimatedImageProvider <NSObject>
@ -187,9 +187,9 @@ FOUNDATION_EXPORT SDWebImageCoderOption _Nonnull const SDWebImageCoderEncodeComp
#pragma mark - Animated Coder
/**
This is the animated image coder protocol for custom animated image class like `SDAnimatedImage`. Through it inherit from `SDWebImageCoder`. We currentlly only use the method `canDecodeFromData:` to detect the proper coder for specify animated image format.
This is the animated image coder protocol for custom animated image class like `SDAnimatedImage`. Through it inherit from `SDImageCoder`. We currentlly only use the method `canDecodeFromData:` to detect the proper coder for specify animated image format.
*/
@protocol SDWebImageAnimatedCoder <SDWebImageCoder, SDAnimatedImageProvider>
@protocol SDAnimatedImageCoder <SDImageCoder, SDAnimatedImageProvider>
@required
/**
@ -198,9 +198,9 @@ FOUNDATION_EXPORT SDWebImageCoderOption _Nonnull const SDWebImageCoderEncodeComp
After the instance created, we may call methods in `SDAnimatedImageProvider` to produce animated image frame.
@param data The animated image data to be decode
@param options A dictionary containing any animated decoding options (instance-level). Pass @{SDWebImageCoderDecodeScaleFactor: @(1.0)} to specify scale factor for animated image (each frames should use the same scale).
@param options A dictionary containing any animated decoding options (instance-level). Pass @{SDImageCoderDecodeScaleFactor: @(1.0)} to specify scale factor for animated image (each frames should use the same scale).
@return A new instance to do animated decoding for specify image data
*/
- (nullable instancetype)initWithAnimatedImageData:(nullable NSData *)data options:(nullable SDWebImageCoderOptions *)options;
- (nullable instancetype)initWithAnimatedImageData:(nullable NSData *)data options:(nullable SDImageCoderOptions *)options;
@end

15
SDWebImage/SDImageCoder.m Normal file
View File

@ -0,0 +1,15 @@
/*
* This file is part of the SDWebImage package.
* (c) Olivier Poitrey <rs@dailymotion.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
#import "SDImageCoder.h"
SDImageCoderOption const SDImageCoderDecodeFirstFrameOnly = @"decodeFirstFrameOnly";
SDImageCoderOption const SDImageCoderDecodeScaleFactor = @"decodeScaleFactor";
SDImageCoderOption const SDImageCoderEncodeFirstFrameOnly = @"encodeFirstFrameOnly";
SDImageCoderOption const SDImageCoderEncodeCompressionQuality = @"encodeCompressionQuality";

View File

@ -7,7 +7,7 @@
*/
#import <Foundation/Foundation.h>
#import "SDWebImageCoder.h"
#import "SDImageCoder.h"
/**
Global object holding the array of coders, so that we avoid passing them from object to object.
@ -24,35 +24,35 @@
Coders
------
A coder must conform to the `SDWebImageCoder` protocol or even to `SDWebImageProgressiveCoder` if it supports progressive decoding
A coder must conform to the `SDImageCoder` protocol or even to `SDProgressiveImageCoder` if it supports progressive decoding
Conformance is important because that way, they will implement `canDecodeFromData` or `canEncodeToFormat`
Those methods are called on each coder in the array (using the priority order) until one of them returns YES.
That means that coder can decode that data / encode to that format
*/
@interface SDWebImageCodersManager : NSObject<SDWebImageCoder>
@interface SDImageCodersManager : NSObject<SDImageCoder>
/**
Returns the global shared coders manager instance.
*/
@property (nonatomic, class, readonly, nonnull) SDWebImageCodersManager *sharedManager;
@property (nonatomic, class, readonly, nonnull) SDImageCodersManager *sharedManager;
/**
All coders in coders manager. The coders array is a priority queue, which means the later added coder will have the highest priority
*/
@property (nonatomic, copy, readwrite, nullable) NSArray<id<SDWebImageCoder>> *coders;
@property (nonatomic, copy, readwrite, nullable) NSArray<id<SDImageCoder>> *coders;
/**
Add a new coder to the end of coders array. Which has the highest priority.
@param coder coder
*/
- (void)addCoder:(nonnull id<SDWebImageCoder>)coder;
- (void)addCoder:(nonnull id<SDImageCoder>)coder;
/**
Remove a coder in the coders array.
@param coder coder
*/
- (void)removeCoder:(nonnull id<SDWebImageCoder>)coder;
- (void)removeCoder:(nonnull id<SDImageCoder>)coder;
@end

View File

@ -6,12 +6,12 @@
* file that was distributed with this source code.
*/
#import "SDWebImageCodersManager.h"
#import "SDWebImageImageIOCoder.h"
#import "SDWebImageGIFCoder.h"
#import "SDWebImageAPNGCoder.h"
#import "SDImageCodersManager.h"
#import "SDImageIOCoder.h"
#import "SDImageGIFCoder.h"
#import "SDImageAPNGCoder.h"
#ifdef SD_WEBP
#import "SDWebImageWebPCoder.h"
#import "SDImageWebPCoder.h"
#endif
#import "NSImage+Compatibility.h"
#import "UIImage+WebCache.h"
@ -20,13 +20,13 @@
#define LOCK(lock) dispatch_semaphore_wait(lock, DISPATCH_TIME_FOREVER);
#define UNLOCK(lock) dispatch_semaphore_signal(lock);
@interface SDWebImageCodersManager ()
@interface SDImageCodersManager ()
@property (nonatomic, strong, nonnull) dispatch_semaphore_t codersLock;
@end
@implementation SDWebImageCodersManager
@implementation SDImageCodersManager
+ (nonnull instancetype)sharedManager {
static dispatch_once_t once;
@ -40,9 +40,9 @@
- (instancetype)init {
if (self = [super init]) {
// initialize with default coders
NSMutableArray<id<SDWebImageCoder>> *mutableCoders = [@[[SDWebImageImageIOCoder sharedCoder], [SDWebImageGIFCoder sharedCoder], [SDWebImageAPNGCoder sharedCoder]] mutableCopy];
NSMutableArray<id<SDImageCoder>> *mutableCoders = [@[[SDImageIOCoder sharedCoder], [SDImageGIFCoder sharedCoder], [SDImageAPNGCoder sharedCoder]] mutableCopy];
#ifdef SD_WEBP
[mutableCoders addObject:[SDWebImageWebPCoder sharedCoder]];
[mutableCoders addObject:[SDImageWebPCoder sharedCoder]];
#endif
_coders = [mutableCoders copy];
_codersLock = dispatch_semaphore_create(1);
@ -52,12 +52,12 @@
#pragma mark - Coder IO operations
- (void)addCoder:(nonnull id<SDWebImageCoder>)coder {
if (![coder conformsToProtocol:@protocol(SDWebImageCoder)]) {
- (void)addCoder:(nonnull id<SDImageCoder>)coder {
if (![coder conformsToProtocol:@protocol(SDImageCoder)]) {
return;
}
LOCK(self.codersLock);
NSMutableArray<id<SDWebImageCoder>> *mutableCoders = [self.coders mutableCopy];
NSMutableArray<id<SDImageCoder>> *mutableCoders = [self.coders mutableCopy];
if (!mutableCoders) {
mutableCoders = [NSMutableArray array];
}
@ -66,23 +66,23 @@
UNLOCK(self.codersLock);
}
- (void)removeCoder:(nonnull id<SDWebImageCoder>)coder {
if (![coder conformsToProtocol:@protocol(SDWebImageCoder)]) {
- (void)removeCoder:(nonnull id<SDImageCoder>)coder {
if (![coder conformsToProtocol:@protocol(SDImageCoder)]) {
return;
}
LOCK(self.codersLock);
NSMutableArray<id<SDWebImageCoder>> *mutableCoders = [self.coders mutableCopy];
NSMutableArray<id<SDImageCoder>> *mutableCoders = [self.coders mutableCopy];
[mutableCoders removeObject:coder];
self.coders = [mutableCoders copy];
UNLOCK(self.codersLock);
}
#pragma mark - SDWebImageCoder
#pragma mark - SDImageCoder
- (BOOL)canDecodeFromData:(NSData *)data {
LOCK(self.codersLock);
NSArray<id<SDWebImageCoder>> *coders = self.coders;
NSArray<id<SDImageCoder>> *coders = self.coders;
UNLOCK(self.codersLock);
for (id<SDWebImageCoder> coder in coders.reverseObjectEnumerator) {
for (id<SDImageCoder> coder in coders.reverseObjectEnumerator) {
if ([coder canDecodeFromData:data]) {
return YES;
}
@ -92,9 +92,9 @@
- (BOOL)canEncodeToFormat:(SDImageFormat)format {
LOCK(self.codersLock);
NSArray<id<SDWebImageCoder>> *coders = self.coders;
NSArray<id<SDImageCoder>> *coders = self.coders;
UNLOCK(self.codersLock);
for (id<SDWebImageCoder> coder in coders.reverseObjectEnumerator) {
for (id<SDImageCoder> coder in coders.reverseObjectEnumerator) {
if ([coder canEncodeToFormat:format]) {
return YES;
}
@ -102,15 +102,15 @@
return NO;
}
- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDWebImageCoderOptions *)options {
- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderOptions *)options {
if (!data) {
return nil;
}
UIImage *image;
LOCK(self.codersLock);
NSArray<id<SDWebImageCoder>> *coders = self.coders;
NSArray<id<SDImageCoder>> *coders = self.coders;
UNLOCK(self.codersLock);
for (id<SDWebImageCoder> coder in coders.reverseObjectEnumerator) {
for (id<SDImageCoder> coder in coders.reverseObjectEnumerator) {
if ([coder canDecodeFromData:data]) {
image = [coder decodedImageWithData:data options:options];
break;
@ -120,14 +120,14 @@
return image;
}
- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDWebImageCoderOptions *)options {
- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDImageCoderOptions *)options {
if (!image) {
return nil;
}
LOCK(self.codersLock);
NSArray<id<SDWebImageCoder>> *coders = self.coders;
NSArray<id<SDImageCoder>> *coders = self.coders;
UNLOCK(self.codersLock);
for (id<SDWebImageCoder> coder in coders.reverseObjectEnumerator) {
for (id<SDImageCoder> coder in coders.reverseObjectEnumerator) {
if ([coder canEncodeToFormat:format]) {
return [coder encodedDataWithImage:image format:format options:nil];
}

View File

@ -0,0 +1,22 @@
/*
* This file is part of the SDWebImage package.
* (c) Olivier Poitrey <rs@dailymotion.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
#import <Foundation/Foundation.h>
#import "SDImageCoder.h"
/**
Built in coder using ImageIO that supports animated GIF encoding/decoding
@note `SDImageIOCoder` supports GIF but only as static (will use the 1st frame).
@note Use `SDImageGIFCoder` for fully animated GIFs. For `UIImageView`, it will produce animated `UIImage`(`NSImage` on macOS) for rendering. For `SDAnimatedImageView`, it will use `SDAnimatedImage` for rendering.
@note The recommended approach for animated GIFs is using `SDAnimatedImage` with `SDAnimatedImageView`. It's more performant than `UIImageView` for GIF displaying(especially on memory usage)
*/
@interface SDImageGIFCoder : NSObject <SDProgressiveImageCoder, SDAnimatedImageCoder>
@property (nonatomic, class, readonly, nonnull) SDImageGIFCoder *sharedCoder;
@end

View File

@ -6,7 +6,7 @@
* file that was distributed with this source code.
*/
#import "SDWebImageGIFCoder.h"
#import "SDImageGIFCoder.h"
#import "NSImage+Compatibility.h"
#import "UIImage+WebCache.h"
#import <ImageIO/ImageIO.h>
@ -24,7 +24,7 @@
@implementation SDGIFCoderFrame
@end
@implementation SDWebImageGIFCoder {
@implementation SDImageGIFCoder {
size_t _width, _height;
CGImageSourceRef _imageSource;
NSData *_imageData;
@ -56,10 +56,10 @@
}
+ (instancetype)sharedCoder {
static SDWebImageGIFCoder *coder;
static SDImageGIFCoder *coder;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
coder = [[SDWebImageGIFCoder alloc] init];
coder = [[SDImageGIFCoder alloc] init];
});
return coder;
}
@ -69,13 +69,13 @@
return ([NSData sd_imageFormatForImageData:data] == SDImageFormatGIF);
}
- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDWebImageCoderOptions *)options {
- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderOptions *)options {
if (!data) {
return nil;
}
CGFloat scale = 1;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}
@ -97,7 +97,7 @@
size_t count = CGImageSourceGetCount(source);
UIImage *animatedImage;
BOOL decodeFirstFrame = [options[SDWebImageCoderDecodeFirstFrameOnly] boolValue];
BOOL decodeFirstFrame = [options[SDImageCoderDecodeFirstFrameOnly] boolValue];
if (decodeFirstFrame || count <= 1) {
animatedImage = [[UIImage alloc] initWithData:data scale:scale];
} else {
@ -180,14 +180,14 @@
return ([NSData sd_imageFormatForImageData:data] == SDImageFormatGIF);
}
- (instancetype)initIncrementalWithOptions:(nullable SDWebImageCoderOptions *)options {
- (instancetype)initIncrementalWithOptions:(nullable SDImageCoderOptions *)options {
self = [super init];
if (self) {
CFStringRef imageUTType = [NSData sd_UTTypeFromSDImageFormat:SDImageFormatGIF];
_imageSource = CGImageSourceCreateIncremental((__bridge CFDictionaryRef)@{(__bridge_transfer NSString *)kCGImageSourceTypeIdentifierHint : (__bridge_transfer NSString *)imageUTType});
CGFloat scale = 1;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}
@ -228,7 +228,7 @@
[self scanAndCheckFramesValidWithImageSource:_imageSource];
}
- (UIImage *)incrementalDecodedImageWithOptions:(SDWebImageCoderOptions *)options {
- (UIImage *)incrementalDecodedImageWithOptions:(SDImageCoderOptions *)options {
UIImage *image;
if (_width + _height > 0) {
@ -237,8 +237,8 @@
if (partialImageRef) {
CGFloat scale = _scale;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}
@ -260,7 +260,7 @@
return (format == SDImageFormatGIF);
}
- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDWebImageCoderOptions *)options {
- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDImageCoderOptions *)options {
if (!image) {
return nil;
}
@ -281,12 +281,12 @@
}
NSMutableDictionary *properties = [NSMutableDictionary dictionary];
double compressionQuality = 1;
if ([options valueForKey:SDWebImageCoderEncodeCompressionQuality]) {
compressionQuality = [[options valueForKey:SDWebImageCoderEncodeCompressionQuality] doubleValue];
if ([options valueForKey:SDImageCoderEncodeCompressionQuality]) {
compressionQuality = [[options valueForKey:SDImageCoderEncodeCompressionQuality] doubleValue];
}
[properties setValue:@(compressionQuality) forKey:(__bridge_transfer NSString *)kCGImageDestinationLossyCompressionQuality];
BOOL encodeFirstFrame = [options[SDWebImageCoderEncodeFirstFrameOnly] boolValue];
BOOL encodeFirstFrame = [options[SDImageCoderEncodeFirstFrameOnly] boolValue];
if (encodeFirstFrame || frames.count == 0) {
// for static single GIF images
CGImageDestinationAddImage(imageDestination, image.CGImage, (__bridge CFDictionaryRef)properties);
@ -316,8 +316,8 @@
return [imageData copy];
}
#pragma mark - SDWebImageAnimatedCoder
- (nullable instancetype)initWithAnimatedImageData:(nullable NSData *)data options:(nullable SDWebImageCoderOptions *)options {
#pragma mark - SDAnimatedImageCoder
- (nullable instancetype)initWithAnimatedImageData:(nullable NSData *)data options:(nullable SDImageCoderOptions *)options {
if (!data) {
return nil;
}
@ -334,8 +334,8 @@
return nil;
}
CGFloat scale = 1;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}

View File

@ -7,14 +7,14 @@
*/
#import <Foundation/Foundation.h>
#import "SDWebImageCoder.h"
#import "SDImageCoder.h"
/**
Built in coder that supports PNG, JPEG, TIFF, includes support for progressive decoding.
GIF
Also supports static GIF (meaning will only handle the 1st frame).
For a full GIF support, we recommend `FLAnimatedImage` or our less performant `SDWebImageGIFCoder`
For a full GIF support, we recommend `FLAnimatedImage` or our less performant `SDImageGIFCoder`
HEIC
This coder also supports HEIC format because ImageIO supports it natively. But it depends on the system capabilities, so it won't work on all devices, see: https://devstreaming-cdn.apple.com/videos/wwdc/2017/511tj33587vdhds/511/511_working_with_heif_and_hevc.pdf
@ -23,8 +23,8 @@
Encode(Software): macOS 10.13
Encode(Hardware): !Simulator && ((iOS 11 && A10FusionChip) || (macOS 10.13 && 6thGenerationIntelCPU))
*/
@interface SDWebImageImageIOCoder : NSObject <SDWebImageProgressiveCoder>
@interface SDImageIOCoder : NSObject <SDProgressiveImageCoder>
@property (nonatomic, class, readonly, nonnull) SDWebImageImageIOCoder *sharedCoder;
@property (nonatomic, class, readonly, nonnull) SDImageIOCoder *sharedCoder;
@end

View File

@ -6,13 +6,13 @@
* file that was distributed with this source code.
*/
#import "SDWebImageImageIOCoder.h"
#import "SDImageIOCoder.h"
#import "SDImageCoderHelper.h"
#import "NSImage+Compatibility.h"
#import <ImageIO/ImageIO.h>
#import "NSData+ImageContentType.h"
@implementation SDWebImageImageIOCoder {
@implementation SDImageIOCoder {
size_t _width, _height;
CGImagePropertyOrientation _orientation;
CGImageSourceRef _imageSource;
@ -38,10 +38,10 @@
}
+ (instancetype)sharedCoder {
static SDWebImageImageIOCoder *coder;
static SDImageIOCoder *coder;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
coder = [[SDWebImageImageIOCoder alloc] init];
coder = [[SDImageIOCoder alloc] init];
});
return coder;
}
@ -60,13 +60,13 @@
}
}
- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDWebImageCoderOptions *)options {
- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderOptions *)options {
if (!data) {
return nil;
}
CGFloat scale = 1;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}
@ -91,13 +91,13 @@
}
}
- (instancetype)initIncrementalWithOptions:(nullable SDWebImageCoderOptions *)options {
- (instancetype)initIncrementalWithOptions:(nullable SDImageCoderOptions *)options {
self = [super init];
if (self) {
_imageSource = CGImageSourceCreateIncremental(NULL);
CGFloat scale = 1;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}
@ -143,7 +143,7 @@
}
}
- (UIImage *)incrementalDecodedImageWithOptions:(SDWebImageCoderOptions *)options {
- (UIImage *)incrementalDecodedImageWithOptions:(SDImageCoderOptions *)options {
UIImage *image;
if (_width + _height > 0) {
@ -152,8 +152,8 @@
if (partialImageRef) {
CGFloat scale = _scale;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}
@ -185,7 +185,7 @@
}
}
- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDWebImageCoderOptions *)options {
- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDImageCoderOptions *)options {
if (!image) {
return nil;
}
@ -217,8 +217,8 @@
#endif
[properties setValue:@(exifOrientation) forKey:(__bridge_transfer NSString *)kCGImagePropertyOrientation];
double compressionQuality = 1;
if ([options valueForKey:SDWebImageCoderEncodeCompressionQuality]) {
compressionQuality = [[options valueForKey:SDWebImageCoderEncodeCompressionQuality] doubleValue];
if ([options valueForKey:SDImageCoderEncodeCompressionQuality]) {
compressionQuality = [[options valueForKey:SDImageCoderEncodeCompressionQuality] doubleValue];
}
[properties setValue:@(compressionQuality) forKey:(__bridge_transfer NSString *)kCGImageDestinationLossyCompressionQuality];

View File

@ -1,15 +0,0 @@
/*
* This file is part of the SDWebImage package.
* (c) Olivier Poitrey <rs@dailymotion.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
#import "SDWebImageCoder.h"
SDWebImageCoderOption const SDWebImageCoderDecodeFirstFrameOnly = @"decodeFirstFrameOnly";
SDWebImageCoderOption const SDWebImageCoderDecodeScaleFactor = @"decodeScaleFactor";
SDWebImageCoderOption const SDWebImageCoderEncodeFirstFrameOnly = @"encodeFirstFrameOnly";
SDWebImageCoderOption const SDWebImageCoderEncodeCompressionQuality = @"encodeCompressionQuality";

View File

@ -1,22 +0,0 @@
/*
* This file is part of the SDWebImage package.
* (c) Olivier Poitrey <rs@dailymotion.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
#import <Foundation/Foundation.h>
#import "SDWebImageCoder.h"
/**
Built in coder using ImageIO that supports GIF encoding/decoding
@note `SDWebImageIOCoder` supports GIF but only as static (will use the 1st frame).
@note Use `SDWebImageGIFCoder` for fully animated GIFs. For `UIImageView`, it will produce animated `UIImage`(`NSImage` on macOS) for rendering. For `SDAnimatedImageView`, it will use `SDAnimatedImage` for rendering.
@note The recommended approach for animated GIFs is using `SDAnimatedImage` with `SDAnimatedImageView`. It's more performant than `UIImageView` for GIF displaying(especially on memory usage)
*/
@interface SDWebImageGIFCoder : NSObject <SDWebImageProgressiveCoder, SDWebImageAnimatedCoder>
@property (nonatomic, class, readonly, nonnull) SDWebImageGIFCoder *sharedCoder;
@end

View File

@ -10,7 +10,7 @@
#import "SDWebImageDefine.h"
#import "SDWebImageOperation.h"
@protocol SDWebImageProgressiveCoder;
@protocol SDProgressiveImageCoder;
typedef void(^SDWebImageLoaderProgressBlock)(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL);
typedef void(^SDWebImageLoaderCompletedBlock)(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished);

View File

@ -8,7 +8,7 @@
#import "SDWebImageLoader.h"
#import "SDWebImageCacheKeyFilter.h"
#import "SDWebImageCodersManager.h"
#import "SDImageCodersManager.h"
#import "SDImageCoderHelper.h"
#import "SDAnimatedImage.h"
#import "UIImage+WebCache.h"
@ -47,7 +47,7 @@ UIImage * _Nullable SDWebImageLoaderDecodeImageData(NSData * _Nonnull imageData,
}
}
if (!image) {
image = [[SDWebImageCodersManager sharedManager] decodedImageWithData:imageData options:@{SDWebImageCoderDecodeFirstFrameOnly : @(decodeFirstFrame), SDWebImageCoderDecodeScaleFactor : @(scale)}];
image = [[SDImageCodersManager sharedManager] decodedImageWithData:imageData options:@{SDImageCoderDecodeFirstFrameOnly : @(decodeFirstFrame), SDImageCoderDecodeScaleFactor : @(scale)}];
}
if (image) {
BOOL shouldDecode = (options & SDWebImageAvoidDecodeImage) == 0;
@ -91,13 +91,13 @@ UIImage * _Nullable SDWebImageLoaderDecodeProgressiveImageData(NSData * _Nonnull
if (scale < 1) {
scale = 1;
}
id<SDWebImageProgressiveCoder> progressiveCoder = objc_getAssociatedObject(operation, SDWebImageLoaderProgressiveCoderKey);
id<SDProgressiveImageCoder> progressiveCoder = objc_getAssociatedObject(operation, SDWebImageLoaderProgressiveCoderKey);
if (!progressiveCoder) {
// We need to create a new instance for progressive decoding to avoid conflicts
for (id<SDWebImageCoder>coder in [SDWebImageCodersManager sharedManager].coders.reverseObjectEnumerator) {
if ([coder conformsToProtocol:@protocol(SDWebImageProgressiveCoder)] &&
[((id<SDWebImageProgressiveCoder>)coder) canIncrementalDecodeFromData:imageData]) {
progressiveCoder = [[[coder class] alloc] initIncrementalWithOptions:@{SDWebImageCoderDecodeScaleFactor : @(scale)}];
for (id<SDImageCoder>coder in [SDImageCodersManager sharedManager].coders.reverseObjectEnumerator) {
if ([coder conformsToProtocol:@protocol(SDProgressiveImageCoder)] &&
[((id<SDProgressiveImageCoder>)coder) canIncrementalDecodeFromData:imageData]) {
progressiveCoder = [[[coder class] alloc] initIncrementalWithOptions:@{SDImageCoderDecodeScaleFactor : @(scale)}];
break;
}
}
@ -113,13 +113,13 @@ UIImage * _Nullable SDWebImageLoaderDecodeProgressiveImageData(NSData * _Nonnull
// check whether we should use `SDAnimatedImage`
if ([context valueForKey:SDWebImageContextAnimatedImageClass]) {
Class animatedImageClass = [context valueForKey:SDWebImageContextAnimatedImageClass];
if ([animatedImageClass isSubclassOfClass:[UIImage class]] && [animatedImageClass conformsToProtocol:@protocol(SDAnimatedImage)] && [progressiveCoder conformsToProtocol:@protocol(SDWebImageAnimatedCoder)]) {
image = [[animatedImageClass alloc] initWithAnimatedCoder:(id<SDWebImageAnimatedCoder>)progressiveCoder scale:scale];
if ([animatedImageClass isSubclassOfClass:[UIImage class]] && [animatedImageClass conformsToProtocol:@protocol(SDAnimatedImage)] && [progressiveCoder conformsToProtocol:@protocol(SDAnimatedImageCoder)]) {
image = [[animatedImageClass alloc] initWithAnimatedCoder:(id<SDAnimatedImageCoder>)progressiveCoder scale:scale];
}
}
}
if (!image) {
image = [progressiveCoder incrementalDecodedImageWithOptions:@{SDWebImageCoderDecodeFirstFrameOnly : @(decodeFirstFrame), SDWebImageCoderDecodeScaleFactor : @(scale)}];
image = [progressiveCoder incrementalDecodedImageWithOptions:@{SDImageCoderDecodeFirstFrameOnly : @(decodeFirstFrame), SDImageCoderDecodeScaleFactor : @(scale)}];
}
if (image) {
BOOL shouldDecode = (options & SDWebImageAvoidDecodeImage) == 0;

View File

@ -8,7 +8,7 @@
*/
#import "UIImage+GIF.h"
#import "SDWebImageGIFCoder.h"
#import "SDImageGIFCoder.h"
@implementation UIImage (GIF)
@ -20,8 +20,8 @@
if (!data) {
return nil;
}
SDWebImageCoderOptions *options = @{SDWebImageCoderDecodeFirstFrameOnly : @(firstFrameOnly)};
return [[SDWebImageGIFCoder sharedCoder] decodedImageWithData:data options:options];
SDImageCoderOptions *options = @{SDImageCoderDecodeFirstFrameOnly : @(firstFrameOnly)};
return [[SDImageGIFCoder sharedCoder] decodedImageWithData:data options:options];
}
@end

View File

@ -7,7 +7,7 @@
*/
#import "UIImage+MultiFormat.h"
#import "SDWebImageCodersManager.h"
#import "SDImageCodersManager.h"
@implementation UIImage (MultiFormat)
@ -22,8 +22,8 @@
if (scale < 1) {
scale = 1;
}
SDWebImageCoderOptions *options = @{SDWebImageCoderDecodeScaleFactor : @(scale)};
return [[SDWebImageCodersManager sharedManager] decodedImageWithData:data options:options];
SDImageCoderOptions *options = @{SDImageCoderDecodeScaleFactor : @(scale)};
return [[SDImageCodersManager sharedManager] decodedImageWithData:data options:options];
}
- (nullable NSData *)sd_imageData {
@ -35,8 +35,8 @@
}
- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality {
SDWebImageCoderOptions *options = @{SDWebImageCoderEncodeCompressionQuality : @(compressionQuality)};
return [[SDWebImageCodersManager sharedManager] encodedDataWithImage:self format:imageFormat options:options];
SDImageCoderOptions *options = @{SDImageCoderEncodeCompressionQuality : @(compressionQuality)};
return [[SDImageCodersManager sharedManager] encodedDataWithImage:self format:imageFormat options:options];
}
@end

View File

@ -9,14 +9,14 @@
#ifdef SD_WEBP
#import <Foundation/Foundation.h>
#import "SDWebImageCoder.h"
#import "SDImageCoder.h"
/**
Built in coder that supports WebP and animated WebP
*/
@interface SDWebImageWebPCoder : NSObject <SDWebImageProgressiveCoder, SDWebImageAnimatedCoder>
@interface SDImageWebPCoder : NSObject <SDProgressiveImageCoder, SDAnimatedImageCoder>
@property (nonatomic, class, readonly, nonnull) SDWebImageWebPCoder *sharedCoder;
@property (nonatomic, class, readonly, nonnull) SDImageWebPCoder *sharedCoder;
@end

View File

@ -8,7 +8,7 @@
#ifdef SD_WEBP
#import "SDWebImageWebPCoder.h"
#import "SDImageWebPCoder.h"
#import "SDImageCoderHelper.h"
#import "NSImage+Compatibility.h"
#import "UIImage+WebCache.h"
@ -48,7 +48,7 @@ dispatch_semaphore_signal(self->_lock);
@implementation SDWebPCoderFrame
@end
@implementation SDWebImageWebPCoder {
@implementation SDImageWebPCoder {
WebPIDecoder *_idec;
WebPDemuxer *_demux;
NSData *_imageData;
@ -82,10 +82,10 @@ dispatch_semaphore_signal(self->_lock);
}
+ (instancetype)sharedCoder {
static SDWebImageWebPCoder *coder;
static SDImageWebPCoder *coder;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
coder = [[SDWebImageWebPCoder alloc] init];
coder = [[SDImageWebPCoder alloc] init];
});
return coder;
}
@ -99,7 +99,7 @@ dispatch_semaphore_signal(self->_lock);
return ([NSData sd_imageFormatForImageData:data] == SDImageFormatWebP);
}
- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDWebImageCoderOptions *)options {
- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderOptions *)options {
if (!data) {
return nil;
}
@ -115,10 +115,10 @@ dispatch_semaphore_signal(self->_lock);
uint32_t flags = WebPDemuxGetI(demuxer, WEBP_FF_FORMAT_FLAGS);
BOOL hasAnimation = flags & ANIMATION_FLAG;
BOOL decodeFirstFrame = [[options valueForKey:SDWebImageCoderDecodeFirstFrameOnly] boolValue];
BOOL decodeFirstFrame = [[options valueForKey:SDImageCoderDecodeFirstFrameOnly] boolValue];
CGFloat scale = 1;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}
@ -207,14 +207,14 @@ dispatch_semaphore_signal(self->_lock);
}
#pragma mark - Progressive Decode
- (instancetype)initIncrementalWithOptions:(nullable SDWebImageCoderOptions *)options {
- (instancetype)initIncrementalWithOptions:(nullable SDImageCoderOptions *)options {
self = [super init];
if (self) {
// Progressive images need transparent, so always use premultiplied RGBA
_idec = WebPINewRGB(MODE_bgrA, NULL, 0, 0);
CGFloat scale = 1;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}
@ -237,7 +237,7 @@ dispatch_semaphore_signal(self->_lock);
// libwebp current does not support progressive decoding for animated image, so no need to scan and update the frame information
}
- (UIImage *)incrementalDecodedImageWithOptions:(SDWebImageCoderOptions *)options {
- (UIImage *)incrementalDecodedImageWithOptions:(SDImageCoderOptions *)options {
UIImage *image;
int width = 0;
@ -285,8 +285,8 @@ dispatch_semaphore_signal(self->_lock);
return nil;
}
CGFloat scale = _scale;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}
@ -417,7 +417,7 @@ dispatch_semaphore_signal(self->_lock);
return (format == SDImageFormatWebP);
}
- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDWebImageCoderOptions *)options {
- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDImageCoderOptions *)options {
if (!image) {
return nil;
}
@ -425,12 +425,12 @@ dispatch_semaphore_signal(self->_lock);
NSData *data;
double compressionQuality = 1;
if ([options valueForKey:SDWebImageCoderEncodeCompressionQuality]) {
compressionQuality = [[options valueForKey:SDWebImageCoderEncodeCompressionQuality] doubleValue];
if ([options valueForKey:SDImageCoderEncodeCompressionQuality]) {
compressionQuality = [[options valueForKey:SDImageCoderEncodeCompressionQuality] doubleValue];
}
NSArray<SDImageFrame *> *frames = [SDImageCoderHelper framesFromAnimatedImage:image];
BOOL encodeFirstFrame = [options[SDWebImageCoderEncodeFirstFrameOnly] boolValue];
BOOL encodeFirstFrame = [options[SDImageCoderEncodeFirstFrameOnly] boolValue];
if (encodeFirstFrame || frames.count == 0) {
// for static single webp image
data = [self sd_encodedWebpDataWithImage:image quality:compressionQuality];
@ -525,8 +525,8 @@ static void FreeImageData(void *info, const void *data, size_t size) {
free((void *)data);
}
#pragma mark - SDWebImageAnimatedCoder
- (instancetype)initWithAnimatedImageData:(NSData *)data options:(nullable SDWebImageCoderOptions *)options {
#pragma mark - SDAnimatedImageCoder
- (instancetype)initWithAnimatedImageData:(NSData *)data options:(nullable SDImageCoderOptions *)options {
if (!data) {
return nil;
}
@ -545,8 +545,8 @@ static void FreeImageData(void *info, const void *data, size_t size) {
return nil;
}
CGFloat scale = 1;
if ([options valueForKey:SDWebImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDWebImageCoderDecodeScaleFactor] doubleValue];
if ([options valueForKey:SDImageCoderDecodeScaleFactor]) {
scale = [[options valueForKey:SDImageCoderDecodeScaleFactor] doubleValue];
if (scale < 1) {
scale = 1;
}

View File

@ -9,7 +9,7 @@
#ifdef SD_WEBP
#import "UIImage+WebP.h"
#import "SDWebImageWebPCoder.h"
#import "SDImageWebPCoder.h"
@implementation UIImage (WebP)
@ -21,8 +21,8 @@
if (!data) {
return nil;
}
SDWebImageCoderOptions *options = @{SDWebImageCoderDecodeFirstFrameOnly : @(firstFrameOnly)};
return [[SDWebImageWebPCoder sharedCoder] decodedImageWithData:data options:options];
SDImageCoderOptions *options = @{SDImageCoderDecodeFirstFrameOnly : @(firstFrameOnly)};
return [[SDImageWebPCoder sharedCoder] decodedImageWithData:data options:options];
}
@end

View File

@ -29,7 +29,7 @@
32B99E8B203AF8690017FD66 /* SDCategoriesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B99E8A203AF8690017FD66 /* SDCategoriesTests.m */; };
32B99E9B203B2EDD0017FD66 /* SDTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D7AF05F1F329763000083C2 /* SDTestCase.m */; };
32B99E9C203B2EE40017FD66 /* SDCategoriesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B99E8A203AF8690017FD66 /* SDCategoriesTests.m */; };
32B99E9D203B2F7D0017FD66 /* SDWebImageTestDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32E6F0311F3A1B4700A945E6 /* SDWebImageTestDecoder.m */; };
32B99E9D203B2F7D0017FD66 /* SDWebImageTestCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32E6F0311F3A1B4700A945E6 /* SDWebImageTestCoder.m */; };
32B99E9E203B2F810017FD66 /* SDMockFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 37D122871EC48B5E00D98CEB /* SDMockFileManager.m */; };
32B99EA2203B31360017FD66 /* MonochromeTestImage.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 433BBBBA1D7EFA8B0086B6E9 /* MonochromeTestImage.jpg */; };
32B99EA3203B31360017FD66 /* TestImage.gif in Resources */ = {isa = PBXBuildFile; fileRef = 433BBBB61D7EF8200086B6E9 /* TestImage.gif */; };
@ -38,15 +38,15 @@
32B99EA6203B31360017FD66 /* TestImage.png in Resources */ = {isa = PBXBuildFile; fileRef = 433BBBB81D7EF8260086B6E9 /* TestImage.png */; };
32B99EA7203B31360017FD66 /* TestImageAnimated.webp in Resources */ = {isa = PBXBuildFile; fileRef = 321259ED1F39E4110096FE0E /* TestImageAnimated.webp */; };
32B99EA8203B31360017FD66 /* TestImageStatic.webp in Resources */ = {isa = PBXBuildFile; fileRef = 321259EB1F39E3240096FE0E /* TestImageStatic.webp */; };
32B99EA9203B34B60017FD66 /* SDWebImageDecoderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 433BBBB41D7EF5C00086B6E9 /* SDWebImageDecoderTests.m */; };
32B99EA9203B34B60017FD66 /* SDImageCoderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 433BBBB41D7EF5C00086B6E9 /* SDImageCoderTests.m */; };
32B99EAA203B365F0017FD66 /* SDImageCacheTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA248D68195475D800390AB0 /* SDImageCacheTests.m */; };
32B99EAB203B36620017FD66 /* SDWebImageManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA248D6A195476AC00390AB0 /* SDWebImageManagerTests.m */; };
32B99EAC203B36650017FD66 /* SDWebImageDownloaderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E3C51E819B46E370092B5E6 /* SDWebImageDownloaderTests.m */; };
32B99EAD203B36690017FD66 /* SDWebImagePrefetcherTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4369C1D01D97F80F007E863A /* SDWebImagePrefetcherTests.m */; };
32B99EAE203B366C0017FD66 /* SDWebCacheCategoriesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4369C2731D9804B1007E863A /* SDWebCacheCategoriesTests.m */; };
32E6F0321F3A1B4700A945E6 /* SDWebImageTestDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32E6F0311F3A1B4700A945E6 /* SDWebImageTestDecoder.m */; };
32E6F0321F3A1B4700A945E6 /* SDWebImageTestCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 32E6F0311F3A1B4700A945E6 /* SDWebImageTestCoder.m */; };
37D122881EC48B5E00D98CEB /* SDMockFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 37D122871EC48B5E00D98CEB /* SDMockFileManager.m */; };
433BBBB51D7EF5C00086B6E9 /* SDWebImageDecoderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 433BBBB41D7EF5C00086B6E9 /* SDWebImageDecoderTests.m */; };
433BBBB51D7EF5C00086B6E9 /* SDImageCoderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 433BBBB41D7EF5C00086B6E9 /* SDImageCoderTests.m */; };
433BBBB71D7EF8200086B6E9 /* TestImage.gif in Resources */ = {isa = PBXBuildFile; fileRef = 433BBBB61D7EF8200086B6E9 /* TestImage.gif */; };
433BBBB91D7EF8260086B6E9 /* TestImage.png in Resources */ = {isa = PBXBuildFile; fileRef = 433BBBB81D7EF8260086B6E9 /* TestImage.png */; };
433BBBBB1D7EFA8B0086B6E9 /* MonochromeTestImage.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 433BBBBA1D7EFA8B0086B6E9 /* MonochromeTestImage.jpg */; };
@ -84,12 +84,12 @@
32B99E8A203AF8690017FD66 /* SDCategoriesTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDCategoriesTests.m; sourceTree = "<group>"; };
32B99E92203B2DF90017FD66 /* Tests Mac.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests Mac.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
32B99E96203B2DF90017FD66 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
32E6F0301F3A1B4700A945E6 /* SDWebImageTestDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageTestDecoder.h; sourceTree = "<group>"; };
32E6F0311F3A1B4700A945E6 /* SDWebImageTestDecoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageTestDecoder.m; sourceTree = "<group>"; };
32E6F0301F3A1B4700A945E6 /* SDWebImageTestCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWebImageTestCoder.h; sourceTree = "<group>"; };
32E6F0311F3A1B4700A945E6 /* SDWebImageTestCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageTestCoder.m; sourceTree = "<group>"; };
37D122861EC48B5E00D98CEB /* SDMockFileManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDMockFileManager.h; sourceTree = "<group>"; };
37D122871EC48B5E00D98CEB /* SDMockFileManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDMockFileManager.m; sourceTree = "<group>"; };
3B82F4E5C79656CB9C5667F6 /* Pods-Tests Mac.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests Mac.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Tests Mac/Pods-Tests Mac.debug.xcconfig"; sourceTree = "<group>"; };
433BBBB41D7EF5C00086B6E9 /* SDWebImageDecoderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWebImageDecoderTests.m; sourceTree = "<group>"; };
433BBBB41D7EF5C00086B6E9 /* SDImageCoderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDImageCoderTests.m; sourceTree = "<group>"; };
433BBBB61D7EF8200086B6E9 /* TestImage.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = TestImage.gif; sourceTree = "<group>"; };
433BBBB81D7EF8260086B6E9 /* TestImage.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TestImage.png; sourceTree = "<group>"; };
433BBBBA1D7EFA8B0086B6E9 /* MonochromeTestImage.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = MonochromeTestImage.jpg; sourceTree = "<group>"; };
@ -209,7 +209,7 @@
DA248D68195475D800390AB0 /* SDImageCacheTests.m */,
DA248D6A195476AC00390AB0 /* SDWebImageManagerTests.m */,
1E3C51E819B46E370092B5E6 /* SDWebImageDownloaderTests.m */,
433BBBB41D7EF5C00086B6E9 /* SDWebImageDecoderTests.m */,
433BBBB41D7EF5C00086B6E9 /* SDImageCoderTests.m */,
4369C1D01D97F80F007E863A /* SDWebImagePrefetcherTests.m */,
3254C31F20641077008D1022 /* SDImageTransformerTests.m */,
4369C2731D9804B1007E863A /* SDWebCacheCategoriesTests.m */,
@ -223,8 +223,8 @@
328BB6DC20825E9800760D6C /* SDWebImageTestCache.m */,
3226ECB920754F7700FAFACF /* SDWebImageTestDownloadOperation.h */,
3226ECBA20754F7700FAFACF /* SDWebImageTestDownloadOperation.m */,
32E6F0301F3A1B4700A945E6 /* SDWebImageTestDecoder.h */,
32E6F0311F3A1B4700A945E6 /* SDWebImageTestDecoder.m */,
32E6F0301F3A1B4700A945E6 /* SDWebImageTestCoder.h */,
32E6F0311F3A1B4700A945E6 /* SDWebImageTestCoder.m */,
3264FF2D205D42CB00F6BD48 /* SDWebImageTestTransformer.h */,
3264FF2E205D42CB00F6BD48 /* SDWebImageTestTransformer.m */,
323B8E1D20862322008952BE /* SDWebImageTestLoader.h */,
@ -484,10 +484,10 @@
32B99EAA203B365F0017FD66 /* SDImageCacheTests.m in Sources */,
32B99EAD203B36690017FD66 /* SDWebImagePrefetcherTests.m in Sources */,
32B99EAE203B366C0017FD66 /* SDWebCacheCategoriesTests.m in Sources */,
32B99E9D203B2F7D0017FD66 /* SDWebImageTestDecoder.m in Sources */,
32B99E9D203B2F7D0017FD66 /* SDWebImageTestCoder.m in Sources */,
32B99E9E203B2F810017FD66 /* SDMockFileManager.m in Sources */,
32B99EAB203B36620017FD66 /* SDWebImageManagerTests.m in Sources */,
32B99EA9203B34B60017FD66 /* SDWebImageDecoderTests.m in Sources */,
32B99EA9203B34B60017FD66 /* SDImageCoderTests.m in Sources */,
3264FF30205D42CB00F6BD48 /* SDWebImageTestTransformer.m in Sources */,
320630412085A37C006E0FA4 /* SDAnimatedImageTest.m in Sources */,
32B99E9B203B2EDD0017FD66 /* SDTestCase.m in Sources */,
@ -500,7 +500,7 @@
buildActionMask = 2147483647;
files = (
323B8E1F20862322008952BE /* SDWebImageTestLoader.m in Sources */,
32E6F0321F3A1B4700A945E6 /* SDWebImageTestDecoder.m in Sources */,
32E6F0321F3A1B4700A945E6 /* SDWebImageTestCoder.m in Sources */,
3226ECBB20754F7700FAFACF /* SDWebImageTestDownloadOperation.m in Sources */,
3254C32020641077008D1022 /* SDImageTransformerTests.m in Sources */,
32A571562037DB2D002EDAAE /* SDAnimatedImageTest.m in Sources */,
@ -514,7 +514,7 @@
DA248D6B195476AC00390AB0 /* SDWebImageManagerTests.m in Sources */,
32B99E8B203AF8690017FD66 /* SDCategoriesTests.m in Sources */,
3264FF2F205D42CB00F6BD48 /* SDWebImageTestTransformer.m in Sources */,
433BBBB51D7EF5C00086B6E9 /* SDWebImageDecoderTests.m in Sources */,
433BBBB51D7EF5C00086B6E9 /* SDImageCoderTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@ -62,7 +62,7 @@ static const NSUInteger kTestGIFFrameCount = 5; // local TestImage.gif loop coun
- (void)test03AnimatedImageInitWithAnimatedCoder {
NSData *validData = [self testGIFData];
SDWebImageGIFCoder *coder = [[SDWebImageGIFCoder alloc] initWithAnimatedImageData:validData options:nil];
SDImageGIFCoder *coder = [[SDImageGIFCoder alloc] initWithAnimatedImageData:validData options:nil];
SDAnimatedImage *image = [[SDAnimatedImage alloc] initWithAnimatedCoder:coder scale:1];
expect(image).notTo.beNil();
// enough, other can be test with InitWithData
@ -154,7 +154,7 @@ static const NSUInteger kTestGIFFrameCount = 5; // local TestImage.gif loop coun
- (void)test09AnimatedImageViewSetProgressiveAnimatedImage {
NSData *gifData = [self testGIFData];
SDWebImageGIFCoder *progressiveCoder = [[SDWebImageGIFCoder alloc] initIncrementalWithOptions:nil];
SDImageGIFCoder *progressiveCoder = [[SDImageGIFCoder alloc] initIncrementalWithOptions:nil];
// simulate progressive decode, pass partial data
NSData *partialData = [gifData subdataWithRange:NSMakeRange(0, gifData.length - 1)];
[progressiveCoder updateIncrementalData:partialData finished:NO];

View File

@ -7,7 +7,7 @@
*/
#import "SDTestCase.h"
#import "SDWebImageTestDecoder.h"
#import "SDWebImageTestCoder.h"
#import "SDMockFileManager.h"
#import "SDWebImageTestCache.h"
@ -275,8 +275,8 @@ static NSString *kTestImageKeyPNG = @"TestImageKey.png";
- (void)test41ThatCustomDecoderWorksForImageCache {
XCTestExpectation *expectation = [self expectationWithDescription:@"Custom decoder for SDImageCache not works"];
SDImageCache *cache = [[SDImageCache alloc] initWithNamespace:@"TestDecode"];
SDWebImageTestDecoder *testDecoder = [[SDWebImageTestDecoder alloc] init];
[[SDWebImageCodersManager sharedManager] addCoder:testDecoder];
SDWebImageTestCoder *testDecoder = [[SDWebImageTestCoder alloc] init];
[[SDImageCodersManager sharedManager] addCoder:testDecoder];
NSString * testImagePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"TestImage" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:testImagePath];
NSString *key = @"TestPNGImageEncodedToDataAndRetrieveToJPEG";
@ -310,7 +310,7 @@ static NSString *kTestImageKeyPNG = @"TestImageKey.png";
XCTFail(@"Custom decoder not work for SDImageCache, check -[SDWebImageTestDecoder decodedImageWithData:]");
}
[[SDWebImageCodersManager sharedManager] removeCoder:testDecoder];
[[SDImageCodersManager sharedManager] removeCoder:testDecoder];
[[SDImageCache sharedImageCache] removeImageForKey:key withCompletion:^{
[expectation fulfill];

View File

@ -81,33 +81,33 @@
- (void)test09ThatStaticWebPCoderWorks {
NSURL *staticWebPURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"TestImageStatic" withExtension:@"webp"];
[self verifyCoder:[SDWebImageWebPCoder sharedCoder]
[self verifyCoder:[SDImageWebPCoder sharedCoder]
withLocalImageURL:staticWebPURL
isAnimatedImage:NO];
}
- (void)test10ThatAnimatedWebPCoderWorks {
NSURL *animatedWebPURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"TestImageAnimated" withExtension:@"webp"];
[self verifyCoder:[SDWebImageWebPCoder sharedCoder]
[self verifyCoder:[SDImageWebPCoder sharedCoder]
withLocalImageURL:animatedWebPURL
isAnimatedImage:YES];
}
- (void)test11ThatAPNGPCoderWorks {
NSURL *animatedWebPURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"TestImageAnimated" withExtension:@"apng"];
[self verifyCoder:[SDWebImageAPNGCoder sharedCoder]
[self verifyCoder:[SDImageAPNGCoder sharedCoder]
withLocalImageURL:animatedWebPURL
isAnimatedImage:YES];
}
- (void)test20ThatOurGIFCoderWorksNotFLAnimatedImage {
NSURL *gifURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"TestImage" withExtension:@"gif"];
[self verifyCoder:[SDWebImageGIFCoder sharedCoder]
[self verifyCoder:[SDImageGIFCoder sharedCoder]
withLocalImageURL:gifURL
isAnimatedImage:YES];
}
- (void)verifyCoder:(id<SDWebImageCoder>)coder
- (void)verifyCoder:(id<SDImageCoder>)coder
withLocalImageURL:(NSURL *)imageUrl
isAnimatedImage:(BOOL)isAnimated {
NSData *inputImageData = [NSData dataWithContentsOfURL:imageUrl];

View File

@ -9,7 +9,7 @@
#import "SDTestCase.h"
#import "SDWebImageTestDownloadOperation.h"
#import "SDWebImageTestDecoder.h"
#import "SDWebImageTestCoder.h"
#import "SDWebImageTestLoader.h"
/**
@ -346,8 +346,8 @@
- (void)test22ThatCustomDecoderWorksForImageDownload {
XCTestExpectation *expectation = [self expectationWithDescription:@"Custom decoder for SDWebImageDownloader not works"];
SDWebImageDownloader *downloader = [[SDWebImageDownloader alloc] init];
SDWebImageTestDecoder *testDecoder = [[SDWebImageTestDecoder alloc] init];
[[SDWebImageCodersManager sharedManager] addCoder:testDecoder];
SDWebImageTestCoder *testDecoder = [[SDWebImageTestCoder alloc] init];
[[SDImageCodersManager sharedManager] addCoder:testDecoder];
NSURL * testImageURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"TestImage" withExtension:@"png"];
// Decoded result is JPEG
@ -360,7 +360,7 @@
if (![data1 isEqualToData:data2]) {
XCTFail(@"The image data is not equal to cutom decoder, check -[SDWebImageTestDecoder decodedImageWithData:]");
}
[[SDWebImageCodersManager sharedManager] removeCoder:testDecoder];
[[SDImageCodersManager sharedManager] removeCoder:testDecoder];
[expectation fulfill];
}];

View File

@ -8,8 +8,8 @@
*/
#import <Foundation/Foundation.h>
#import <SDWebImage/SDWebImageCoder.h>
#import <SDWebImage/SDImageCoder.h>
@interface SDWebImageTestDecoder : NSObject <SDWebImageProgressiveCoder>
@interface SDWebImageTestCoder : NSObject <SDProgressiveImageCoder>
@end

View File

@ -7,9 +7,9 @@
* file that was distributed with this source code.
*/
#import "SDWebImageTestDecoder.h"
#import "SDWebImageTestCoder.h"
@implementation SDWebImageTestDecoder
@implementation SDWebImageTestCoder
- (BOOL)canDecodeFromData:(nullable NSData *)data {
return YES;
@ -19,13 +19,13 @@
return YES;
}
- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDWebImageCoderOptions *)options {
- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderOptions *)options {
NSString * testImagePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"TestImage" ofType:@"jpg"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:testImagePath];
return image;
}
- (instancetype)initIncrementalWithOptions:(nullable SDWebImageCoderOptions *)options
- (instancetype)initIncrementalWithOptions:(nullable SDImageCoderOptions *)options
{
self = [super init];
if (self) {
@ -37,7 +37,7 @@
return;
}
- (UIImage *)incrementalDecodedImageWithOptions:(SDWebImageCoderOptions *)options {
- (UIImage *)incrementalDecodedImageWithOptions:(SDImageCoderOptions *)options {
NSString * testImagePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"TestImage" ofType:@"gif"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:testImagePath];
return image;
@ -47,7 +47,7 @@
return YES;
}
- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDWebImageCoderOptions *)options {
- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDImageCoderOptions *)options {
NSString *testString = @"TestEncode";
NSData *data = [testString dataUsingEncoding:NSUTF8StringEncoding];
return data;

View File

@ -52,11 +52,11 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[];
#import <SDWebImage/SDAnimatedImage.h>
#import <SDWebImage/SDAnimatedImageView.h>
#import <SDWebImage/SDAnimatedImageView+WebCache.h>
#import <SDWebImage/SDWebImageCodersManager.h>
#import <SDWebImage/SDWebImageCoder.h>
#import <SDWebImage/SDWebImageAPNGCoder.h>
#import <SDWebImage/SDWebImageGIFCoder.h>
#import <SDWebImage/SDWebImageImageIOCoder.h>
#import <SDWebImage/SDImageCodersManager.h>
#import <SDWebImage/SDImageCoder.h>
#import <SDWebImage/SDImageAPNGCoder.h>
#import <SDWebImage/SDImageGIFCoder.h>
#import <SDWebImage/SDImageIOCoder.h>
#import <SDWebImage/SDImageFrame.h>
#import <SDWebImage/SDImageCoderHelper.h>
#import <SDWebImage/UIImage+GIF.h>
@ -90,5 +90,5 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[];
// WebP
#if __has_include(<SDWebImage/UIImage+WebP.h>)
#import <SDWebImage/UIImage+WebP.h>
#import <SDWebImage/SDWebImageWebPCoder.h>
#import <SDWebImage/SDImageWebPCoder.h>
#endif