forked from MonitorControl/MonitorControl
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOSDUtils.swift
More file actions
77 lines (66 loc) · 2.78 KB
/
OSDUtils.swift
File metadata and controls
77 lines (66 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// Copyright © MonitorControl. @victorchabbert, @JoniVR, @theOneyouseek, @waydabber and others
import Cocoa
class OSDUtils: NSObject {
enum OSDImage: Int64 {
case brightness = 1
case audioSpeaker = 3
case audioSpeakerMuted = 4
case contrast = 0
}
static func getOSDImageByCommand(command: Command, value: Float = 1) -> OSDImage {
var osdImage: OSDImage
switch command {
case .audioSpeakerVolume: osdImage = value > 0 ? .audioSpeaker : .audioSpeakerMuted
case .audioMuteScreenBlank: osdImage = .audioSpeakerMuted
case .contrast: osdImage = .contrast
default: osdImage = .brightness
}
return osdImage
}
static func showOsd(displayID: CGDirectDisplayID, command: Command, value: Float, maxValue: Float = 1, roundChiclet: Bool = false, lock: Bool = false) {
guard let manager = OSDManager.sharedManager() as? OSDManager else {
return
}
let osdImage = self.getOSDImageByCommand(command: command, value: value)
let filledChiclets: Int
let totalChiclets: Int
if roundChiclet {
let osdChiclet = OSDUtils.chiclet(fromValue: value, maxValue: maxValue)
filledChiclets = Int(round(osdChiclet))
totalChiclets = 16
} else {
filledChiclets = Int(value * 100)
totalChiclets = Int(maxValue * 100)
}
manager.showImage(osdImage.rawValue, onDisplayID: displayID, priority: 0x1F4, msecUntilFade: 1000, filledChiclets: UInt32(filledChiclets), totalChiclets: UInt32(totalChiclets), locked: lock)
}
static func showOsdVolumeDisabled(displayID: CGDirectDisplayID) {
guard let manager = OSDManager.sharedManager() as? OSDManager else {
return
}
manager.showImage(22, onDisplayID: displayID, priority: 0x1F4, msecUntilFade: 1000)
}
static func showOsdMuteDisabled(displayID: CGDirectDisplayID) {
guard let manager = OSDManager.sharedManager() as? OSDManager else {
return
}
manager.showImage(21, onDisplayID: displayID, priority: 0x1F4, msecUntilFade: 1000)
}
static func popEmptyOsd(displayID: CGDirectDisplayID, command: Command) {
guard let manager = OSDManager.sharedManager() as? OSDManager else {
return
}
let osdImage = self.getOSDImageByCommand(command: command)
manager.showImage(osdImage.rawValue, onDisplayID: displayID, priority: 0x1F4, msecUntilFade: 0)
}
static let chicletCount: Float = 16
static func chiclet(fromValue value: Float, maxValue: Float, half: Bool = false) -> Float {
(value * self.chicletCount * (half ? 2 : 1)) / maxValue
}
static func value(fromChiclet chiclet: Float, maxValue: Float, half: Bool = false) -> Float {
(chiclet * maxValue) / (self.chicletCount * (half ? 2 : 1))
}
static func getDistance(fromNearestChiclet chiclet: Float) -> Float {
abs(chiclet.rounded(.towardZero) - chiclet)
}
}