This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import CoreGraphics
|
||||
import Foundation
|
||||
import MacToolsPluginKit
|
||||
|
||||
struct DisplayResolutionInfo: Equatable {
|
||||
let modeId: Int32
|
||||
let width: Int
|
||||
let height: Int
|
||||
let pixelWidth: Int
|
||||
let pixelHeight: Int
|
||||
let refreshRate: Double
|
||||
let isHiDPI: Bool
|
||||
let isNative: Bool
|
||||
let isDefault: Bool
|
||||
let isCurrent: Bool
|
||||
|
||||
var displayTitle: String { "\(width)×\(height)" }
|
||||
var aspectRatio: Double { Double(width) / Double(height) }
|
||||
|
||||
static func == (lhs: Self, rhs: Self) -> Bool {
|
||||
lhs.modeId == rhs.modeId
|
||||
}
|
||||
}
|
||||
|
||||
enum DisplayResolutionError: Error, LocalizedError {
|
||||
case displayUnavailable(displayID: CGDirectDisplayID)
|
||||
case modeNotFound(modeId: Int32)
|
||||
case beginConfigFailed(CGError)
|
||||
case configureFailed(CGError)
|
||||
case completeFailed(CGError)
|
||||
|
||||
var errorDescription: String? {
|
||||
localizedDescription(localization: PluginLocalization(bundle: .main))
|
||||
}
|
||||
|
||||
func localizedDescription(localization: PluginLocalization) -> String {
|
||||
switch self {
|
||||
case .displayUnavailable:
|
||||
return localization.string("error.displayUnavailable", defaultValue: "显示器已断开连接")
|
||||
case .modeNotFound:
|
||||
return localization.string("error.modeNotFound", defaultValue: "分辨率模式已失效")
|
||||
case .beginConfigFailed:
|
||||
return localization.string("error.beginConfigFailed", defaultValue: "无法开始显示配置")
|
||||
case .configureFailed:
|
||||
return localization.string("error.configureFailed", defaultValue: "配置显示模式失败")
|
||||
case .completeFailed:
|
||||
return localization.string("error.completeFailed", defaultValue: "提交显示配置失败")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user