SwiftUI + UIKit Hybrid
Modern declarative UI with complex camera integration
Metal GPU Framework
Real-time light painting effects and rendering
AVFoundation
Professional camera capture and video processing
Core Data
Local persistence with migration support
Core Image
Advanced image processing pipeline
AppIntents
Siri integration for voice control
Primary design pattern for clean separation of concerns:
EasyViewModel
- Main app stateTimelapseCameraViewModel
- Camera sessionTimelapseListViewModel
- Media organizationSharedObjectsController
- ResourcesCore singletons for shared resources:
CoreDataManager.shared
Database persistence
SharedMetalCIContext.shared
GPU rendering context
OrientationManager.shared
Device orientation
TaskManager.shared
Background processing
Camera Input → Metal Texture Cache → Frame Blending Engine → Light Trail Composition → Display/Export
Device and pipeline management
Optimized Core Image context
Real-time light trail blending
enum BlendMode: String, CaseIterable { case additive = "additiveBlendFragment" case screen = "screenBlendFragment" case lighten = "lightenBlendFragment" case starTrail = "starTrailBlendFragment" case steelWool = "steelWoolBlendFragment" }
@MainActor class AppSettings: ObservableObject { @AppStorage("selectedTheme") var selectedTheme: String = "dark" @AppStorage("enableMetalAcceleration") var enableMetalAcceleration: Bool = true @AppStorage("lightThreshold") var lightThreshold: Float = 0.5 @AppStorage("trailFadeAmount") var trailFadeAmount: Float = 0.002 }
class TaskManager { private let maxConcurrentTasks: Int = 8 private let semaphore: DispatchSemaphore private let queue: DispatchQueue // .utility QoS }
timelapseRender
- Video compositionimageStackRender
- Light trail processingimportFiles
- Media import operationscreateOptimizedFiles
- Asset optimizationclass OrientationManager: ObservableObject { @Published var isPortraitUpsideDown: Bool = false @Published var rotationAngle: Double = 0.0 private var isOrientationLocked: Bool }
-Onone
for debugging