mirror of
https://github.com/Toxblh/MTMR.git
synced 2026-01-11 17:38:38 +00:00
46 lines
1.6 KiB
Swift
46 lines
1.6 KiB
Swift
import Cocoa
|
|
import AppKit
|
|
import AVFoundation
|
|
import CoreAudio
|
|
|
|
class BrightnessViewController: NSCustomTouchBarItem {
|
|
private(set) var sliderItem: NSSlider!
|
|
|
|
init(identifier: NSTouchBarItem.Identifier, image: NSImage? = nil) {
|
|
super.init(identifier: identifier)
|
|
let brightness:Double = Double(getBrightness())
|
|
sliderItem = NSSlider(value: brightness*100.0, minValue: 0.0, maxValue: 100.0, target: self, action:#selector(BrightnessViewController.sliderValueChanged(_:)))
|
|
|
|
if (image != nil) {
|
|
sliderItem.cell = CustomSliderCell(knob: image!)
|
|
}
|
|
|
|
self.view = sliderItem
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
@objc func sliderValueChanged(_ sender: Any) {
|
|
if let sliderItem = sender as? NSSlider {
|
|
setBrightness(level: Float32(sliderItem.intValue)/100.0)
|
|
}
|
|
}
|
|
|
|
private func getBrightness() -> Float32 {
|
|
var level: Float32 = 0.5
|
|
let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IODisplayConnect"))
|
|
|
|
IODisplayGetFloatParameter(service, 0, kIODisplayBrightnessKey as CFString, &level)
|
|
return level
|
|
}
|
|
|
|
private func setBrightness(level: Float) {
|
|
let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IODisplayConnect"))
|
|
|
|
IODisplaySetFloatParameter(service, 0, kIODisplayBrightnessKey as CFString, level)
|
|
IOObjectRelease(service)
|
|
}
|
|
}
|