35 lines
847 B
Swift
35 lines
847 B
Swift
import CoreGraphics
|
|
import Foundation
|
|
|
|
extension Math {
|
|
final class DisplayRadical: DisplayNode {
|
|
var radicand: DisplayList?
|
|
var degree: DisplayList?
|
|
var radicalGlyph: DisplayNode?
|
|
|
|
var radicalShift: CGFloat = 0
|
|
var topKern: CGFloat = 0
|
|
var lineThickness: CGFloat = 0
|
|
|
|
init(radicand: DisplayList?, glyph: DisplayNode, position: CGPoint, range: NSRange) {
|
|
self.radicand = radicand
|
|
self.radicalGlyph = glyph
|
|
super.init()
|
|
self.position = position
|
|
self.range = range
|
|
}
|
|
|
|
override var position: CGPoint {
|
|
didSet { updateRadicandPosition() }
|
|
}
|
|
|
|
func updateRadicandPosition() {
|
|
guard let radicand, let radicalGlyph else { return }
|
|
radicand.position = CGPoint(
|
|
x: position.x + radicalShift + radicalGlyph.width,
|
|
y: position.y
|
|
)
|
|
}
|
|
}
|
|
}
|