// // ProjectPhoto.swift // GasTankAR // // Created by Dennis Nemec on 27.08.26. // import Foundation import SwiftData import CoreLocation /// Ein im AR-Modus aufgenommenes Foto (Snapshot der Kamera-Sicht), das zu einem Projekt gehört. /// Die Bilddaten liegen wegen ihrer Größe extern (`.externalStorage`). @Model final class ProjectPhoto { /// Aufnahmezeitpunkt – Grundlage für die Gruppierung in der Galerie. var creationDate: Date /// Aktuelle Bilddaten. Nach einer Bearbeitung enthält diese Property die gerenderte PNG-Datei. @Attribute(.externalStorage) var imageData: Data /// Unveränderte Originaldaten für die Funktion „Zeichnung zurücksetzen“. @Attribute(.externalStorage) var originalImageData: Data? /// Gespeicherte Version des Fotos mit Zeichnung. @Attribute(.externalStorage) var annotatedImageData: Data? /// Geografische Breite des Aufnahmeorts, sofern beim Aufnehmen ein Standort vorlag. var latitude: Double? /// Geografische Länge des Aufnahmeorts, sofern beim Aufnehmen ein Standort vorlag. var longitude: Double? /// Zugehöriges Projekt (Rückbeziehung zu `Project.photos`). var project: Project? init( creationDate: Date, imageData: Data, originalImageData: Data? = nil, annotatedImageData: Data? = nil, latitude: Double? = nil, longitude: Double? = nil, project: Project? = nil ) { self.creationDate = creationDate self.imageData = imageData self.originalImageData = originalImageData self.annotatedImageData = annotatedImageData self.latitude = latitude self.longitude = longitude self.project = project } /// Aufnahmeort als Koordinate – `nil`, wenn kein Standort gespeichert wurde. var coordinate: CLLocationCoordinate2D? { guard let latitude, let longitude else { return nil } return CLLocationCoordinate2D(latitude: latitude, longitude: longitude) } }