// // Scroller.swift // PrivadoVPN // // Created by Murad Shabanov on 01.03.2022. // Copyright © 2022 Privado LLC. All rights reserved. // import Foundation class Scroller: NSScroller { var backgroundColor: NSColor var knobColor: NSColor var xOffset: CGFloat var isHorizontal = false var bkgrColour: NSColor { get { return self.backgroundColor } set { self.backgroundColor = newValue } } var knobColour: NSColor { get { return self.knobColor } set { self.knobColor = newValue} } override var frame: CGRect { didSet { let size = self.frame.size self.isHorizontal = size.width > size.height } } convenience init(backgroundColor: NSColor, knobColor: NSColor, xOffset: CGFloat) { self.init(frame: .zero) self.backgroundColor = backgroundColor self.knobColor = knobColor self.xOffset = xOffset } override init(frame frameRect: NSRect) { self.backgroundColor = NSColor(red: 0, green: 8, blue: 44) self.knobColor = NSColor(red: 122, green: 134, blue: 186) self.xOffset = 0 super.init(frame: frameRect) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } // override class func scrollerWidth(for controlSize: NSControl.ControlSize, scrollerStyle: NSScroller.Style) -> CGFloat { // return 12 // } override func draw(_ dirtyRect: NSRect) { self.backgroundColor.setFill() dirtyRect.fill() self.drawKnob() } override func drawKnob() { self.knobColor.setFill() let dx, dy: CGFloat if self.isHorizontal { dx = 0; dy = 3 } else { dx = 3; dy = 0 } let frame = rect(for: .knob).insetBy(dx: dx, dy: dy) NSBezierPath.init(roundedRect: frame, xRadius: 3, yRadius: 3).fill() } }