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 - xcodebuild clean build -workspace SDWebImage.xcworkspace -scheme 'SDWebImage-static' -sdk iphonesimulator PLATFORM_NAME=iphonesimulator -configuration Debug | xcpretty -c
- echo Build as dynamic framework - 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 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 tvOS' -sdk appletvsimulator -configuration Debug | xcpretty -c
- xcodebuild clean build -workspace SDWebImage.xcworkspace -scheme 'SDWebImage watchOS' -sdk watchsimulator -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 */; }; 4317395B1CDFC8B70008FEB9 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = DA577CCA1998E60B007367ED /* types.h */; };
431BB68C1D06D2C1006A3455 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 530E49E416460AE2002868E7 /* SDWebImageDownloaderOperation.m */; }; 431BB68C1D06D2C1006A3455 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 530E49E416460AE2002868E7 /* SDWebImageDownloaderOperation.m */; };
431BB68E1D06D2C1006A3455 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D92148C56230056699D /* SDWebImagePrefetcher.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 */; }; 431BB6921D06D2C1006A3455 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D5B9141188EE8DD006D06BD /* NSData+ImageContentType.m */; };
431BB69A1D06D2C1006A3455 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D8C148C56230056699D /* SDWebImageDownloader.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 */; }; 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, ); }; }; 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, ); }; }; 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, ); }; }; 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, ); }; }; 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, ); }; }; 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, ); }; }; 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 */; }; 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, ); }; }; 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 */; }; 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, ); }; }; 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, ); }; }; 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, ); }; }; 43CE75781CFE9427006C64D0 /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 43CE75491CFE9427006C64D0 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -394,6 +506,9 @@
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
00733A4C1BC487C000A5A117 /* SDWebImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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; }; 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>"; }; 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>"; }; 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>"; }; 43CE754B1CFE9427006C64D0 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FLAnimatedImageView.h; sourceTree = "<group>"; };
@ -533,6 +648,13 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
4397D2B81D0DDD8C00BB2784 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
4A2CADFB1AB4BB5300B6BC39 /* Frameworks */ = { 4A2CADFB1AB4BB5300B6BC39 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -617,6 +739,7 @@
4A2CADFF1AB4BB5300B6BC39 /* SDWebImage.framework */, 4A2CADFF1AB4BB5300B6BC39 /* SDWebImage.framework */,
00733A4C1BC487C000A5A117 /* SDWebImage.framework */, 00733A4C1BC487C000A5A117 /* SDWebImage.framework */,
431BB7031D06D2C1006A3455 /* SDWebImage.framework */, 431BB7031D06D2C1006A3455 /* SDWebImage.framework */,
4397D2F21D0DDD8C00BB2784 /* SDWebImage.framework */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@ -669,6 +792,8 @@
53922D96148C56230056699D /* UIImageView+WebCache.m */, 53922D96148C56230056699D /* UIImageView+WebCache.m */,
AB615301192DA24600A2D8E9 /* UIView+WebCacheOperation.h */, AB615301192DA24600A2D8E9 /* UIView+WebCacheOperation.h */,
AB615302192DA24600A2D8E9 /* UIView+WebCacheOperation.m */, AB615302192DA24600A2D8E9 /* UIView+WebCacheOperation.m */,
4397D2F41D0DE2DF00BB2784 /* NSImage+WebCache.h */,
4397D2F51D0DE2DF00BB2784 /* NSImage+WebCache.m */,
); );
name = Categories; name = Categories;
sourceTree = "<group>"; sourceTree = "<group>";
@ -841,6 +966,7 @@
431739561CDFC8B70008FEB9 /* demux.h in Headers */, 431739561CDFC8B70008FEB9 /* demux.h in Headers */,
431739111CDFC8AA0008FEB9 /* neon.h in Headers */, 431739111CDFC8AA0008FEB9 /* neon.h in Headers */,
4317394D1CDFC8B20008FEB9 /* utils.h in Headers */, 4317394D1CDFC8B20008FEB9 /* utils.h in Headers */,
4397D2F81D0DF44200BB2784 /* MKAnnotationView+WebCache.h in Headers */,
431739451CDFC8B20008FEB9 /* quant_levels_dec.h in Headers */, 431739451CDFC8B20008FEB9 /* quant_levels_dec.h in Headers */,
431739361CDFC8B20008FEB9 /* bit_reader_inl.h in Headers */, 431739361CDFC8B20008FEB9 /* bit_reader_inl.h in Headers */,
4317390D1CDFC8AA0008FEB9 /* lossless.h in Headers */, 4317390D1CDFC8AA0008FEB9 /* lossless.h in Headers */,
@ -898,7 +1024,6 @@
431BB6D71D06D2C1006A3455 /* UIImage+WebP.h in Headers */, 431BB6D71D06D2C1006A3455 /* UIImage+WebP.h in Headers */,
431BB6D91D06D2C1006A3455 /* SDWebImageManager.h in Headers */, 431BB6D91D06D2C1006A3455 /* SDWebImageManager.h in Headers */,
431BB6DC1D06D2C1006A3455 /* UIButton+WebCache.h in Headers */, 431BB6DC1D06D2C1006A3455 /* UIButton+WebCache.h in Headers */,
431BB6DF1D06D2C1006A3455 /* FLAnimatedImageView+WebCache.h in Headers */,
431BB6E11D06D2C1006A3455 /* SDWebImage.h in Headers */, 431BB6E11D06D2C1006A3455 /* SDWebImage.h in Headers */,
431BB6E21D06D2C1006A3455 /* UIImageView+HighlightedWebCache.h in Headers */, 431BB6E21D06D2C1006A3455 /* UIImageView+HighlightedWebCache.h in Headers */,
431BB6E31D06D2C1006A3455 /* SDImageCache.h in Headers */, 431BB6E31D06D2C1006A3455 /* SDImageCache.h in Headers */,
@ -916,6 +1041,63 @@
); );
runOnlyForDeploymentPostprocessing = 0; 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 */ = { 4A2CADFC1AB4BB5300B6BC39 /* Headers */ = {
isa = PBXHeadersBuildPhase; isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -1072,6 +1254,24 @@
productReference = 431BB7031D06D2C1006A3455 /* SDWebImage.framework */; productReference = 431BB7031D06D2C1006A3455 /* SDWebImage.framework */;
productType = "com.apple.product-type.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 */ = { 4A2CADFE1AB4BB5300B6BC39 /* SDWebImage iOS */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 4A2CAE121AB4BB5400B6BC39 /* Build configuration list for PBXNativeTarget "SDWebImage iOS" */; buildConfigurationList = 4A2CAE121AB4BB5400B6BC39 /* Build configuration list for PBXNativeTarget "SDWebImage iOS" */;
@ -1141,6 +1341,7 @@
4A2CADFE1AB4BB5300B6BC39 /* SDWebImage iOS */, 4A2CADFE1AB4BB5300B6BC39 /* SDWebImage iOS */,
00733A4B1BC487C000A5A117 /* SDWebImage tvOS */, 00733A4B1BC487C000A5A117 /* SDWebImage tvOS */,
431BB6891D06D2C1006A3455 /* SDWebImage watchOS */, 431BB6891D06D2C1006A3455 /* SDWebImage watchOS */,
4397D2761D0DDD8C00BB2784 /* SDWebImage OSX */,
); );
}; };
/* End PBXProject section */ /* End PBXProject section */
@ -1160,6 +1361,13 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
4397D2EE1D0DDD8C00BB2784 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
4A2CADFD1AB4BB5300B6BC39 /* Resources */ = { 4A2CADFD1AB4BB5300B6BC39 /* Resources */ = {
isa = PBXResourcesBuildPhase; isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -1224,6 +1432,7 @@
431739081CDFC8AA0008FEB9 /* enc_avx2.c in Sources */, 431739081CDFC8AA0008FEB9 /* enc_avx2.c in Sources */,
00733A581BC4880000A5A117 /* SDWebImageManager.m in Sources */, 00733A581BC4880000A5A117 /* SDWebImageManager.m in Sources */,
431739001CDFC8AA0008FEB9 /* cpu.c in Sources */, 431739001CDFC8AA0008FEB9 /* cpu.c in Sources */,
4397D2F91D0DF44A00BB2784 /* MKAnnotationView+WebCache.m in Sources */,
00733A541BC4880000A5A117 /* SDWebImageCompat.m in Sources */, 00733A541BC4880000A5A117 /* SDWebImageCompat.m in Sources */,
4317393E1CDFC8B20008FEB9 /* huffman.c in Sources */, 4317393E1CDFC8B20008FEB9 /* huffman.c in Sources */,
431739151CDFC8AA0008FEB9 /* yuv.c in Sources */, 431739151CDFC8AA0008FEB9 /* yuv.c in Sources */,
@ -1263,7 +1472,6 @@
files = ( files = (
431BB68C1D06D2C1006A3455 /* SDWebImageDownloaderOperation.m in Sources */, 431BB68C1D06D2C1006A3455 /* SDWebImageDownloaderOperation.m in Sources */,
431BB68E1D06D2C1006A3455 /* SDWebImagePrefetcher.m in Sources */, 431BB68E1D06D2C1006A3455 /* SDWebImagePrefetcher.m in Sources */,
431BB6901D06D2C1006A3455 /* FLAnimatedImageView+WebCache.m in Sources */,
431BB6921D06D2C1006A3455 /* NSData+ImageContentType.m in Sources */, 431BB6921D06D2C1006A3455 /* NSData+ImageContentType.m in Sources */,
431BB69A1D06D2C1006A3455 /* SDWebImageDownloader.m in Sources */, 431BB69A1D06D2C1006A3455 /* SDWebImageDownloader.m in Sources */,
431BB6A31D06D2C1006A3455 /* UIImageView+WebCache.m in Sources */, 431BB6A31D06D2C1006A3455 /* UIImageView+WebCache.m in Sources */,
@ -1280,6 +1488,75 @@
); );
runOnlyForDeploymentPostprocessing = 0; 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 */ = { 4A2CADFA1AB4BB5300B6BC39 /* Sources */ = {
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -1533,6 +1810,46 @@
}; };
name = Release; 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 */ = { 4A2CAE131AB4BB5400B6BC39 /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
@ -1726,6 +2043,15 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; 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" */ = { 4A2CAE121AB4BB5400B6BC39 /* Build configuration list for PBXNativeTarget "SDWebImage iOS" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( 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. * file that was distributed with this source code.
*/ */
#if TARGET_OS_IOS || TARGET_OS_TV #import "SDWebImageCompat.h"
#if SD_UIKIT
#if COCOAPODS #if COCOAPODS
@import FLAnimatedImage; @import FLAnimatedImage;

View File

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

View File

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

View File

@ -7,6 +7,9 @@
*/ */
#import "MKAnnotationView+WebCache.h" #import "MKAnnotationView+WebCache.h"
#if SD_UIKIT || SD_MAC
#import "objc/runtime.h" #import "objc/runtime.h"
#import "UIView+WebCacheOperation.h" #import "UIView+WebCacheOperation.h"
@ -59,11 +62,19 @@ static char imageURLKey;
return; return;
} else if (image) { } else if (image) {
wself.image = image; wself.image = image;
#if SD_UIKIT
[wself setNeedsLayout]; [wself setNeedsLayout];
#elif SD_MAC
[wself setNeedsLayout:YES];
#endif
} else { } else {
if ((options & SDWebImageDelayPlaceholder)) { if ((options & SDWebImageDelayPlaceholder)) {
wself.image = placeholder; wself.image = placeholder;
#if SD_UIKIT
[wself setNeedsLayout]; [wself setNeedsLayout];
#elif SD_MAC
[wself setNeedsDisplay:YES];
#endif
} }
} }
if (completedBlock && finished) { if (completedBlock && finished) {
@ -87,3 +98,5 @@ static char imageURLKey;
} }
@end @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 "UIImage+MultiFormat.h"
#import <CommonCrypto/CommonDigest.h> #import <CommonCrypto/CommonDigest.h>
#import "UIImage+GIF.h" #import "UIImage+GIF.h"
#import "NSData+ImageContentType.h"
#import "NSImage+WebCache.h"
// See https://github.com/rs/SDWebImage/pull/1141 for discussion // See https://github.com/rs/SDWebImage/pull/1141 for discussion
@interface AutoPurgeCache : NSCache @interface AutoPurgeCache : NSCache
@ -21,7 +23,7 @@
- (nonnull instancetype)init { - (nonnull instancetype)init {
self = [super init]; self = [super init];
if (self) { if (self) {
#if TARGET_OS_IOS || TARGET_OS_TV #if SD_UIKIT
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeAllObjects) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeAllObjects) name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
#endif #endif
} }
@ -29,7 +31,7 @@
} }
- (void)dealloc { - (void)dealloc {
#if TARGET_OS_IOS || TARGET_OS_TV #if SD_UIKIT
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
#endif #endif
} }
@ -55,7 +57,11 @@ BOOL ImageDataHasPNGPreffix(NSData *data) {
} }
FOUNDATION_STATIC_INLINE NSUInteger SDCacheCostForImage(UIImage *image) { 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; return image.size.height * image.size.width * image.scale * image.scale;
#endif
} }
@interface SDImageCache () @interface SDImageCache ()
@ -129,7 +135,7 @@ FOUNDATION_STATIC_INLINE NSUInteger SDCacheCostForImage(UIImage *image) {
_fileManager = [NSFileManager new]; _fileManager = [NSFileManager new];
}); });
#if TARGET_OS_IOS || TARGET_OS_TV #if SD_UIKIT
// Subscribe to app events // Subscribe to app events
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(clearMemory) selector:@selector(clearMemory)
@ -214,7 +220,7 @@ FOUNDATION_STATIC_INLINE NSUInteger SDCacheCostForImage(UIImage *image) {
NSData *data = imageData; NSData *data = imageData;
if (image && (recalculate || !data)) { 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 // 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) // 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: // 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); data = UIImageJPEGRepresentation(image, (CGFloat)1.0);
} }
#else #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 #endif
} }
@ -592,7 +608,7 @@ FOUNDATION_STATIC_INLINE NSUInteger SDCacheCostForImage(UIImage *image) {
}); });
} }
#if TARGET_OS_IOS || TARGET_OS_TV #if SD_UIKIT
- (void)backgroundCleanDisk { - (void)backgroundCleanDisk {
Class UIApplicationClass = NSClassFromString(@"UIApplication"); Class UIApplicationClass = NSClassFromString(@"UIApplication");
if(!UIApplicationClass || ![UIApplicationClass respondsToSelector:@selector(sharedApplication)]) { if(!UIApplicationClass || ![UIApplicationClass respondsToSelector:@selector(sharedApplication)]) {

View File

@ -10,14 +10,46 @@
#import <TargetConditionals.h> #import <TargetConditionals.h>
#ifdef __OBJC_GC__ #ifdef __OBJC_GC__
#error SDWebImage does not support Objective-C Garbage Collection #error SDWebImage does not support Objective-C Garbage Collection
#endif #endif
#if __IPHONE_OS_VERSION_MIN_REQUIRED != 20000 && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0 // Apple's defines from TargetConditionals.h are a bit weird.
#error SDWebImage doesn't support Deployment Target version < 5.0 // 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 #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> #import <AppKit/AppKit.h>
#ifndef UIImage #ifndef UIImage
#define UIImage NSImage #define UIImage NSImage
@ -25,9 +57,18 @@
#ifndef UIImageView #ifndef UIImageView
#define UIImageView NSImageView #define UIImageView NSImageView
#endif #endif
#ifndef UIView
#define UIView NSView
#endif
#else #else
#import <UIKit/UIKit.h> #if __IPHONE_OS_VERSION_MIN_REQUIRED != 20000 && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0
#if TARGET_OS_WATCH #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> #import <WatchKit/WatchKit.h>
#endif #endif
#endif #endif
@ -46,10 +87,10 @@
#define SDDispatchQueueRelease(q) #define SDDispatchQueueRelease(q)
#define SDDispatchQueueSetterSementics strong #define SDDispatchQueueSetterSementics strong
#else #else
#undef SDDispatchQueueRelease #undef SDDispatchQueueRelease
#undef SDDispatchQueueSetterSementics #undef SDDispatchQueueSetterSementics
#define SDDispatchQueueRelease(q) (dispatch_release(q)) #define SDDispatchQueueRelease(q) (dispatch_release(q))
#define SDDispatchQueueSetterSementics assign #define SDDispatchQueueSetterSementics assign
#endif #endif
extern UIImage *SDScaledImageForKey(NSString *key, UIImage *image); extern UIImage *SDScaledImageForKey(NSString *key, UIImage *image);

View File

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

View File

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

View File

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

View File

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

View File

@ -7,9 +7,10 @@
*/ */
#import "SDWebImageCompat.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 UIButtonView. * Integrates SDWebImage async downloading and caching of remote images with UIButtonView.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -7,13 +7,9 @@
*/ */
#ifdef SD_WEBP #ifdef SD_WEBP
#import "UIImage+WebP.h"
#if !COCOAPODS #import "UIImage+WebP.h"
#import "webp/decode.h" #import "webp/decode.h"
#else
#import "webp/decode.h"
#endif
// Callback for CGDataProviderRelease // Callback for CGDataProviderRelease
static void FreeImageData(void *info, const void *data, size_t size) { 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. * file that was distributed with this source code.
*/ */
#import <UIKit/UIKit.h>
#import "SDWebImageCompat.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. * 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 "UIImageView+HighlightedWebCache.h"
#import "UIView+WebCacheOperation.h"
#if TARGET_OS_IOS || TARGET_OS_TV #if SD_UIKIT
#import "UIView+WebCacheOperation.h"
#define UIImageViewHighlightedWebCacheOperationKey @"highlightedImage" #define UIImageViewHighlightedWebCacheOperationKey @"highlightedImage"

View File

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

View File

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

View File

@ -6,10 +6,11 @@
* file that was distributed with this source code. * 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 || SD_MAC
#import "SDWebImageManager.h"
@interface UIView (WebCacheOperation) @interface UIView (WebCacheOperation)

View File

@ -7,9 +7,10 @@
*/ */
#import "UIView+WebCacheOperation.h" #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; static char loadOperationKey;

View File

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