# File Descriptions This file provides a brief but thorough description of what each non-ignored file in the project is supposed to do. ## `.gitignore` Specifies intentionally untracked files to ignore. ## `AGENTS.md` Provides guidance for AI agents working with the codebase. ## `BLUEPRINT.md` A technical specification document for the project. ## `README.md` The main README for the project. ## `TODO.md` A roadmap and list of future work for the project. ## `app/CMakeLists.txt` CMake script for building the native C++ code in the app module. ## `app/build.gradle.kts` Gradle build script for the main application module. ## `app/libs/vuforia.aar` The Vuforia Augmented Reality library. ## `app/proguard-rules.pro` Configuration for ProGuard to shrink, obfuscate, and optimize the app. ## `app/src/main/AndroidManifest.xml` The Android application manifest file. ## `app/src/main/assets/Astronaut.jpg` An image asset of an astronaut. ## `app/src/main/assets/Lander.jpg` An image asset of a lander. ## `app/src/main/assets/shaders/fragment_shader.glsl` The fragment shader for OpenGL rendering. ## `app/src/main/assets/shaders/vertex_shader.glsl` The vertex shader for OpenGL rendering. ## `app/src/main/cpp/GraffitiJNI.cpp` The JNI implementation for the native functions. ## `app/src/main/ic_launcher-playstore.png` The application icon for the Google Play Store. ## `app/src/main/java/com/hereliesaz/graffitixr/ArState.kt` Defines the state for the AR components of the application. ## `app/src/main/java/com/hereliesaz/graffitixr/MainActivity.kt` The main activity of the application. ## `app/src/main/java/com/hereliesaz/graffitixr/MainScreen.kt` The main Jetpack Compose screen for the application. ## `app/src/main/java/com/hereliesaz/graffitixr/MainViewModel.kt` The main ViewModel for the application, handling business logic and state. ## `app/src/main/java/com/hereliesaz/graffitixr/MainViewModelFactory.kt` A factory for creating instances of the MainViewModel. ## `app/src/main/java/com/hereliesaz/graffitixr/RotationAxis.kt` Defines the possible axes of rotation for gestures. ## `app/src/main/java/com/hereliesaz/graffitixr/UiState.kt` Defines the UI state for the application. ## `app/src/main/java/com/hereliesaz/graffitixr/VuforiaJNI.kt` The JNI bridge for communicating with the native Vuforia C++ code. ## `app/src/main/java/com/hereliesaz/graffitixr/VuforiaManager.kt` Manages the lifecycle and state of the Vuforia engine. ## `app/src/main/java/com/hereliesaz/graffitixr/composables/ImageTraceScreen.kt` A composable screen for tracing images in non-AR mode. ## `app/src/main/java/com/hereliesaz/graffitixr/composables/MockupScreen.kt` A composable screen for creating mockups on static images. ## `app/src/main/java/com/hereliesaz/graffitixr/composables/ProgressIndicator.kt` A composable for displaying a progress indicator. ## `app/src/main/java/com/hereliesaz/graffitixr/composables/RotationAxisFeedback.kt` A composable to provide visual feedback for the current rotation axis. ## `app/src/main/java/com/hereliesaz/graffitixr/composables/SettingsScreen.kt` A composable screen for application settings. ## `app/src/main/java/com/hereliesaz/graffitixr/composables/TapFeedbackEffect.kt` A composable that provides visual feedback for tap gestures. ## `app/src/main/java/com/hereliesaz/graffitixr/composables/TitleOverlay.kt` A composable for overlaying a title on the screen. ## `app/src/main/java/com/hereliesaz/graffitixr/composables/VuforiaCameraScreen.kt` A composable that displays the camera feed from Vuforia. ## `app/src/main/java/com/hereliesaz/graffitixr/composables/VuforiaRenderer.kt` A composable responsible for rendering the Vuforia camera view. ## `app/src/main/java/com/hereliesaz/graffitixr/data/ProjectData.kt` A data class representing the state of a user's project. ## `app/src/main/java/com/hereliesaz/graffitixr/data/Serializers.kt` Custom serializers for data classes used in the application. ## `app/src/main/java/com/hereliesaz/graffitixr/dialogs/AdjustmentSliderDialog.kt` A dialog for adjusting image properties with a slider. ## `app/src/main/java/com/hereliesaz/graffitixr/dialogs/ColorBalanceDialog.kt` A dialog for adjusting the color balance of an image. ## `app/src/main/java/com/hereliesaz/graffitixr/dialogs/DoubleTapHintDialog.kt` A dialog to hint to the user to double tap. ## `app/src/main/java/com/hereliesaz/graffitixr/dialogs/OnboardingDialog.kt` A dialog for the application's onboarding flow. ## `app/src/main/java/com/hereliesaz/graffitixr/ui/theme/Color.kt` Defines the color palette for the application's theme. ## `app/src/main/java/com/hereliesaz/graffitixr/ui/theme/Theme.kt` Defines the overall theme for the application. ## `app/src/main/java/com/hereliesaz/graffitixr/ui/theme/Typography.kt` Defines the typography for the application's theme. ## `app/src/main/java/com/hereliesaz/graffitixr/utils/Capture.kt` Utility functions for capturing the screen. ## `app/src/main/java/com/hereliesaz/graffitixr/utils/ImageUtils.kt` Utility functions for working with images. ## `app/src/main/java/com/hereliesaz/graffitixr/utils/MultiGestureDetector.kt` A custom gesture detector for handling multiple gestures simultaneously. ## `app/src/main/java/com/hereliesaz/graffitixr/utils/OnboardingManager.kt` Manages the application's onboarding process. ## `app/src/main/java/com/hereliesaz/graffitixr/utils/Parcelers.kt` Custom parcelers for data classes used in the application. ## `app/src/main/java/com/hereliesaz/graffitixr/utils/RotationGestureDetector.kt` A custom gesture detector for handling rotation gestures. ## `app/src/main/java/com/hereliesaz/graffitixr/utils/Texture.kt` Utility functions for working with OpenGL textures. ## `app/src/main/java/com/hereliesaz/graffitixr/utils/Utils.kt` General utility functions for the application. ## `app/src/main/res/drawable/graffitixr_logo.webp` The logo for the application. ## `app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml` The adaptive launcher icon for the application. ## `app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml` The round adaptive launcher icon for the application. ## `app/src/main/res/mipmap-hdpi/ic_launcher.webp` The high-density launcher icon. ## `app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp` The foreground for the high-density launcher icon. ## `app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.webp` The monochrome high-density launcher icon. ## `app/src/main/res/mipmap-hdpi/ic_launcher_round.webp` The high-density round launcher icon. ## `app/src/main/res/mipmap-mdpi/ic_launcher.webp` The medium-density launcher icon. ## `app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp` The foreground for the medium-density launcher icon. ## `app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.webp` The monochrome medium-density launcher icon. ## `app/src/main/res/mipmap-mdpi/ic_launcher_round.webp` The medium-density round launcher icon. ## `app/src/main/res/mipmap-xhdpi/ic_launcher.webp` The extra-high-density launcher icon. ## `app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp` The foreground for the extra-high-density launcher icon. ## `app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.webp` The monochrome extra-high-density launcher icon. ## `app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp` The extra-high-density round launcher icon. ## `app/src/main/res/mipmap-xxhdpi/ic_launcher.webp` The extra-extra-high-density launcher icon. ## `app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp` The foreground for the extra-extra-high-density launcher icon. ## `app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.webp` The monochrome extra-extra-high-density launcher icon. ## `app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp` The extra-extra-high-density round launcher icon. ## `app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp` The extra-extra-extra-high-density launcher icon. ## `app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp` The foreground for the extra-extra-extra-high-density launcher icon. ## `app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.webp` The monochrome extra-extra-extra-high-density launcher icon. ## `app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp` The extra-extra-extra-high-density round launcher icon. ## `app/src/main/res/values/ic_launcher_background.xml` The background color for the launcher icon. ## `app/src/main/res/values/strings.xml` The string resources for the application. ## `app/src/main/res/values/themes.xml` The theme resources for the application. ## `app/src/main/res/xml/backup_rules.xml` The backup rules for the application. ## `app/src/main/res/xml/data_extraction_rules.xml` The data extraction rules for the application. ## `app/src/main/res/xml/provider_paths.xml` The provider paths for the application. ## `build.gradle.kts` The root Gradle build script for the project. ## `docs/FILE_DESCRIPTIONS.md` This file. ## `gradle.properties` Project-wide Gradle settings. ## `gradle/libs.versions.toml` The Gradle version catalog for managing dependencies. ## `gradle/wrapper/gradle-wrapper.jar` The Gradle wrapper JAR file. ## `gradle/wrapper/gradle-wrapper.properties` The Gradle wrapper properties file. ## `gradlew` The Gradle wrapper script for Linux and macOS. ## `gradlew.bat` The Gradle wrapper script for Windows. ## `settings.gradle.kts` The Gradle settings script for the project. ## `setup_ndk.sh` A script for setting up the Android NDK. ## `vuforia.zip` A zip file containing the Vuforia SDK. ## `vuforia/CMakeLists.txt` CMake script for building the native C++ code in the vuforia module. ## `vuforia/build.gradle.kts` Gradle build script for the vuforia module. ## `vuforia/build` This directory and its contents are build artifacts for the vuforia module. ## `vuforia/licenses` This directory and its contents are the Vuforia license. ## `vuforia/samples` This directory and its contents are sample code for the Vuforia SDK. ## `vuforia/sdk` This directory and its contents are the Vuforia SDK.