KMAdvertisementModelTransition.swift 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. //
  2. // KMAdvertisementModelTansition.swift
  3. // KMAdvertisement
  4. //
  5. // Created by lizhe on 2022/12/2.
  6. //
  7. import AppKit
  8. @objcMembers open class KMAdvertisementModelTransition: NSObject {
  9. //MARK: 模型转换
  10. //颜色模型转换
  11. public static func transitionColor(color: KMAdvertisementModelItem.Color?, highlight:Bool) -> NSColor {
  12. var result = NSColor.clear
  13. guard let tempColor = color else { return result }
  14. if highlight {
  15. let darkHex = tempColor.height?.dark?.hex
  16. let darkAlpha = tempColor.height?.dark?.alpha
  17. let universalHex = tempColor.height?.universal?.hex
  18. let universalAlpha = tempColor.height?.universal?.alpha
  19. let light = NSColor.init(hex: universalHex ?? "").withAlphaComponent(CGFloat(universalAlpha ?? 1))
  20. let dark = NSColor.init(hex: darkHex ?? universalHex ?? "").withAlphaComponent(CGFloat(darkAlpha ?? universalAlpha ?? 1))
  21. result = KMAdvertisementConfig.adapterDark(light: light , dark: dark) as! NSColor
  22. } else {
  23. let darkHex = tempColor.normal?.dark?.hex
  24. let darkAlpha = tempColor.normal?.dark?.alpha
  25. let universalHex = tempColor.normal?.universal?.hex
  26. let universalAlpha = tempColor.normal?.universal?.alpha
  27. let light = NSColor.init(hex: universalHex ?? "").withAlphaComponent(CGFloat(universalAlpha ?? 1))
  28. let dark = NSColor.init(hex: darkHex ?? universalHex ?? "").withAlphaComponent(CGFloat(darkAlpha ?? universalAlpha ?? 1))
  29. result = KMAdvertisementConfig.adapterDark(light: light, dark: dark) as! NSColor
  30. }
  31. return result
  32. }
  33. //图片转换
  34. public static func transitionImagePath(image: KMAdvertisementModelItem.Image?, highlight:Bool) -> String {
  35. var result = ""
  36. guard let tempImage = image else { return result }
  37. if highlight {
  38. if tempImage.height != nil {
  39. result = transitionLanguage(langeuage: KMAdvertisementConfig.isDarkModel() ? tempImage.height!.dark : tempImage.height!.universal)
  40. }
  41. } else {
  42. if tempImage.normal != nil {
  43. result = transitionLanguage(langeuage: KMAdvertisementConfig.isDarkModel() ? tempImage.normal?.dark : tempImage.normal?.universal)
  44. }
  45. }
  46. return result
  47. }
  48. //多语转换
  49. @objc public static func transitionLanguage(langeuage: KMAdvertisementModelItem.Language?) -> String {
  50. var result = ""
  51. // let languageConfig = KMAdvertisementManager.manager.configuration.language
  52. // if languageConfig != .unknow {
  53. // if languageConfig == .en {
  54. // result = langeuage?.en ?? ""
  55. // } else if languageConfig == .zhCN {
  56. // result = langeuage?.zh_CN ?? ""
  57. // } else if languageConfig == .zhTW {
  58. // result = langeuage?.zh_TW ?? ""
  59. // }
  60. // } else {
  61. // let string = KMAdvertisementModelTransition.getLanguageType()
  62. // if string == "zh-Hans-CN" {
  63. // result = langeuage?.zh_CN ?? ""
  64. // } else if string == "zh-Hans-TW" {
  65. // result = langeuage?.zh_TW ?? ""
  66. // } else {
  67. // result = langeuage?.en ?? ""
  68. // }
  69. // }
  70. return result
  71. }
  72. public static func getLanguageType() -> String {
  73. #if os(iOS)
  74. let def = UserDefaults.standard
  75. let allLanguages: [String] = def.object(forKey: "AppleLanguages") as! [String]
  76. let chooseLanguage = allLanguages.first
  77. return chooseLanguage ?? "en"
  78. #elseif os(OSX)
  79. // let locale = NSLocale.current.languageCode
  80. // let chooseLanguage = Locale.preferredLanguages[0]
  81. let allLanguages: [String] = UserDefaults.standard.object(forKey: "AppleLanguages") as! [String]
  82. let chooseLanguage: String = allLanguages.first ?? "en"
  83. return chooseLanguage
  84. #endif
  85. }
  86. }
  87. extension NSColor {
  88. convenience init(hex: String) {
  89. var hexString = hex
  90. if hex.starts(with: "#") {
  91. hexString = String(hex.dropFirst())
  92. }
  93. if let ui64 = UInt64(hexString, radix: 16) {
  94. self.init(hex: Int(ui64))
  95. } else {
  96. self.init(hex: 0) // <--- black
  97. }
  98. // or using ternaries as requested
  99. // let hexString = hex.starts(with: "#") ? String(hex.dropFirst()) : hex
  100. // let ui64 = UInt64(hexString, radix: 16)
  101. // self.init(hex: ui64 != nil ? Int(ui64!) : 0)
  102. }
  103. convenience init(hex: Int) {
  104. let components = (
  105. R: CGFloat((hex >> 16) & 0xff) / 255,
  106. G: CGFloat((hex >> 08) & 0xff) / 255,
  107. B: CGFloat((hex >> 00) & 0xff) / 255
  108. )
  109. self.init(red: components.R, green: components.G, blue: components.B, alpha: 1)
  110. }
  111. // func toHex(alpha: Bool = false) -> String? {
  112. // guard let components = cgColor.components, components.count >= 3 else {
  113. // return nil
  114. // }
  115. //
  116. // let r = Float(components[0])
  117. // let g = Float(components[1])
  118. // let b = Float(components[2])
  119. // var a = Float(1.0)
  120. //
  121. // if components.count >= 4 {
  122. // a = Float(components[3])
  123. // }
  124. //
  125. // if alpha {
  126. // return String(format: "%02lX%02lX%02lX%02lX", lroundf(r * 255), lroundf(g * 255), lroundf(b * 255), lroundf(a * 255))
  127. // } else {
  128. // return String(format: "%02lX%02lX%02lX", lroundf(r * 255), lroundf(g * 255), lroundf(b * 255))
  129. // }
  130. // }
  131. }