78 lines
1.9 KiB
Swift
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()
|
|
}
|
|
|
|
}
|