mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
60 lines
1.8 KiB
Swift
60 lines
1.8 KiB
Swift
//
|
|
// Label.swift
|
|
// Kit
|
|
//
|
|
// Created by Serhiy Mytrovtsiy on 30/03/2021.
|
|
// Using Swift 5.0.
|
|
// Running on macOS 10.15.
|
|
//
|
|
// Copyright © 2021 Serhiy Mytrovtsiy. All rights reserved.
|
|
//
|
|
|
|
import Cocoa
|
|
|
|
public class Label: WidgetWrapper {
|
|
private var label: String
|
|
|
|
internal init(title: String, config: NSDictionary) {
|
|
if let title = config["Title"] as? String {
|
|
self.label = title
|
|
} else {
|
|
self.label = title
|
|
}
|
|
|
|
super.init(.label, title: title, frame: CGRect(
|
|
x: 0,
|
|
y: Constants.Widget.margin.y,
|
|
width: 6 + (2*Constants.Widget.margin.x),
|
|
height: Constants.Widget.height - (2*Constants.Widget.margin.y)
|
|
))
|
|
|
|
self.canDrawConcurrently = true
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
public override func draw(_ dirtyRect: NSRect) {
|
|
super.draw(dirtyRect)
|
|
|
|
let size: CGSize = CGSize(width: 6, height: self.frame.height / 3)
|
|
var margin: CGPoint = CGPoint(x: Constants.Widget.margin.x, y: 0)
|
|
let style = NSMutableParagraphStyle()
|
|
style.alignment = .center
|
|
|
|
let stringAttributes = [
|
|
NSAttributedString.Key.font: NSFont.systemFont(ofSize: 7, weight: .regular),
|
|
NSAttributedString.Key.foregroundColor: NSColor.textColor,
|
|
NSAttributedString.Key.paragraphStyle: style
|
|
]
|
|
|
|
for char in String(self.label.prefix(3)).uppercased().reversed() {
|
|
let rect = CGRect(x: margin.x, y: margin.y, width: size.width, height: size.height)
|
|
let str = NSAttributedString.init(string: "\(char)", attributes: stringAttributes)
|
|
str.draw(with: rect)
|
|
margin.y += size.height
|
|
}
|
|
}
|
|
}
|