Initial commit for first version of project
This commit is contained in:
49
GasTankAR/Model/ProjectPhoto.swift
Normal file
49
GasTankAR/Model/ProjectPhoto.swift
Normal file
@ -0,0 +1,49 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
/// JPEG-kodierte Bilddaten.
|
||||
@Attribute(.externalStorage) var imageData: 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,
|
||||
latitude: Double? = nil,
|
||||
longitude: Double? = nil,
|
||||
project: Project? = nil
|
||||
) {
|
||||
self.creationDate = creationDate
|
||||
self.imageData = imageData
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user