How darkwingtori/grafiti-vision works
Jet Set Vision is an iOS AR graffiti app: users grant camera access, aim at detected surfaces, choose a design, place and manipulate it in the live AR scene, then capture and browse saved images. The camera screen orchestrates Spray and Vision modes; ARKit tracking and plane detection support placement, while Apple Vision classifies frames and detects people only in Vision Mode. Captures are stored locally as JPEGs with a Codable JSON index. The graph follows the provided source excerpts and index; unsampled implementations are included only where documented, and uncertain connections are omitted.
Main entry points: CameraView.swift Camera screen · ARViewContainer.swift AR view bridge · GraffitiPlacementController.swift Graffiti placement · ARCaptureController.swift AR capture
Components 19
App experience
- App entry
JetSetVision/App/JetSetVisionApp.swift - Camera screen
JetSetVision/Features/Camera/CameraView.swift - Camera permission
JetSetVision/Services/CameraPermissionService.swift - Vision overlay
JetSetVision/Features/Vision/VisionModeView.swift - Mode state
JetSetVision/App/AppState.swift
AR and perception
- AR view bridge
JetSetVision/AR/ARViewContainer.swift - AR session
JetSetVision/AR/ARSessionManager.swift - Plane detection
JetSetVision/AR/PlaneDetector.swift - Vision processing
JetSetVision/AR/VisionProcessor.swift
Graffiti creation
- Graffiti picker
JetSetVision/Features/Spray/GraffitiPicker.swift - Graffiti placement
JetSetVision/Features/Spray/GraffitiPlacementController.swift - Graffiti designs
JetSetVision/Models/GraffitiAsset.swift - Artwork assets
JetSetVision/Resources/Assets.xcassets - Graffiti renderer
JetSetVision/Services/GraffitiRenderer.swift
Capture library
- AR capture
JetSetVision/AR/ARCaptureController.swift - Capture gallery
JetSetVision/Features/Gallery/GalleryView.swift - Capture store
JetSetVision/Services/CaptureStore.swift - Capture metadata
JetSetVision/Models/Capture.swift
Other components
- User
Connections 27
- User → App entry: opens
JetSetVision/App/JetSetVisionApp.swift - App entry → Camera screen: shows
JetSetVision/App/JetSetVisionApp.swift - User → Camera screen: uses
readme.md - Camera screen → Camera permission: requests access
JetSetVision/Features/Camera/CameraView.swift - Camera screen → AR view bridge: hosts
JetSetVision/Features/Camera/CameraView.swift - AR view bridge → AR session: configures
JetSetVision/AR/ARViewContainer.swift - AR session → Plane detection: forwards anchors
JetSetVision/AR/ARSessionManager.swift - AR session → Vision processing: offers frames
JetSetVision/AR/ARSessionManager.swift - Camera screen → Vision overlay: shows in Vision Mode
JetSetVision/Features/Camera/CameraView.swift - Vision overlay → Vision processing: displays results
JetSetVision/Features/Vision/VisionModeView.swift - Camera screen → Mode state: switches mode
JetSetVision/Features/Camera/CameraView.swift - AR view bridge → Mode state: checks mode
JetSetVision/AR/ARViewContainer.swift - AR view bridge → Graffiti placement: routes taps
JetSetVision/AR/ARViewContainer.swift - Camera screen → Graffiti picker: shows in Spray Mode
JetSetVision/Features/Camera/CameraView.swift - Graffiti picker → Graffiti placement: updates selection
JetSetVision/Features/Spray/GraffitiPicker.swift - Graffiti picker → Graffiti designs: lists designs
JetSetVision/Features/Spray/GraffitiPicker.swift - Graffiti designs → Artwork assets: names bundled art
JetSetVision/Models/GraffitiAsset.swift - Graffiti placement → Graffiti renderer: requests material
JetSetVision/Features/Spray/GraffitiPlacementController.swift - Graffiti placement → Graffiti designs: places selected design
JetSetVision/Features/Spray/GraffitiPlacementController.swift - AR view bridge → AR capture: attaches AR view
JetSetVision/AR/ARViewContainer.swift - Camera screen → AR capture: starts capture
JetSetVision/Features/Camera/CameraView.swift - AR capture → Graffiti placement: hides highlight
JetSetVision/AR/ARCaptureController.swift - AR capture → Capture store: saves snapshot
JetSetVision/AR/ARCaptureController.swift - Capture store → Capture metadata: indexes records
JetSetVision/Services/CaptureStore.swift - Camera screen → Capture gallery: opens gallery
JetSetVision/Features/Camera/CameraView.swift - Capture gallery → Capture store: loads and deletes
JetSetVision/Features/Gallery/GalleryView.swift - Capture gallery → Capture metadata: shows records
JetSetVision/Features/Gallery/GalleryView.swift