//
//  QSLSizeFit.swift
//  QuickSearchLocation
//
//  Created by Destiny on 2024/11/25.
//

import Foundation
import UIKit

// MARK: - 适配屏幕比例
class QSLSizeFit : NSObject {
    
    static let shared : QSLSizeFit = {
        let shared = QSLSizeFit()
        return shared
    }()
    
    // 宽度适配
    let rpx : Double
    // 高度适配
    let hpx : Double
    
    override init() {
        rpx = Double(1.0 * UIScreen.main.bounds.size.width / 360)
        hpx = Double(1.0 * UIScreen.main.bounds.size.height / 640)
    }
    
    func getIRpx(value : Int) -> Int{
        return Int(rpx * Double(value))
    }
    
    func getFRpx(value : Float) -> Float{
        return Float(rpx) * value
    }
    
    func getDRpx(value : Double) -> Double{
        return Double(rpx) * value
    }
    
    func getIRHpx(value : Int) -> Int{
        return Int(hpx * Double(value))
    }
    
    func getFRHpx(value : Float) -> Float{
        return Float(hpx) * value
    }
    
    func getDRHpx(value : Double) -> Double{
        return hpx * value
    }
    
}

extension Int {
    
    // MARK: - 适配屏幕比例
    var rpx : Int {
        return QSLSizeFit.shared.getIRpx(value: self)
    }
    
    var hpx : Int {
        return QSLSizeFit.shared.getIRHpx(value: self)
    }
}

extension Float {
    
    // MARK: - 适配屏幕比例
    var rpx : Float {
        return QSLSizeFit.shared.getFRpx(value: self)
    }
    
    var hpx : Float {
        return QSLSizeFit.shared.getFRHpx(value: self)
    }
}

extension Double {
    
    // MARK: - 适配屏幕比例
    var rpx : Double {
        return QSLSizeFit.shared.getDRpx(value: self)
    }
    
    var hpx : Double {
        return QSLSizeFit.shared.getDRHpx(value: self)
    }
}

extension CGFloat {
    
    // MARK: - 适配屏幕比例
    var rpx : CGFloat {
        return CGFloat(QSLSizeFit.shared.getFRpx(value: Float(self)))
    }
    
    var hpx : CGFloat {
        return CGFloat(QSLSizeFit.shared.getFRHpx(value: Float(self)))
    }
}
