OSX compatibility and target. (NSImage+WebCache) for UIImage compatibility

Clarified and simplified the usage of TARGET_OS_* macros. Added SD_MAC, SD_UIKIT, SD_IOS, SD_TV, SD_WATCH.
Updated Travis CI
This commit is contained in:
Bogdan Poplauschi 2016-06-12 23:23:53 +03:00
parent b8e210dae9
commit 4c6eb5e72e
30 changed files with 649 additions and 66 deletions

View File

@ -30,6 +30,7 @@ script:
- xcodebuild clean build -workspace SDWebImage.xcworkspace -scheme 'SDWebImage-static' -sdk iphonesimulator PLATFORM_NAME=iphonesimulator -configuration Debug | xcpretty -c
- echo Build as dynamic framework
- xcodebuild clean build -workspace SDWebImage.xcworkspace -scheme 'SDWebImage OSX' -sdk macosx -configuration Debug | xcpretty -c
- xcodebuild clean build -workspace SDWebImage.xcworkspace -scheme 'SDWebImage iOS' -sdk iphonesimulator PLATFORM_NAME=iphonesimulator -configuration Debug | xcpretty -c
- xcodebuild clean build -workspace SDWebImage.xcworkspace -scheme 'SDWebImage tvOS' -sdk appletvsimulator -configuration Debug | xcpretty -c
- xcodebuild clean build -workspace SDWebImage.xcworkspace -scheme 'SDWebImage watchOS' -sdk watchsimulator -configuration Debug | xcpretty -c

View File

@ -269,7 +269,6 @@
4317395B1CDFC8B70008FEB9 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CCA1998E60B007367ED /* types.h */; };
431BB68C1D06D2C1006A3455 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 530E49E416460AE2002868E7 /* SDWebImageDownloaderOperation.m */; };
431BB68E1D06D2C1006A3455 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D92148C56230056699D /* SDWebImagePrefetcher.m */; };
431BB6901D06D2C1006A3455 /* FLAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 43CE75CF1CFE98E0006C64D0 /* FLAnimatedImageView+WebCache.m */; };
431BB6921D06D2C1006A3455 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D5B9141188EE8DD006D06BD /* NSData+ImageContentType.m */; };
431BB69A1D06D2C1006A3455 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D8C148C56230056699D /* SDWebImageDownloader.m */; };
431BB6A31D06D2C1006A3455 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D96148C56230056699D /* UIImageView+WebCache.m */; };
@ -286,7 +285,6 @@
431BB6D71D06D2C1006A3455 /* UIImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 53EDFB911762547C00698166 /* UIImage+WebP.h */; settings = {ATTRIBUTES = (Public, ); }; };
431BB6D91D06D2C1006A3455 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D8E148C56230056699D /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
431BB6DC1D06D2C1006A3455 /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D93148C56230056699D /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
431BB6DF1D06D2C1006A3455 /* FLAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 43CE75CE1CFE98E0006C64D0 /* FLAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
431BB6E11D06D2C1006A3455 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A2CAE031AB4BB5400B6BC39 /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
431BB6E21D06D2C1006A3455 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = ABBE71A518C43B4D00B75E91 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
431BB6E31D06D2C1006A3455 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D85148C56230056699D /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -305,6 +303,120 @@
438096731CDFC08F00DC626B /* MKAnnotationView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 535699B515113E7300A4C397 /* MKAnnotationView+WebCache.m */; };
438096741CDFC09C00DC626B /* UIImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 53EDFB911762547C00698166 /* UIImage+WebP.h */; settings = {ATTRIBUTES = (Public, ); }; };
438096751CDFC0A100DC626B /* UIImage+WebP.m in Sources */ = {isa = PBXBuildFile; fileRef = 53EDFB921762547C00698166 /* UIImage+WebP.m */; };
4397D2781D0DDD8C00BB2784 /* dec.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C681998E60B007367ED /* dec.c */; };
4397D2791D0DDD8C00BB2784 /* huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577CB21998E60B007367ED /* huffman.c */; };
4397D27A1D0DDD8C00BB2784 /* quant_levels.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577CB71998E60B007367ED /* quant_levels.c */; };
4397D27B1D0DDD8C00BB2784 /* idec.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577D601998E6B2007367ED /* idec.c */; };
4397D27C1D0DDD8C00BB2784 /* random.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577CBB1998E60B007367ED /* random.c */; };
4397D27D1D0DDD8C00BB2784 /* alpha_processing_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = DAC075D01A08CB9C002E5D32 /* alpha_processing_sse2.c */; };
4397D27E1D0DDD8C00BB2784 /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = A18A6CC6172DC28500419892 /* UIImage+GIF.m */; };
4397D27F1D0DDD8C00BB2784 /* UIImage+WebP.m in Sources */ = {isa = PBXBuildFile; fileRef = 53EDFB921762547C00698166 /* UIImage+WebP.m */; };
4397D2801D0DDD8C00BB2784 /* enc_avx2.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C6F1998E60B007367ED /* enc_avx2.c */; };
4397D2821D0DDD8C00BB2784 /* rescaler.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577CBD1998E60B007367ED /* rescaler.c */; };
4397D2831D0DDD8C00BB2784 /* dec_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C6C1998E60B007367ED /* dec_sse2.c */; };
4397D2841D0DDD8C00BB2784 /* upsampling_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C7B1998E60B007367ED /* upsampling_neon.c */; };
4397D2851D0DDD8C00BB2784 /* quant.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577D631998E6B2007367ED /* quant.c */; };
4397D2861D0DDD8C00BB2784 /* dec_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C6A1998E60B007367ED /* dec_mips32.c */; };
4397D2871D0DDD8C00BB2784 /* alpha_processing.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C661998E60B007367ED /* alpha_processing.c */; };
4397D2881D0DDD8C00BB2784 /* lossless_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C771998E60B007367ED /* lossless_sse2.c */; };
4397D2891D0DDD8C00BB2784 /* enc_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C721998E60B007367ED /* enc_sse2.c */; };
4397D28A1D0DDD8C00BB2784 /* thread.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577CBF1998E60B007367ED /* thread.c */; };
4397D28C1D0DDD8C00BB2784 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D96148C56230056699D /* UIImageView+WebCache.m */; };
4397D28D1D0DDD8C00BB2784 /* filters.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577CB01998E60B007367ED /* filters.c */; };
4397D28E1D0DDD8C00BB2784 /* yuv_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C7F1998E60B007367ED /* yuv_mips32.c */; };
4397D28F1D0DDD8C00BB2784 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 530E49E416460AE2002868E7 /* SDWebImageDownloaderOperation.m */; };
4397D2901D0DDD8C00BB2784 /* tree.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577D641998E6B2007367ED /* tree.c */; };
4397D2911D0DDD8C00BB2784 /* MKAnnotationView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 535699B515113E7300A4C397 /* MKAnnotationView+WebCache.m */; };
4397D2921D0DDD8C00BB2784 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D92148C56230056699D /* SDWebImagePrefetcher.m */; };
4397D2931D0DDD8C00BB2784 /* yuv_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C801998E60B007367ED /* yuv_sse2.c */; };
4397D2941D0DDD8C00BB2784 /* color_cache.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577CAD1998E60B007367ED /* color_cache.c */; };
4397D2951D0DDD8C00BB2784 /* lossless_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C751998E60B007367ED /* lossless_mips32.c */; };
4397D2961D0DDD8C00BB2784 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 53EDFB8917623F7C00698166 /* UIImage+MultiFormat.m */; };
4397D2971D0DDD8C00BB2784 /* enc_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C701998E60B007367ED /* enc_mips32.c */; };
4397D2981D0DDD8C00BB2784 /* quant_levels_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577CB91998E60B007367ED /* quant_levels_dec.c */; };
4397D2991D0DDD8C00BB2784 /* vp8l.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577D671998E6B2007367ED /* vp8l.c */; };
4397D29A1D0DDD8C00BB2784 /* cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C671998E60B007367ED /* cpu.c */; };
4397D29B1D0DDD8C00BB2784 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D8C148C56230056699D /* SDWebImageDownloader.m */; };
4397D29C1D0DDD8C00BB2784 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D5B9141188EE8DD006D06BD /* NSData+ImageContentType.m */; };
4397D29D1D0DDD8C00BB2784 /* webp.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577D691998E6B2007367ED /* webp.c */; };
4397D29E1D0DDD8C00BB2784 /* yuv.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C7D1998E60B007367ED /* yuv.c */; };
4397D29F1D0DDD8C00BB2784 /* bit_writer.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577CAB1998E60B007367ED /* bit_writer.c */; };
4397D2A01D0DDD8C00BB2784 /* vp8.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577D651998E6B2007367ED /* vp8.c */; };
4397D2A11D0DDD8C00BB2784 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D8F148C56230056699D /* SDWebImageManager.m */; };
4397D2A21D0DDD8C00BB2784 /* enc_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C711998E60B007367ED /* enc_neon.c */; };
4397D2A31D0DDD8C00BB2784 /* lossless_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C761998E60B007367ED /* lossless_neon.c */; };
4397D2A41D0DDD8C00BB2784 /* dec_clip_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C691998E60B007367ED /* dec_clip_tables.c */; };
4397D2A51D0DDD8C00BB2784 /* lossless.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C731998E60B007367ED /* lossless.c */; };
4397D2A61D0DDD8C00BB2784 /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 5340674F167780C40042B59E /* SDWebImageCompat.m */; };
4397D2A71D0DDD8C00BB2784 /* huffman_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577CB41998E60B007367ED /* huffman_encode.c */; };
4397D2A81D0DDD8C00BB2784 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D94148C56230056699D /* UIButton+WebCache.m */; };
4397D2A91D0DDD8C00BB2784 /* upsampling.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C7A1998E60B007367ED /* upsampling.c */; };
4397D2AA1D0DDD8C00BB2784 /* io.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577D611998E6B2007367ED /* io.c */; };
4397D2AB1D0DDD8C00BB2784 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = AB615302192DA24600A2D8E9 /* UIView+WebCacheOperation.m */; };
4397D2AC1D0DDD8C00BB2784 /* buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577D5D1998E6B2007367ED /* buffer.c */; };
4397D2AD1D0DDD8C00BB2784 /* SDWebImageDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D8A148C56230056699D /* SDWebImageDecoder.m */; };
4397D2AE1D0DDD8C00BB2784 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = ABBE71A618C43B4D00B75E91 /* UIImageView+HighlightedWebCache.m */; };
4397D2AF1D0DDD8C00BB2784 /* upsampling_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C7C1998E60B007367ED /* upsampling_sse2.c */; };
4397D2B01D0DDD8C00BB2784 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D86148C56230056699D /* SDImageCache.m */; };
4397D2B21D0DDD8C00BB2784 /* frame.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577D5F1998E6B2007367ED /* frame.c */; };
4397D2B31D0DDD8C00BB2784 /* bit_reader.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577CA81998E60B007367ED /* bit_reader.c */; };
4397D2B41D0DDD8C00BB2784 /* dec_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C6B1998E60B007367ED /* dec_neon.c */; };
4397D2B51D0DDD8C00BB2784 /* alpha.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577D5B1998E6B2007367ED /* alpha.c */; };
4397D2B61D0DDD8C00BB2784 /* enc.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577C6E1998E60B007367ED /* enc.c */; };
4397D2B71D0DDD8C00BB2784 /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = DA577CC11998E60B007367ED /* utils.c */; };
4397D2BA1D0DDD8C00BB2784 /* demux.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CC51998E60B007367ED /* demux.h */; };
4397D2BB1D0DDD8C00BB2784 /* endian_inl.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CAF1998E60B007367ED /* endian_inl.h */; };
4397D2BD1D0DDD8C00BB2784 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CCA1998E60B007367ED /* types.h */; };
4397D2BE1D0DDD8C00BB2784 /* neon.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577C791998E60B007367ED /* neon.h */; };
4397D2BF1D0DDD8C00BB2784 /* alphai.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577D5C1998E6B2007367ED /* alphai.h */; };
4397D2C01D0DDD8C00BB2784 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A2CAE031AB4BB5400B6BC39 /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2C11D0DDD8C00BB2784 /* format_constants.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CC71998E60B007367ED /* format_constants.h */; };
4397D2C21D0DDD8C00BB2784 /* filters.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CB11998E60B007367ED /* filters.h */; };
4397D2C31D0DDD8C00BB2784 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D8E148C56230056699D /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2C41D0DDD8C00BB2784 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D85148C56230056699D /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2C51D0DDD8C00BB2784 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D95148C56230056699D /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2C61D0DDD8C00BB2784 /* random.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CBC1998E60B007367ED /* random.h */; };
4397D2C71D0DDD8C00BB2784 /* rescaler.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CBE1998E60B007367ED /* rescaler.h */; };
4397D2C81D0DDD8C00BB2784 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D88148C56230056699D /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2C91D0DDD8C00BB2784 /* bit_reader.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CA91998E60B007367ED /* bit_reader.h */; };
4397D2CB1D0DDD8C00BB2784 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = ABBE71A518C43B4D00B75E91 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2CC1D0DDD8C00BB2784 /* mux.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CC81998E60B007367ED /* mux.h */; };
4397D2CD1D0DDD8C00BB2784 /* lossless.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577C741998E60B007367ED /* lossless.h */; };
4397D2CE1D0DDD8C00BB2784 /* huffman_encode.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CB51998E60B007367ED /* huffman_encode.h */; };
4397D2CF1D0DDD8C00BB2784 /* yuv.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577C7E1998E60B007367ED /* yuv.h */; };
4397D2D01D0DDD8C00BB2784 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 530E49E316460AE2002868E7 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2D11D0DDD8C00BB2784 /* decode.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CC41998E60B007367ED /* decode.h */; };
4397D2D21D0DDD8C00BB2784 /* webpi.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577D6A1998E6B2007367ED /* webpi.h */; };
4397D2D31D0DDD8C00BB2784 /* thread.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CC01998E60B007367ED /* thread.h */; };
4397D2D41D0DDD8C00BB2784 /* quant_levels.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CB81998E60B007367ED /* quant_levels.h */; };
4397D2D51D0DDD8C00BB2784 /* bit_reader_inl.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CAA1998E60B007367ED /* bit_reader_inl.h */; };
4397D2D61D0DDD8C00BB2784 /* quant_levels_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CBA1998E60B007367ED /* quant_levels_dec.h */; };
4397D2D81D0DDD8C00BB2784 /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D93148C56230056699D /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2D91D0DDD8C00BB2784 /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D91148C56230056699D /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2DA1D0DDD8C00BB2784 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = AB615301192DA24600A2D8E9 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2DB1D0DDD8C00BB2784 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 53EDFB8817623F7C00698166 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2DC1D0DDD8C00BB2784 /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 530E49E71646388E002868E7 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2DD1D0DDD8C00BB2784 /* vp8i.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577D661998E6B2007367ED /* vp8i.h */; };
4397D2DE1D0DDD8C00BB2784 /* vp8li.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577D681998E6B2007367ED /* vp8li.h */; };
4397D2DF1D0DDD8C00BB2784 /* color_cache.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CAE1998E60B007367ED /* color_cache.h */; };
4397D2E01D0DDD8C00BB2784 /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CC21998E60B007367ED /* utils.h */; };
4397D2E11D0DDD8C00BB2784 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D8B148C56230056699D /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2E21D0DDD8C00BB2784 /* huffman.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CB31998E60B007367ED /* huffman.h */; };
4397D2E31D0DDD8C00BB2784 /* MKAnnotationView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 535699B415113E7300A4C397 /* MKAnnotationView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2E41D0DDD8C00BB2784 /* yuv_tables_sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577C811998E60B007367ED /* yuv_tables_sse2.h */; };
4397D2E51D0DDD8C00BB2784 /* bit_writer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CAC1998E60B007367ED /* bit_writer.h */; };
4397D2E61D0DDD8C00BB2784 /* encode.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CC61998E60B007367ED /* encode.h */; };
4397D2E71D0DDD8C00BB2784 /* dsp.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577C6D1998E60B007367ED /* dsp.h */; };
4397D2E81D0DDD8C00BB2784 /* SDWebImageDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D89148C56230056699D /* SDWebImageDecoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2E91D0DDD8C00BB2784 /* UIImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 53EDFB911762547C00698166 /* UIImage+WebP.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2EA1D0DDD8C00BB2784 /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = A18A6CC5172DC28500419892 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2EB1D0DDD8C00BB2784 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D5B9140188EE8DD006D06BD /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2EC1D0DDD8C00BB2784 /* decode_vp8.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577D5E1998E6B2007367ED /* decode_vp8.h */; };
4397D2ED1D0DDD8C00BB2784 /* mux_types.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CC91998E60B007367ED /* mux_types.h */; };
4397D2F61D0DE2DF00BB2784 /* NSImage+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4397D2F41D0DE2DF00BB2784 /* NSImage+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2F71D0DE2DF00BB2784 /* NSImage+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4397D2F51D0DE2DF00BB2784 /* NSImage+WebCache.m */; };
4397D2F81D0DF44200BB2784 /* MKAnnotationView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 535699B415113E7300A4C397 /* MKAnnotationView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
4397D2F91D0DF44A00BB2784 /* MKAnnotationView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 535699B515113E7300A4C397 /* MKAnnotationView+WebCache.m */; };
43CE75761CFE9427006C64D0 /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 43CE75491CFE9427006C64D0 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
43CE75771CFE9427006C64D0 /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 43CE75491CFE9427006C64D0 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
43CE75781CFE9427006C64D0 /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 43CE75491CFE9427006C64D0 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -394,6 +506,9 @@
/* Begin PBXFileReference section */
00733A4C1BC487C000A5A117 /* SDWebImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; };
431BB7031D06D2C1006A3455 /* SDWebImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4397D2F21D0DDD8C00BB2784 /* SDWebImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4397D2F41D0DE2DF00BB2784 /* NSImage+WebCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSImage+WebCache.h"; sourceTree = "<group>"; };
4397D2F51D0DE2DF00BB2784 /* NSImage+WebCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSImage+WebCache.m"; sourceTree = "<group>"; };
43CE75491CFE9427006C64D0 /* FLAnimatedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FLAnimatedImage.h; sourceTree = "<group>"; };
43CE754A1CFE9427006C64D0 /* FLAnimatedImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FLAnimatedImage.m; sourceTree = "<group>"; };
43CE754B1CFE9427006C64D0 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FLAnimatedImageView.h; sourceTree = "<group>"; };
@ -533,6 +648,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
4397D2B81D0DDD8C00BB2784 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
4A2CADFB1AB4BB5300B6BC39 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@ -617,6 +739,7 @@
4A2CADFF1AB4BB5300B6BC39 /* SDWebImage.framework */,
00733A4C1BC487C000A5A117 /* SDWebImage.framework */,
431BB7031D06D2C1006A3455 /* SDWebImage.framework */,
4397D2F21D0DDD8C00BB2784 /* SDWebImage.framework */,
);
name = Products;
sourceTree = "<group>";
@ -669,6 +792,8 @@
53922D96148C56230056699D /* UIImageView+WebCache.m */,
AB615301192DA24600A2D8E9 /* UIView+WebCacheOperation.h */,
AB615302192DA24600A2D8E9 /* UIView+WebCacheOperation.m */,
4397D2F41D0DE2DF00BB2784 /* NSImage+WebCache.h */,
4397D2F51D0DE2DF00BB2784 /* NSImage+WebCache.m */,
);
name = Categories;
sourceTree = "<group>";
@ -841,6 +966,7 @@
431739561CDFC8B70008FEB9 /* demux.h in Headers */,
431739111CDFC8AA0008FEB9 /* neon.h in Headers */,
4317394D1CDFC8B20008FEB9 /* utils.h in Headers */,
4397D2F81D0DF44200BB2784 /* MKAnnotationView+WebCache.h in Headers */,
431739451CDFC8B20008FEB9 /* quant_levels_dec.h in Headers */,
431739361CDFC8B20008FEB9 /* bit_reader_inl.h in Headers */,
4317390D1CDFC8AA0008FEB9 /* lossless.h in Headers */,
@ -898,7 +1024,6 @@
431BB6D71D06D2C1006A3455 /* UIImage+WebP.h in Headers */,
431BB6D91D06D2C1006A3455 /* SDWebImageManager.h in Headers */,
431BB6DC1D06D2C1006A3455 /* UIButton+WebCache.h in Headers */,
431BB6DF1D06D2C1006A3455 /* FLAnimatedImageView+WebCache.h in Headers */,
431BB6E11D06D2C1006A3455 /* SDWebImage.h in Headers */,
431BB6E21D06D2C1006A3455 /* UIImageView+HighlightedWebCache.h in Headers */,
431BB6E31D06D2C1006A3455 /* SDImageCache.h in Headers */,
@ -916,6 +1041,63 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
4397D2B91D0DDD8C00BB2784 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
4397D2BA1D0DDD8C00BB2784 /* demux.h in Headers */,
4397D2BB1D0DDD8C00BB2784 /* endian_inl.h in Headers */,
4397D2BD1D0DDD8C00BB2784 /* types.h in Headers */,
4397D2BE1D0DDD8C00BB2784 /* neon.h in Headers */,
4397D2BF1D0DDD8C00BB2784 /* alphai.h in Headers */,
4397D2C01D0DDD8C00BB2784 /* SDWebImage.h in Headers */,
4397D2C11D0DDD8C00BB2784 /* format_constants.h in Headers */,
4397D2C21D0DDD8C00BB2784 /* filters.h in Headers */,
4397D2C31D0DDD8C00BB2784 /* SDWebImageManager.h in Headers */,
4397D2C41D0DDD8C00BB2784 /* SDImageCache.h in Headers */,
4397D2C51D0DDD8C00BB2784 /* UIImageView+WebCache.h in Headers */,
4397D2C61D0DDD8C00BB2784 /* random.h in Headers */,
4397D2C71D0DDD8C00BB2784 /* rescaler.h in Headers */,
4397D2C81D0DDD8C00BB2784 /* SDWebImageCompat.h in Headers */,
4397D2C91D0DDD8C00BB2784 /* bit_reader.h in Headers */,
4397D2CB1D0DDD8C00BB2784 /* UIImageView+HighlightedWebCache.h in Headers */,
4397D2CC1D0DDD8C00BB2784 /* mux.h in Headers */,
4397D2CD1D0DDD8C00BB2784 /* lossless.h in Headers */,
4397D2CE1D0DDD8C00BB2784 /* huffman_encode.h in Headers */,
4397D2CF1D0DDD8C00BB2784 /* yuv.h in Headers */,
4397D2D01D0DDD8C00BB2784 /* SDWebImageDownloaderOperation.h in Headers */,
4397D2D11D0DDD8C00BB2784 /* decode.h in Headers */,
4397D2D21D0DDD8C00BB2784 /* webpi.h in Headers */,
4397D2D31D0DDD8C00BB2784 /* thread.h in Headers */,
4397D2D41D0DDD8C00BB2784 /* quant_levels.h in Headers */,
4397D2D51D0DDD8C00BB2784 /* bit_reader_inl.h in Headers */,
4397D2D61D0DDD8C00BB2784 /* quant_levels_dec.h in Headers */,
4397D2D81D0DDD8C00BB2784 /* UIButton+WebCache.h in Headers */,
4397D2D91D0DDD8C00BB2784 /* SDWebImagePrefetcher.h in Headers */,
4397D2DA1D0DDD8C00BB2784 /* UIView+WebCacheOperation.h in Headers */,
4397D2DB1D0DDD8C00BB2784 /* UIImage+MultiFormat.h in Headers */,
4397D2DC1D0DDD8C00BB2784 /* SDWebImageOperation.h in Headers */,
4397D2DD1D0DDD8C00BB2784 /* vp8i.h in Headers */,
4397D2F61D0DE2DF00BB2784 /* NSImage+WebCache.h in Headers */,
4397D2DE1D0DDD8C00BB2784 /* vp8li.h in Headers */,
4397D2DF1D0DDD8C00BB2784 /* color_cache.h in Headers */,
4397D2E01D0DDD8C00BB2784 /* utils.h in Headers */,
4397D2E11D0DDD8C00BB2784 /* SDWebImageDownloader.h in Headers */,
4397D2E21D0DDD8C00BB2784 /* huffman.h in Headers */,
4397D2E31D0DDD8C00BB2784 /* MKAnnotationView+WebCache.h in Headers */,
4397D2E41D0DDD8C00BB2784 /* yuv_tables_sse2.h in Headers */,
4397D2E51D0DDD8C00BB2784 /* bit_writer.h in Headers */,
4397D2E61D0DDD8C00BB2784 /* encode.h in Headers */,
4397D2E71D0DDD8C00BB2784 /* dsp.h in Headers */,
4397D2E81D0DDD8C00BB2784 /* SDWebImageDecoder.h in Headers */,
4397D2E91D0DDD8C00BB2784 /* UIImage+WebP.h in Headers */,
4397D2EA1D0DDD8C00BB2784 /* UIImage+GIF.h in Headers */,
4397D2EB1D0DDD8C00BB2784 /* NSData+ImageContentType.h in Headers */,
4397D2EC1D0DDD8C00BB2784 /* decode_vp8.h in Headers */,
4397D2ED1D0DDD8C00BB2784 /* mux_types.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
4A2CADFC1AB4BB5300B6BC39 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
@ -1072,6 +1254,24 @@
productReference = 431BB7031D06D2C1006A3455 /* SDWebImage.framework */;
productType = "com.apple.product-type.framework";
};
4397D2761D0DDD8C00BB2784 /* SDWebImage OSX */ = {
isa = PBXNativeTarget;
buildConfigurationList = 4397D2EF1D0DDD8C00BB2784 /* Build configuration list for PBXNativeTarget "SDWebImage OSX" */;
buildPhases = (
4397D2771D0DDD8C00BB2784 /* Sources */,
4397D2B81D0DDD8C00BB2784 /* Frameworks */,
4397D2B91D0DDD8C00BB2784 /* Headers */,
4397D2EE1D0DDD8C00BB2784 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = "SDWebImage OSX";
productName = WebImage;
productReference = 4397D2F21D0DDD8C00BB2784 /* SDWebImage.framework */;
productType = "com.apple.product-type.framework";
};
4A2CADFE1AB4BB5300B6BC39 /* SDWebImage iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 4A2CAE121AB4BB5400B6BC39 /* Build configuration list for PBXNativeTarget "SDWebImage iOS" */;
@ -1141,6 +1341,7 @@
4A2CADFE1AB4BB5300B6BC39 /* SDWebImage iOS */,
00733A4B1BC487C000A5A117 /* SDWebImage tvOS */,
431BB6891D06D2C1006A3455 /* SDWebImage watchOS */,
4397D2761D0DDD8C00BB2784 /* SDWebImage OSX */,
);
};
/* End PBXProject section */
@ -1160,6 +1361,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
4397D2EE1D0DDD8C00BB2784 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
4A2CADFD1AB4BB5300B6BC39 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@ -1224,6 +1432,7 @@
431739081CDFC8AA0008FEB9 /* enc_avx2.c in Sources */,
00733A581BC4880000A5A117 /* SDWebImageManager.m in Sources */,
431739001CDFC8AA0008FEB9 /* cpu.c in Sources */,
4397D2F91D0DF44A00BB2784 /* MKAnnotationView+WebCache.m in Sources */,
00733A541BC4880000A5A117 /* SDWebImageCompat.m in Sources */,
4317393E1CDFC8B20008FEB9 /* huffman.c in Sources */,
431739151CDFC8AA0008FEB9 /* yuv.c in Sources */,
@ -1263,7 +1472,6 @@
files = (
431BB68C1D06D2C1006A3455 /* SDWebImageDownloaderOperation.m in Sources */,
431BB68E1D06D2C1006A3455 /* SDWebImagePrefetcher.m in Sources */,
431BB6901D06D2C1006A3455 /* FLAnimatedImageView+WebCache.m in Sources */,
431BB6921D06D2C1006A3455 /* NSData+ImageContentType.m in Sources */,
431BB69A1D06D2C1006A3455 /* SDWebImageDownloader.m in Sources */,
431BB6A31D06D2C1006A3455 /* UIImageView+WebCache.m in Sources */,
@ -1280,6 +1488,75 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
4397D2771D0DDD8C00BB2784 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4397D2781D0DDD8C00BB2784 /* dec.c in Sources */,
4397D2791D0DDD8C00BB2784 /* huffman.c in Sources */,
4397D27A1D0DDD8C00BB2784 /* quant_levels.c in Sources */,
4397D27B1D0DDD8C00BB2784 /* idec.c in Sources */,
4397D27C1D0DDD8C00BB2784 /* random.c in Sources */,
4397D27D1D0DDD8C00BB2784 /* alpha_processing_sse2.c in Sources */,
4397D27E1D0DDD8C00BB2784 /* UIImage+GIF.m in Sources */,
4397D27F1D0DDD8C00BB2784 /* UIImage+WebP.m in Sources */,
4397D2F71D0DE2DF00BB2784 /* NSImage+WebCache.m in Sources */,
4397D2801D0DDD8C00BB2784 /* enc_avx2.c in Sources */,
4397D2821D0DDD8C00BB2784 /* rescaler.c in Sources */,
4397D2831D0DDD8C00BB2784 /* dec_sse2.c in Sources */,
4397D2841D0DDD8C00BB2784 /* upsampling_neon.c in Sources */,
4397D2851D0DDD8C00BB2784 /* quant.c in Sources */,
4397D2861D0DDD8C00BB2784 /* dec_mips32.c in Sources */,
4397D2871D0DDD8C00BB2784 /* alpha_processing.c in Sources */,
4397D2881D0DDD8C00BB2784 /* lossless_sse2.c in Sources */,
4397D2891D0DDD8C00BB2784 /* enc_sse2.c in Sources */,
4397D28A1D0DDD8C00BB2784 /* thread.c in Sources */,
4397D28C1D0DDD8C00BB2784 /* UIImageView+WebCache.m in Sources */,
4397D28D1D0DDD8C00BB2784 /* filters.c in Sources */,
4397D28E1D0DDD8C00BB2784 /* yuv_mips32.c in Sources */,
4397D28F1D0DDD8C00BB2784 /* SDWebImageDownloaderOperation.m in Sources */,
4397D2901D0DDD8C00BB2784 /* tree.c in Sources */,
4397D2911D0DDD8C00BB2784 /* MKAnnotationView+WebCache.m in Sources */,
4397D2921D0DDD8C00BB2784 /* SDWebImagePrefetcher.m in Sources */,
4397D2931D0DDD8C00BB2784 /* yuv_sse2.c in Sources */,
4397D2941D0DDD8C00BB2784 /* color_cache.c in Sources */,
4397D2951D0DDD8C00BB2784 /* lossless_mips32.c in Sources */,
4397D2961D0DDD8C00BB2784 /* UIImage+MultiFormat.m in Sources */,
4397D2971D0DDD8C00BB2784 /* enc_mips32.c in Sources */,
4397D2981D0DDD8C00BB2784 /* quant_levels_dec.c in Sources */,
4397D2991D0DDD8C00BB2784 /* vp8l.c in Sources */,
4397D29A1D0DDD8C00BB2784 /* cpu.c in Sources */,
4397D29B1D0DDD8C00BB2784 /* SDWebImageDownloader.m in Sources */,
4397D29C1D0DDD8C00BB2784 /* NSData+ImageContentType.m in Sources */,
4397D29D1D0DDD8C00BB2784 /* webp.c in Sources */,
4397D29E1D0DDD8C00BB2784 /* yuv.c in Sources */,
4397D29F1D0DDD8C00BB2784 /* bit_writer.c in Sources */,
4397D2A01D0DDD8C00BB2784 /* vp8.c in Sources */,
4397D2A11D0DDD8C00BB2784 /* SDWebImageManager.m in Sources */,
4397D2A21D0DDD8C00BB2784 /* enc_neon.c in Sources */,
4397D2A31D0DDD8C00BB2784 /* lossless_neon.c in Sources */,
4397D2A41D0DDD8C00BB2784 /* dec_clip_tables.c in Sources */,
4397D2A51D0DDD8C00BB2784 /* lossless.c in Sources */,
4397D2A61D0DDD8C00BB2784 /* SDWebImageCompat.m in Sources */,
4397D2A71D0DDD8C00BB2784 /* huffman_encode.c in Sources */,
4397D2A81D0DDD8C00BB2784 /* UIButton+WebCache.m in Sources */,
4397D2A91D0DDD8C00BB2784 /* upsampling.c in Sources */,
4397D2AA1D0DDD8C00BB2784 /* io.c in Sources */,
4397D2AB1D0DDD8C00BB2784 /* UIView+WebCacheOperation.m in Sources */,
4397D2AC1D0DDD8C00BB2784 /* buffer.c in Sources */,
4397D2AD1D0DDD8C00BB2784 /* SDWebImageDecoder.m in Sources */,
4397D2AE1D0DDD8C00BB2784 /* UIImageView+HighlightedWebCache.m in Sources */,
4397D2AF1D0DDD8C00BB2784 /* upsampling_sse2.c in Sources */,
4397D2B01D0DDD8C00BB2784 /* SDImageCache.m in Sources */,
4397D2B21D0DDD8C00BB2784 /* frame.c in Sources */,
4397D2B31D0DDD8C00BB2784 /* bit_reader.c in Sources */,
4397D2B41D0DDD8C00BB2784 /* dec_neon.c in Sources */,
4397D2B51D0DDD8C00BB2784 /* alpha.c in Sources */,
4397D2B61D0DDD8C00BB2784 /* enc.c in Sources */,
4397D2B71D0DDD8C00BB2784 /* utils.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
4A2CADFA1AB4BB5300B6BC39 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@ -1533,6 +1810,46 @@
};
name = Release;
};
4397D2F01D0DDD8C00BB2784 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
INFOPLIST_FILE = WebImage/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.7;
MTL_ENABLE_DEBUG_INFO = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.dailymotion.$(PRODUCT_NAME:rfc1034identifier).ios";
PRODUCT_NAME = SDWebImage;
SDKROOT = macosx;
};
name = Debug;
};
4397D2F11D0DDD8C00BB2784 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
INFOPLIST_FILE = WebImage/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.7;
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "com.dailymotion.$(PRODUCT_NAME:rfc1034identifier).ios";
PRODUCT_NAME = SDWebImage;
SDKROOT = macosx;
};
name = Release;
};
4A2CAE131AB4BB5400B6BC39 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -1726,6 +2043,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
4397D2EF1D0DDD8C00BB2784 /* Build configuration list for PBXNativeTarget "SDWebImage OSX" */ = {
isa = XCConfigurationList;
buildConfigurations = (
4397D2F01D0DDD8C00BB2784 /* Debug */,
4397D2F11D0DDD8C00BB2784 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
4A2CAE121AB4BB5400B6BC39 /* Build configuration list for PBXNativeTarget "SDWebImage iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0730"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4397D2761D0DDD8C00BB2784"
BuildableName = "SDWebImage.framework"
BlueprintName = "SDWebImage OSX"
ReferencedContainer = "container:SDWebImage.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4397D2761D0DDD8C00BB2784"
BuildableName = "SDWebImage.framework"
BlueprintName = "SDWebImage OSX"
ReferencedContainer = "container:SDWebImage.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4397D2761D0DDD8C00BB2784"
BuildableName = "SDWebImage.framework"
BlueprintName = "SDWebImage OSX"
ReferencedContainer = "container:SDWebImage.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -6,7 +6,9 @@
* file that was distributed with this source code.
*/
#if TARGET_OS_IOS || TARGET_OS_TV
#import "SDWebImageCompat.h"
#if SD_UIKIT
#if COCOAPODS
@import FLAnimatedImage;

View File

@ -6,7 +6,7 @@
* file that was distributed with this source code.
*/
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT
#import "FLAnimatedImageView+WebCache.h"
#import "objc/runtime.h"

View File

@ -6,6 +6,10 @@
* file that was distributed with this source code.
*/
#import "SDWebImageCompat.h"
#if SD_UIKIT || SD_MAC
#import "MapKit/MapKit.h"
#import "SDWebImageManager.h"
@ -114,3 +118,5 @@
- (void)sd_cancelCurrentImageLoad;
@end
#endif

View File

@ -7,6 +7,9 @@
*/
#import "MKAnnotationView+WebCache.h"
#if SD_UIKIT || SD_MAC
#import "objc/runtime.h"
#import "UIView+WebCacheOperation.h"
@ -59,11 +62,19 @@ static char imageURLKey;
return;
} else if (image) {
wself.image = image;
#if SD_UIKIT
[wself setNeedsLayout];
#elif SD_MAC
[wself setNeedsLayout:YES];
#endif
} else {
if ((options & SDWebImageDelayPlaceholder)) {
wself.image = placeholder;
#if SD_UIKIT
[wself setNeedsLayout];
#elif SD_MAC
[wself setNeedsDisplay:YES];
#endif
}
}
if (completedBlock && finished) {
@ -87,3 +98,5 @@ static char imageURLKey;
}
@end
#endif

View File

@ -0,0 +1,22 @@
//
// NSImage+WebCache.h
// SDWebImage
//
// Created by Bogdan on 12/06/16.
// Copyright © 2016 Dailymotion. All rights reserved.
//
#import "SDWebImageCompat.h"
#if SD_MAC
#import <Cocoa/Cocoa.h>
@interface NSImage (WebCache)
- (NSArray<NSImage *> *)images;
- (BOOL)isGIF;
@end
#endif

View File

@ -0,0 +1,26 @@
//
// NSImage+WebCache.m
// SDWebImage
//
// Created by Bogdan on 12/06/16.
// Copyright © 2016 Dailymotion. All rights reserved.
//
#import "NSImage+WebCache.h"
#if SD_MAC
@implementation NSImage (WebCache)
- (NSArray<NSImage *> *)images {
return nil;
}
- (BOOL)isGIF {
return NO;
}
@end
#endif

View File

@ -11,6 +11,8 @@
#import "UIImage+MultiFormat.h"
#import <CommonCrypto/CommonDigest.h>
#import "UIImage+GIF.h"
#import "NSData+ImageContentType.h"
#import "NSImage+WebCache.h"
// See https://github.com/rs/SDWebImage/pull/1141 for discussion
@interface AutoPurgeCache : NSCache
@ -21,7 +23,7 @@
- (nonnull instancetype)init {
self = [super init];
if (self) {
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeAllObjects) name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
#endif
}
@ -29,7 +31,7 @@
}
- (void)dealloc {
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
#endif
}
@ -55,7 +57,11 @@ BOOL ImageDataHasPNGPreffix(NSData *data) {
}
FOUNDATION_STATIC_INLINE NSUInteger SDCacheCostForImage(UIImage *image) {
#if SD_MAC
return image.size.height * image.size.width;
#elif SD_UIKIT || SD_WATCH
return image.size.height * image.size.width * image.scale * image.scale;
#endif
}
@interface SDImageCache ()
@ -129,7 +135,7 @@ FOUNDATION_STATIC_INLINE NSUInteger SDCacheCostForImage(UIImage *image) {
_fileManager = [NSFileManager new];
});
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT
// Subscribe to app events
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(clearMemory)
@ -214,7 +220,7 @@ FOUNDATION_STATIC_INLINE NSUInteger SDCacheCostForImage(UIImage *image) {
NSData *data = imageData;
if (image && (recalculate || !data)) {
#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH
#if SD_UIKIT || SD_WATCH
// We need to determine if the image is a PNG or a JPEG
// PNGs are easier to detect because they have a unique signature (http://www.w3.org/TR/PNG-Structure.html)
// The first eight bytes of a PNG file always contain the following (decimal) values:
@ -240,7 +246,17 @@ FOUNDATION_STATIC_INLINE NSUInteger SDCacheCostForImage(UIImage *image) {
data = UIImageJPEGRepresentation(image, (CGFloat)1.0);
}
#else
data = [NSBitmapImageRep representationOfImageRepsInArray:image.representations usingType: NSJPEGFileType properties:nil];
NSString *contentType = [NSData sd_contentTypeForImageData:data];
NSBitmapImageFileType imageFileType = NSJPEGFileType;
if ([contentType isEqualToString:@"image/gif"]) {
imageFileType = NSGIFFileType;
} else if ([contentType isEqualToString:@"image/png"]) {
imageFileType = NSPNGFileType;
}
data = [NSBitmapImageRep representationOfImageRepsInArray:image.representations
usingType:imageFileType
properties:@{}];
#endif
}
@ -592,7 +608,7 @@ FOUNDATION_STATIC_INLINE NSUInteger SDCacheCostForImage(UIImage *image) {
});
}
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT
- (void)backgroundCleanDisk {
Class UIApplicationClass = NSClassFromString(@"UIApplication");
if(!UIApplicationClass || ![UIApplicationClass respondsToSelector:@selector(sharedApplication)]) {

View File

@ -10,14 +10,46 @@
#import <TargetConditionals.h>
#ifdef __OBJC_GC__
#error SDWebImage does not support Objective-C Garbage Collection
#error SDWebImage does not support Objective-C Garbage Collection
#endif
#if __IPHONE_OS_VERSION_MIN_REQUIRED != 20000 && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0
#error SDWebImage doesn't support Deployment Target version < 5.0
// Apple's defines from TargetConditionals.h are a bit weird.
// Seems like TARGET_OS_MAC is always defined (on all platforms).
// To determine if we are running on OSX, we can only relly on TARGET_OS_IPHONE=0 and all the other platforms
#if !TARGET_OS_IPHONE && !TARGET_OS_IOS && !TARGET_OS_TV && !TARGET_OS_WATCH
#define SD_MAC 1
#else
#define SD_MAC 0
#endif
#if !TARGET_OS_IPHONE
// iOS and tvOS are very similar, UIKit exists on both platforms
// Note: watchOS also has UIKit, but it's very limited
#if TARGET_OS_IOS || TARGET_OS_TV
#define SD_UIKIT 1
#else
#define SD_UIKIT 0
#endif
#if TARGET_OS_IOS
#define SD_IOS 1
#else
#define SD_IOS 0
#endif
#if TARGET_OS_TV
#define SD_TV 1
#else
#define SD_TV 0
#endif
#if TARGET_OS_WATCH
#define SD_WATCH 1
#else
#define SD_WATCH 0
#endif
#if SD_MAC
#import <AppKit/AppKit.h>
#ifndef UIImage
#define UIImage NSImage
@ -25,9 +57,18 @@
#ifndef UIImageView
#define UIImageView NSImageView
#endif
#ifndef UIView
#define UIView NSView
#endif
#else
#import <UIKit/UIKit.h>
#if TARGET_OS_WATCH
#if __IPHONE_OS_VERSION_MIN_REQUIRED != 20000 && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0
#error SDWebImage doesn't support Deployment Target version < 5.0
#endif
#if SD_UIKIT
#import <UIKit/UIKit.h>
#endif
#if SD_WATCH
#import <WatchKit/WatchKit.h>
#endif
#endif
@ -46,10 +87,10 @@
#define SDDispatchQueueRelease(q)
#define SDDispatchQueueSetterSementics strong
#else
#undef SDDispatchQueueRelease
#undef SDDispatchQueueSetterSementics
#define SDDispatchQueueRelease(q) (dispatch_release(q))
#define SDDispatchQueueSetterSementics assign
#undef SDDispatchQueueRelease
#undef SDDispatchQueueSetterSementics
#define SDDispatchQueueRelease(q) (dispatch_release(q))
#define SDDispatchQueueSetterSementics assign
#endif
extern UIImage *SDScaledImageForKey(NSString *key, UIImage *image);

View File

@ -17,6 +17,9 @@ inline UIImage *SDScaledImageForKey(NSString * _Nullable key, UIImage * _Nullabl
return nil;
}
#if SD_MAC
return image;
#elif SD_UIKIT || SD_WATCH
if ((image.images).count > 0) {
NSMutableArray<UIImage *> *scaledImages = [NSMutableArray array];
@ -27,9 +30,9 @@ inline UIImage *SDScaledImageForKey(NSString * _Nullable key, UIImage * _Nullabl
return [UIImage animatedImageWithImages:scaledImages duration:image.duration];
}
else {
#if TARGET_OS_WATCH
#if SD_WATCH
if ([[WKInterfaceDevice currentDevice] respondsToSelector:@selector(screenScale)]) {
#else
#elif SD_UIKIT
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
#endif
CGFloat scale = 1;
@ -50,6 +53,7 @@ inline UIImage *SDScaledImageForKey(NSString * _Nullable key, UIImage * _Nullabl
}
return image;
}
#endif
}
NSString *const SDWebImageErrorDomain = @"SDWebImageErrorDomain";

View File

@ -23,6 +23,9 @@
return nil;
}
#if SD_MAC
return image;
#elif SD_UIKIT || SD_WATCH
@autoreleasepool{
// do not decode animated images
if (image.images != nil) {
@ -86,6 +89,7 @@
return imageWithoutAlpha;
}
#endif
}
@end

View File

@ -11,6 +11,7 @@
#import "UIImage+MultiFormat.h"
#import <ImageIO/ImageIO.h>
#import "SDWebImageManager.h"
#import "NSImage+WebCache.h"
NSString *const SDWebImageDownloadStartNotification = @"SDWebImageDownloadStartNotification";
NSString *const SDWebImageDownloadReceiveResponseNotification = @"SDWebImageDownloadReceiveResponseNotification";
@ -41,7 +42,7 @@ typedef NSMutableDictionary<NSString *, id> SDCallbacksDictionary;
@property (strong, atomic, nullable) NSThread *thread;
@property (SDDispatchQueueSetterSementics, nonatomic, nullable) dispatch_queue_t barrierQueue;
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT
@property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundTaskId;
#endif
@ -49,7 +50,9 @@ typedef NSMutableDictionary<NSString *, id> SDCallbacksDictionary;
@implementation SDWebImageDownloaderOperation {
size_t width, height;
#if SD_UIKIT || SD_WATCH
UIImageOrientation orientation;
#endif
BOOL responseFromCached;
}
@ -125,7 +128,7 @@ typedef NSMutableDictionary<NSString *, id> SDCallbacksDictionary;
return;
}
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT
Class UIApplicationClass = NSClassFromString(@"UIApplication");
BOOL hasApplication = UIApplicationClass && [UIApplicationClass respondsToSelector:@selector(sharedApplication)];
if (hasApplication && [self shouldContinueWhenAppEntersBackground]) {
@ -179,7 +182,7 @@ typedef NSMutableDictionary<NSString *, id> SDCallbacksDictionary;
}
}
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT
Class UIApplicationClass = NSClassFromString(@"UIApplication");
if(!UIApplicationClass || ![UIApplicationClass respondsToSelector:@selector(sharedApplication)]) {
return;
@ -337,7 +340,9 @@ didReceiveResponse:(NSURLResponse *)response
// which means the image below born of initWithCGIImage will be
// oriented incorrectly sometimes. (Unlike the image born of initWithData
// in didCompleteWithError.) So save it here and pass it on later.
#if SD_UIKIT || SD_WATCH
orientation = [[self class] orientationFromPropertyValue:(orientationValue == -1 ? 1 : orientationValue)];
#endif
}
}
@ -345,7 +350,7 @@ didReceiveResponse:(NSURLResponse *)response
// Create the image
CGImageRef partialImageRef = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL);
#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH
#if SD_UIKIT || SD_WATCH
// Workaround for iOS anamorphic image
if (partialImageRef) {
const size_t partialHeight = CGImageGetHeight(partialImageRef);
@ -366,7 +371,11 @@ didReceiveResponse:(NSURLResponse *)response
#endif
if (partialImageRef) {
#if SD_UIKIT || SD_WATCH
UIImage *image = [UIImage imageWithCGImage:partialImageRef scale:1 orientation:orientation];
#elif SD_MAC
UIImage *image = [[UIImage alloc] initWithCGImage:partialImageRef size:NSZeroSize];
#endif
NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:self.request.URL];
UIImage *scaledImage = [self scaledImageForKey:key image:image];
if (self.shouldDecompressImages) {
@ -500,6 +509,7 @@ didReceiveResponse:(NSURLResponse *)response
#pragma mark Helper methods
#if SD_UIKIT || SD_WATCH
+ (UIImageOrientation)orientationFromPropertyValue:(NSInteger)value {
switch (value) {
case 1:
@ -522,6 +532,7 @@ didReceiveResponse:(NSURLResponse *)response
return UIImageOrientationUp;
}
}
#endif
- (nullable UIImage *)scaledImageForKey:(nullable NSString *)key image:(nullable UIImage *)image {
return SDScaledImageForKey(key, image);

View File

@ -8,6 +8,7 @@
#import "SDWebImageManager.h"
#import <objc/message.h>
#import "NSImage+WebCache.h"
@interface SDWebImageCombinedOperation : NSObject <SDWebImageOperation>

View File

@ -7,9 +7,10 @@
*/
#import "SDWebImageCompat.h"
#import "SDWebImageManager.h"
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT
#import "SDWebImageManager.h"
/**
* Integrates SDWebImage async downloading and caching of remote images with UIButtonView.

View File

@ -7,11 +7,12 @@
*/
#import "UIButton+WebCache.h"
#if SD_UIKIT
#import "objc/runtime.h"
#import "UIView+WebCacheOperation.h"
#if TARGET_OS_IOS || TARGET_OS_TV
static char imageURLStorageKey;
typedef NSMutableDictionary<NSNumber *, NSURL *> SDStateImageURLDictionary;

View File

@ -7,10 +7,7 @@
* file that was distributed with this source code.
*/
#import <UIKit/UIKit.h>
#if TARGET_OS_WATCH
#import <WatchKit/WatchKit.h>
#endif
#import "SDWebImageCompat.h"
@interface UIImage (GIF)

View File

@ -10,6 +10,7 @@
#import "UIImage+GIF.h"
#import <ImageIO/ImageIO.h>
#import "objc/runtime.h"
#import "NSImage+WebCache.h"
@implementation UIImage (GIF)
@ -29,17 +30,21 @@
} else {
// we will only retrieve the 1st frame. the full GIF support is available via the FLAnimatedImageView category.
// this here is only code to allow drawing animated images as static ones
#if SD_WATCH
CGFloat scale = 1;
#if TARGET_OS_WATCH
scale = [WKInterfaceDevice currentDevice].screenScale;
#else
#elif SD_UIKIT
CGFloat scale = 1;
scale = [UIScreen mainScreen].scale;
#endif
CGImageRef CGImage = CGImageSourceCreateImageAtIndex(source, 0, NULL);
#if SD_UIKIT || SD_WATCH
UIImage *frameImage = [UIImage imageWithCGImage:CGImage scale:scale orientation:UIImageOrientationUp];
staticImage = [UIImage animatedImageWithImages:@[frameImage] duration:0.0f];
#elif SD_MAC
staticImage = [[UIImage alloc] initWithCGImage:CGImage size:NSZeroSize];
#endif
CGImageRelease(CGImage);
}

View File

@ -6,7 +6,7 @@
* file that was distributed with this source code.
*/
#import <UIKit/UIKit.h>
#import "SDWebImageCompat.h"
@interface UIImage (MultiFormat)

View File

@ -35,19 +35,21 @@
#endif
else {
image = [[UIImage alloc] initWithData:data];
#if SD_UIKIT || SD_WATCH
UIImageOrientation orientation = [self sd_imageOrientationFromImageData:data];
if (orientation != UIImageOrientationUp) {
image = [UIImage imageWithCGImage:image.CGImage
scale:image.scale
orientation:orientation];
}
#endif
}
return image;
}
#if SD_UIKIT || SD_WATCH
+(UIImageOrientation)sd_imageOrientationFromImageData:(nonnull NSData *)imageData {
UIImageOrientation result = UIImageOrientationUp;
CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
@ -112,7 +114,7 @@
}
return orientation;
}
#endif
@end

View File

@ -8,7 +8,7 @@
#ifdef SD_WEBP
#import <UIKit/UIKit.h>
#import "SDWebImageCompat.h"
@interface UIImage (WebP)

View File

@ -7,13 +7,9 @@
*/
#ifdef SD_WEBP
#import "UIImage+WebP.h"
#if !COCOAPODS
#import "UIImage+WebP.h"
#import "webp/decode.h"
#else
#import "webp/decode.h"
#endif
// Callback for CGDataProviderRelease
static void FreeImageData(void *info, const void *data, size_t size) {

View File

@ -6,11 +6,11 @@
* file that was distributed with this source code.
*/
#import <UIKit/UIKit.h>
#import "SDWebImageCompat.h"
#import "SDWebImageManager.h"
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT
#import "SDWebImageManager.h"
/**
* Integrates SDWebImage async downloading and caching of remote images with UIImageView for highlighted state.

View File

@ -7,9 +7,10 @@
*/
#import "UIImageView+HighlightedWebCache.h"
#import "UIView+WebCacheOperation.h"
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT
#import "UIView+WebCacheOperation.h"
#define UIImageViewHighlightedWebCacheOperationKey @"highlightedImage"

View File

@ -7,9 +7,10 @@
*/
#import "SDWebImageCompat.h"
#import "SDWebImageManager.h"
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT || SD_MAC
#import "SDWebImageManager.h"
/**
* Integrates SDWebImage async downloading and caching of remote images with UIImageView.
@ -181,18 +182,21 @@
progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
completed:(nullable SDExternalCompletionBlock)completedBlock;
#if SD_UIKIT
/**
* Download an array of images and starts them in an animation loop
*
* @param arrayOfURLs An array of NSURL
*/
- (void)sd_setAnimationImagesWithURLs:(nonnull NSArray<NSURL *> *)arrayOfURLs;
#endif
/**
* Cancel the current download
*/
- (void)sd_cancelCurrentImageLoad;
#if SD_UIKIT
- (void)sd_cancelCurrentAnimationImagesLoad;
/**
@ -210,7 +214,7 @@
- (BOOL)showActivityIndicatorView;
- (void)addActivityIndicator;
- (void)removeActivityIndicator;
#endif
@end

View File

@ -7,14 +7,17 @@
*/
#import "UIImageView+WebCache.h"
#if SD_UIKIT || SD_MAC
#import "objc/runtime.h"
#import "UIView+WebCacheOperation.h"
#if TARGET_OS_IOS || TARGET_OS_TV
static char imageURLKey;
#if SD_UIKIT
static char TAG_ACTIVITY_INDICATOR;
static char TAG_ACTIVITY_STYLE;
#endif
static char TAG_ACTIVITY_SHOW;
@implementation UIImageView (WebCache)
@ -77,11 +80,19 @@ static char TAG_ACTIVITY_SHOW;
}
else if (image) {
wself.image = image;
#if SD_UIKIT
[wself setNeedsLayout];
#elif SD_MAC
[wself setNeedsLayout:YES];
#endif
} else {
if ((options & SDWebImageDelayPlaceholder)) {
wself.image = placeholder;
#if SD_UIKIT
[wself setNeedsLayout];
#elif SD_MAC
[wself setNeedsLayout:YES];
#endif
}
}
if (completedBlock && finished) {
@ -116,6 +127,7 @@ static char TAG_ACTIVITY_SHOW;
return objc_getAssociatedObject(self, &imageURLKey);
}
#if SD_UIKIT
- (void)sd_setAnimationImagesWithURLs:(nonnull NSArray<NSURL *> *)arrayOfURLs {
[self sd_cancelCurrentAnimationImagesLoad];
__weak __typeof(self)wself = self;
@ -146,17 +158,20 @@ static char TAG_ACTIVITY_SHOW;
[self sd_setImageLoadOperation:[operationsArray copy] forKey:@"UIImageViewAnimationImages"];
}
#endif
- (void)sd_cancelCurrentImageLoad {
[self sd_cancelImageLoadOperationWithKey:@"UIImageViewImageLoad"];
}
#if SD_UIKIT
- (void)sd_cancelCurrentAnimationImagesLoad {
[self sd_cancelImageLoadOperationWithKey:@"UIImageViewAnimationImages"];
}
#endif
#pragma mark -
#if SD_UIKIT
- (UIActivityIndicatorView *)activityIndicator {
return (UIActivityIndicatorView *)objc_getAssociatedObject(self, &TAG_ACTIVITY_INDICATOR);
}
@ -164,6 +179,7 @@ static char TAG_ACTIVITY_SHOW;
- (void)setActivityIndicator:(UIActivityIndicatorView *)activityIndicator {
objc_setAssociatedObject(self, &TAG_ACTIVITY_INDICATOR, activityIndicator, OBJC_ASSOCIATION_RETAIN);
}
#endif
- (void)setShowActivityIndicatorView:(BOOL)show {
objc_setAssociatedObject(self, &TAG_ACTIVITY_SHOW, @(show), OBJC_ASSOCIATION_RETAIN);
@ -173,6 +189,7 @@ static char TAG_ACTIVITY_SHOW;
return [objc_getAssociatedObject(self, &TAG_ACTIVITY_SHOW) boolValue];
}
#if SD_UIKIT
- (void)setIndicatorStyle:(UIActivityIndicatorViewStyle)style{
objc_setAssociatedObject(self, &TAG_ACTIVITY_STYLE, [NSNumber numberWithInt:style], OBJC_ASSOCIATION_RETAIN);
}
@ -180,8 +197,10 @@ static char TAG_ACTIVITY_SHOW;
- (int)getIndicatorStyle{
return [objc_getAssociatedObject(self, &TAG_ACTIVITY_STYLE) intValue];
}
#endif
- (void)addActivityIndicator {
#if SD_UIKIT
if (!self.activityIndicator) {
self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:[self getIndicatorStyle]];
self.activityIndicator.translatesAutoresizingMaskIntoConstraints = NO;
@ -209,14 +228,16 @@ static char TAG_ACTIVITY_SHOW;
dispatch_main_async_safe(^{
[self.activityIndicator startAnimating];
});
#endif
}
- (void)removeActivityIndicator {
#if SD_UIKIT
if (self.activityIndicator) {
[self.activityIndicator removeFromSuperview];
self.activityIndicator = nil;
}
#endif
}
@end

View File

@ -6,10 +6,11 @@
* file that was distributed with this source code.
*/
#import <UIKit/UIKit.h>
#import "SDWebImageManager.h"
#import "SDWebImageCompat.h"
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT || SD_MAC
#import "SDWebImageManager.h"
@interface UIView (WebCacheOperation)

View File

@ -7,9 +7,10 @@
*/
#import "UIView+WebCacheOperation.h"
#import "objc/runtime.h"
#if TARGET_OS_IOS || TARGET_OS_TV
#if SD_UIKIT || SD_MAC
#import "objc/runtime.h"
static char loadOperationKey;

View File

@ -29,7 +29,7 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[];
#import <SDWebImage/UIImage+MultiFormat.h>
#import <SDWebImage/SDWebImageOperation.h>
#import <SDWebImage/SDWebImageDownloader.h>
#if !TARGET_OS_TV
#if SD_MAC || SD_UIKIT
#import <SDWebImage/MKAnnotationView+WebCache.h>
#endif
#import <SDWebImage/SDWebImageDecoder.h>