Files

78 lines
1.9 KiB
Swift

//
// 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()
}
}