From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001
From: 单军华
Date: Wed, 11 Jul 2018 10:47:42 +0800
Subject: [PATCH] 首次上传

---
 screendisplay/Pods/SDWebImage/SDWebImage/SDWebImageCodersManager.m |  145 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 145 insertions(+), 0 deletions(-)

diff --git a/screendisplay/Pods/SDWebImage/SDWebImage/SDWebImageCodersManager.m b/screendisplay/Pods/SDWebImage/SDWebImage/SDWebImageCodersManager.m
new file mode 100644
index 0000000..79c3bff
--- /dev/null
+++ b/screendisplay/Pods/SDWebImage/SDWebImage/SDWebImageCodersManager.m
@@ -0,0 +1,145 @@
+/*
+ * This file is part of the SDWebImage package.
+ * (c) Olivier Poitrey <rs@dailymotion.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+#import "SDWebImageCodersManager.h"
+#import "SDWebImageImageIOCoder.h"
+#import "SDWebImageGIFCoder.h"
+#ifdef SD_WEBP
+#import "SDWebImageWebPCoder.h"
+#endif
+
+#define LOCK(lock) dispatch_semaphore_wait(lock, DISPATCH_TIME_FOREVER);
+#define UNLOCK(lock) dispatch_semaphore_signal(lock);
+
+@interface SDWebImageCodersManager ()
+
+@property (nonatomic, strong, nonnull) dispatch_semaphore_t codersLock;
+
+@end
+
+@implementation SDWebImageCodersManager
+
++ (nonnull instancetype)sharedInstance {
+    static dispatch_once_t once;
+    static id instance;
+    dispatch_once(&once, ^{
+        instance = [self new];
+    });
+    return instance;
+}
+
+- (instancetype)init {
+    if (self = [super init]) {
+        // initialize with default coders
+        NSMutableArray<id<SDWebImageCoder>> *mutableCoders = [@[[SDWebImageImageIOCoder sharedCoder]] mutableCopy];
+#ifdef SD_WEBP
+        [mutableCoders addObject:[SDWebImageWebPCoder sharedCoder]];
+#endif
+        _coders = [mutableCoders copy];
+        _codersLock = dispatch_semaphore_create(1);
+    }
+    return self;
+}
+
+#pragma mark - Coder IO operations
+
+- (void)addCoder:(nonnull id<SDWebImageCoder>)coder {
+    if (![coder conformsToProtocol:@protocol(SDWebImageCoder)]) {
+        return;
+    }
+    LOCK(self.codersLock);
+    NSMutableArray<id<SDWebImageCoder>> *mutableCoders = [self.coders mutableCopy];
+    if (!mutableCoders) {
+        mutableCoders = [NSMutableArray array];
+    }
+    [mutableCoders addObject:coder];
+    self.coders = [mutableCoders copy];
+    UNLOCK(self.codersLock);
+}
+
+- (void)removeCoder:(nonnull id<SDWebImageCoder>)coder {
+    if (![coder conformsToProtocol:@protocol(SDWebImageCoder)]) {
+        return;
+    }
+    LOCK(self.codersLock);
+    NSMutableArray<id<SDWebImageCoder>> *mutableCoders = [self.coders mutableCopy];
+    [mutableCoders removeObject:coder];
+    self.coders = [mutableCoders copy];
+    UNLOCK(self.codersLock);
+}
+
+#pragma mark - SDWebImageCoder
+- (BOOL)canDecodeFromData:(NSData *)data {
+    LOCK(self.codersLock);
+    NSArray<id<SDWebImageCoder>> *coders = self.coders;
+    UNLOCK(self.codersLock);
+    for (id<SDWebImageCoder> coder in coders.reverseObjectEnumerator) {
+        if ([coder canDecodeFromData:data]) {
+            return YES;
+        }
+    }
+    return NO;
+}
+
+- (BOOL)canEncodeToFormat:(SDImageFormat)format {
+    LOCK(self.codersLock);
+    NSArray<id<SDWebImageCoder>> *coders = self.coders;
+    UNLOCK(self.codersLock);
+    for (id<SDWebImageCoder> coder in coders.reverseObjectEnumerator) {
+        if ([coder canEncodeToFormat:format]) {
+            return YES;
+        }
+    }
+    return NO;
+}
+
+- (UIImage *)decodedImageWithData:(NSData *)data {
+    LOCK(self.codersLock);
+    NSArray<id<SDWebImageCoder>> *coders = self.coders;
+    UNLOCK(self.codersLock);
+    for (id<SDWebImageCoder> coder in coders.reverseObjectEnumerator) {
+        if ([coder canDecodeFromData:data]) {
+            return [coder decodedImageWithData:data];
+        }
+    }
+    return nil;
+}
+
+- (UIImage *)decompressedImageWithImage:(UIImage *)image
+                                   data:(NSData *__autoreleasing  _Nullable *)data
+                                options:(nullable NSDictionary<NSString*, NSObject*>*)optionsDict {
+    if (!image) {
+        return nil;
+    }
+    LOCK(self.codersLock);
+    NSArray<id<SDWebImageCoder>> *coders = self.coders;
+    UNLOCK(self.codersLock);
+    for (id<SDWebImageCoder> coder in coders.reverseObjectEnumerator) {
+        if ([coder canDecodeFromData:*data]) {
+            return [coder decompressedImageWithImage:image data:data options:optionsDict];
+        }
+    }
+    return nil;
+}
+
+- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format {
+    if (!image) {
+        return nil;
+    }
+    LOCK(self.codersLock);
+    NSArray<id<SDWebImageCoder>> *coders = self.coders;
+    UNLOCK(self.codersLock);
+    for (id<SDWebImageCoder> coder in coders.reverseObjectEnumerator) {
+        if ([coder canEncodeToFormat:format]) {
+            return [coder encodedDataWithImage:image format:format];
+        }
+    }
+    return nil;
+}
+
+@end

--
Gitblit v1.8.0