[WIP] Monoforums

This commit is contained in:
Isaac 2025-05-05 22:18:39 +02:00
parent 3db26de77b
commit 22ea05b3aa
27 changed files with 384 additions and 101 deletions

View file

@ -13,8 +13,16 @@ import Cocoa
import UIKit
#endif
public final class ContainerViewReference {
public weak var value: GView?
public init(value: GView) {
self.value = value
}
}
public protocol ChartViewRenderer: AnyObject {
var containerViews: [GView] { get set }
var containerViews: [ContainerViewReference] { get set }
func render(context: CGContext, bounds: CGRect, chartFrame: CGRect)
}
@ -22,7 +30,7 @@ public protocol ChartViewRenderer: AnyObject {
private let exponentialAnimationTrashold: CGFloat = 100
class BaseChartRenderer: ChartViewRenderer {
var containerViews: [GView] = []
var containerViews: [ContainerViewReference] = []
var optimizationLevel: CGFloat = 1 {
didSet {
@ -116,7 +124,12 @@ class BaseChartRenderer: ChartViewRenderer {
}
func setNeedsDisplay() {
containerViews.forEach { $0.setNeedsDisplay($0.bounds) }
containerViews.forEach { containerView in
guard let value = containerView.value else {
return
}
value.setNeedsDisplay(value.bounds)
}
}
var refreshClosure: () -> Void {

View file

@ -14,7 +14,7 @@ import UIKit
#endif
class PerformanceRenderer: ChartViewRenderer {
var containerViews: [GView] = []
var containerViews: [ContainerViewReference] = []
private var previousTickTime: TimeInterval = CACurrentMediaTime()