From 2676be59024cc03aaeca00aecfd3fff512376ca8 Mon Sep 17 00:00:00 2001 From: tanlinxing Date: Fri, 16 Aug 2024 19:37:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9E=84=E5=87=86=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 43 ++ .metadata | 45 ++ README.md | 16 + analysis_options.yaml | 28 + android/.gitignore | 13 + android/app/build.gradle | 58 ++ android/app/src/debug/AndroidManifest.xml | 7 + android/app/src/main/AndroidManifest.xml | 45 ++ .../com/example/aimpoint/MainActivity.kt | 5 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 + android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 7 + android/build.gradle | 18 + android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + android/settings.gradle | 25 + images/pilerCar.png | Bin 0 -> 332610 bytes ios/.gitignore | 34 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.xcodeproj/project.pbxproj | 616 +++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 +++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1418 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 + ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 49 ++ ios/Runner/Runner-Bridging-Header.h | 1 + ios/RunnerTests/RunnerTests.swift | 12 + lib/draws/aim_pointer.dart | 253 +++++++ lib/main.dart | 54 ++ lib/modules/coord_trans.dart | 683 +++++++++++++++++ lib/modules/device_type.dart | 34 + lib/screens/aimpoint_page.dart | 199 +++++ lib/service/process.dart | 67 ++ linux/.gitignore | 1 + linux/CMakeLists.txt | 145 ++++ linux/flutter/CMakeLists.txt | 88 +++ linux/flutter/generated_plugin_registrant.cc | 19 + linux/flutter/generated_plugin_registrant.h | 15 + linux/flutter/generated_plugins.cmake | 25 + linux/main.cc | 6 + linux/my_application.cc | 124 +++ linux/my_application.h | 18 + macos/.gitignore | 7 + macos/Flutter/Flutter-Debug.xcconfig | 1 + macos/Flutter/Flutter-Release.xcconfig | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 14 + macos/Runner.xcodeproj/project.pbxproj | 705 ++++++++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 ++ .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes macos/Runner/Base.lproj/MainMenu.xib | 343 +++++++++ macos/Runner/Configs/AppInfo.xcconfig | 14 + macos/Runner/Configs/Debug.xcconfig | 2 + macos/Runner/Configs/Release.xcconfig | 2 + macos/Runner/Configs/Warnings.xcconfig | 13 + macos/Runner/DebugProfile.entitlements | 12 + macos/Runner/Info.plist | 32 + macos/Runner/MainFlutterWindow.swift | 15 + macos/Runner/Release.entitlements | 8 + macos/RunnerTests/RunnerTests.swift | 12 + pubspec.lock | 440 +++++++++++ pubspec.yaml | 100 +++ test/widget_test.dart | 30 + web/favicon.png | Bin 0 -> 917 bytes web/icons/Icon-192.png | Bin 0 -> 5292 bytes web/icons/Icon-512.png | Bin 0 -> 8252 bytes web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes web/index.html | 38 + web/manifest.json | 35 + windows/.gitignore | 17 + windows/CMakeLists.txt | 108 +++ windows/flutter/CMakeLists.txt | 109 +++ .../flutter/generated_plugin_registrant.cc | 17 + windows/flutter/generated_plugin_registrant.h | 15 + windows/flutter/generated_plugins.cmake | 25 + windows/runner/CMakeLists.txt | 40 + windows/runner/Runner.rc | 121 +++ windows/runner/flutter_window.cpp | 71 ++ windows/runner/flutter_window.h | 33 + windows/runner/main.cpp | 43 ++ windows/runner/resource.h | 16 + windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes windows/runner/runner.exe.manifest | 20 + windows/runner/utils.cpp | 65 ++ windows/runner/utils.h | 19 + windows/runner/win32_window.cpp | 288 +++++++ windows/runner/win32_window.h | 102 +++ 134 files changed, 6350 insertions(+) create mode 100644 .gitignore create mode 100644 .metadata create mode 100644 README.md create mode 100644 analysis_options.yaml create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/kotlin/com/example/aimpoint/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle create mode 100644 images/pilerCar.png create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 ios/RunnerTests/RunnerTests.swift create mode 100644 lib/draws/aim_pointer.dart create mode 100644 lib/main.dart create mode 100644 lib/modules/coord_trans.dart create mode 100644 lib/modules/device_type.dart create mode 100644 lib/screens/aimpoint_page.dart create mode 100644 lib/service/process.dart create mode 100644 linux/.gitignore create mode 100644 linux/CMakeLists.txt create mode 100644 linux/flutter/CMakeLists.txt create mode 100644 linux/flutter/generated_plugin_registrant.cc create mode 100644 linux/flutter/generated_plugin_registrant.h create mode 100644 linux/flutter/generated_plugins.cmake create mode 100644 linux/main.cc create mode 100644 linux/my_application.cc create mode 100644 linux/my_application.h create mode 100644 macos/.gitignore create mode 100644 macos/Flutter/Flutter-Debug.xcconfig create mode 100644 macos/Flutter/Flutter-Release.xcconfig create mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 macos/Runner.xcodeproj/project.pbxproj create mode 100644 macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner/AppDelegate.swift create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 macos/Runner/Base.lproj/MainMenu.xib create mode 100644 macos/Runner/Configs/AppInfo.xcconfig create mode 100644 macos/Runner/Configs/Debug.xcconfig create mode 100644 macos/Runner/Configs/Release.xcconfig create mode 100644 macos/Runner/Configs/Warnings.xcconfig create mode 100644 macos/Runner/DebugProfile.entitlements create mode 100644 macos/Runner/Info.plist create mode 100644 macos/Runner/MainFlutterWindow.swift create mode 100644 macos/Runner/Release.entitlements create mode 100644 macos/RunnerTests/RunnerTests.swift create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 test/widget_test.dart create mode 100644 web/favicon.png create mode 100644 web/icons/Icon-192.png create mode 100644 web/icons/Icon-512.png create mode 100644 web/icons/Icon-maskable-192.png create mode 100644 web/icons/Icon-maskable-512.png create mode 100644 web/index.html create mode 100644 web/manifest.json create mode 100644 windows/.gitignore create mode 100644 windows/CMakeLists.txt create mode 100644 windows/flutter/CMakeLists.txt create mode 100644 windows/flutter/generated_plugin_registrant.cc create mode 100644 windows/flutter/generated_plugin_registrant.h create mode 100644 windows/flutter/generated_plugins.cmake create mode 100644 windows/runner/CMakeLists.txt create mode 100644 windows/runner/Runner.rc create mode 100644 windows/runner/flutter_window.cpp create mode 100644 windows/runner/flutter_window.h create mode 100644 windows/runner/main.cpp create mode 100644 windows/runner/resource.h create mode 100644 windows/runner/resources/app_icon.ico create mode 100644 windows/runner/runner.exe.manifest create mode 100644 windows/runner/utils.cpp create mode 100644 windows/runner/utils.h create mode 100644 windows/runner/win32_window.cpp create mode 100644 windows/runner/win32_window.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..29a3a50 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..9d32c61 --- /dev/null +++ b/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "b0850beeb25f6d5b10426284f506557f66181b36" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: b0850beeb25f6d5b10426284f506557f66181b36 + base_revision: b0850beeb25f6d5b10426284f506557f66181b36 + - platform: android + create_revision: b0850beeb25f6d5b10426284f506557f66181b36 + base_revision: b0850beeb25f6d5b10426284f506557f66181b36 + - platform: ios + create_revision: b0850beeb25f6d5b10426284f506557f66181b36 + base_revision: b0850beeb25f6d5b10426284f506557f66181b36 + - platform: linux + create_revision: b0850beeb25f6d5b10426284f506557f66181b36 + base_revision: b0850beeb25f6d5b10426284f506557f66181b36 + - platform: macos + create_revision: b0850beeb25f6d5b10426284f506557f66181b36 + base_revision: b0850beeb25f6d5b10426284f506557f66181b36 + - platform: web + create_revision: b0850beeb25f6d5b10426284f506557f66181b36 + base_revision: b0850beeb25f6d5b10426284f506557f66181b36 + - platform: windows + create_revision: b0850beeb25f6d5b10426284f506557f66181b36 + base_revision: b0850beeb25f6d5b10426284f506557f66181b36 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/README.md b/README.md new file mode 100644 index 0000000..d16f001 --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# aimpoint + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..6f56801 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..9560b7c --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,58 @@ +plugins { + id "com.android.application" + id "kotlin-android" + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id "dev.flutter.flutter-gradle-plugin" +} + +def localProperties = new Properties() +def localPropertiesFile = rootProject.file("local.properties") +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader("UTF-8") { reader -> + localProperties.load(reader) + } +} + +def flutterVersionCode = localProperties.getProperty("flutter.versionCode") +if (flutterVersionCode == null) { + flutterVersionCode = "1" +} + +def flutterVersionName = localProperties.getProperty("flutter.versionName") +if (flutterVersionName == null) { + flutterVersionName = "1.0" +} + +android { + namespace = "com.example.aimpoint" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "com.example.aimpoint" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutterVersionCode.toInteger() + versionName = flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.debug + } + } +} + +flutter { + source = "../.." +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..c6bfb53 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/example/aimpoint/MainActivity.kt b/android/app/src/main/kotlin/com/example/aimpoint/MainActivity.kt new file mode 100644 index 0000000..115a301 --- /dev/null +++ b/android/app/src/main/kotlin/com/example/aimpoint/MainActivity.kt @@ -0,0 +1,5 @@ +package com.example.aimpoint + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..06952be --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cb1ef88 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..d2ffbff --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,18 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = "../build" +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..3b5b324 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..e1ca574 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..536165d --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,25 @@ +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.3.0" apply false + id "org.jetbrains.kotlin.android" version "1.7.10" apply false +} + +include ":app" diff --git a/images/pilerCar.png b/images/pilerCar.png new file mode 100644 index 0000000000000000000000000000000000000000..799a54abbd97a5e3c7fce4262ef04893bb237e04 GIT binary patch literal 332610 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

>FmOQkW`$Uu&i)Dk`a9<3%ot(oQ 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

3P<_iP4WMpSW{RY*e^zB8Gm#r!o?w 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 literal 0 HcmV?d00001 diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..7a7f987 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..7c56964 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..8737629 --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,616 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.aimpoint; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.aimpoint.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.aimpoint.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.aimpoint.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.aimpoint; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.aimpoint; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..8e3ca5d --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..9074fee --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017 GIT binary patch literal 406 zcmV;H0crk;P))>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2d933e1120817fe9182483a228007b18ab6ae GIT binary patch literal 450 zcmV;z0X_bSP)iGWQ_5NJQ_~rNh*z)}eT%KUb z`7gNk0#AwF^#0T0?hIa^`~Ck;!}#m+_uT050aTR(J!bU#|IzRL%^UsMS#KsYnTF*!YeDOytlP4VhV?b} z%rz_<=#CPc)tU1MZTq~*2=8~iZ!lSa<{9b@2Jl;?IEV8)=fG217*|@)CCYgFze-x? zIFODUIA>nWKpE+bn~n7;-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGr zXPIdeRE&b2Thd#{MtDK$px*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{Hig)k suLT-RhftRq8b9;(V=235Wa|I=027H2wCDra;{X5v07*qoM6N<$f;9x^2LJ#7 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd7b0099ca80c806f8fe495613e8d6c69460d76 GIT binary patch literal 282 zcmV+#0p(^bcu7P-R4C8Q z&e;xxFbF_Vrezo%_kH*OKhshZ6BFpG-Y1e10`QXJKbND7AMQ&cMj60B5TNObaZxYybcN07*qoM6N<$g3m;S%K!iX literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe730945a01f64a61e2235dbe3f45b08f7729182 GIT binary patch literal 462 zcmV;<0WtoGP)-}iV`2<;=$?g5M=KQbZ{F&YRNy7Nn@%_*5{gvDM0aKI4?ESmw z{NnZg)A0R`+4?NF_RZexyVB&^^ZvN!{I28tr{Vje;QNTz`dG&Jz0~Ek&f2;*Z7>B|cg}xYpxEFY+0YrKLF;^Q+-HreN0P{&i zK~zY`?b7ECf-n?@;d<&orQ*Q7KoR%4|C>{W^h6@&01>0SKS`dn{Q}GT%Qj_{PLZ_& zs`MFI#j-(>?bvdZ!8^xTwlY{qA)T4QLbY@j(!YJ7aXJervHy6HaG_2SB`6CC{He}f zHVw(fJWApwPq!6VY7r1w-Fs)@ox~N+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9 zR%3*Q+)t%S!MU_`id^@&Y{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&)179 zp<)v6Y}pRl100G2FL_t(o!|l{-Q-VMg#&MKg7c{O0 z2wJImOS3Gy*Z2Qifdv~JYOp;v+U)a|nLoc7hNH;I$;lzDt$}rkaFw1mYK5_0Q(Sut zvbEloxON7$+HSOgC9Z8ltuC&0OSF!-mXv5caV>#bc3@hBPX@I$58-z}(ZZE!t-aOG zpjNkbau@>yEzH(5Yj4kZiMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_st8pKG z(%SHyHdU&v%f36~uERh!bd`!T2dw;z6PrOTQ7Vt*#9F2uHlUVnb#ev_o^fh}Dzmq} zWtlk35}k=?xj28uO|5>>$yXadTUE@@IPpgH`gJ~Ro4>jd1IF|(+IX>8M4Ps{PNvmI zNj4D+XgN83gPt_Gm}`Ybv{;+&yu-C(Grdiahmo~BjG-l&mWM+{e5M1sm&=xduwgM9 z`8OEh`=F3r`^E{n_;%9weN{cf2%7=VzC@cYj+lg>+3|D|_1C@{hcU(DyQG_BvBWe? zvTv``=%b1zrol#=R`JB)>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..502f463a9bc882b461c96aadf492d1729e49e725 GIT binary patch literal 586 zcmV-Q0=4~#P)+}#`wDE{8-2Mebf5<{{PqV{TgVcv*r8?UZ3{-|G?_}T*&y;@cqf{ z{Q*~+qr%%p!1pS*_Uicl#q9lc(D`!D`LN62sNwq{oYw(Wmhk)k<@f$!$@ng~_5)Ru z0Z)trIA5^j{DIW^c+vT2%lW+2<(RtE2wR;4O@)Tm`Xr*?A(qYoM}7i5Yxw>D(&6ou zxz!_Xr~yNF+waPe00049Nkl*;a!v6h%{rlvIH#gW3s8p;bFr=l}mRqpW2h zw=OA%hdyL~z+UHOzl0eKhEr$YYOL-c-%Y<)=j?(bzDweB7{b+%_ypvm_cG{SvM=DK zhv{K@m>#Bw>2W$eUI#iU)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G! zhkE!s;%oku3;IwG3U^2kw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn`0X*2 zy3(k600_CSZj?O$Qu%&$;|TGUJrptR(HzyIx>5E(2r{eA(<6t3e3I0B)7d6s7?Z5J zZ!rtKvA{MiEBm&KFtoifx>5P^Z=vl)95XJn()aS5%ad(s?4-=Tkis9IGu{`Fy8r+H07*qoM6N<$f20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790 GIT binary patch literal 862 zcmV-k1EKthP)20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f5fea27c705180eb716271f41b582e76dcbd90 GIT binary patch literal 1674 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0467bf12aa4d28f374bb26596605a46dcbb3e7c8 GIT binary patch literal 1418 zcmV;51$Fv~P)q zKfU)WzW*n(@|xWGCA9ScMt*e9`2kdxPQ&&>|-UCa7_51w+ zLUsW@ZzZSW0y$)Hp~e9%PvP|a03ks1`~K?q{u;6NC8*{AOqIUq{CL&;p56Lf$oQGq z^={4hPQv)y=I|4n+?>7Fim=dxt1 z2H+Dm+1+fh+IF>G0SjJMkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJT zkdTm&kdTm&kdTm&kdP`esgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>Tmf` zm1{eLgw!b{bXkjWbF%dTkTZEJWyWOb##Lfw4EK2}<0d6%>AGS{po>WCOy&f$Tay_> z?NBlkpo@s-O;0V%Y_Xa-G#_O08q5LR*~F%&)}{}r&L%Sbs8AS4t7Y0NEx*{soY=0MZExqA5XHQkqi#4gW3 zqODM^iyZl;dvf)-bOXtOru(s)Uc7~BFx{w-FK;2{`VA?(g&@3z&bfLFyctOH!cVsF z7IL=fo-qBndRUm;kAdXR4e6>k-z|21AaN%ubeVrHl*<|s&Ax@W-t?LR(P-24A5=>a z*R9#QvjzF8n%@1Nw@?CG@6(%>+-0ASK~jEmCV|&a*7-GKT72W<(TbSjf)&Eme6nGE z>Gkj4Sq&2e+-G%|+NM8OOm5zVl9{Z8Dd8A5z3y8mZ=4Bv4%>as_{9cN#bm~;h>62( zdqY93Zy}v&c4n($Vv!UybR8ocs7#zbfX1IY-*w~)p}XyZ-SFC~4w>BvMVr`dFbelV{lLL0bx7@*ZZdebr3`sP;? zVImji)kG)(6Juv0lz@q`F!k1FE;CQ(D0iG$wchPbKZQELlsZ#~rt8#90Y_Xh&3U-< z{s<&cCV_1`^TD^ia9!*mQDq& zn2{r`j};V|uV%_wsP!zB?m%;FeaRe+X47K0e+KE!8C{gAWF8)lCd1u1%~|M!XNRvw zvtqy3iz0WSpWdhn6$hP8PaRBmp)q`#PCA`Vd#Tc$@f1tAcM>f_I@bC)hkI9|o(Iqv zo}Piadq!j76}004RBio<`)70k^`K1NK)q>w?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF z34$0Z;QO!JOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUC YUoZo%k(ykuW&i*H07*qoM6N<$f+CH{y8r+H literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..9731f74 --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Aimpoint + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + aimpoint + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..86a7c3b --- /dev/null +++ b/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/lib/draws/aim_pointer.dart b/lib/draws/aim_pointer.dart new file mode 100644 index 0000000..e10f536 --- /dev/null +++ b/lib/draws/aim_pointer.dart @@ -0,0 +1,253 @@ +import 'dart:math'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:flutter/widgets.dart'; +import 'package:scence_map/controller.dart'; +import 'dart:ui' as ui; + +import '../modules/device_type.dart'; + +final ScenceMapController mapcontroller = Get.put(ScenceMapController()); + +// 对点 瞄准器 +class SightController extends GetxController { + var isNomal = true.obs; + //左下圆 + var sightOffset = const Offset(3, 3).obs; + var sightOffsetInit = const Offset(0, 0).obs; + var sightInit = const Offset(0, 0).obs; + // var lastSightOffset = const Offset(0, 0).obs; // 新增变量,用于存储上一次手指离开时的位置 + // var isCardVisible = false.obs; // 控制卡片是否可见 + var selectedRecord = Offset.zero.obs; + + var initDx = 0.0.obs; + var isFirst = true.obs; + var visualList = [].obs; + var plot = 2.0.obs; + var scale = 0.75.obs; + reset() { + sightOffset.value = const Offset(3, 3); + sightOffsetInit.value = const Offset(0, 0); + sightInit.value = const Offset(0, 0); + + initDx.value = 0.0; + update(); + } +} + +final SightController sight = Get.put(SightController()); + +class SightView extends GetView { + const SightView({super.key}); + + @override + Widget build(BuildContext context) { + final size = MediaQuery.of(context).size; + MediaQueryData mediaQueryData = + MediaQueryData.fromView(WidgetsBinding.instance.window); //获取当前屏幕信息 + final orientation = mediaQueryData.orientation; //获得设备方向 + final deviceType = getDeviceType(context); + double rectWidth = size.height / 2; + if (!sight.isNomal.value) { + rectWidth = size.width; + } else { + if (orientation == Orientation.landscape) { + rectWidth = size.width / 2; + if (deviceType == DeviceType.mobile) { + rectWidth = size.height - 5; + } + } else { + rectWidth = size.height / 2; + if (deviceType == DeviceType.mobile) { + rectWidth = size.width - 5; + } + } + } + + bool isDarkMode = Theme.of(context).brightness == Brightness.dark; + + return Stack( + children: [ + CustomPaint( + //绘制瞄准器 + size: Size(rectWidth, rectWidth), + painter: DrawCicle(sight, 0, 0, isDarkMode), + ) + ], + ); + } +} + +class DrawCicle extends CustomPainter { + final SightController sight; + final double tiltX; + final double tiltY; + final bool isDarkMode; + + DrawCicle(this.sight, this.tiltX, this.tiltY, this.isDarkMode); + final _paint = Paint(); //创建一个画笔并配置其属性 + Path path = Path(); + + List icons = [ + Icons.arrow_drop_up, + Icons.arrow_drop_down, + Icons.arrow_left, + Icons.arrow_right + ]; + List iconOffset = []; + + List text = ["", "", "", ""]; //['前移', '后移', '左移', '右移']; + @override + void paint(Canvas canvas, size) { + _paint + ..strokeWidth = 2 + ..style = PaintingStyle.stroke + ..color = const Color.fromARGB(255, 183, 183, 162); + + double rectWidth = (size.height / 2 - 5).roundToDouble(); + if (!sight.isNomal.value) { + } else {} + + path.moveTo(0, rectWidth + 5); + path.lineTo(size.height, rectWidth + 5); + path.moveTo(rectWidth + 5, 0); + path.lineTo(rectWidth + 5, size.height); + canvas.drawPath(path, _paint); + // 总长 2m + double step = (rectWidth / sight.plot.value / 10).roundToDouble(); + canvas.translate(rectWidth + 5, rectWidth + 5); + for (var i = 0; i < 21; i++) { + if (i % 10 == 0) { + double line = 7; + canvas.drawLine(Offset(0, i * step), Offset(line, i * step), _paint); + canvas.drawLine(Offset(i * step, 0), Offset(i * step, line), _paint); + canvas.drawLine(Offset(0, -i * step), Offset(line, -i * step), _paint); + canvas.drawLine(Offset(-i * step, 0), Offset(-i * step, line), _paint); + drawText(canvas, Offset(line, i * step), i ~/ 10); + drawText(canvas, Offset(line, -i * step), (-i ~/ 10)); + if (i ~/ 10 != 0) { + drawText(canvas, Offset(i * step, line), i ~/ 10); + drawText(canvas, Offset(-i * step, line), (-i ~/ 10)); + } + } else if (i % 5 == 0) { + double line = 5; + canvas.drawLine(Offset(0, i * step), Offset(line, i * step), _paint); + canvas.drawLine(Offset(i * step, 0), Offset(i * step, line), _paint); + canvas.drawLine(Offset(0, -i * step), Offset(line, -i * step), _paint); + canvas.drawLine(Offset(-i * step, 0), Offset(-i * step, line), _paint); + } else { + double line = 3; + canvas.drawLine(Offset(0, i * step), Offset(line, i * step), _paint); + canvas.drawLine(Offset(i * step, 0), Offset(i * step, line), _paint); + canvas.drawLine(Offset(0, -i * step), Offset(line, -i * step), _paint); + canvas.drawLine(Offset(-i * step, 0), Offset(-i * step, line), _paint); + } + } + canvas.translate(-(rectWidth + 5), -(rectWidth + 5)); + + canvas.translate(rectWidth + 5, rectWidth + 5); + if (sight.selectedRecord.value != Offset(2, 2)) { + drawPoint(canvas); + } + + // // 绘制水平仪 + // double x = real.tiltX.value; // + // double y = real.tiltY.value; // + // print("----${real.centerX.value},${real.centerY.value}"); + // if (real.tiltX.value == 0 || real.tiltY.value == 0) { + // x = 0; + // y = 0; + // } + // _paint.color = Colors.red; + // canvas.drawCircle(Offset(x * step * 10, y * step * 10), 10, _paint); + // canvas.translate(-(rectWidth + 5), -(rectWidth + 5)); + } + + drawText(Canvas canvas, Offset offset, int i, [bool isShow = true]) { + TextPainter textPainter = TextPainter( + text: TextSpan( + text: isShow ? "$i m" : "$i", + style: TextStyle( + fontSize: 12, color: isDarkMode ? Colors.white : Colors.black)), + textDirection: TextDirection.ltr, + textAlign: TextAlign.left); + textPainter.layout(); + + textPainter.paint(canvas, offset); + } + + drawPoint(Canvas canvas) { + canvas.drawCircle(Offset.zero, 20, Paint()..color = Colors.grey); + // drawText(canvas, pos - const Offset(20, 10), i, false); + } + + // drawRect(Canvas canvas, double rectWidth) { + // double x = item.dx - real.centerX.value; + // double y = item.dy - real.centerY.value; + // Offset center = Offset(x, y); + // canvas.drawRect( + // Rect.fromCenter(center: center, width: rectWidth, height: rectWidth), + // _paint); + // } + + @override + bool shouldRepaint(covariant CustomPainter oldDelegate) => true; +} + +class DevicePointer extends StatelessWidget { + final DeviceItemController item; + final double maprotation; + final Offset targetPoint; + + DevicePointer(this.item, this.maprotation, this.targetPoint); + + @override + Widget build(BuildContext context) { + // double carWidth = item.width / controller.pixel2MeterRatio; + // double carHeight = item.height / controller.pixel2MeterRatio; + + return Stack( + children: [ + Obx(() { + // Offset offset = controller.xy2Screen( + // gnsscontroller.pilerCenter.X, gnsscontroller.pilerCenter.Y); + var dx = item.x - targetPoint.dx; + var dy = item.y - targetPoint.dy; + var left = dx * cos(maprotation) + dy * sin(maprotation); + var top = -dx * sin(maprotation) + dy * cos(maprotation); + + return Positioned( + left: left / mapcontroller.pixel2MeterRatio, + top: top / mapcontroller.pixel2MeterRatio, + child: Transform( + transform: Matrix4.identity()..rotateZ(item.rotation.value), + alignment: FractionalOffset.center, + child: Image.asset( + "images/pilerCar.png", + errorBuilder: (context, error, stackTrace) { + return Text('无法加载图片'); + }, + ), + ), + ); + }), + // Obx(() { + // Offset offset = controller.xy2Screen( + // gnsscontroller.pilerCenter.X, gnsscontroller.pilerCenter.Y); + + // return Positioned( + // left: offset.dx, + // top: offset.dy, + // child: Transform( + // transform: Matrix4.identity() + // ..rotateZ(-controller.rotation.value), + // child: Column( + // children: [Text("设备:${item.name}")], + // ), + // ), + // ); + // }), + ], + ); + } +} diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..8933dad --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +// import 'controller/scence_map.dart'; +import 'screens/aimpoint_page.dart'; +import 'package:scence_map/scence_map.dart'; +import 'package:scence_map/controller.dart'; + +void main() { + Get.lazyPut(() => ScenceMapController()); + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + // This widget is the root of your application. + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), + useMaterial3: true, + ), + home: MyHomePage(title: 'Flutter Demo Home Page'), + ); + } +} + +class MyHomePage extends StatefulWidget { + const MyHomePage({super.key, required this.title}); + + final String title; + + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + // body: CounterPointer(), + body: ScenceMapView( + children: const [ + AimPointer(), + ], + onUpdate: (Offset offset, double scale, double rotation) { + print("onScale: scale: $scale, offset: $offset,rotation: $rotation"); + }, + ), + ); + } +} diff --git a/lib/modules/coord_trans.dart b/lib/modules/coord_trans.dart new file mode 100644 index 0000000..5c7d72e --- /dev/null +++ b/lib/modules/coord_trans.dart @@ -0,0 +1,683 @@ +// ignore_for_file: non_constant_identifier_names + +import 'dart:math'; + +class CoordGPS { + double LAT; //纬度 + double LNG; //经度 + double? ALT; //高度 + CoordGPS({this.ALT, required this.LAT, required this.LNG}); +} + +class CoordXYH { + double X; + double Y; + double H; + CoordXYH({required this.X, required this.Y, required this.H}); +} + +class CoordBLH { + double B; + double L; + double H; + CoordBLH({required this.B, required this.H, required this.L}); +} + +class CoordXYZ { + double X; + double Y; + double Z; + CoordXYZ({required this.X, required this.Y, required this.Z}); +} + +class PointXY { + double X; + double Y; + PointXY({required this.X, required this.Y}); +} + +class Region { + double X; + double Y; + double? width; + double? heigth; + double? D; + Region({this.D, required this.X, required this.Y, this.heigth, this.width}); +} + +class Ellipsoid { + late double A; + late double F; + late double B; + late double E12; + late double E22; + Ellipsoid(String name) { + const Map> datums = { + 'BJ54': {'a': 6378245, 'f': 1 / 298.3}, + 'XA80': {'a': 6378140, 'f': 1 / 298.257}, + 'WGS84': {'a': 6378137, 'f': 1 / 298.257223563}, + 'WGS2000': {'a': 6378137, 'f': 1 / 298.257222101} + }; + var Datum = datums[name]; + if (Datum != null) { + double a = Datum['a']!; + double f = Datum['f']!; + double b = a - f * a; + double e12 = (a * a - b * b) / (a * a); // 第一偏心率平方 + double e22 = (a * a - b * b) / (b * b); // 第二偏心率平方 + A = a; + F = f; + B = b; + E12 = e12; + E22 = e22; + } + } +} + +class TransParm { + late double dx; + late double dy; + late double dz; + late double rx; + late double ry; + late double rz; + late double rota; + late double k; + + TransParm(TransOptions options) { + dx = options.dx ?? 0; + dy = options.dy ?? 0; + dz = options.dz ?? 0; + rx = options.rx ?? 0; + ry = options.ry ?? 0; + rz = options.rz ?? 0; + k = options.k ?? 0; + rota = options.rota ?? 0; + } +} + +class TransOptions { + double? dx; //X平移(M) + double? dy; //Y平移(M) + double? dz; //z平移(M) + double? rx; //X旋转(°) + double? ry; //Y旋转(°) + double? rz; //Z旋转(°) + double? rota; //平面旋转,用于4参数 + double? k; //尺度(ppm) + double? L0; //中央子午线(经度) + String? srcEllipsoid; //源椭球名称 + String? dstEllipsoid; //目标椭球名称 + double? zoneWidth; //带宽度,用于未指定中央子午线时自动计算 + double? elevation; //投影高程 + TransOptions({ + this.L0, + this.dstEllipsoid, + this.dx, + this.dy, + this.dz, + this.elevation, + this.k, + this.rota, + this.rx, + this.ry, + this.rz, + this.srcEllipsoid, + }); +} + +//主天线 +class CoordTrans { + late double L0; //中央子午线 + late double zoneWidth; //带宽度 + late double elevation; //投影高程 + late double rota; //平面旋转,用于4参数 + late Ellipsoid srcEllipsoid; //源椭球 + late Ellipsoid dstEllipsoid; //目标椭球 + late TransParm transParm; //7参数 + CoordTrans(TransOptions options) { + transParm = TransParm(options); + L0 = options.L0 ?? 0; + elevation = options.elevation ?? 0; + srcEllipsoid = Ellipsoid(options.srcEllipsoid ?? 'WGS84'); + dstEllipsoid = Ellipsoid(options.dstEllipsoid ?? 'WGS2000'); + zoneWidth = options.zoneWidth ?? 3; + } + + CoordXYH GPS2XY(CoordGPS gps) { + return d2p(CoordBLH(H: gps.ALT ?? elevation, B: gps.LAT, L: gps.LNG)); + } + + //经纬度转平面坐标 + CoordXYH d2p(CoordBLH blh) { + CoordXYZ zj = BLH2XYZ(blh); + CoordXYZ xzj = XYZ2XYZ(zj); + CoordBLH xdd = XYZ2BLH(xzj); + CoordXYH xpm = BL2XY(xdd); + return xpm; + } + + //平面坐标转大地坐标 + CoordBLH p2d(CoordXYH xyh) { + CoordBLH bl = XY2BL(xyh, true); + CoordXYZ zj = BLH2XYZ(bl, true); + CoordXYZ xzj = XYZ2XYZ(zj, true); + CoordBLH xdd = XYZ2BLH(xzj, true); + return xdd; + } + + setZoneWidth(width) { + if (width != 6 && width != 3) { + // print('带宽应当为6或者为3'); + } else { + zoneWidth = width; + } + } + + setL0(l0) { + L0 = l0; + } + + int getZoneNo(double lng) { + // 6度带 + // 这里应为向下取整 + if (zoneWidth == 6) { + return ((lng + 6) / 6).floor(); + } + // 3度带 + return ((lng + 1.5) / 3).floor(); + } + + PointXY xy2xyLocal(PointXY source) { + double x = source.X; + double y = source.Y; + double destx = x * transParm.k * cos(rota) - + y * transParm.k * sin(rota) + + transParm.dx; + double desty = x * transParm.k * sin(rota) + + y * transParm.k * cos(rota) + + transParm.dy; + + return PointXY(X: destx, Y: desty); + } + + CoordXYZ BLH2XYZ(CoordBLH pointBLH, [srcDst = false]) { + Ellipsoid ellipsoid = srcDst ? srcEllipsoid : dstEllipsoid; + double a = ellipsoid.A; + double e12 = ellipsoid.E12; + + double radB = pointBLH.B / 180 * pi; + double radL = pointBLH.L / 180 * pi; + double H = pointBLH.H; + + double N = a / sqrt(1 - e12 * sin(radB) * sin(radB)); // 卯酉圈半径 + + double X = (N + H) * cos(radB) * cos(radL); + double Y = (N + H) * cos(radB) * sin(radL); + double Z = (N * (1 - e12) + H) * sin(radB); + + return CoordXYZ(X: X, Y: Y, Z: Z); + } + + /* + 七参数转换 + 不同椭球参数下, 地心直角坐标系之间转换 + dX, dY, dZ: 三个坐标方向的平移参数 + wX, wY, wZ: 三个方向的旋转角参数(单位为弧度) + Kppm: 尺度参数, 单位是ppm,如果是以米为单位, 需要在传参前 除以1000000 + */ + CoordXYZ XYZ2XYZ(CoordXYZ xyz, [srcDst = false]) { + double X = xyz.X; + double Y = xyz.Y; + double Z = xyz.Z; + double dX = transParm.dx; + double dY = transParm.dy; + double dZ = transParm.dz; + double rX = transParm.rx / 3600 / 180 * pi; + double rY = transParm.ry / 3600 / 180 * pi; + double rZ = transParm.rz / 3600 / 180 * pi; + double Kppm = transParm.k / 1000000; + CoordXYZ result = CoordXYZ(X: 0, Y: 0, Z: 0); + if (srcDst) { + result.X = X - dX - Kppm * X + rY * Z - rZ * Y; + result.Y = Y - dY - Kppm * Y - rX * Z + rZ * X; + result.Z = Z - dZ - Kppm * Z + rX * Y - rY * X; + } else { + result.X = X + dX + Kppm * X - rY * Z + rZ * Y; + result.Y = Y + dY + Kppm * Y + rX * Z - rZ * X; + result.Z = Z + dZ + Kppm * Z - rX * Y + rY * X; + } + return result; + } + + /* + 地心直角坐标系 转换到 地心大地坐标系 + 用直接法2 + https://wenku.baidu.com/view/30a08f9ddd88d0d233d46a50.html + */ + CoordBLH XYZ2BLH(CoordXYZ XYZ, [srcDst = false]) { + double X = XYZ.X; + double Y = XYZ.Y; + double Z = XYZ.Z; + Ellipsoid ellipsoid = srcDst ? srcEllipsoid : dstEllipsoid; + double a = ellipsoid.A; + double b = ellipsoid.B; + double e12 = ellipsoid.E12; + double e22 = ellipsoid.E22; + double L = atan(Y / X); + // 弧度转角度 + double degL = L * 180 / pi; + // Y值为正, 东半球, 否则西半球 + if (Y > 0) { + while (degL < 0) { + degL += 180; + } + while (degL > 180) { + degL -= 180; + } + } else { + while (degL > 0) { + degL -= 180; + } + while (degL < -180) { + degL += 180; + } + } + + double tgU = Z / (sqrt(X * X + Y * Y) * sqrt(1 - e12)); + double U = atan(tgU); + + double tgB = (Z + b * e22 * pow(sin(U), 3)) / + (sqrt(X * X + Y * Y) - a * e12 * pow(cos(U), 3)); + double B = atan(tgB); + double degB = B * 180 / pi; // 弧度转角度 + if (Z > 0) { + // Z值为正, 北半球, 否则南半球 + while (degB < 0) { + degB += 90; + } + while (degB > 90) { + degB -= 90; + } + } else { + while (degB > 0) { + degB -= 90; + } + while (degB < -90) { + degB += 90; + } + } + + while (degB < 0) { + degB += 360; + } + while (degB > 360) { + degB -= 360; + } + + double N = a / sqrt(1 - e12 * sin(B) * sin(B)); // 卯酉圈半径 + double H = 0; + // B接近极区, 在±90°附近 + if ((degB).abs() > 80) { + H = Z / sin(B) - N * (1 - e12); + } else { + H = sqrt(X * X + Y * Y) / cos(B) - N; + } + return CoordBLH(B: degB, L: degL, H: H); + } + + /* + 地心大地坐标系 转换到 大地平面坐标系 + prjHeight: 投影面高程 + http://www.cnblogs.com/imeiba/p/5696967.html + */ + CoordXYH BL2XY(CoordBLH BLH, + [srcDst = false, offsetY = 500000, offsetX = 0]) { + Ellipsoid ellipsoid = srcDst ? srcEllipsoid : dstEllipsoid; + double a = ellipsoid.A; + double b = ellipsoid.B; + double e12 = ellipsoid.E12; + double e22 = ellipsoid.E22; + if (L0 == 0) { + int zoneNo = getZoneNo(BLH.L); + L0 = (zoneNo - 0.5) * zoneWidth; + } + double radL0 = L0 / 180 * pi; + + double radB = BLH.B / 180 * pi; + double radL = BLH.L / 180 * pi; + + double N = a / sqrt(1 - e12 * sin(radB) * sin(radB)); // 卯酉圈半径 + double T = tan(radB) * tan(radB); + double C = e22 * cos(radB) * cos(radB); + double A = (radL - radL0) * cos(radB); + double M = a * + ((1 - e12 / 4 - 3 * e12 * e12 / 64 - 5 * e12 * e12 * e12 / 256) * radB - + (3 * e12 / 8 + 3 * e12 * e12 / 32 + 45 * e12 * e12 * e12 / 1024) * + sin(2 * radB) + + (15 * e12 * e12 / 256 + 45 * e12 * e12 * e12 / 1024) * + sin(4 * radB) - + (35 * e12 * e12 * e12 / 3072) * sin(6 * radB)); + + //x,y的计算公式见孔祥元等主编武汉大学出版社2002年出版的《控制测量学》的第72页 + //书的的括号有问题,( 和 [ 应该交换 + + double x = M + + N * + tan(radB) * + (A * A / 2 + + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24 + + (61 - 58 * T + T * T + 600 * C - 330 * e22) * + A * + A * + A * + A * + A * + A / + 720); + double y = N * + (A + + (1 - T + C) * A * A * A / 6 + + (5 - 18 * T * T * T + 72 * C - 58 * e22) * A * A * A * A * A / 120); + + x = offsetX + x * (b + elevation) / b; + y = offsetY + y * (b + elevation) / b; + + return CoordXYH( + X: (x * 1000).round() / 1000, Y: (y * 1000).round() / 1000, H: BLH.H); + } + + /* + 大地平面坐标系 转换到 地心大地坐标系 + prjHeight: 投影面高程 + http://www.cnblogs.com/imeiba/p/5696967.html + */ + CoordBLH XY2BL(CoordXYH xyh, + [srcDst = false, offsetY = 500000, offsetX = 0]) { + Ellipsoid ellipsoid = srcDst ? srcEllipsoid : dstEllipsoid; + double a = ellipsoid.A; + double b = ellipsoid.B; + double e12 = ellipsoid.E12; + double e22 = ellipsoid.E22; + + double e1 = (1 - sqrt(1 - e12)) / (1 + sqrt(1 - e12)); + double radL0 = L0 / 180 * pi; + // 带内大地坐标 + double Y = xyh.Y % 1000000; + double x = (xyh.X - offsetX) * b / (b + elevation); + double y = (Y - offsetY) * b / (b + elevation); + + double u = x / + (a * (1 - e12 / 4 - 3 * e12 * e12 / 64 - 5 * e12 * e12 * e12 / 256)); + double fai = u + + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * sin(2 * u) + + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * sin(4 * u) + + (151 * e1 * e1 * e1 / 96) * sin(6 * u) + + (1097 * e1 * e1 * e1 * e1 / 512) * sin(8 * u); + double C = e22 * cos(fai) * cos(fai); + double T = tan(fai) * tan(fai); + double N = a / sqrt(1 - e12 * sin(fai) * sin(fai)); + double R = a * + (1 - e12) / + sqrt((1 - e12 * sin(fai) * sin(fai)) * + (1 - e12 * sin(fai) * sin(fai)) * + (1 - e12 * sin(fai) * sin(fai))); + double D = y / N; + + double L = radL0 + + (D - + (1 + 2 * T + C) * D * D * D / 6 + + (5 - 2 * C + 28 * T - 3 * C * C + 8 * e22 + 24 * T * T) * + D * + D * + D * + D * + D / + 120) / + cos(fai); + double B = fai - + (N * tan(fai) / R) * + (D * D / 2 - + (5 + 3 * T + 10 * C - 4 * C * C - 9 * e22) * + D * + D * + D * + D / + 24 + + (61 + 90 * T + 298 * C + 45 * T * T - 256 * e22 - 3 * C * C) * + D * + D * + D * + D * + D * + D / + 720); + + B = B * 180 / pi; + L = L * 180 / pi; + return CoordBLH(B: B, L: L, H: xyh.H); + } + + //两点之间的距离公式 + dist(PointXY p1, PointXY p2) { + double d = sqrt(pow((p2.X - p1.X), 2) + pow((p2.Y - p1.Y), 2)); + return d; + } + + //求坐标方位角 + double fwj(PointXY p1, PointXY p2) { + double dx = p2.X - p1.X; + double dy = p2.Y - p1.Y; + return pi - sign(dy) - atan(dx / dy); + } + + // 计算三参数 + TransOptions calcThree(CoordBLH p1, CoordXYH p2) { + CoordXYZ source = BLH2XYZ(p1); + CoordBLH bl = XY2BL(p2, true); + CoordXYZ dest = BLH2XYZ(bl, true); + + double dX = dest.X - source.X; + double dY = dest.Y - source.Y; + double dZ = dest.Z - source.Z; + return TransOptions(dx: dX, dy: dY, dz: dZ); + } + +// TransOptions calcFour(List p1, List p2, int PointCount) { +// double rota = 0; +// double scale = 0; +// double dx = 0; +// double dy = 0; +// if (PointCount == 2) { +// rota = fwj(p2[0] as PointXY, p2[1]) - fwj(p1[0], p1[1]); +// scale = dist(p2[0], p2[1]) / dist(p1[0], p1[1]); +// dx = p2[0].X - scale * cos(rota) * p1[0].X + scale * sin(rota) * p1[0].Y; +// dy = p2[0].Y - scale * sin(rota) * p1[0].X - scale * cos(rota) * p1[0].Y; +// } else if (PointCount > 2) { +// double u = 1.0, v = 0, Dx = 0.0, Dy = 0.0; +// int intCount = PointCount; + +// Matrix4 dx1 = Matrix.zeros(4, 1); +// // Matrix4 B1 = Matrix.zeros(2 * intCount, 4); +// Matrix4 B1 = Matrix4.zero(); +// for (int i = 0; i < 2 * intCount; i++) { +// for (int j = 0; j < 4; j++) { +// B1.setEntry(i, j, 0); +// } +// } +// Matrix4 W1 = Matrix.zeros(2 * intCount, 1); +// // Matrix4 BT = Matrix.zeros(4, 2 * intCount); +// Matrix4 BT = Matrix4.zero(); +// for (int i = 0; i < 4; i++) { +// for (int j = 0; j < 2 * intCount; j++) { +// BT.setEntry(i, j, 0); +// } +// } +// Matrix4 N = Matrix4( +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// ); +// Matrix4 InvN = Matrix4( +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// 0, +// ); +// Matrix4 BTW = Matrix.zeros(4, 1); +// for (int i = 0; i < intCount; i++) { +// //计算误差方程系数 +// B1.setEntry(2 * i, 0, 1); +// B1.setEntry(2 * i, 1, 0); +// B1.setEntry(2 * i, 2, p1[i].X); +// B1.setEntry(2 * i, 3, -p1[i].Y); + +// B1.setEntry(2 * i + 1, 0, 0); +// B1.setEntry(2 * i + 1, 1, 1); +// B1.setEntry(2 * i + 1, 2, p1[i].Y); +// B1.setEntry(2 * i + 1, 3, p1[i].X); +// // B1[2 * i][0] = 1; +// // B1[2 * i][1] = 0; +// // B1[2 * i][2] = p1[i].X; +// // B1[2 * i][3] = -p1[i].Y; + +// // B1[2 * i + 1][0] = 0; +// // B1[2 * i + 1][1] = 1; +// // B1[2 * i + 1][2] = p1[i].Y; +// // B1[2 * i + 1][3] = p1[i].X; +// } +// for (int i = 0; i < intCount; i++) { +// //计算误差方程系常数 +// // W1[2 * i][0] = p2[i].X - u * p1[i].X + v * p1[i].Y - Dx; +// // W1[2 * i + 1][0] = p2[i].Y - u * p1[i].Y - v * p1[i].X - Dy; +// W1.setEntry(2 * i, 0, p2[i].X - u * p1[i].X + v * p1[i].Y - Dx); +// W1.setEntry(2 * i + 1, 0, p2[i].Y - u * p1[i].Y - v * p1[i].X - Dy); +// } +// // 最小二乘求解 +// Matrix4 b1 = Matrix4.identity(); +// // 矩阵 B1 的转置 +// BT = Matrix4.copy(b1); +// BT.transpose(); +// // 矩阵乘法 +// N = BT * B1; +// // 逆矩阵 +// InvN = N.clone(); +// InvN.invert(); +// BTW = BT * (W1); +// dx1 = InvN * (BTW); + +// Dx = Dx + dx1[0][0]; +// Dy = Dy + dx1[1][0]; +// u = u + dx1[2][0]; +// v = v + dx1[3][0]; +// dx = Dx; +// dy = Dy; +// rota = atan(v / u); +// scale = u / cos(rota); +// } +// return TransOptions(rota: rota, k: scale, dx: dx, dy: dy); +// } + +// // 计算七参数 +// TransOptions calcBuras(List p1, List p2, pointCount) { +// let B1 = Matrix.zeros(pointCount * 3, 7); +// let dx1 = Matrix.zeros(7, 1); +// let L = Matrix.zeros(pointCount * 3, 1); +// let BT = Matrix.zeros(7, pointCount * 3); +// let N = Matrix.zeros(7, 7); +// let InvN = Matrix.zeros(7, 7); +// let BTL = Matrix.zeros(7, 1); +// for (int i = 0; i < pointCount * 3; i++) { +// if (i % 3 == 0) { +// L[i][0] = p2[(i / 3).floor()].X; +// } else if (i % 3 == 1) { +// L[i][0] = p2[(i / 3).floor()].Y; +// } else if (i % 3 == 2) { +// L[i][0] = p2[(i / 3).floor()].Z; +// } +// } + +// for (int i = 0; i < pointCount * 3; i++) { +// if (i % 3 == 0) { +// int index = (i / 3) as int; +// B1[i][0] = 1; +// B1[i][1] = 0; +// B1[i][2] = 0; +// B1[i][3] = p1[index].X; +// B1[i][4] = 0; +// B1[i][5] = -p1[index].Z; +// B1[i][6] = p1[index].Y; +// } else if (i % 3 == 1) { +// int index = ((i - 1) / 3) as int; +// B1[i][0] = 0; +// B1[i][1] = 1; +// B1[i][2] = 0; +// B1[i][3] = p1[index].Y; +// B1[i][4] = p1[index].Z; +// B1[i][5] = 0; +// B1[i][6] = -p1[index].X; +// } else if (i % 3 == 2) { +// int index = ((i - 2) / 3) as int; +// B1[i][0] = 0; +// B1[i][1] = 0; +// B1[i][2] = 1; +// B1[i][3] = p1[index].Z; +// B1[i][4] = -p1[index].Y; +// B1[i][5] = p1[index].X; +// B1[i][6] = 0; +// } +// } +// Matrix4 b1 = Matrix4.identity(); +// BT = B1.transpose(); +// N = BT.mmul(B1); +// InvN = inverse(N); +// BTL = BT.mmul(L); +// dx1 = InvN.mmul(BTL); + +// double dx = dx1[0][0]; +// double dy = dx1[1][0]; +// double dz = dx1[2][0]; +// double scale = dx1[3][0]; +// double rotax = dx1[4][0] / dx1[3][0]; +// double rotay = dx1[5][0] / dx1[3][0]; +// double rotaz = dx1[6][0] / dx1[3][0]; + +// return TransOptions( +// dx: dx, dy: dy, dz: dz, k: scale, rx: rotax, ry: rotay, rz: rotaz); +// } + + double sign(num number) { + if (number < 0) { + return -1.0; + } else if (number > 0) { + return 1.0; + } else { + return 0.0; + } + } +} diff --git a/lib/modules/device_type.dart b/lib/modules/device_type.dart new file mode 100644 index 0000000..9c85a22 --- /dev/null +++ b/lib/modules/device_type.dart @@ -0,0 +1,34 @@ +import 'package:flutter/widgets.dart'; + +enum DeviceType { + mobile, + tablet, + desktop, +} + +DeviceType getDeviceType(BuildContext context) { + final screenSize = MediaQuery.of(context).size; + const minWidth = 500; // 设定判断平板的最小宽度 + const maxWidth = 1024; // 设定判断电脑的最大宽度 + final orientation = MediaQuery.of(context).orientation; + + if (orientation == Orientation.portrait) { + // 竖屏时按照宽度判断设备类型 + if (screenSize.width < minWidth) { + return DeviceType.mobile; // 宽度小于最小宽度,判断为手机 + } else if (screenSize.width <= maxWidth) { + return DeviceType.tablet; // 宽度在最小宽度和最大宽度之间,判断为平板 + } else { + return DeviceType.desktop; // 宽度大于最大宽度,判断为电脑 + } + } else { + // 横屏时按照高度判断设备类型 + if (screenSize.height < minWidth) { + return DeviceType.mobile; // 高度小于最小宽度,判断为手机 + } else if (screenSize.height <= maxWidth) { + return DeviceType.tablet; // 高度在最小宽度和最大宽度之间,判断为平板 + } else { + return DeviceType.desktop; // 高度大于最大宽度,判断为电脑 + } + } +} \ No newline at end of file diff --git a/lib/screens/aimpoint_page.dart b/lib/screens/aimpoint_page.dart new file mode 100644 index 0000000..05d06d7 --- /dev/null +++ b/lib/screens/aimpoint_page.dart @@ -0,0 +1,199 @@ +import 'dart:async'; +import 'dart:ui' as ui; + +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:scence_map/controller.dart'; + +import '../modules/device_type.dart'; + +import '../draws/aim_pointer.dart'; + +final SightController sight = Get.put(SightController()); + +class AimPointer extends StatefulWidget { + const AimPointer({super.key}); + + @override + State createState() => _AimPointerState(); +} +//CounterPointer 是一个自定义的 StatefulWidget 类。 +//它通过重写 createState 方法来创建一个与之关联的 State 对象。 +//createState 方法返回 _CounterPointerState(),这是一个 _CounterPointerState +//类的实例,用于管理 CounterPointer 的状态和生命周期。 + +class _AimPointerState extends State { + @override + void initState() { + super.initState(); + + // map.disableMove.value = true; + // map.update(); + } + + String gradienter = "0"; //水平仪 + @override + Widget build(BuildContext context) { + final Size size = MediaQuery.of(context).size; + MediaQueryData mediaQueryData = + MediaQueryData.fromView(WidgetsBinding.instance.window); //获取当前屏幕信息 + final orientation = mediaQueryData.orientation; //获得设备方向 + bool isPortrait = Orientation.portrait == orientation ? true : false; + double rectWidth = size.width; + final deviceType = getDeviceType(context); + if (orientation == Orientation.landscape) { + rectWidth = size.width / 2 - 60; + if (deviceType == DeviceType.mobile) { + rectWidth = size.height - 130; + } + } else { + rectWidth = size.height / 2; + if (deviceType == DeviceType.mobile) { + rectWidth = size.width - 5; + } + } + bool isDarkMode = Theme.of(context).brightness == Brightness.dark; + List children = [ + SizedBox( + width: rectWidth, + height: rectWidth, + child: Card( + child: Stack( + children: [ + Container( + width: rectWidth, + height: rectWidth, + clipBehavior: Clip.hardEdge, //圆形剪裁 + decoration: BoxDecoration( + border: Border.all( + color: isDarkMode ? Colors.white : Colors.black), + borderRadius: + BorderRadius.all(Radius.circular(rectWidth / 2)), + ), + child: const SightView(), + ), + Positioned( + top: 0, + left: 10, + child: Obx(() { + return TextButton( + child: Text( + "${sight.plot.value}m", + style: const TextStyle(fontSize: 20), + ), + onPressed: () { + if (sight.plot.value == 1) { + sight.plot.value = 2; + } else { + sight.plot.value = 1; + } + sight.update(); + }, + ); + })), + Positioned( + top: 10, + right: 10, + child: TextButton( + child: Text( + "垂直度:$gradienter°", + style: const TextStyle(fontSize: 20), + ), + onPressed: () {}, + )), + ], + ), + ), + ), + const SizedBox( + width: 5, + height: 5, + ), + const Expanded( + child: Text(""), + ), + ]; + if (isPortrait) { + return Column( + children: children, + ); + } else { + return Row( + children: children, + ); + } + } +} + +// List createDevice(ScenceMapController controller) { +// //用于生成设备的视图小部件列表 +// if (controller.isDrag) { +// return []; +// } +// List devices = []; +// controller.deviceList.forEach((key, item) { +// devices.add(Obx(() { +// Offset offset = controller.xy2Screen( +// gnsscontroller.pilerCenter.X, gnsscontroller.pilerCenter.Y); + +// double carWidth = item.width / controller.pixel2MeterRatio; +// double carHeight = item.height / controller.pixel2MeterRatio; +// print("${offset.dx - carHeight * 2},${offset.dy - carWidth}"); +// return Stack( +// children: [ +// Obx(() { +// // item.update.value; +// gnsscontroller.locationUpdate.value; + +// Offset offset = controller.xy2Screen( +// gnsscontroller.pilerCenter.X, gnsscontroller.pilerCenter.Y); +// return Positioned( +// left: offset.dx - carHeight * 3.5, +// top: offset.dy - carWidth / 2, +// // width: , +// height: carWidth, +// child: Transform( +// transform: Matrix4.identity() +// // ..scale(item.scale) + +// ..rotateZ(gnsscontroller.pilerCenter.rotation), +// alignment: FractionalOffset.center, +// // child: Image.network( +// // "http://v5.rdc.pub${item.image[item.status.value]}", +// // errorBuilder: (context, error, stackTrace) { +// // return Image.asset("") + +// // child: Image.asset("images/pilerCar.png", +// // errorBuilder: (context, error, stackTrace) { +// // return Text('无法加载图片'); +// // } +// // // width: item.width, +// // // height: item.height, +// // ) + +// child: Image.asset( +// "images/pilerCar.png", +// errorBuilder: (context, error, stackTrace) { +// return Text('无法加载图片'); +// }, +// // width: item.width, +// // height: item.height, +// ), +// )); +// }), +// Positioned( +// left: offset.dx, +// top: offset.dy, +// child: Transform( +// transform: Matrix4.identity() +// ..rotateZ(-controller.rotation.value), +// child: Column( +// children: [Text("设备:${item.name}")], +// ), +// )) +// ], +// ); +// })); +// }); +// return devices; +// } diff --git a/lib/service/process.dart b/lib/service/process.dart new file mode 100644 index 0000000..fbe0221 --- /dev/null +++ b/lib/service/process.dart @@ -0,0 +1,67 @@ +import 'dart:core'; + + +class ProcessEntity { + double speed; + double depth; + double tiltX; + double tiltY; + double current1; + double current2; + double toatalFlow2; + double toatalFlow1; + double subtotalFlow2; + double subtotalFlow1; + String recvTime; + // double? azimuth; + double alt = 0; + double lng = 0; + double lat = 0; + String pileId; + int utc; + int tid; + int? id; + ProcessEntity( + {this.speed = 0, + this.depth = 0, + this.tiltX = 0, + this.tiltY = 0, + this.current1 = 0, + this.current2 = 0, + this.toatalFlow2 = 0, + this.toatalFlow1 = 0, + this.subtotalFlow2 = 0, + this.subtotalFlow1 = 0, + required this.recvTime, + // this.azimuth, + this.alt = 0, + this.lng = 0, + this.lat = 0, + required this.pileId, + required this.utc, + required this.tid, + this.id}); + factory ProcessEntity.fromJson(Map json) { + return ProcessEntity( + speed: (json["speed"] ?? "0").toDouble(), + depth: (json["depth"] ?? "0").toDouble(), + tiltX: (json["tilt_x"] ?? "0").toDouble(), + tiltY: (json["tilt_y"] ?? "0").toDouble(), + current1: (json["current1"] ?? "0").toDouble(), + current2: (json["current2"] ?? "0").toDouble(), + toatalFlow2: (json["toatal_flow2"] ?? "0").toDouble(), + toatalFlow1: (json["toatal_flow1"] ?? "0").toDouble(), + subtotalFlow2: (json["subtotal_flow2"] ?? "0").toDouble(), + subtotalFlow1: (json["subtotal_flow1"] ?? "0").toDouble(), + recvTime: json["recv_time"] ?? DateTime.now(), + // azimuth: (json["azimuth"] ?? "0").toDouble(), + alt: (json["ALT"] ?? "0").toDouble(), + lng: (json["LNG"] ?? "0").toDouble(), + lat: (json["LAT"] ?? "0").toDouble(), + pileId: json["pile_id"].toString(), + utc: json["UTC"], + tid: json['tid'], + id: json["id"], + ); + } +} diff --git a/linux/.gitignore b/linux/.gitignore new file mode 100644 index 0000000..d3896c9 --- /dev/null +++ b/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt new file mode 100644 index 0000000..a4f1985 --- /dev/null +++ b/linux/CMakeLists.txt @@ -0,0 +1,145 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.10) +project(runner LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "aimpoint") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "com.example.aimpoint") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Define the application target. To change its name, change BINARY_NAME above, +# not the value here, or `flutter run` will no longer work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/linux/flutter/CMakeLists.txt b/linux/flutter/CMakeLists.txt new file mode 100644 index 0000000..d5bd016 --- /dev/null +++ b/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..efd1850 --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,19 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include + +void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) flutter_webrtc_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterWebRTCPlugin"); + flutter_web_r_t_c_plugin_register_with_registrar(flutter_webrtc_registrar); + g_autoptr(FlPluginRegistrar) libserialport_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "LibserialportPlugin"); + libserialport_plugin_register_with_registrar(libserialport_registrar); +} diff --git a/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..e0f0a47 --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake new file mode 100644 index 0000000..07da510 --- /dev/null +++ b/linux/flutter/generated_plugins.cmake @@ -0,0 +1,25 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + flutter_webrtc + libserialport +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/linux/main.cc b/linux/main.cc new file mode 100644 index 0000000..e7c5c54 --- /dev/null +++ b/linux/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/linux/my_application.cc b/linux/my_application.cc new file mode 100644 index 0000000..52fff28 --- /dev/null +++ b/linux/my_application.cc @@ -0,0 +1,124 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "aimpoint"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "aimpoint"); + } + + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GApplication::startup. +static void my_application_startup(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/linux/my_application.h b/linux/my_application.h new file mode 100644 index 0000000..72271d5 --- /dev/null +++ b/linux/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/macos/.gitignore b/macos/.gitignore new file mode 100644 index 0000000..746adbb --- /dev/null +++ b/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..c2efd0b --- /dev/null +++ b/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/Flutter-Release.xcconfig b/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..c2efd0b --- /dev/null +++ b/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..194710f --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,14 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import flutter_webrtc +import path_provider_foundation + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FlutterWebRTCPlugin.register(with: registry.registrar(forPlugin: "FlutterWebRTCPlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) +} diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..8396cd9 --- /dev/null +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,705 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* aimpoint.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "aimpoint.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* aimpoint.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* aimpoint.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.aimpoint.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/aimpoint.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/aimpoint"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.aimpoint.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/aimpoint.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/aimpoint"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.aimpoint.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/aimpoint.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/aimpoint"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..c93facc --- /dev/null +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..d53ef64 --- /dev/null +++ b/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a2ec33f --- /dev/null +++ b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..b1288e1 --- /dev/null +++ b/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = aimpoint + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.example.aimpoint + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2024 com.example. All rights reserved. diff --git a/macos/Runner/Configs/Debug.xcconfig b/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Release.xcconfig b/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Warnings.xcconfig b/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..dddb8a3 --- /dev/null +++ b/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist new file mode 100644 index 0000000..4789daa --- /dev/null +++ b/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..3cc05eb --- /dev/null +++ b/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements new file mode 100644 index 0000000..852fa1a --- /dev/null +++ b/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/macos/RunnerTests/RunnerTests.swift b/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..61f3bd1 --- /dev/null +++ b/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Cocoa +import FlutterMacOS +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..7655ba5 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,440 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + crypto: + dependency: transitive + description: + name: crypto + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 + url: "https://pub.dev" + source: hosted + version: "3.0.5" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + dart_webrtc: + dependency: transitive + description: + name: dart_webrtc + sha256: ac7ef077084b3e54004716f1d736fcd839e1b60bc3f21f4122a35a9bb5ca2e47 + url: "https://pub.dev" + source: hosted + version: "1.4.8" + dylib: + dependency: transitive + description: + name: dylib + sha256: bf609b3eb6492a3309b3d1dbe8f83a4031de5535dd7686be33487051cc760bb0 + url: "https://pub.dev" + source: hosted + version: "0.3.3" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" + url: "https://pub.dev" + source: hosted + version: "2.1.3" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_webrtc: + dependency: "direct main" + description: + name: flutter_webrtc + sha256: "67faa07cf49392b50b1aa14590a83caa64d2109345fabd29899dcd8da8538348" + url: "https://pub.dev" + source: hosted + version: "0.11.6+hotfix.1" + get: + dependency: "direct main" + description: + name: get + sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e + url: "https://pub.dev" + source: hosted + version: "4.6.6" + gnss: + dependency: "direct main" + description: + path: "." + ref: main + resolved-ref: fb8ede658017931ab37db2aed4190e9a6ccd6000 + url: "https://git.mcxa.cn:89/flutter/gnss.git" + source: git + version: "0.0.1" + js: + dependency: transitive + description: + name: js + sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf + url: "https://pub.dev" + source: hosted + version: "0.7.1" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + url: "https://pub.dev" + source: hosted + version: "10.0.4" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + libserialport: + dependency: transitive + description: + path: "." + ref: main + resolved-ref: d31d7a2ba5ff9908d7e421f78ec6b7cd2e2c3062 + url: "https://git.mcxa.cn:89/flutter/libserialport.git" + source: git + version: "0.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + url: "https://pub.dev" + source: hosted + version: "3.0.0" + logging: + dependency: transitive + description: + name: logging + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" + source: hosted + version: "0.12.16+1" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + url: "https://pub.dev" + source: hosted + version: "0.8.0" + meta: + dependency: transitive + description: + name: meta + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + url: "https://pub.dev" + source: hosted + version: "1.12.0" + path: + dependency: transitive + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + path_provider: + dependency: transitive + description: + name: path_provider + sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378 + url: "https://pub.dev" + source: hosted + version: "2.1.4" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7" + url: "https://pub.dev" + source: hosted + version: "2.2.10" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 + url: "https://pub.dev" + source: hosted + version: "2.4.0" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" + source: hosted + version: "2.3.0" + platform: + dependency: transitive + description: + name: platform + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" + url: "https://pub.dev" + source: hosted + version: "3.1.5" + platform_detect: + dependency: transitive + description: + name: platform_detect + sha256: a62f99417fc4fa2d099ce0ccdbb1bd3977920f2a64292c326271f049d4bc3a4f + url: "https://pub.dev" + source: hosted + version: "2.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + roslibdart: + dependency: "direct main" + description: + name: roslibdart + sha256: "7473a39947f3f5ee32b032f8bab5285a465449e5cd234ae486e5ea11bd6c9e3b" + url: "https://pub.dev" + source: hosted + version: "0.0.1-dev+4" + scence_map: + dependency: "direct main" + description: + path: "." + ref: main + resolved-ref: abe8b854aa225789a50ae9114c5b422aa3c2b406 + url: "https://git.mcxa.cn:89/flutter/scence_map.git" + source: git + version: "0.0.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + synchronized: + dependency: transitive + description: + name: synchronized + sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" + url: "https://pub.dev" + source: hosted + version: "3.1.0+1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + url: "https://pub.dev" + source: hosted + version: "0.7.0" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" + url: "https://pub.dev" + source: hosted + version: "14.2.1" + web: + dependency: transitive + description: + name: web + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + url: "https://pub.dev" + source: hosted + version: "0.5.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42" + url: "https://pub.dev" + source: hosted + version: "2.4.5" + webrtc_interface: + dependency: transitive + description: + name: webrtc_interface + sha256: abec3ab7956bd5ac539cf34a42fa0c82ea26675847c0966bb85160400eea9388 + url: "https://pub.dev" + source: hosted + version: "1.2.0" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + url: "https://pub.dev" + source: hosted + version: "1.0.4" +sdks: + dart: ">=3.4.4 <4.0.0" + flutter: ">=3.22.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..3168ca1 --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,100 @@ +name: aimpoint +description: "A new Flutter project." +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +# In Windows, build-name is used as the major, minor, and patch parts +# of the product and file versions while build-number is used as the build suffix. +version: 1.0.0+1 + +environment: + sdk: '>=3.4.4 <4.0.0' + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + gnss: + git: + url: https://git.mcxa.cn:89/flutter/gnss.git + ref: main + scence_map: + git: + url: https://git.mcxa.cn:89/flutter/scence_map.git + ref: main + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.6 + get: ^4.6.6 + flutter_webrtc: ^0.11.6+hotfix.1 + roslibdart: ^0.0.1-dev+4 + +dev_dependencies: + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^3.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + assets: + - images/pilerCar.png + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..aa5d47c --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,30 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility in the flutter_test package. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:aimpoint/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(const MyApp()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} diff --git a/web/favicon.png b/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b4d76e525556d5d89141648c724331630325d GIT binary patch literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..def9b27 --- /dev/null +++ b/web/index.html @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + aimpoint + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 0000000..84ae508 --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "aimpoint", + "short_name": "aimpoint", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/windows/.gitignore b/windows/.gitignore new file mode 100644 index 0000000..d492d0d --- /dev/null +++ b/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt new file mode 100644 index 0000000..117ee96 --- /dev/null +++ b/windows/CMakeLists.txt @@ -0,0 +1,108 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(aimpoint LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "aimpoint") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(VERSION 3.14...3.25) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt new file mode 100644 index 0000000..903f489 --- /dev/null +++ b/windows/flutter/CMakeLists.txt @@ -0,0 +1,109 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + ${FLUTTER_TARGET_PLATFORM} $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..8b60194 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,17 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + FlutterWebRTCPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterWebRTCPlugin")); + LibserialportPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("LibserialportPluginCApi")); +} diff --git a/windows/flutter/generated_plugin_registrant.h b/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..dc139d8 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake new file mode 100644 index 0000000..6d4f117 --- /dev/null +++ b/windows/flutter/generated_plugins.cmake @@ -0,0 +1,25 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + flutter_webrtc + libserialport +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/windows/runner/CMakeLists.txt b/windows/runner/CMakeLists.txt new file mode 100644 index 0000000..394917c --- /dev/null +++ b/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc new file mode 100644 index 0000000..d53a262 --- /dev/null +++ b/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "com.example" "\0" + VALUE "FileDescription", "aimpoint" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "aimpoint" "\0" + VALUE "LegalCopyright", "Copyright (C) 2024 com.example. All rights reserved." "\0" + VALUE "OriginalFilename", "aimpoint.exe" "\0" + VALUE "ProductName", "aimpoint" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/windows/runner/flutter_window.cpp b/windows/runner/flutter_window.cpp new file mode 100644 index 0000000..955ee30 --- /dev/null +++ b/windows/runner/flutter_window.cpp @@ -0,0 +1,71 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + // Flutter can complete the first frame before the "show window" callback is + // registered. The following call ensures a frame is pending to ensure the + // window is shown. It is a no-op if the first frame hasn't completed yet. + flutter_controller_->ForceRedraw(); + + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/windows/runner/flutter_window.h b/windows/runner/flutter_window.h new file mode 100644 index 0000000..6da0652 --- /dev/null +++ b/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp new file mode 100644 index 0000000..8b2d2a7 --- /dev/null +++ b/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.Create(L"aimpoint", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/windows/runner/resource.h b/windows/runner/resource.h new file mode 100644 index 0000000..66a65d1 --- /dev/null +++ b/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c04e20caf6370ebb9253ad831cc31de4a9c965f6 GIT binary patch literal 33772 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 literal 0 HcmV?d00001 diff --git a/windows/runner/runner.exe.manifest b/windows/runner/runner.exe.manifest new file mode 100644 index 0000000..a42ea76 --- /dev/null +++ b/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp new file mode 100644 index 0000000..3a0b465 --- /dev/null +++ b/windows/runner/utils.cpp @@ -0,0 +1,65 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + unsigned int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr) + -1; // remove the trailing null character + int input_length = (int)wcslen(utf16_string); + std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + input_length, utf8_string.data(), target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/windows/runner/utils.h b/windows/runner/utils.h new file mode 100644 index 0000000..3879d54 --- /dev/null +++ b/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/windows/runner/win32_window.cpp b/windows/runner/win32_window.cpp new file mode 100644 index 0000000..60608d0 --- /dev/null +++ b/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#include "win32_window.h" + +#include +#include + +#include "resource.h" + +namespace { + +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + } + FreeLibrary(user32_module); +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registrar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + UpdateTheme(window); + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/windows/runner/win32_window.h b/windows/runner/win32_window.h new file mode 100644 index 0000000..e901dde --- /dev/null +++ b/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates a win32 window with |title| that is positioned and sized using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_