import Foundation /// Formatiert Neigungswerte mit vorangestelltem Richtungsbuchstaben statt /// Vorzeichen – "H 1.8°" statt "1.8°", "L 0.9°" statt "-0.9°". /// /// Gemeinsam für App und Live-Activity-Widget, deshalb hier statt in /// `Shared/`, das die Extension nicht mitkompiliert (siehe /// `LevelActivityAttributes.swift`). enum LevelDirectionFormatting { /// "1.8°" – Betrag ohne Vorzeichen, für Stellen, die die Richtung schon /// im Wort oder Buchstaben ausdrücken. static func magnitude(_ value: Double?) -> String { guard let value else { return "–" } return String(format: "%.1f°", abs(value)) } /// Längsneigung als Kachel: positiv (Heck höher) → "H", negativ (Front /// höher) → "F". Muss zum Vorzeichen von `LevelState.pitch` passen. static func pitchTile(_ value: Double?) -> String { guard let value else { return "–" } return "\(value >= 0 ? "H" : "F") \(magnitude(value))" } /// Querneigung als Kachel: positiv (rechts höher) → "R", negativ (links /// höher) → "L". Muss zum Vorzeichen von `LevelState.roll` passen. static func rollTile(_ value: Double?) -> String { guard let value else { return "–" } return "\(value >= 0 ? "R" : "L") \(magnitude(value))" } }