added iOS source code
[wl-app.git] / iOS / Pods / Kingfisher / Sources / Kingfisher.swift
1 //
2 //  Kingfisher.swift
3 //  Kingfisher
4 //
5 //  Created by Wei Wang on 16/9/14.
6 //
7 //  Copyright (c) 2018 Wei Wang <onevcat@gmail.com>
8 //
9 //  Permission is hereby granted, free of charge, to any person obtaining a copy
10 //  of this software and associated documentation files (the "Software"), to deal
11 //  in the Software without restriction, including without limitation the rights
12 //  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 //  copies of the Software, and to permit persons to whom the Software is
14 //  furnished to do so, subject to the following conditions:
15 //
16 //  The above copyright notice and this permission notice shall be included in
17 //  all copies or substantial portions of the Software.
18 //
19 //  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 //  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 //  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 //  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 //  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24 //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 //  THE SOFTWARE.
26
27 import Foundation
28 import ImageIO
29
30 #if os(macOS)
31     import AppKit
32     public typealias Image = NSImage
33     public typealias View = NSView
34     public typealias Color = NSColor
35     public typealias ImageView = NSImageView
36     public typealias Button = NSButton
37 #else
38     import UIKit
39     public typealias Image = UIImage
40     public typealias Color = UIColor
41     #if !os(watchOS)
42     public typealias ImageView = UIImageView
43     public typealias View = UIView
44     public typealias Button = UIButton
45     #endif
46 #endif
47
48 public final class Kingfisher<Base> {
49     public let base: Base
50     public init(_ base: Base) {
51         self.base = base
52     }
53 }
54
55 /**
56  A type that has Kingfisher extensions.
57  */
58 public protocol KingfisherCompatible {
59     associatedtype CompatibleType
60     var kf: CompatibleType { get }
61 }
62
63 public extension KingfisherCompatible {
64     public var kf: Kingfisher<Self> {
65         get { return Kingfisher(self) }
66     }
67 }
68
69 extension Image: KingfisherCompatible { }
70 #if !os(watchOS)
71 extension ImageView: KingfisherCompatible { }
72 extension Button: KingfisherCompatible { }
73 #endif