diff --git a/.travis.yml b/.travis.yml index 71c69831..e59092b5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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 diff --git a/SDWebImage.xcodeproj/project.pbxproj b/SDWebImage.xcodeproj/project.pbxproj index 84bd63ea..d68dc3dd 100644 --- a/SDWebImage.xcodeproj/project.pbxproj +++ b/SDWebImage.xcodeproj/project.pbxproj @@ -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 = ""; }; + 4397D2F51D0DE2DF00BB2784 /* NSImage+WebCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSImage+WebCache.m"; sourceTree = ""; }; 43CE75491CFE9427006C64D0 /* FLAnimatedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FLAnimatedImage.h; sourceTree = ""; }; 43CE754A1CFE9427006C64D0 /* FLAnimatedImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FLAnimatedImage.m; sourceTree = ""; }; 43CE754B1CFE9427006C64D0 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FLAnimatedImageView.h; sourceTree = ""; }; @@ -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 = ""; @@ -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 = ""; @@ -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 = ( diff --git a/SDWebImage.xcodeproj/xcshareddata/xcschemes/SDWebImage OSX.xcscheme b/SDWebImage.xcodeproj/xcshareddata/xcschemes/SDWebImage OSX.xcscheme new file mode 100644 index 00000000..ab7eb094 --- /dev/null +++ b/SDWebImage.xcodeproj/xcshareddata/xcschemes/SDWebImage OSX.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SDWebImage/FLAnimatedImage/FLAnimatedImageView+WebCache.h b/SDWebImage/FLAnimatedImage/FLAnimatedImageView+WebCache.h index e7610a36..ea1e5966 100644 --- a/SDWebImage/FLAnimatedImage/FLAnimatedImageView+WebCache.h +++ b/SDWebImage/FLAnimatedImage/FLAnimatedImageView+WebCache.h @@ -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; diff --git a/SDWebImage/FLAnimatedImage/FLAnimatedImageView+WebCache.m b/SDWebImage/FLAnimatedImage/FLAnimatedImageView+WebCache.m index eca04203..03918aab 100644 --- a/SDWebImage/FLAnimatedImage/FLAnimatedImageView+WebCache.m +++ b/SDWebImage/FLAnimatedImage/FLAnimatedImageView+WebCache.m @@ -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" diff --git a/SDWebImage/MKAnnotationView+WebCache.h b/SDWebImage/MKAnnotationView+WebCache.h index 5744ffd8..a7e7b743 100644 --- a/SDWebImage/MKAnnotationView+WebCache.h +++ b/SDWebImage/MKAnnotationView+WebCache.h @@ -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 diff --git a/SDWebImage/MKAnnotationView+WebCache.m b/SDWebImage/MKAnnotationView+WebCache.m index 9b69fb5b..b5d82059 100644 --- a/SDWebImage/MKAnnotationView+WebCache.m +++ b/SDWebImage/MKAnnotationView+WebCache.m @@ -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 diff --git a/SDWebImage/NSImage+WebCache.h b/SDWebImage/NSImage+WebCache.h new file mode 100644 index 00000000..de24f436 --- /dev/null +++ b/SDWebImage/NSImage+WebCache.h @@ -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 + +@interface NSImage (WebCache) + +- (NSArray *)images; +- (BOOL)isGIF; + +@end + +#endif diff --git a/SDWebImage/NSImage+WebCache.m b/SDWebImage/NSImage+WebCache.m new file mode 100644 index 00000000..ff511a5d --- /dev/null +++ b/SDWebImage/NSImage+WebCache.m @@ -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 *)images { + return nil; +} + +- (BOOL)isGIF { + return NO; +} + +@end + +#endif + diff --git a/SDWebImage/SDImageCache.m b/SDWebImage/SDImageCache.m index 4727a3d1..6512767b 100644 --- a/SDWebImage/SDImageCache.m +++ b/SDWebImage/SDImageCache.m @@ -11,6 +11,8 @@ #import "UIImage+MultiFormat.h" #import #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)]) { diff --git a/SDWebImage/SDWebImageCompat.h b/SDWebImage/SDWebImageCompat.h index 3d4b48d8..0c886e61 100644 --- a/SDWebImage/SDWebImageCompat.h +++ b/SDWebImage/SDWebImageCompat.h @@ -10,14 +10,46 @@ #import #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 #ifndef UIImage #define UIImage NSImage @@ -25,9 +57,18 @@ #ifndef UIImageView #define UIImageView NSImageView #endif + #ifndef UIView + #define UIView NSView + #endif #else - #import - #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 + #endif + #if SD_WATCH #import #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); diff --git a/SDWebImage/SDWebImageCompat.m b/SDWebImage/SDWebImageCompat.m index 1380f3d3..ade04be1 100644 --- a/SDWebImage/SDWebImageCompat.m +++ b/SDWebImage/SDWebImageCompat.m @@ -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 *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"; diff --git a/SDWebImage/SDWebImageDecoder.m b/SDWebImage/SDWebImageDecoder.m index 904fed21..cb450423 100644 --- a/SDWebImage/SDWebImageDecoder.m +++ b/SDWebImage/SDWebImageDecoder.m @@ -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 diff --git a/SDWebImage/SDWebImageDownloaderOperation.m b/SDWebImage/SDWebImageDownloaderOperation.m index 766e683f..2a82deb7 100644 --- a/SDWebImage/SDWebImageDownloaderOperation.m +++ b/SDWebImage/SDWebImageDownloaderOperation.m @@ -11,6 +11,7 @@ #import "UIImage+MultiFormat.h" #import #import "SDWebImageManager.h" +#import "NSImage+WebCache.h" NSString *const SDWebImageDownloadStartNotification = @"SDWebImageDownloadStartNotification"; NSString *const SDWebImageDownloadReceiveResponseNotification = @"SDWebImageDownloadReceiveResponseNotification"; @@ -41,7 +42,7 @@ typedef NSMutableDictionary 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 SDCallbacksDictionary; @implementation SDWebImageDownloaderOperation { size_t width, height; +#if SD_UIKIT || SD_WATCH UIImageOrientation orientation; +#endif BOOL responseFromCached; } @@ -125,7 +128,7 @@ typedef NSMutableDictionary 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 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); diff --git a/SDWebImage/SDWebImageManager.m b/SDWebImage/SDWebImageManager.m index 1f8f00ab..e23c9e64 100644 --- a/SDWebImage/SDWebImageManager.m +++ b/SDWebImage/SDWebImageManager.m @@ -8,6 +8,7 @@ #import "SDWebImageManager.h" #import +#import "NSImage+WebCache.h" @interface SDWebImageCombinedOperation : NSObject diff --git a/SDWebImage/UIButton+WebCache.h b/SDWebImage/UIButton+WebCache.h index e0115010..fccc0584 100644 --- a/SDWebImage/UIButton+WebCache.h +++ b/SDWebImage/UIButton+WebCache.h @@ -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. diff --git a/SDWebImage/UIButton+WebCache.m b/SDWebImage/UIButton+WebCache.m index 5ffaa576..4efda1f0 100644 --- a/SDWebImage/UIButton+WebCache.m +++ b/SDWebImage/UIButton+WebCache.m @@ -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 SDStateImageURLDictionary; diff --git a/SDWebImage/UIImage+GIF.h b/SDWebImage/UIImage+GIF.h index a177969d..479d5723 100755 --- a/SDWebImage/UIImage+GIF.h +++ b/SDWebImage/UIImage+GIF.h @@ -7,10 +7,7 @@ * file that was distributed with this source code. */ -#import -#if TARGET_OS_WATCH - #import -#endif +#import "SDWebImageCompat.h" @interface UIImage (GIF) diff --git a/SDWebImage/UIImage+GIF.m b/SDWebImage/UIImage+GIF.m index e8bcca0c..9301777f 100755 --- a/SDWebImage/UIImage+GIF.m +++ b/SDWebImage/UIImage+GIF.m @@ -10,6 +10,7 @@ #import "UIImage+GIF.h" #import #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); } diff --git a/SDWebImage/UIImage+MultiFormat.h b/SDWebImage/UIImage+MultiFormat.h index d94c657a..a799929b 100644 --- a/SDWebImage/UIImage+MultiFormat.h +++ b/SDWebImage/UIImage+MultiFormat.h @@ -6,7 +6,7 @@ * file that was distributed with this source code. */ -#import +#import "SDWebImageCompat.h" @interface UIImage (MultiFormat) diff --git a/SDWebImage/UIImage+MultiFormat.m b/SDWebImage/UIImage+MultiFormat.m index 3c462d43..64cefbb3 100644 --- a/SDWebImage/UIImage+MultiFormat.m +++ b/SDWebImage/UIImage+MultiFormat.m @@ -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 diff --git a/SDWebImage/UIImage+WebP.h b/SDWebImage/UIImage+WebP.h index 5e0de881..cd9f27b1 100644 --- a/SDWebImage/UIImage+WebP.h +++ b/SDWebImage/UIImage+WebP.h @@ -8,7 +8,7 @@ #ifdef SD_WEBP -#import +#import "SDWebImageCompat.h" @interface UIImage (WebP) diff --git a/SDWebImage/UIImage+WebP.m b/SDWebImage/UIImage+WebP.m index 91bec099..b4e34648 100644 --- a/SDWebImage/UIImage+WebP.m +++ b/SDWebImage/UIImage+WebP.m @@ -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) { diff --git a/SDWebImage/UIImageView+HighlightedWebCache.h b/SDWebImage/UIImageView+HighlightedWebCache.h index 1605b97d..c0775c45 100644 --- a/SDWebImage/UIImageView+HighlightedWebCache.h +++ b/SDWebImage/UIImageView+HighlightedWebCache.h @@ -6,11 +6,11 @@ * file that was distributed with this source code. */ -#import #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. diff --git a/SDWebImage/UIImageView+HighlightedWebCache.m b/SDWebImage/UIImageView+HighlightedWebCache.m index fe581b8b..f853697d 100644 --- a/SDWebImage/UIImageView+HighlightedWebCache.m +++ b/SDWebImage/UIImageView+HighlightedWebCache.m @@ -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" diff --git a/SDWebImage/UIImageView+WebCache.h b/SDWebImage/UIImageView+WebCache.h index a41102b1..8e998f4d 100644 --- a/SDWebImage/UIImageView+WebCache.h +++ b/SDWebImage/UIImageView+WebCache.h @@ -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 *)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 diff --git a/SDWebImage/UIImageView+WebCache.m b/SDWebImage/UIImageView+WebCache.m index 5f2bca56..e71ef1ce 100644 --- a/SDWebImage/UIImageView+WebCache.m +++ b/SDWebImage/UIImageView+WebCache.m @@ -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 *)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 diff --git a/SDWebImage/UIView+WebCacheOperation.h b/SDWebImage/UIView+WebCacheOperation.h index 1c6fa235..f5e95fa6 100644 --- a/SDWebImage/UIView+WebCacheOperation.h +++ b/SDWebImage/UIView+WebCacheOperation.h @@ -6,10 +6,11 @@ * file that was distributed with this source code. */ -#import -#import "SDWebImageManager.h" +#import "SDWebImageCompat.h" -#if TARGET_OS_IOS || TARGET_OS_TV +#if SD_UIKIT || SD_MAC + +#import "SDWebImageManager.h" @interface UIView (WebCacheOperation) diff --git a/SDWebImage/UIView+WebCacheOperation.m b/SDWebImage/UIView+WebCacheOperation.m index dd607f97..7742473c 100644 --- a/SDWebImage/UIView+WebCacheOperation.m +++ b/SDWebImage/UIView+WebCacheOperation.m @@ -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; diff --git a/WebImage/SDWebImage.h b/WebImage/SDWebImage.h index 4ecf5bd2..f23c46ef 100644 --- a/WebImage/SDWebImage.h +++ b/WebImage/SDWebImage.h @@ -29,7 +29,7 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[]; #import #import #import -#if !TARGET_OS_TV +#if SD_MAC || SD_UIKIT #import #endif #import