//
//  UIImageExt.swift
//  ExtensionKit
//
//  Created by FFIB on 2017/9/14.
//  Copyright © 2017年 FFIB. All rights reserved.
//

import UIKit

public extension UIImage {
    
    func scaledImage(_ scale: CGFloat) -> UIImage? {
        let outputSize = size * scale
        let renderer = UIGraphicsImageRenderer(size: outputSize)
        return renderer.image(actions: {_ in })
    }
    
    func scaledImage(length: CGFloat, with quality: CGFloat) -> Data? {
        let edge = size.width > size.height ? size.height : size.width
        let outputSize = size * (length / edge)
        let renderer = UIGraphicsImageRenderer(size: outputSize)
        return renderer.jpegData(withCompressionQuality: quality) { _ in
            let content = UIGraphicsGetCurrentContext()
            content?.draw(cgImage!, in: CGRect.init(origin: CGPoint.zero, size: outputSize))
        }        
    }
}

public extension UIImage {
    static var defaultAvatar: UIImage? {
        return UIImage(named: "defaultAvatar")
    }
    
    static var photoPlaceholder: UIImage? {
        return UIImage(named: "photoPlaceholder")
    }
    
    struct Navigation {
       public static var background: UIImage? {
        return UIImage(named: "navigation-background")?.resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0),
                                                                      resizingMode: .stretch)
        }
        
        public static var blackBackground: UIImage? {
            return UIImage(named: "navigation-background-black")?.resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0),
                                                                           resizingMode: .stretch)
            
        }
        
        public static var right: UIImage? {
            return UIImage(named: "navigation-right")?.resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0),
                                                                           resizingMode: .stretch)
        }
        
        
        
        public static var verticalPoints: UIImage? {
            return UIImage(named: "navigation-vertical-points")?.resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0),
                                                                           resizingMode: .stretch)
        }
    }
    
    struct PhotoDetail {
        public static var purchaseBackground: UIImage? {
            return UIImage(named: "purchase-background")?.resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0),
                                                                           resizingMode: .stretch)
        }
    }
}