Version 1.12
Rasp.Pi Pico switch GP11 & GP12
|
|
@ -9,6 +9,10 @@
|
|||
/* Begin PBXBuildFile section */
|
||||
290439F02292E34200979BAD /* BoardViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 290439EF2292E34200979BAD /* BoardViewController.swift */; };
|
||||
2917003925858C3900E39853 /* BoardViewController+Audio.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2917003825858C3900E39853 /* BoardViewController+Audio.swift */; };
|
||||
293EC85925E8092C008EB6CA /* Teensy41BoardOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 293EC85825E8092C008EB6CA /* Teensy41BoardOverlay.swift */; };
|
||||
2948B61A25E6D82D0013781D /* CircleLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2948B61925E6D82D0013781D /* CircleLabel.swift */; };
|
||||
295049AC25E6996D003E7484 /* CurvedText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295049AB25E6996D003E7484 /* CurvedText.swift */; };
|
||||
295049AE25E69AB0003E7484 /* BLMBoardOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295049AD25E69AB0003E7484 /* BLMBoardOverlay.swift */; };
|
||||
29546B5B2585B51000002715 /* BoardViewController+HostingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29546B5A2585B51000002715 /* BoardViewController+HostingController.swift */; };
|
||||
297574E025A612E4001991E7 /* SwiftUITarotCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 297574DF25A612E4001991E7 /* SwiftUITarotCardView.swift */; };
|
||||
29897A482569E8330080F4BF /* ARScenes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29897A472569E8330080F4BF /* ARScenes.swift */; };
|
||||
|
|
@ -16,6 +20,7 @@
|
|||
298FD3F62270B4D9007E2F4C /* QRViewController+GestureRec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 298FD3F52270B4D9007E2F4C /* QRViewController+GestureRec.swift */; };
|
||||
298FD3F82270B7A5007E2F4C /* QRViewController+Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = 298FD3F72270B7A5007E2F4C /* QRViewController+Video.swift */; };
|
||||
29A07E9725C0CB9F006219C9 /* PICOBoardOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29A07E9625C0CB9F006219C9 /* PICOBoardOverlay.swift */; };
|
||||
29A83D2525EEC3F60018BEAB /* Pi400Overlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29A83D2425EEC3F60018BEAB /* Pi400Overlay.swift */; };
|
||||
29AA121D25A9717E0037003B /* ListOfTexts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29AA121C25A9717E0037003B /* ListOfTexts.swift */; };
|
||||
29B109C922933CE9004D6D58 /* BoardViewController+Gesture Recognizers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B109C822933CE9004D6D58 /* BoardViewController+Gesture Recognizers.swift */; };
|
||||
29D096292559C71D0032654B /* ClickableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29D096282559C71D0032654B /* ClickableView.swift */; };
|
||||
|
|
@ -40,16 +45,6 @@
|
|||
D5F2F4EE208E190E00B0790B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D5F2F4EC208E190E00B0790B /* LaunchScreen.storyboard */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
D516FD8F222482DD004D151B /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = D5F2F4D6208E190D00B0790B /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = D5F2F4DD208E190D00B0790B;
|
||||
remoteInfo = "Adafruit AR";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
D53C6F1A20D2B93C0051A030 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
|
|
@ -66,6 +61,10 @@
|
|||
/* Begin PBXFileReference section */
|
||||
290439EF2292E34200979BAD /* BoardViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BoardViewController.swift; sourceTree = "<group>"; };
|
||||
2917003825858C3900E39853 /* BoardViewController+Audio.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BoardViewController+Audio.swift"; sourceTree = "<group>"; };
|
||||
293EC85825E8092C008EB6CA /* Teensy41BoardOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Teensy41BoardOverlay.swift; sourceTree = "<group>"; };
|
||||
2948B61925E6D82D0013781D /* CircleLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleLabel.swift; sourceTree = "<group>"; };
|
||||
295049AB25E6996D003E7484 /* CurvedText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurvedText.swift; sourceTree = "<group>"; };
|
||||
295049AD25E69AB0003E7484 /* BLMBoardOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BLMBoardOverlay.swift; sourceTree = "<group>"; };
|
||||
29546B5A2585B51000002715 /* BoardViewController+HostingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BoardViewController+HostingController.swift"; sourceTree = "<group>"; };
|
||||
297574DF25A612E4001991E7 /* SwiftUITarotCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUITarotCardView.swift; sourceTree = "<group>"; };
|
||||
29897A472569E8330080F4BF /* ARScenes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ARScenes.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -73,11 +72,11 @@
|
|||
298FD3F52270B4D9007E2F4C /* QRViewController+GestureRec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "QRViewController+GestureRec.swift"; sourceTree = "<group>"; };
|
||||
298FD3F72270B7A5007E2F4C /* QRViewController+Video.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "QRViewController+Video.swift"; sourceTree = "<group>"; };
|
||||
29A07E9625C0CB9F006219C9 /* PICOBoardOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PICOBoardOverlay.swift; sourceTree = "<group>"; };
|
||||
29A83D2425EEC3F60018BEAB /* Pi400Overlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Pi400Overlay.swift; sourceTree = "<group>"; };
|
||||
29AA121C25A9717E0037003B /* ListOfTexts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListOfTexts.swift; sourceTree = "<group>"; };
|
||||
29B109C822933CE9004D6D58 /* BoardViewController+Gesture Recognizers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BoardViewController+Gesture Recognizers.swift"; sourceTree = "<group>"; };
|
||||
29D096282559C71D0032654B /* ClickableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClickableView.swift; sourceTree = "<group>"; };
|
||||
D515BAD921FF5826001E7079 /* Highlight SCNNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Highlight SCNNode.swift"; sourceTree = "<group>"; };
|
||||
D516FD8A222482DC004D151B /* Adafruit ARTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Adafruit ARTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D54801CB217E118B00170412 /* hallowing_eye.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = hallowing_eye.mov; sourceTree = "<group>"; };
|
||||
D54E995A20E155DF0021A2E5 /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
|
||||
D55B075A20FF8DD40066976C /* ViewController+Gesture Recognizers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ViewController+Gesture Recognizers.swift"; sourceTree = "<group>"; };
|
||||
|
|
@ -101,13 +100,6 @@
|
|||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
D516FD87222482DC004D151B /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D5F2F4DB208E190D00B0790B /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
|
@ -157,7 +149,12 @@
|
|||
290439EF2292E34200979BAD /* BoardViewController.swift */,
|
||||
297574DF25A612E4001991E7 /* SwiftUITarotCardView.swift */,
|
||||
29A07E9625C0CB9F006219C9 /* PICOBoardOverlay.swift */,
|
||||
293EC85825E8092C008EB6CA /* Teensy41BoardOverlay.swift */,
|
||||
29A83D2425EEC3F60018BEAB /* Pi400Overlay.swift */,
|
||||
295049AB25E6996D003E7484 /* CurvedText.swift */,
|
||||
295049AD25E69AB0003E7484 /* BLMBoardOverlay.swift */,
|
||||
2917003825858C3900E39853 /* BoardViewController+Audio.swift */,
|
||||
2948B61925E6D82D0013781D /* CircleLabel.swift */,
|
||||
29546B5A2585B51000002715 /* BoardViewController+HostingController.swift */,
|
||||
29AA121C25A9717E0037003B /* ListOfTexts.swift */,
|
||||
29897A472569E8330080F4BF /* ARScenes.swift */,
|
||||
|
|
@ -198,7 +195,6 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
D5F2F4DE208E190D00B0790B /* Adafruit AR.app */,
|
||||
D516FD8A222482DC004D151B /* Adafruit ARTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -225,24 +221,6 @@
|
|||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
D516FD89222482DC004D151B /* Adafruit ARTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = D516FD91222482DD004D151B /* Build configuration list for PBXNativeTarget "Adafruit ARTests" */;
|
||||
buildPhases = (
|
||||
D516FD86222482DC004D151B /* Sources */,
|
||||
D516FD87222482DC004D151B /* Frameworks */,
|
||||
D516FD88222482DC004D151B /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
D516FD90222482DD004D151B /* PBXTargetDependency */,
|
||||
);
|
||||
name = "Adafruit ARTests";
|
||||
productName = "Adafruit ARTests";
|
||||
productReference = D516FD8A222482DC004D151B /* Adafruit ARTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
D5F2F4DD208E190D00B0790B /* Adafruit AR */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = D5F2F4F2208E190E00B0790B /* Build configuration list for PBXNativeTarget "Adafruit AR" */;
|
||||
|
|
@ -272,11 +250,6 @@
|
|||
LastUpgradeCheck = 1200;
|
||||
ORGANIZATIONNAME = "Vanguard Logic LLC";
|
||||
TargetAttributes = {
|
||||
D516FD89222482DC004D151B = {
|
||||
CreatedOnToolsVersion = 10.1;
|
||||
LastSwiftMigration = 1010;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
D5F2F4DD208E190D00B0790B = {
|
||||
CreatedOnToolsVersion = 9.2;
|
||||
ProvisioningStyle = Automatic;
|
||||
|
|
@ -302,19 +275,11 @@
|
|||
projectRoot = "";
|
||||
targets = (
|
||||
D5F2F4DD208E190D00B0790B /* Adafruit AR */,
|
||||
D516FD89222482DC004D151B /* Adafruit ARTests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
D516FD88222482DC004D151B /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D5F2F4DC208E190D00B0790B /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
|
@ -347,13 +312,6 @@
|
|||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
D516FD86222482DC004D151B /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D5F2F4DA208E190D00B0790B /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
|
@ -373,14 +331,19 @@
|
|||
29897A58256CA76F0080F4BF /* ARWorldAnchor.swift in Sources */,
|
||||
D515BADA21FF5826001E7079 /* Highlight SCNNode.swift in Sources */,
|
||||
29A07E9725C0CB9F006219C9 /* PICOBoardOverlay.swift in Sources */,
|
||||
29A83D2525EEC3F60018BEAB /* Pi400Overlay.swift in Sources */,
|
||||
295049AC25E6996D003E7484 /* CurvedText.swift in Sources */,
|
||||
2948B61A25E6D82D0013781D /* CircleLabel.swift in Sources */,
|
||||
D56ED488213EEC94000E62F0 /* QRViewController.swift in Sources */,
|
||||
D55B075B20FF8DD40066976C /* ViewController+Gesture Recognizers.swift in Sources */,
|
||||
290439F02292E34200979BAD /* BoardViewController.swift in Sources */,
|
||||
29546B5B2585B51000002715 /* BoardViewController+HostingController.swift in Sources */,
|
||||
298FD3F82270B7A5007E2F4C /* QRViewController+Video.swift in Sources */,
|
||||
295049AE25E69AB0003E7484 /* BLMBoardOverlay.swift in Sources */,
|
||||
D55F683120BF2CA4005219D9 /* Utilities.swift in Sources */,
|
||||
D5F2F4E2208E190D00B0790B /* AppDelegate.swift in Sources */,
|
||||
D58A102C20FE6C39003B0E93 /* ViewController+Nodes.swift in Sources */,
|
||||
293EC85925E8092C008EB6CA /* Teensy41BoardOverlay.swift in Sources */,
|
||||
29B109C922933CE9004D6D58 /* BoardViewController+Gesture Recognizers.swift in Sources */,
|
||||
D56ED486213EE255000E62F0 /* MainViewController.swift in Sources */,
|
||||
2917003925858C3900E39853 /* BoardViewController+Audio.swift in Sources */,
|
||||
|
|
@ -389,14 +352,6 @@
|
|||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
D516FD90222482DD004D151B /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = D5F2F4DD208E190D00B0790B /* Adafruit AR */;
|
||||
targetProxy = D516FD8F222482DD004D151B /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
D5F2F4E7208E190D00B0790B /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
|
|
@ -417,44 +372,6 @@
|
|||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
D516FD92222482DD004D151B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 2X94RM7457;
|
||||
INFOPLIST_FILE = "Adafruit ARTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "Adafruit-Industries-LLC.Adafruit-ARTests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Adafruit AR/Adafruit ARTests-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
D516FD93222482DD004D151B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 2X94RM7457;
|
||||
INFOPLIST_FILE = "Adafruit ARTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "Adafruit-Industries-LLC.Adafruit-ARTests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Adafruit AR/Adafruit ARTests-Bridging-Header.h";
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
D5F2F4F0208E190E00B0790B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
|
|
@ -506,7 +423,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.4;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
|
|
@ -560,7 +477,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.4;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
|
|
@ -573,16 +490,16 @@
|
|||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
CURRENT_PROJECT_VERSION = 3;
|
||||
DEVELOPMENT_TEAM = 2X94RM7457;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Frameworks",
|
||||
);
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.4;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
MARKETING_VERSION = 1.10.4;
|
||||
MARKETING_VERSION = 1.12;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.adafruit.adafruit-AR";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 4.0;
|
||||
|
|
@ -595,16 +512,16 @@
|
|||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
CURRENT_PROJECT_VERSION = 3;
|
||||
DEVELOPMENT_TEAM = 2X94RM7457;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/Frameworks",
|
||||
);
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.4;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
MARKETING_VERSION = 1.10.4;
|
||||
MARKETING_VERSION = 1.12;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.adafruit.adafruit-AR";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 4.0;
|
||||
|
|
@ -615,15 +532,6 @@
|
|||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
D516FD91222482DD004D151B /* Build configuration list for PBXNativeTarget "Adafruit ARTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
D516FD92222482DD004D151B /* Debug */,
|
||||
D516FD93222482DD004D151B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
D5F2F4D9208E190D00B0790B /* Build configuration list for PBXProject "Adafruit AR" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
|
|
|
|||
|
|
@ -24,25 +24,29 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||
|
||||
self.window?.rootViewController = vc
|
||||
self.window?.makeKeyAndVisible()
|
||||
|
||||
print(#function)
|
||||
return true
|
||||
}
|
||||
|
||||
func applicationWillResignActive(_ application: UIApplication) {
|
||||
print(#function)
|
||||
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
|
||||
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
|
||||
}
|
||||
|
||||
func applicationDidEnterBackground(_ application: UIApplication) {
|
||||
print(#function)
|
||||
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
|
||||
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
|
||||
}
|
||||
|
||||
func applicationWillEnterForeground(_ application: UIApplication) {
|
||||
print(#function)
|
||||
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
|
||||
}
|
||||
|
||||
func applicationDidBecomeActive(_ application: UIApplication) {
|
||||
print(#function)
|
||||
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="TV4-si-PBW">
|
||||
<device id="retina5_9" orientation="portrait" appearance="light"/>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="TV4-si-PBW">
|
||||
<device id="ipad11_0rounded" orientation="portrait" layout="fullscreen" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17125"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17703"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
|
|
@ -13,11 +12,11 @@
|
|||
<objects>
|
||||
<viewController id="2cU-fx-wlI" userLabel="QR Mode" customClass="QRViewController" customModule="Adafruit_AR" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="g5D-Fh-qu3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="834" height="1194"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<arscnView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FWL-fP-Q4m">
|
||||
<rect key="frame" x="-44" y="0.0" width="463" height="812"/>
|
||||
<rect key="frame" x="-44" y="0.0" width="922" height="1208"/>
|
||||
</arscnView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="QR Scanner" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Pjb-dT-HnP">
|
||||
<rect key="frame" x="16" y="51" width="161" height="31"/>
|
||||
|
|
@ -28,14 +27,14 @@
|
|||
<color key="shadowColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dxt-9f-ehL" userLabel="Flashlight Button">
|
||||
<rect key="frame" x="319" y="144" width="35" height="35"/>
|
||||
<rect key="frame" x="778" y="144" width="35" height="35"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<connections>
|
||||
<action selector="torchAction:" destination="2cU-fx-wlI" eventType="touchUpInside" id="aTK-N7-y1S"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleAspectFit" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Gpe-cv-516">
|
||||
<rect key="frame" x="319" y="44" width="35" height="35"/>
|
||||
<rect key="frame" x="778" y="44" width="35" height="35"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" image="HomeIcon">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
|
|
@ -45,7 +44,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PJF-SR-1Br" userLabel="Info Button">
|
||||
<rect key="frame" x="319" y="94" width="35" height="35"/>
|
||||
<rect key="frame" x="778" y="94" width="35" height="35"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" image="?mark_icon"/>
|
||||
<connections>
|
||||
|
|
@ -53,35 +52,22 @@
|
|||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" alpha="0.40000000000000002" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Scan Here" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HH5-el-Qp1">
|
||||
<rect key="frame" x="128" y="353" width="117" height="38"/>
|
||||
<rect key="frame" x="285" y="519" width="260" height="56"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" name="Avenir-Heavy" family="Avenir" pointSize="20"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<visualEffectView opaque="NO" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="lp0-H7-A8R">
|
||||
<rect key="frame" x="0.0" y="786" width="375" height="49"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="wpv-DE-6SP">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="49"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
</view>
|
||||
<blurEffect style="light"/>
|
||||
</visualEffectView>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="QeJ-sR-TtX"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="FWL-fP-Q4m" firstAttribute="bottom" secondItem="QeJ-sR-TtX" secondAttribute="bottom" constant="34" id="5vl-um-jaa"/>
|
||||
<constraint firstItem="lp0-H7-A8R" firstAttribute="trailing" secondItem="QeJ-sR-TtX" secondAttribute="trailing" id="9gM-QE-lmK"/>
|
||||
<constraint firstItem="lp0-H7-A8R" firstAttribute="top" secondItem="g5D-Fh-qu3" secondAttribute="top" constant="-23" id="MgC-fa-vVg"/>
|
||||
<constraint firstAttribute="bottom" secondItem="lp0-H7-A8R" secondAttribute="bottom" constant="-23" id="Rgm-Gq-vXx"/>
|
||||
<constraint firstItem="FWL-fP-Q4m" firstAttribute="trailing" secondItem="QeJ-sR-TtX" secondAttribute="trailing" constant="44" id="eek-V2-JgP"/>
|
||||
<constraint firstItem="lp0-H7-A8R" firstAttribute="leading" secondItem="QeJ-sR-TtX" secondAttribute="leading" id="jEZ-8l-2NA"/>
|
||||
<constraint firstItem="FWL-fP-Q4m" firstAttribute="top" secondItem="g5D-Fh-qu3" secondAttribute="top" id="tGC-DN-RTV"/>
|
||||
<constraint firstItem="FWL-fP-Q4m" firstAttribute="leading" secondItem="QeJ-sR-TtX" secondAttribute="leading" constant="-44" id="u3Q-a8-1hO"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="addedBlurEffect" destination="lp0-H7-A8R" id="fDc-23-LaB"/>
|
||||
<outlet property="homeButton" destination="Gpe-cv-516" id="vL5-p0-RPJ"/>
|
||||
<outlet property="qrCodeInfoDisplay" destination="VLs-pf-QcC" id="uVa-iw-s0p"/>
|
||||
<outlet property="qrInfoDisplayButton" destination="Txl-RF-5cA" id="O67-Ol-TnY"/>
|
||||
|
|
@ -151,39 +137,40 @@
|
|||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="2165.5999999999999" y="-1298.2758620689656"/>
|
||||
<point key="canvasLocation" x="2165.4676258992808" y="-1298.4924623115578"/>
|
||||
</scene>
|
||||
<!--Board Info Mode-->
|
||||
<scene sceneID="nSQ-gb-evL">
|
||||
<objects>
|
||||
<viewController id="vvW-nO-QUQ" userLabel="Board Info Mode" customClass="BoardViewController" customModule="Adafruit_AR" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="cTq-J8-T1c">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="834" height="1194"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<arscnView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="UH8-jw-YWj">
|
||||
<rect key="frame" x="-7" y="-5" width="390" height="821"/>
|
||||
<rect key="frame" x="-7" y="-5" width="849" height="1203"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
</arscnView>
|
||||
<button opaque="NO" contentMode="scaleAspectFit" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VS0-h9-CUy" userLabel="Home Button">
|
||||
<rect key="frame" x="319" y="44" width="35" height="35"/>
|
||||
<rect key="frame" x="778" y="44" width="35" height="35"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" image="HomeIcon">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<segue destination="TV4-si-PBW" kind="presentation" modalPresentationStyle="fullScreen" modalTransitionStyle="flipHorizontal" id="pYP-7V-B9Y"/>
|
||||
<action selector="homeButtonAction:" destination="vvW-nO-QUQ" eventType="touchUpInside" id="zJw-T5-IjF"/>
|
||||
<segue destination="TV4-si-PBW" kind="presentation" modalPresentationStyle="fullScreen" modalTransitionStyle="crossDissolve" id="u7e-oD-Y3K"/>
|
||||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Scan Here" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Zl7-iH-s6c">
|
||||
<rect key="frame" x="143" y="371" width="90" height="26"/>
|
||||
<rect key="frame" x="373" y="551" width="90" height="26"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" name="Avenir-Heavy" family="Avenir" pointSize="19"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.51961151541095896" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="M1b-X6-ClA" userLabel="Info Button">
|
||||
<rect key="frame" x="319" y="94" width="35" height="35"/>
|
||||
<rect key="frame" x="778" y="94" width="35" height="35"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" image="?mark_icon"/>
|
||||
<connections>
|
||||
|
|
@ -191,28 +178,23 @@
|
|||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Board Scanner" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="soT-Be-nk8">
|
||||
<rect key="frame" x="6" y="25" width="158" height="45"/>
|
||||
<rect key="frame" x="19" y="37" width="158" height="45"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" name="Avenir-Heavy" family="Avenir" pointSize="19"/>
|
||||
<color key="textColor" name="alternateSelectedControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="GB5-dl-wU7">
|
||||
<rect key="frame" x="313" y="152" width="46" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Button"/>
|
||||
</button>
|
||||
<visualEffectView opaque="NO" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Hrs-8n-nRU">
|
||||
<rect key="frame" x="-7" y="0.0" width="390" height="816"/>
|
||||
<rect key="frame" x="-7" y="0.0" width="849" height="1198"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" id="Yk8-9c-YvN">
|
||||
<rect key="frame" x="0.0" y="0.0" width="390" height="816"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="849" height="1198"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
</view>
|
||||
<blurEffect style="light"/>
|
||||
</visualEffectView>
|
||||
<view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="RYM-3l-bpr">
|
||||
<rect key="frame" x="43" y="137" width="292" height="382"/>
|
||||
<rect key="frame" x="281" y="259" width="292" height="382"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" lineBreakMode="tailTruncation" numberOfLines="7" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Bi5-NN-nXJ">
|
||||
|
|
@ -235,10 +217,11 @@ Works with:
|
|||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Scan your Raspberry Pi Pico to
display an overlay of it's Pinouts
and Power Pins!
(Only Available for iOS 14+)
" lineBreakMode="tailTruncation" numberOfLines="7" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="j7N-r2-7EC">
|
||||
<rect key="frame" x="26" y="223" width="258" height="103"/>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" lineBreakMode="tailTruncation" numberOfLines="4" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="j7N-r2-7EC">
|
||||
<rect key="frame" x="25" y="212" width="246" height="96"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" name="AvenirNext-Bold" family="Avenir Next" pointSize="15"/>
|
||||
<string key="text">Scan your Raspberry Pi Pico, Raspberry Pi 400, and Teensy 4.1 to display an overlay of its
Pinouts and Power Pins!
(Only Available for iOS 14+)
</string>
|
||||
<fontDescription key="fontDescription" name="AvenirNext-DemiBold" family="Avenir Next" pointSize="24"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
|
|
@ -264,30 +247,27 @@ Works with:
|
|||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="8eE-ts-kY1"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<variation key="default">
|
||||
<mask key="subviews">
|
||||
<exclude reference="GB5-dl-wU7"/>
|
||||
</mask>
|
||||
</variation>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" id="VSu-oy-E0D"/>
|
||||
<connections>
|
||||
<outlet property="boardInfoButton" destination="M1b-X6-ClA" id="c6w-Z2-UH6"/>
|
||||
<outlet property="boardItemView" destination="RYM-3l-bpr" id="nYB-tU-rAW"/>
|
||||
<outlet property="boardSceneView" destination="UH8-jw-YWj" id="VNq-YM-bid"/>
|
||||
<outlet property="homeButton" destination="VS0-h9-CUy" id="qd4-BW-beA"/>
|
||||
<outlet property="scanLabel" destination="Zl7-iH-s6c" id="lWH-do-Abr"/>
|
||||
<outlet property="visualBoardEffectView" destination="Hrs-8n-nRU" id="afV-qX-qkQ"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="kqJ-3F-tXc" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="2165.5999999999999" y="-591.13300492610836"/>
|
||||
<point key="canvasLocation" x="2367.6258992805756" y="-455.27638190954775"/>
|
||||
</scene>
|
||||
<!--Onboarding p1-->
|
||||
<scene sceneID="sWd-JV-Aqa">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="oneVC" id="xz2-3d-SKg" userLabel="Onboarding p1" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="kVI-hv-JTR">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="834" height="1194"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Adafruit AR" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nXA-oS-Fcu">
|
||||
|
|
@ -299,7 +279,7 @@ Works with:
|
|||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="Adabot-Mode-icon-512px" translatesAutoresizingMaskIntoConstraints="NO" id="3Pr-7B-Svr">
|
||||
<rect key="frame" x="28" y="248" width="317" height="315"/>
|
||||
<rect key="frame" x="62" y="365" width="705" height="463"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Welcome to" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oIv-ru-hfz">
|
||||
|
|
@ -311,7 +291,7 @@ Works with:
|
|||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" contentInsetAdjustmentBehavior="never" editable="NO" text="Adafruit AR has three modes …" textAlignment="center" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pDm-P7-xWw">
|
||||
<rect key="frame" x="16" y="629" width="342" height="46"/>
|
||||
<rect key="frame" x="36" y="925" width="760" height="68"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
|
|
@ -332,11 +312,11 @@ Works with:
|
|||
<objects>
|
||||
<viewController storyboardIdentifier="twoVC" id="p3Z-Jb-TF3" userLabel="Onboarding p2" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="Zdv-4q-pNS">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="834" height="1194"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="test1" translatesAutoresizingMaskIntoConstraints="NO" id="5i7-wJ-8X2" userLabel="Adabot">
|
||||
<rect key="frame" x="36" y="157" width="300" height="300"/>
|
||||
<rect key="frame" x="80" y="231" width="667" height="441"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="adabot" translatesAutoresizingMaskIntoConstraints="NO" id="fSX-bs-tx0">
|
||||
|
|
@ -344,7 +324,7 @@ Works with:
|
|||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" contentInsetAdjustmentBehavior="never" editable="NO" textAlignment="center" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="s4z-Yk-nql">
|
||||
<rect key="frame" x="16" y="452" width="342" height="304"/>
|
||||
<rect key="frame" x="36" y="665" width="760" height="447"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<string key="text">Meet Adabot, your personal robot assistant!
|
||||
|
|
@ -391,7 +371,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<objects>
|
||||
<viewController storyboardIdentifier="threeVC" id="8Ju-7z-dYQ" userLabel="Onboarding p3" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="bpi-hr-fH6">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="834" height="1194"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Board Info" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Cde-7o-6y5">
|
||||
|
|
@ -415,11 +395,11 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="cpx1" translatesAutoresizingMaskIntoConstraints="NO" id="e4O-gF-k4I" userLabel="Adabot">
|
||||
<rect key="frame" x="36" y="174" width="300" height="300"/>
|
||||
<rect key="frame" x="80" y="256" width="667" height="441"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" contentInsetAdjustmentBehavior="never" editable="NO" textAlignment="center" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iGf-jB-gh2">
|
||||
<rect key="frame" x="16" y="495" width="342" height="153"/>
|
||||
<rect key="frame" x="36" y="728" width="760" height="225"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<string key="text">In Board Info mode, view your own real Adafruit board with an AR overlay describing important details - chips, components, & more! </string>
|
||||
|
|
@ -446,11 +426,11 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<objects>
|
||||
<viewController storyboardIdentifier="fourVC" id="LE7-Yd-1BJ" userLabel="Onboarding p3" customClass="pageThree" customModule="Adafruit_AR" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="HPO-9H-aZH">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="834" height="1194"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleAspectFit" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hxB-7h-VYD">
|
||||
<rect key="frame" x="102" y="701" width="170" height="42"/>
|
||||
<rect key="frame" x="227" y="1031" width="378" height="62"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="17"/>
|
||||
|
|
@ -468,7 +448,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
</connections>
|
||||
</button>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" editable="NO" textAlignment="center" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xbb-c5-i7W">
|
||||
<rect key="frame" x="16" y="493" width="342" height="187"/>
|
||||
<rect key="frame" x="36" y="725" width="760" height="275"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<string key="text">While in QR mode, scan the Adafruit QR code on your invoice to display 3D product models, descriptions, videos, and links to helpful tutorials.</string>
|
||||
|
|
@ -477,7 +457,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
|
||||
</textView>
|
||||
<imageView opaque="NO" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="QR-Mode-icon-512px" translatesAutoresizingMaskIntoConstraints="NO" id="n19-Bk-a29">
|
||||
<rect key="frame" x="47" y="167" width="279" height="280"/>
|
||||
<rect key="frame" x="105" y="246" width="620" height="411"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="QR Codes" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kdp-xp-SKl">
|
||||
|
|
@ -521,23 +501,23 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<!--Mode Slection-->
|
||||
<scene sceneID="fpm-m4-xnb">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="Main" id="TV4-si-PBW" userLabel="Mode Slection" customClass="MainViewController" customModule="Adafruit_AR" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="3Za-QD-T4W">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||
<viewController storyboardIdentifier="Main" modalPresentationStyle="fullScreen" id="TV4-si-PBW" userLabel="Mode Slection" customClass="MainViewController" customModule="Adafruit_AR" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="3Za-QD-T4W">
|
||||
<rect key="frame" x="0.0" y="0.0" width="834" height="1194"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenDisabled="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i4v-di-Acz">
|
||||
<rect key="frame" x="120.00000000000001" y="155" width="135.33333333333337" height="135.33333333333337"/>
|
||||
<rect key="frame" x="317.5" y="111" width="199" height="199"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="i4v-di-Acz" secondAttribute="height" multiplier="1:1" id="GOQ-tj-cVV"/>
|
||||
</constraints>
|
||||
<state key="normal" image="Adabot-Mode-icon-512px"/>
|
||||
<connections>
|
||||
<segue destination="BV1-FR-VrT" kind="presentation" modalPresentationStyle="fullScreen" modalTransitionStyle="flipHorizontal" id="XGC-UV-bv7"/>
|
||||
<segue destination="BV1-FR-VrT" kind="presentation" identifier="" modalPresentationStyle="fullScreen" modalTransitionStyle="flipHorizontal" id="XGC-UV-bv7"/>
|
||||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Version" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xf5-5J-Hvr" userLabel="Version Label">
|
||||
<rect key="frame" x="150" y="96" width="75" height="20"/>
|
||||
<rect key="frame" x="379.5" y="52" width="75" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="Crv-CA-c1G"/>
|
||||
<constraint firstAttribute="width" constant="75" id="mld-fB-mmo"/>
|
||||
|
|
@ -547,7 +527,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Adafruit AR" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="1" translatesAutoresizingMaskIntoConstraints="NO" id="hrz-cZ-enL" userLabel="Title Label">
|
||||
<rect key="frame" x="87.666666666666686" y="46" width="200" height="50"/>
|
||||
<rect key="frame" x="317" y="2" width="200" height="50"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="7Vm-T1-J6i"/>
|
||||
<constraint firstAttribute="width" constant="200" id="Tnq-jz-oem"/>
|
||||
|
|
@ -557,7 +537,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Board Scanner" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="69X-ph-JvD" userLabel="Board Label">
|
||||
<rect key="frame" x="97.666666666666686" y="502.33333333333326" width="180" height="28"/>
|
||||
<rect key="frame" x="327" y="585.5" width="180" height="28"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="180" id="YDO-Dj-dEZ"/>
|
||||
</constraints>
|
||||
|
|
@ -566,7 +546,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Meet Adabot" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GPs-fe-Oq7" userLabel="Adabot Label">
|
||||
<rect key="frame" x="97.666666666666686" y="298.33333333333331" width="180" height="28"/>
|
||||
<rect key="frame" x="327" y="318" width="180" height="28"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="180" id="vbi-ic-tFI"/>
|
||||
</constraints>
|
||||
|
|
@ -575,17 +555,17 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="71S-tN-o8i" userLabel="Board Icon">
|
||||
<rect key="frame" x="120.00000000000001" y="359" width="135.33333333333337" height="135.33333333333337"/>
|
||||
<rect key="frame" x="317.5" y="378.5" width="199" height="199"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="71S-tN-o8i" secondAttribute="height" multiplier="1:1" id="Rge-Dd-gQ4"/>
|
||||
</constraints>
|
||||
<state key="normal" title="Button" image="Circuit_Playground1-mask2"/>
|
||||
<connections>
|
||||
<segue destination="vvW-nO-QUQ" kind="presentation" modalPresentationStyle="fullScreen" modalTransitionStyle="flipHorizontal" id="Ekl-WB-CCK"/>
|
||||
<segue destination="vvW-nO-QUQ" kind="presentation" identifier="" modalPresentationStyle="fullScreen" modalTransitionStyle="crossDissolve" id="Ekl-WB-CCK"/>
|
||||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Scan QR Code" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JoM-op-FvU" userLabel="QR Label">
|
||||
<rect key="frame" x="97.666666666666686" y="706.33333333333337" width="180" height="27.333333333333371"/>
|
||||
<rect key="frame" x="327" y="853.5" width="180" height="27.5"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="180" id="Lkf-ET-bM9"/>
|
||||
</constraints>
|
||||
|
|
@ -594,7 +574,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleAspectFit" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NU1-NZ-3YS" userLabel="QR Icon">
|
||||
<rect key="frame" x="120.00000000000001" y="563" width="135.33333333333337" height="135.33333333333337"/>
|
||||
<rect key="frame" x="317.5" y="646.5" width="199" height="199"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="NU1-NZ-3YS" secondAttribute="height" multiplier="1:1" id="0uH-dD-LiF"/>
|
||||
</constraints>
|
||||
|
|
@ -603,6 +583,10 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<segue destination="2cU-fx-wlI" kind="presentation" modalPresentationStyle="fullScreen" modalTransitionStyle="flipHorizontal" id="nhd-am-G0o"/>
|
||||
</connections>
|
||||
</button>
|
||||
<arscnView hidden="YES" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="n9p-8U-ZtN">
|
||||
<rect key="frame" x="0.0" y="1046" width="1" height="1"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
</arscnView>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="AW5-us-1F3"/>
|
||||
<color key="backgroundColor" red="0.15781691670417786" green="0.67801815271377563" blue="0.93185180425643921" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
|
|
@ -628,9 +612,11 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<constraint firstItem="69X-ph-JvD" firstAttribute="top" secondItem="71S-tN-o8i" secondAttribute="bottom" constant="8" id="xxi-vL-Mg6"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" id="BHS-Qm-M7o"/>
|
||||
<connections>
|
||||
<outlet property="ARLabel" destination="GPs-fe-Oq7" id="0uu-JS-jI1"/>
|
||||
<outlet property="arModeAdabot" destination="i4v-di-Acz" id="imG-wo-zZB"/>
|
||||
<outlet property="boardView" destination="n9p-8U-ZtN" id="Es2-lW-ANW"/>
|
||||
<outlet property="qrLabel" destination="JoM-op-FvU" id="qq2-gj-fB0"/>
|
||||
<outlet property="qrModeIcon" destination="NU1-NZ-3YS" id="2Bc-I2-dkp"/>
|
||||
<outlet property="versionNumberLabel" destination="Xf5-5J-Hvr" id="YkT-bR-DRp"/>
|
||||
|
|
@ -638,22 +624,22 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="xBP-Oc-3Qf" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="775.36231884057975" y="-1303.7946428571429"/>
|
||||
<point key="canvasLocation" x="774.8201438848921" y="-1304.0201005025126"/>
|
||||
</scene>
|
||||
<!--Adabot Mode-->
|
||||
<scene sceneID="tXr-a1-R10">
|
||||
<objects>
|
||||
<viewController id="BV1-FR-VrT" userLabel="Adabot Mode" customClass="ViewController" customModule="Adafruit_AR" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="KUk-eV-fls">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="834" height="1194"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<arscnView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MgE-aG-4qB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="811"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="834" height="1193"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
</arscnView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MOVE AROUND TO SCAN A SURFACE" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cBD-LG-gQT">
|
||||
<rect key="frame" x="7" y="173" width="363" height="25.666666666666657"/>
|
||||
<rect key="frame" x="7" y="129" width="822" height="26"/>
|
||||
<fontDescription key="fontDescription" name="AvenirNext-DemiBold" family="Avenir Next" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
|
@ -661,14 +647,14 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<size key="shadowOffset" width="1" height="1"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uLI-mV-Wox">
|
||||
<rect key="frame" x="278" y="716" width="66" height="66"/>
|
||||
<rect key="frame" x="737" y="1098" width="66" height="66"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<connections>
|
||||
<action selector="toggleAction:" destination="BV1-FR-VrT" eventType="touchUpInside" id="x1v-Ne-U66"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="w89-iZ-RSu">
|
||||
<rect key="frame" x="166" y="727" width="44" height="44"/>
|
||||
<rect key="frame" x="396" y="1109" width="44" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<fontDescription key="fontDescription" name="AvenirNext-Regular" family="Avenir Next" pointSize="15"/>
|
||||
|
|
@ -680,7 +666,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="n5S-6N-62f">
|
||||
<rect key="frame" x="31" y="716" width="66" height="66"/>
|
||||
<rect key="frame" x="31" y="1098" width="66" height="66"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.4488220363" blue="1" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
|
|
@ -690,7 +676,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleAspectFit" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="498-ob-xo5">
|
||||
<rect key="frame" x="319" y="94" width="35" height="35"/>
|
||||
<rect key="frame" x="778" y="94" width="35" height="35"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Info" image="?mark_icon"/>
|
||||
<connections>
|
||||
|
|
@ -698,7 +684,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleAspectFit" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fZt-j6-9yz">
|
||||
<rect key="frame" x="319" y="44" width="35" height="35"/>
|
||||
<rect key="frame" x="778" y="44" width="35" height="35"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Home" image="HomeIcon"/>
|
||||
<connections>
|
||||
|
|
@ -706,9 +692,9 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
</connections>
|
||||
</button>
|
||||
<visualEffectView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5y3-JG-2nO">
|
||||
<rect key="frame" x="-44" y="0.0" width="463" height="812"/>
|
||||
<rect key="frame" x="-44" y="0.0" width="922" height="1194"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="vNn-B3-qK9">
|
||||
<rect key="frame" x="0.0" y="0.0" width="463" height="812"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="922" height="1194"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
</view>
|
||||
<blurEffect style="light"/>
|
||||
|
|
@ -745,7 +731,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="x0S-5Z-H4u">
|
||||
<rect key="frame" x="324" y="304" width="42" height="33"/>
|
||||
<rect key="frame" x="324" y="338" width="42" height="33"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="17"/>
|
||||
<state key="normal" title="Done">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
|
|
@ -755,13 +741,13 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Adabot Mode" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TiD-Yf-XKO">
|
||||
<rect key="frame" x="289.66666666666669" y="113" width="109.66666666666669" height="24"/>
|
||||
<rect key="frame" x="289.5" y="113" width="110" height="24"/>
|
||||
<fontDescription key="fontDescription" name="AvenirNext-Medium" family="Avenir Next" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="tailTruncation" numberOfLines="20" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Df6-iJ-WjG" userLabel="help text">
|
||||
<rect key="frame" x="186.66666666666663" y="166" width="316" height="167"/>
|
||||
<rect key="frame" x="186.5" y="166" width="316" height="167"/>
|
||||
<string key="text">• Look around a surface until the yellow focus
|
||||
corners form a square.
|
||||
• Tap the square to add Adabot.
|
||||
|
|
@ -775,7 +761,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView userInteractionEnabled="NO" alpha="0.80000001192092896" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="adafruit_logo2012-white-horiz-230w" translatesAutoresizingMaskIntoConstraints="NO" id="wo0-AE-5XX" userLabel="logo">
|
||||
<rect key="frame" x="224.66666666666663" y="14" width="240" height="95"/>
|
||||
<rect key="frame" x="224.5" y="14" width="240" height="95"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="95" id="AAp-4a-csh"/>
|
||||
<constraint firstAttribute="width" constant="240" id="IUs-bR-lt7"/>
|
||||
|
|
@ -809,19 +795,19 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TAP A LETTER TO PLAY A CIRCRUIT PLAYGROUND VIDEO" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qF6-4V-xFK">
|
||||
<rect key="frame" x="13" y="67" width="228" height="30.333333333333329"/>
|
||||
<rect key="frame" x="13" y="23" width="228" height="30.5"/>
|
||||
<fontDescription key="fontDescription" name="AvenirNext-Medium" family="Avenir Next" pointSize="11"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TAP THE VIDEO TO STOP " textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kPn-8Y-U3u">
|
||||
<rect key="frame" x="13" y="124.00000000000001" width="228" height="16.666666666666671"/>
|
||||
<rect key="frame" x="13" y="80" width="228" height="16.5"/>
|
||||
<fontDescription key="fontDescription" name="AvenirNext-Medium" family="Avenir Next" pointSize="12"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="PRESS AND HOLD EITHER THE VIDEO OR ADABOT TO EXIT A VIDEO" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rbN-i4-Sa7">
|
||||
<rect key="frame" x="13" y="161" width="229" height="33"/>
|
||||
<rect key="frame" x="13" y="117" width="229" height="33"/>
|
||||
<fontDescription key="fontDescription" name="AvenirNext-Medium" family="Avenir Next" pointSize="12"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
|
|
@ -864,7 +850,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
</scene>
|
||||
</scenes>
|
||||
<inferredMetricsTieBreakers>
|
||||
<segue reference="pYP-7V-B9Y"/>
|
||||
<segue reference="u7e-oD-Y3K"/>
|
||||
</inferredMetricsTieBreakers>
|
||||
<resources>
|
||||
<image name="?mark_icon" width="64" height="64"/>
|
||||
|
|
@ -875,7 +861,7 @@ Hit the Letters icon to reveal letters that will play videos from Circuit Playgr
|
|||
<image name="adabot" width="480" height="774"/>
|
||||
<image name="adafruit_logo2012-white-horiz-230w" width="230" height="93"/>
|
||||
<image name="cpx1" width="1218" height="1178"/>
|
||||
<image name="letters-icon" width="170.66667175292969" height="170.66667175292969"/>
|
||||
<image name="letters-icon" width="40" height="40"/>
|
||||
<image name="test1" width="1050" height="1050"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ struct ARScenes {
|
|||
static let minervaScene = SCNScene(named: "art.scnassets/Minerva.scn")!
|
||||
|
||||
static let circuitPlaygroundLabelScene = SCNScene(named: "art.scnassets/CPX_Displays.scn")!
|
||||
|
||||
static let blmLabelScene = SCNScene(named: "art.scnassets/BLM_Display.scn")!
|
||||
|
||||
//MARK:- Tarot Cards
|
||||
|
||||
|
|
|
|||
53
Adafruit AR/Board Scan View Controller/BLMBoardOverlay.swift
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
//
|
||||
// BLMBoardOverlay.swift
|
||||
// Adafruit AR
|
||||
//
|
||||
// Created by Trevor Beaton on 2/24/21.
|
||||
// Copyright © 2021 Vanguard Logic LLC. All rights reserved.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct BLMBoardOverlay: View {
|
||||
|
||||
@State private var ZAxisRotation = false
|
||||
|
||||
var foreverAnimation: Animation {
|
||||
Animation.linear(duration: 5.0)
|
||||
.repeatForever(autoreverses: false)
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
ZStack{
|
||||
CircleText(radius: 100, text: " BLACK L IVES M ATTER BLACK L IVES M ATTER ", kerning: 0)
|
||||
}
|
||||
// .rotation3DEffect(Angle.degrees(ZAxisRotation ? -180 : 0), axis: (x: 0, y: 0, z: 1))
|
||||
// .animation(ZAxisRotation ? foreverAnimation : .default)
|
||||
// .onAppear(){
|
||||
// self.ZAxisRotation.toggle()
|
||||
// }
|
||||
|
||||
|
||||
// .rotationEffect(.degrees(ZAxisRotation ? 360: 0))
|
||||
// .animation(ZAxisRotation ? foreverAnimation : .default)
|
||||
// .onAppear(){
|
||||
// self.ZAxisRotation.toggle()
|
||||
// }
|
||||
|
||||
|
||||
// .rotationEffect(Angle(degrees: ZAxisRotation ? 360 : 0))
|
||||
// .animation(ZAxisRotation ? foreverAnimation : .none)
|
||||
// .onAppear(){
|
||||
// self.ZAxisRotation.toggle()
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
struct BLMBoardOverlay_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
BLMBoardOverlay()
|
||||
}
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
//
|
||||
|
||||
import AVFoundation
|
||||
@available(iOS 13.0, *)
|
||||
|
||||
|
||||
extension BoardViewController {
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import ARKit
|
|||
import SceneKit
|
||||
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
|
||||
extension BoardViewController {
|
||||
|
||||
//Gesture Recognizers & Actions
|
||||
|
|
|
|||
|
|
@ -9,12 +9,11 @@
|
|||
import ARKit
|
||||
import SwiftUI
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
|
||||
extension BoardViewController {
|
||||
|
||||
|
||||
// Fool*
|
||||
@available(iOS 13.0, *)
|
||||
|
||||
func arHostingController(for node: SCNNode, textForDialogue: [String]) {
|
||||
// create a hosting controller with SwiftUI view
|
||||
let arVC = UIHostingController(rootView: SwiftUITarotCardView(minervaDialogue: textForDialogue))
|
||||
|
|
@ -33,6 +32,8 @@ extension BoardViewController {
|
|||
|
||||
// render the view on the plane geometry as a material
|
||||
self.show(hostingVC: arVC, on: node)
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -56,29 +57,30 @@ extension BoardViewController {
|
|||
|
||||
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
func arPICOHostingController(for node: SCNNode) {
|
||||
// create a hosting controller with SwiftUI view
|
||||
let arVC = UIHostingController(rootView: PICOBoardOverlay())
|
||||
|
||||
func arPICOHostingController(for node: SCNNode) {
|
||||
// Do this on the main thread
|
||||
DispatchQueue.main.async {
|
||||
arVC.willMove(toParent: self)
|
||||
|
||||
// make the hosting VC a child to the main view controller
|
||||
self.addChildViewController(arVC)
|
||||
// self.addChildViewController(self.arVC)
|
||||
|
||||
// set the pixel size of the Card View
|
||||
arVC.view.frame = CGRect(x: 0, y: 0, width: 500, height: 500)
|
||||
self.arVC.view.frame = CGRect(x: 0, y: 0, width: 500, height: 500)
|
||||
|
||||
// add the ar card view as a subview to the main view
|
||||
self.view.addSubview(arVC.view)
|
||||
self.view.addSubview(self.arVC.view)
|
||||
|
||||
// render the view on the plane geometry as a material
|
||||
self.showOverlay(hostingVC: arVC, on: node)
|
||||
self.showOverlay(hostingVC: self.arVC, on: node)
|
||||
|
||||
// self.arVC.willMove(toParent: self)
|
||||
self.arVC.didMove(toParent: self)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
func showOverlay(hostingVC: UIHostingController<PICOBoardOverlay>, on node: SCNNode) {
|
||||
// create a new material
|
||||
let material = SCNMaterial()
|
||||
|
|
@ -97,4 +99,131 @@ extension BoardViewController {
|
|||
|
||||
|
||||
|
||||
func arBLMHostingController(for node: SCNNode) {
|
||||
// Do this on the main thread
|
||||
DispatchQueue.main.async {
|
||||
|
||||
// make the hosting VC a child to the main view controller
|
||||
// self.addChildViewController(self.arVC)
|
||||
|
||||
// set the pixel size of the Card View
|
||||
self.blmVC.view.frame = CGRect(x: 0, y: 0, width: 500, height: 500)
|
||||
|
||||
// add the ar card view as a subview to the main view
|
||||
self.view.addSubview(self.blmVC.view)
|
||||
|
||||
// render the view on the plane geometry as a material
|
||||
self.showBLMOverlay(hostingVC: self.blmVC, on: node)
|
||||
|
||||
// self.arVC.willMove(toParent: self)
|
||||
self.blmVC.didMove(toParent: self)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
func showBLMOverlay(hostingVC: UIHostingController<BLMBoardOverlay>, on node: SCNNode) {
|
||||
// create a new material
|
||||
let material = SCNMaterial()
|
||||
|
||||
// this allows the card to render transparent parts the right way
|
||||
hostingVC.view.isOpaque = false
|
||||
|
||||
// set the diffuse of the material to the view of the Hosting View Controller
|
||||
material.diffuse.contents = hostingVC.view
|
||||
material.lightingModel = .constant
|
||||
// Set the material to the geometry of the node (plane geometry)
|
||||
node.geometry?.materials = [material]
|
||||
|
||||
hostingVC.view.backgroundColor = UIColor.clear
|
||||
}
|
||||
|
||||
|
||||
func arTeensy41HostingController(for node: SCNNode) {
|
||||
print(#function)
|
||||
// Do this on the main thread
|
||||
DispatchQueue.main.async {
|
||||
|
||||
// make the hosting VC a child to the main view controller
|
||||
// self.addChildViewController(self.arVC)
|
||||
|
||||
// set the pixel size of the Card View
|
||||
self.teensyVC.view.frame = CGRect(x: 0, y: 0, width: 500, height: 500)
|
||||
|
||||
// add the ar card view as a subview to the main view
|
||||
self.view.addSubview(self.teensyVC.view)
|
||||
|
||||
// render the view on the plane geometry as a material
|
||||
self.showTeensyOverlay(hostingVC: self.teensyVC, on: node)
|
||||
|
||||
// self.arVC.willMove(toParent: self)
|
||||
self.teensyVC.didMove(toParent: self)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
func showTeensyOverlay(hostingVC: UIHostingController<Teensy41BoardOverlay>, on node: SCNNode) {
|
||||
print(#function)
|
||||
DispatchQueue.main.async {
|
||||
// create a new material
|
||||
let material = SCNMaterial()
|
||||
|
||||
// this allows the card to render transparent parts the right way
|
||||
hostingVC.view.isOpaque = false
|
||||
|
||||
// set the diffuse of the material to the view of the Hosting View Controller
|
||||
material.diffuse.contents = hostingVC.view
|
||||
material.lightingModel = .constant
|
||||
// Set the material to the geometry of the node (plane geometry)
|
||||
node.geometry?.materials = [material]
|
||||
|
||||
hostingVC.view.backgroundColor = UIColor.clear
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
func arpi400HostingController(for node: SCNNode) {
|
||||
// Do this on the main thread
|
||||
DispatchQueue.main.async {
|
||||
|
||||
// make the hosting VC a child to the main view controller
|
||||
// self.addChildViewController(self.arVC)
|
||||
|
||||
// set the pixel size of the Card View
|
||||
self.pi400VC.view.frame = CGRect(x: 0, y: 0, width: 1000, height: 500)
|
||||
|
||||
// add the ar card view as a subview to the main view
|
||||
self.view.addSubview(self.pi400VC.view)
|
||||
|
||||
// render the view on the plane geometry as a material
|
||||
self.showpi400Overlay(hostingVC: self.pi400VC, on: node)
|
||||
|
||||
// self.arVC.willMove(toParent: self)
|
||||
self.pi400VC.didMove(toParent: self)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
func showpi400Overlay(hostingVC: UIHostingController<Pi400Overlay>, on node: SCNNode) {
|
||||
// create a new material
|
||||
let material = SCNMaterial()
|
||||
|
||||
// this allows the card to render transparent parts the right way
|
||||
hostingVC.view.isOpaque = false
|
||||
|
||||
// set the diffuse of the material to the view of the Hosting View Controller
|
||||
material.diffuse.contents = hostingVC.view
|
||||
material.lightingModel = .constant
|
||||
// Set the material to the geometry of the node (plane geometry)
|
||||
node.geometry?.materials = [material]
|
||||
|
||||
hostingVC.view.backgroundColor = UIColor.clear
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,13 +8,38 @@
|
|||
|
||||
import UIKit
|
||||
import ARKit
|
||||
import SwiftUI
|
||||
import RealityKit
|
||||
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
|
||||
class BoardViewController: UIViewController, ARSCNViewDelegate {
|
||||
//Pico
|
||||
let arVC = UIHostingController(rootView: PICOBoardOverlay())
|
||||
let blmVC = UIHostingController(rootView: BLMBoardOverlay())
|
||||
let teensyVC = UIHostingController(rootView: Teensy41BoardOverlay())
|
||||
let pi400VC = UIHostingController(rootView: Pi400Overlay())
|
||||
|
||||
|
||||
func removeContentController(content: UIViewController) {
|
||||
DispatchQueue.main.async {
|
||||
content.willMove(toParentViewController: nil)
|
||||
content.view.removeFromSuperview()
|
||||
content.removeFromParentViewController()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// func presentSwiftUIView() {
|
||||
// let swiftUIView = SwiftUIView()
|
||||
// let hostingController = UIHostingController(rootView: swiftUIView)
|
||||
// present(hostingController, animated: true, completion: nil)
|
||||
// }
|
||||
|
||||
|
||||
// Create a session configuration
|
||||
let configuration = ARImageTrackingConfiguration()
|
||||
var audioPlayer : AVAudioPlayer?
|
||||
|
||||
//For Minerva AR
|
||||
|
|
@ -117,6 +142,8 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
|
||||
var cpxStandAloneLabel = SCNNode()
|
||||
|
||||
var BLMLabel = SCNNode()
|
||||
|
||||
var fadeOut = SCNAction()
|
||||
var fadeIn = SCNAction()
|
||||
|
||||
|
|
@ -137,6 +164,7 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
|
||||
@IBOutlet weak var boardInfoButton: UIButton!
|
||||
|
||||
@IBOutlet weak var homeButton: UIButton!
|
||||
|
||||
@IBAction func boardInfoAction(_ sender: Any) {
|
||||
animateIn()
|
||||
|
|
@ -155,6 +183,18 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
|
||||
@IBOutlet weak var boardItemView: UIView!
|
||||
|
||||
|
||||
// let newViewController = NewViewController()
|
||||
// self.navigationController?.pushViewController(newViewController, animated: true)
|
||||
|
||||
@IBAction func homeButtonAction(_ sender: Any) {
|
||||
//self.performSegue(withIdentifier: "unwindToMenu", sender: self)
|
||||
|
||||
}
|
||||
|
||||
@IBAction func unwindToMenu(segue: UIStoryboardSegue) {}
|
||||
|
||||
|
||||
func animateIn() {
|
||||
|
||||
self.view.addSubview(boardItemView)
|
||||
|
|
@ -242,19 +282,21 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
|
||||
boardSceneView.session.delegate = self as? ARSessionDelegate
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// let worldAnchor = ARWorldAnchor(column3: [0, 0,-4, 1])
|
||||
// boardSceneView.session.add(anchor: worldAnchor)
|
||||
// Set the scene to the view
|
||||
boardSceneView.scene = scene
|
||||
|
||||
sampleMaskSetup()
|
||||
|
||||
loadMinervaModel()
|
||||
|
||||
}
|
||||
|
||||
|
||||
func removeAllFromScene(){
|
||||
print("Removing all from scene")
|
||||
boardSceneView.scene.rootNode.enumerateChildNodes { (node, stop) in
|
||||
node.removeFromParentNode()
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -262,15 +304,12 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
func startImageTracking (){
|
||||
// Create a session configuration
|
||||
let configuration = ARImageTrackingConfiguration()
|
||||
|
||||
|
||||
|
||||
guard let trackedImages = ARReferenceImage.referenceImages(inGroupNamed: "Photos", bundle: Bundle.main) else {
|
||||
print("No images available")
|
||||
|
|
@ -284,14 +323,30 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
// Run the view's session
|
||||
boardSceneView.session.run(configuration, options: [.resetTracking,.removeExistingAnchors])
|
||||
}
|
||||
// private lazy var myFunction: Void = {
|
||||
// // Do something once
|
||||
// }()
|
||||
|
||||
private lazy var restartImageTracking: Void = {
|
||||
boardSceneView.session.run(configuration, options: [.resetTracking,.removeExistingAnchors])
|
||||
}()
|
||||
|
||||
override func viewDidDisappear(_ animated: Bool) {
|
||||
|
||||
// print("Gone")
|
||||
// DispatchQueue.main.async {
|
||||
// self.willMove(toParentViewController: nil)
|
||||
// self.arVC.view.removeFromSuperview()
|
||||
// self.removeFromParentViewController()
|
||||
// }
|
||||
// removeAllFromScene()
|
||||
}
|
||||
|
||||
override func viewWillDisappear(_ animated: Bool) {
|
||||
super.viewWillDisappear(animated)
|
||||
|
||||
// Pause the view's session
|
||||
boardSceneView.session.pause()
|
||||
// boardSceneView.session.pause()
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -447,6 +502,7 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
|
||||
//Create AR Plane
|
||||
func ARPlaneAnchor(imageReferenceAnchor: ARImageAnchor, mainNode: SCNNode) {
|
||||
print("Function: \(#function),File: \(#file),Line: \( #line)")
|
||||
|
||||
let plane = SCNPlane(width: imageReferenceAnchor.referenceImage.physicalSize.width, height: imageReferenceAnchor.referenceImage.physicalSize.height)
|
||||
|
||||
|
|
@ -458,7 +514,7 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
mainNode.addChildNode(planeNode)
|
||||
|
||||
DispatchQueue.main.async {
|
||||
|
||||
print(#line)
|
||||
self.scanLabel.isHidden = true
|
||||
self.sampleMask.isHidden = true
|
||||
|
||||
|
|
@ -470,7 +526,7 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
|
||||
//Create AR Plane
|
||||
func SwiftUIARPlaneAnchor(imageReferenceAnchor: ARImageAnchor, mainNode: SCNNode) {
|
||||
|
||||
print("Function: \(#function),File: \(#file),Line: \( #line)")
|
||||
_ = SCNMaterial()
|
||||
|
||||
let plane = SCNPlane(width: imageReferenceAnchor.referenceImage.physicalSize.width + 0.5, height: imageReferenceAnchor.referenceImage.physicalSize.height + 0.5)
|
||||
|
|
@ -497,7 +553,7 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
|
||||
}
|
||||
|
||||
// MARK: - ARSCNViewDelegate
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -532,6 +588,7 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
|
||||
|
||||
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
|
||||
print("Function: \(#function),File: \(#file),Line: \( #line)")
|
||||
//This node is used to place the Plane used to plant AR models.
|
||||
let node = SCNNode()
|
||||
|
||||
|
|
@ -1714,18 +1771,69 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
|
||||
arHostingController(for: planeNode, textForDialogue: ListOfTexts.heirophantText)
|
||||
|
||||
|
||||
//MARK:- PICO
|
||||
case "pico4":
|
||||
|
||||
DispatchQueue.main.async {
|
||||
print("Recognized PICO Board.")
|
||||
|
||||
ARPlaneAnchor(imageReferenceAnchor: imageAnchor, mainNode: node)
|
||||
self.ARPlaneAnchor(imageReferenceAnchor: imageAnchor, mainNode: node)
|
||||
|
||||
SwiftUIARPlaneAnchor(imageReferenceAnchor: imageAnchor, mainNode: node)
|
||||
self.SwiftUIARPlaneAnchor(imageReferenceAnchor: imageAnchor, mainNode: node)
|
||||
|
||||
arPICOHostingController(for: planeNode)
|
||||
self.arPICOHostingController(for: planeNode)
|
||||
}
|
||||
//MARK:- Teensy
|
||||
case "teensy":
|
||||
DispatchQueue.main.async {
|
||||
|
||||
// _ = self.restartImageTracking
|
||||
print("Recognized teensy Board.")
|
||||
|
||||
self.ARPlaneAnchor(imageReferenceAnchor: imageAnchor, mainNode: node)
|
||||
|
||||
self.SwiftUIARPlaneAnchor(imageReferenceAnchor: imageAnchor, mainNode: node)
|
||||
|
||||
self.arTeensy41HostingController(for: planeNode)
|
||||
}
|
||||
|
||||
//MARK:- pi400
|
||||
case "pi400":
|
||||
DispatchQueue.main.async {
|
||||
print("Recognized pi400 Board.")
|
||||
|
||||
self.ARPlaneAnchor(imageReferenceAnchor: imageAnchor, mainNode: node)
|
||||
|
||||
self.SwiftUIARPlaneAnchor(imageReferenceAnchor: imageAnchor, mainNode: node)
|
||||
|
||||
self.arpi400HostingController(for: planeNode)
|
||||
}
|
||||
//MARK:- BLM
|
||||
case "backBLM":
|
||||
// _ = restartImageTracking
|
||||
DispatchQueue.main.async {
|
||||
print("Recognized BLM - Back Board.")
|
||||
|
||||
self.ARPlaneAnchor(imageReferenceAnchor: imageAnchor, mainNode: node)
|
||||
|
||||
self.ARObjectToScene(ARObject: self.BLMLabel, ARScene: ARScenes.blmLabelScene, planeNode: node, size: SCNVector3(0.03,0.03,0.03))
|
||||
|
||||
}
|
||||
case "fist":
|
||||
|
||||
// _ = restartImageTracking
|
||||
//removeContentController(content: blmVC)
|
||||
|
||||
|
||||
DispatchQueue.main.async {
|
||||
print("Recognized BLM Board.")
|
||||
|
||||
self.ARPlaneAnchor(imageReferenceAnchor: imageAnchor, mainNode: node)
|
||||
|
||||
self.SwiftUIARPlaneAnchor(imageReferenceAnchor: imageAnchor, mainNode: node)
|
||||
|
||||
self.arBLMHostingController(for: planeNode)
|
||||
|
||||
}
|
||||
case "cpx":
|
||||
|
||||
ARPlaneAnchor(imageReferenceAnchor: imageAnchor, mainNode: node)
|
||||
|
|
@ -1878,34 +1986,33 @@ class BoardViewController: UIViewController, ARSCNViewDelegate {
|
|||
|
||||
}
|
||||
|
||||
extension Notification.Name {
|
||||
static let notifTest = Notification.Name(rawValue: "Test")
|
||||
}
|
||||
extension BoardViewController {
|
||||
|
||||
//@available(iOS 13.0, *)
|
||||
//extension BoardViewController {
|
||||
// func renderer(_ renderer: SCNSceneRenderer,didAdd node: SCNNode,for anchor: ARAnchor) {
|
||||
//
|
||||
// guard let worldAnchor = anchor as? ARWorldAnchor
|
||||
// else { return }
|
||||
//
|
||||
// print(worldAnchor.isKind(of: ARWorldAnchor.self))
|
||||
//
|
||||
// // it prints "true"
|
||||
//
|
||||
// let earthNode = SCNNode()
|
||||
// earthNode.geometry = SCNSphere(radius: 0.8)
|
||||
//
|
||||
// // let path = "art.scnassets/earthAlbedo.jpg"
|
||||
//
|
||||
// if #available(iOS 14.0, *) {
|
||||
// earthNode.geometry?.firstMaterial?.diffuse.contents = UIColor(Color(#colorLiteral(red: 0.8078431487, green: 0.02745098062, blue: 0.3333333433, alpha: 1)))
|
||||
// } else {
|
||||
// // Fallback on earlier versions
|
||||
// }
|
||||
//
|
||||
// node.position = minervaModel.position
|
||||
//
|
||||
// node.addChildNode(earthNode)
|
||||
// }
|
||||
//}
|
||||
/// Add a SwiftUI `View` as a child of the input `UIView`.
|
||||
/// - Parameters:
|
||||
/// - swiftUIView: The SwiftUI `View` to add as a child.
|
||||
/// - view: The `UIView` instance to which the view should be added.
|
||||
func addSubSwiftUIView<Content>(_ swiftUIView: Content, to view: UIView) where Content : View {
|
||||
let hostingController = UIHostingController(rootView: swiftUIView)
|
||||
|
||||
/// Add as a child of the current view controller.
|
||||
addChildViewController(hostingController)
|
||||
|
||||
/// Add the SwiftUI view to the view controller view hierarchy.
|
||||
view.addSubview(hostingController.view)
|
||||
|
||||
/// Setup the contraints to update the SwiftUI view boundaries.
|
||||
hostingController.view.translatesAutoresizingMaskIntoConstraints = false
|
||||
let constraints = [
|
||||
hostingController.view.topAnchor.constraint(equalTo: view.topAnchor),
|
||||
hostingController.view.leftAnchor.constraint(equalTo: view.leftAnchor),
|
||||
view.bottomAnchor.constraint(equalTo: hostingController.view.bottomAnchor),
|
||||
view.rightAnchor.constraint(equalTo: hostingController.view.rightAnchor)
|
||||
]
|
||||
|
||||
NSLayoutConstraint.activate(constraints)
|
||||
|
||||
/// Notify the hosting controller that it has been moved to the current view controller.
|
||||
hostingController.didMove(toParent: self)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
92
Adafruit AR/Board Scan View Controller/CircleLabel.swift
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
//
|
||||
// CircleLabel.swift
|
||||
// Adafruit AR
|
||||
//
|
||||
// Created by Trevor Beaton on 2/24/21.
|
||||
// Copyright © 2021 Vanguard Logic LLC. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import SwiftUI
|
||||
struct CircleText_Preview: PreviewProvider {
|
||||
static var previews: some View {
|
||||
CircleText(radius: 200, text: "Dwarves Foundation Looking for Golang, FE candidates")
|
||||
}
|
||||
}
|
||||
|
||||
//MARK: - CircleLabel
|
||||
struct CircleText: View {
|
||||
var radius: Double
|
||||
var text: String
|
||||
var kerning: CGFloat = 0.0
|
||||
|
||||
private var texts: [(offset: Int, element:Character)] {
|
||||
return Array(text.enumerated())
|
||||
}
|
||||
|
||||
@State var textSizes: [Int:Double] = [:]
|
||||
|
||||
var body: some View {
|
||||
ZStack {
|
||||
ForEach(self.texts, id: \.self.offset) { (offset, element) in
|
||||
VStack {
|
||||
Text(String(element))
|
||||
.font(.title2)
|
||||
.bold()
|
||||
.foregroundColor(Color.yellow)
|
||||
.kerning(self.kerning)
|
||||
.background(Sizeable())
|
||||
.onPreferenceChange(WidthPreferenceKey.self, perform: { size in
|
||||
self.textSizes[offset] = Double(size)
|
||||
})
|
||||
Spacer()
|
||||
}
|
||||
.rotationEffect(self.angle(at: offset))
|
||||
|
||||
}
|
||||
}
|
||||
.rotationEffect(-self.angle(at: self.texts.count-1)/2)
|
||||
.frame(width: 230, height: 230, alignment: .center)
|
||||
|
||||
}
|
||||
|
||||
private func angle(at index: Int) -> Angle {
|
||||
guard let labelSize = textSizes[index] else {return .radians(0)}
|
||||
let percentOfLabelInCircle = labelSize / radius.perimeter
|
||||
let labelAngle = 2 * Double.pi * percentOfLabelInCircle
|
||||
|
||||
|
||||
let totalSizeOfPreChars = textSizes.filter{$0.key < index}.map{$0.value}.reduce(0,+)
|
||||
let percenOfPreCharInCircle = totalSizeOfPreChars / radius.perimeter
|
||||
let angleForPreChars = 2 * Double.pi * percenOfPreCharInCircle
|
||||
|
||||
return .radians(angleForPreChars + labelAngle)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
extension Double {
|
||||
var perimeter: Double {
|
||||
return self * 2 * .pi
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Get size for label helper
|
||||
struct WidthPreferenceKey: PreferenceKey {
|
||||
typealias Value = CGFloat
|
||||
static var defaultValue = CGFloat(0)
|
||||
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
|
||||
value = nextValue()
|
||||
}
|
||||
}
|
||||
struct Sizeable: View {
|
||||
var body: some View {
|
||||
GeometryReader { geometry in
|
||||
Color.clear
|
||||
.preference(key: WidthPreferenceKey.self, value: geometry.size.width)
|
||||
}
|
||||
}
|
||||
}
|
||||
26
Adafruit AR/Board Scan View Controller/CurvedText.swift
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
//
|
||||
// CurvedText.swift
|
||||
// Adafruit AR
|
||||
//
|
||||
// Created by Trevor Beaton on 2/24/21.
|
||||
// Copyright © 2021 Vanguard Logic LLC. All rights reserved.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct CurvedText: View {
|
||||
var body: some View {
|
||||
|
||||
RoundedRectangle(cornerRadius: 1, style: .continuous)
|
||||
.fill(Color.clear)
|
||||
.frame(width: 200, height: 200)
|
||||
.border(Color.gray, width: 2)
|
||||
.position(x: 250, y: 250)
|
||||
}
|
||||
}
|
||||
|
||||
struct CurvedText_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
CurvedText()
|
||||
}
|
||||
}
|
||||
|
|
@ -8,7 +8,8 @@
|
|||
|
||||
import SwiftUI
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
|
||||
|
||||
struct Data: Identifiable {
|
||||
let id = UUID()
|
||||
let value: String
|
||||
|
|
@ -24,13 +25,18 @@ let bgColor4: Color
|
|||
let prefix5: String
|
||||
let bgColor5: Color
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
|
||||
|
||||
|
||||
struct PICOBoardOverlay: View {
|
||||
|
||||
|
||||
@State private var viewY = 0
|
||||
|
||||
@State private var debugY = 0
|
||||
|
||||
var body: some View {
|
||||
|
||||
let data = [Data(value: "40",prefix:"VBUS", fgColor: .white, bgcolor: .red, prefix2: "", bgColor2: .clear, prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: .clear),
|
||||
|
|
@ -107,9 +113,9 @@ struct PICOBoardOverlay: View {
|
|||
|
||||
Data(value: "14", prefix: "GP10", fgColor: .black, bgcolor: .yellow, prefix2: "PWM5A", bgColor2: Color(#colorLiteral(red: 0.3326305836, green: 0.9686274529, blue: 0.6167510894, alpha: 1)), prefix3: "SCK1", bgColor3: Color(#colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)), prefix4: "SDA1", bgColor4: Color(#colorLiteral(red: 0.8072112728, green: 0.6713793157, blue: 0.9686274529, alpha: 1)),prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "15", prefix: "GP11", fgColor: .black, bgcolor: .yellow, prefix2: "PWM2A", bgColor2: Color(#colorLiteral(red: 0.3326305836, green: 0.9686274529, blue: 0.6167510894, alpha: 1)), prefix3: "DI0", bgColor3: Color(#colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)), prefix4: "SDA0", bgColor4: Color(#colorLiteral(red: 0.8072112728, green: 0.6713793157, blue: 0.9686274529, alpha: 1)),prefix5: "TX1", bgColor5: Color(#colorLiteral(red: 0.9098039269, green: 0.4784313738, blue: 0.6431372762, alpha: 1))),
|
||||
Data(value: "15", prefix: "GP11", fgColor: .black, bgcolor: .yellow, prefix2: "PWM2A", bgColor2: Color(#colorLiteral(red: 0.3326305836, green: 0.9686274529, blue: 0.6167510894, alpha: 1)), prefix3: "DI0", bgColor3: Color(#colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)), prefix4: "SCL1", bgColor4: Color(#colorLiteral(red: 0.8072112728, green: 0.6713793157, blue: 0.9686274529, alpha: 1)),prefix5: "TX1", bgColor5: Color(#colorLiteral(red: 0.9098039269, green: 0.4784313738, blue: 0.6431372762, alpha: 1))),
|
||||
|
||||
Data(value: "16", prefix: "GP12", fgColor: .black, bgcolor: .yellow, prefix2: "PWM5B", bgColor2: Color(#colorLiteral(red: 0.3326305836, green: 0.9686274529, blue: 0.6167510894, alpha: 1)), prefix3: "D01", bgColor3: Color(#colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)), prefix4: "SCL1", bgColor4: Color(#colorLiteral(red: 0.8072112728, green: 0.6713793157, blue: 0.9686274529, alpha: 1)),prefix5: "TX0", bgColor5: Color(#colorLiteral(red: 0.9098039269, green: 0.4784313738, blue: 0.6431372762, alpha: 1))),
|
||||
Data(value: "16", prefix: "GP12", fgColor: .black, bgcolor: .yellow, prefix2: "PWM5B", bgColor2: Color(#colorLiteral(red: 0.3326305836, green: 0.9686274529, blue: 0.6167510894, alpha: 1)), prefix3: "D01", bgColor3: Color(#colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)), prefix4: "SDA0", bgColor4: Color(#colorLiteral(red: 0.8072112728, green: 0.6713793157, blue: 0.9686274529, alpha: 1)),prefix5: "TX0", bgColor5: Color(#colorLiteral(red: 0.9098039269, green: 0.4784313738, blue: 0.6431372762, alpha: 1))),
|
||||
|
||||
Data(value: "17", prefix: "GP13", fgColor: .black, bgcolor: .yellow, prefix2: "PWM6B", bgColor2: Color(#colorLiteral(red: 0.3326305836, green: 0.9686274529, blue: 0.6167510894, alpha: 1)), prefix3: "CS1", bgColor3: Color(#colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)), prefix4: "SCL0", bgColor4: Color(#colorLiteral(red: 0.8072112728, green: 0.6713793157, blue: 0.9686274529, alpha: 1)),prefix5: "RX0", bgColor5: Color(#colorLiteral(red: 0.9098039269, green: 0.4784313738, blue: 0.6431372762, alpha: 1))),
|
||||
|
||||
|
|
@ -122,17 +128,19 @@ struct PICOBoardOverlay: View {
|
|||
|
||||
|
||||
|
||||
if #available(iOS 14.0, *) {
|
||||
|
||||
ZStack{
|
||||
//Border
|
||||
RoundedRectangle(cornerRadius: 3, style: .circular)
|
||||
RoundedRectangle(cornerRadius: 1, style: .continuous)
|
||||
.fill(Color.clear)
|
||||
.frame(width: 162, height: 270)
|
||||
.frame(width: 167, height: 272)
|
||||
.border(Color.gray, width: 2)
|
||||
.offset(x: 0, y:25)
|
||||
.position(x: 250, y: CGFloat(viewY))
|
||||
//.position(x: 250, y: 250)
|
||||
|
||||
pintOutDEBUGStruct()
|
||||
.offset(x: 0, y: 260)
|
||||
.position(x: 250, y: CGFloat(debugY))
|
||||
|
||||
|
||||
|
||||
HStack{
|
||||
|
|
@ -143,26 +151,44 @@ struct PICOBoardOverlay: View {
|
|||
}
|
||||
.frame(width: 170, height: 13.5, alignment: .leading)
|
||||
}
|
||||
.offset(x: 245, y: 23.8)
|
||||
|
||||
.position(x: 418, y: CGFloat(viewY))
|
||||
//.offset(x: 245, y: 23.8)
|
||||
|
||||
VStack(alignment: .trailing) {
|
||||
ForEach(data2) { (pinout) in
|
||||
pintOutStruct2(value: pinout.value, prefix: pinout.prefix, fgcolor: pinout.fgColor, bgcolor: pinout.bgcolor, prefix2: pinout.prefix2, bgColor2: pinout.bgColor2, prefix3: pinout.prefix3, bgColor3: pinout.bgColor3, prefix4: pinout.prefix4, bgColor4: pinout.bgColor4, prefix5: pinout.prefix5, bgColor5: pinout.bgColor5)
|
||||
}
|
||||
.frame(width: 150, height: 13.5, alignment: .trailing)
|
||||
.frame(width: 150, height: 13.4, alignment: .trailing)
|
||||
|
||||
}
|
||||
.offset(x: -245, y: 25)
|
||||
.position(x: -161, y: CGFloat(viewY))
|
||||
//.offset(x: -245, y: 25)
|
||||
}
|
||||
}
|
||||
.onAppear(perform: {
|
||||
|
||||
if UIDevice.current.userInterfaceIdiom == .phone {
|
||||
//iPhone
|
||||
viewY = 217
|
||||
debugY = 370
|
||||
}else {
|
||||
//iPad
|
||||
viewY = 250
|
||||
debugY = 400
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
.rotationEffect(.degrees(-180))
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
struct pintOutDEBUGStruct: View {
|
||||
|
||||
|
||||
|
|
@ -173,16 +199,15 @@ var body: some View {
|
|||
.font(.system(size: 7))
|
||||
.fontWeight(.black)
|
||||
.foregroundColor(.black)
|
||||
|
||||
.background(Color.gray)
|
||||
.padding(0.1)
|
||||
.padding(0.2)
|
||||
|
||||
Text("GND")
|
||||
.font(.system(size: 7))
|
||||
.font(.system(size: 8))
|
||||
.fontWeight(.black)
|
||||
.foregroundColor(Color.white)
|
||||
.background(Color.black)
|
||||
.padding(0.1)
|
||||
.padding(0.2)
|
||||
|
||||
|
||||
Text("SWDI0")
|
||||
|
|
@ -190,10 +215,9 @@ var body: some View {
|
|||
.fontWeight(.black)
|
||||
.foregroundColor(Color.black)
|
||||
.background(Color.gray)
|
||||
|
||||
.padding(0.2)
|
||||
}
|
||||
|
||||
.offset(x: 85, y: 0)
|
||||
.rotationEffect(.degrees(-90))
|
||||
|
||||
}
|
||||
|
|
@ -201,7 +225,7 @@ var body: some View {
|
|||
}
|
||||
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
|
||||
struct pintOutStruct: View {
|
||||
|
||||
let value: String
|
||||
|
|
@ -268,7 +292,7 @@ var body: some View {
|
|||
}
|
||||
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
|
||||
struct pintOutStruct2: View {
|
||||
|
||||
let value: String
|
||||
|
|
@ -295,11 +319,13 @@ var body: some View {
|
|||
.foregroundColor(fgcolor)
|
||||
.background(bgColor5)
|
||||
|
||||
|
||||
Text(prefix4)
|
||||
.font(.system(size: 8))
|
||||
.fontWeight(.black)
|
||||
.foregroundColor(fgcolor)
|
||||
.background(bgColor4)
|
||||
.cornerRadius(25)
|
||||
|
||||
Text(prefix3)
|
||||
.font(.system(size: 8))
|
||||
|
|
@ -327,17 +353,19 @@ var body: some View {
|
|||
.foregroundColor(.black)
|
||||
.background(Color.gray)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
struct PICOBoardOverlay_Previews: PreviewProvider {
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
|
||||
static var previews: some View {
|
||||
PICOBoardOverlay()
|
||||
.previewDevice(PreviewDevice(rawValue: "iPhone 11 Max"))
|
||||
.previewDevice(PreviewDevice(rawValue: "iPad Pro (11-inch) (2nd generation)"))
|
||||
.previewDisplayName("iPhone 11 Max")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
314
Adafruit AR/Board Scan View Controller/Pi400Overlay.swift
Normal file
|
|
@ -0,0 +1,314 @@
|
|||
//
|
||||
// PICOBoardOverlay.swift
|
||||
// Adafruit AR
|
||||
//
|
||||
// Created by Trevor Beaton on 1/26/21.
|
||||
// Copyright © 2021 Vanguard Logic LLC. All rights reserved.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct pi400Data: Identifiable {
|
||||
let id = UUID()
|
||||
let pinOutLabel: String
|
||||
let pinOutBGcolor: Color
|
||||
let pinOutFGcolor: Color
|
||||
|
||||
let pinOutLabel2: String
|
||||
let pinOutBGcolor2: Color
|
||||
let pinOutFGcolor2: Color
|
||||
|
||||
let GPIONumber: String
|
||||
|
||||
let circleColor: Color
|
||||
}
|
||||
|
||||
struct Pi400Overlay: View {
|
||||
|
||||
@State private var viewY = 0
|
||||
|
||||
@State private var debugY = 0
|
||||
|
||||
var body: some View {
|
||||
|
||||
let pi400DataFirstRow = [
|
||||
|
||||
pi400Data(pinOutLabel: "5V", pinOutBGcolor: Color(#colorLiteral(red: 1, green: 0.3383003439, blue: 0.348613691, alpha: 1)), pinOutFGcolor: .white, pinOutLabel2: "Power", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "", circleColor: .red),
|
||||
|
||||
pi400Data(pinOutLabel: "5V", pinOutBGcolor: Color(#colorLiteral(red: 1, green: 0.3383003439, blue: 0.348613691, alpha: 1)), pinOutFGcolor: .white, pinOutLabel2: "Power", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "", circleColor: .red),
|
||||
|
||||
pi400Data(pinOutLabel: "Ground", pinOutBGcolor: Color(#colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "11", circleColor: .black),
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 14", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(TXD)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "8", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 15", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(RXD)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "10", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 18", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "PCM_CLK", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "12", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "Ground", pinOutBGcolor: Color(#colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "11", circleColor: .black),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 23", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "16", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 24", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "18", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "Ground", pinOutBGcolor: Color(#colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "11", circleColor: .black),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 25", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "22", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 8", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(CE0)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "24", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 7", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(CE1)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "26", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 1", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(ID_SC)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "28", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "Ground", pinOutBGcolor: Color(#colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "11", circleColor: .black),
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 12", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(PWM0)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "32", circleColor: .yellow),
|
||||
|
||||
pi400Data(pinOutLabel: "Ground", pinOutBGcolor: Color(#colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "11", circleColor: .black),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 16", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "36", circleColor: .yellow),
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 20", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "PCM_DIN", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "38", circleColor: .yellow),
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 21", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "PCM_OUT", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "40", circleColor: .yellow),
|
||||
|
||||
]
|
||||
|
||||
|
||||
|
||||
let pi400DataSecondRow = [
|
||||
|
||||
pi400Data(pinOutLabel: "3V3", pinOutBGcolor: Color(#colorLiteral(red: 1, green: 0.3383003439, blue: 0.348613691, alpha: 1)), pinOutFGcolor: .white, pinOutLabel2: "Power", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "", circleColor: .red),
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 2", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(SDA)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "3", circleColor: .yellow),
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 3", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(SCL)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "5", circleColor: .yellow),
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 4", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(GPCLK0)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "7", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "Ground", pinOutBGcolor: Color(#colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "", circleColor: .black),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 17", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "11", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 27", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "13", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 22", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "15", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "3V3", pinOutBGcolor: Color(#colorLiteral(red: 1, green: 0.3383003439, blue: 0.348613691, alpha: 1)), pinOutFGcolor: .white, pinOutLabel2: "Power", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "", circleColor: .red),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 10", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(MOSI)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "19", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 9", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(MISO)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "21", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 11", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(SCLK)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "23", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "Ground", pinOutBGcolor: Color(#colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "", circleColor: .black),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 0", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(ID_SC)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "27", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 5", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "29", circleColor: .yellow),
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 6", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "31", circleColor: .yellow),
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 13", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "(PWM1)", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "33", circleColor: .yellow),
|
||||
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 19", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "PCM_FS", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "35", circleColor: .yellow),
|
||||
|
||||
pi400Data(pinOutLabel: "GPIO 26", pinOutBGcolor: Color(#colorLiteral(red: 0.9994240403, green: 0.9855536819, blue: 0, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "37", circleColor: .yellow),
|
||||
|
||||
pi400Data(pinOutLabel: "Ground", pinOutBGcolor: Color(#colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)), pinOutFGcolor: .black, pinOutLabel2: "", pinOutBGcolor2: .clear, pinOutFGcolor2: .blue, GPIONumber: "", circleColor: .black)
|
||||
|
||||
]
|
||||
|
||||
VStack{
|
||||
|
||||
HStack() {
|
||||
ForEach(pi400DataFirstRow) { (pinout) in
|
||||
pi400GPIOUpperRow(pinOutLabel: pinout.pinOutLabel, pinOutBGcolor: pinout.pinOutBGcolor, pinOutFGcolor: pinout.pinOutFGcolor, pinOutLabel2: pinout.pinOutLabel2, pinOutBGcolor2: pinout.pinOutBGcolor2, pinOutFGcolor2: pinout.pinOutFGcolor2, GPIONumber: pinout.GPIONumber, circleColor: pinout.circleColor)
|
||||
}
|
||||
.frame(width: 12, height: 40)
|
||||
}
|
||||
.position(x: 0, y: -50)
|
||||
|
||||
HStack() {
|
||||
ForEach(pi400DataSecondRow) { (pinout) in
|
||||
pi400GPIOLowerRow(pinOutLabel: pinout.pinOutLabel, pinOutBGcolor: pinout.pinOutBGcolor, pinOutFGcolor: pinout.pinOutFGcolor, pinOutLabel2: pinout.pinOutLabel2, pinOutBGcolor2: pinout.pinOutBGcolor2, pinOutFGcolor2: pinout.pinOutFGcolor2, GPIONumber: pinout.GPIONumber, circleColor: pinout.circleColor)
|
||||
}
|
||||
.frame(width: 12, height: 40)
|
||||
}
|
||||
.position(x: 0, y: 25)
|
||||
|
||||
}
|
||||
|
||||
.onAppear(perform: {
|
||||
|
||||
if UIDevice.current.userInterfaceIdiom == .phone {
|
||||
//iPhone
|
||||
viewY = 220
|
||||
}else {
|
||||
//iPad
|
||||
viewY = 255
|
||||
}
|
||||
|
||||
})
|
||||
.fixedSize(horizontal: true, vertical: true)
|
||||
// .rotationEffect(.degrees(-90))
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
struct pi400GPIOUpperRow: View {
|
||||
|
||||
let pinOutLabel: String
|
||||
let pinOutBGcolor: Color
|
||||
let pinOutFGcolor: Color
|
||||
|
||||
let pinOutLabel2: String
|
||||
let pinOutBGcolor2: Color
|
||||
let pinOutFGcolor2: Color
|
||||
|
||||
let GPIONumber: String
|
||||
let circleColor: Color
|
||||
|
||||
var body: some View {
|
||||
|
||||
VStack{
|
||||
|
||||
VStack{
|
||||
|
||||
Text(pinOutLabel)
|
||||
.foregroundColor(pinOutFGcolor)
|
||||
.font(.system(size: 8))
|
||||
.fontWeight(.bold)
|
||||
.frame(width: 35, height: 10)
|
||||
.background(pinOutBGcolor)
|
||||
|
||||
Text(pinOutLabel2)
|
||||
.foregroundColor(pinOutFGcolor)
|
||||
.font(.system(size: 6))
|
||||
.fontWeight(.medium)
|
||||
.frame(width: 35, height: 10)
|
||||
.background(pinOutBGcolor)
|
||||
|
||||
}
|
||||
.rotationEffect(.degrees(-90))
|
||||
|
||||
//Circle Group
|
||||
ZStack {
|
||||
//Circle
|
||||
Circle()
|
||||
.foregroundColor(circleColor)
|
||||
//Text within the circle
|
||||
Text(GPIONumber)
|
||||
.font(.system(size: 10))
|
||||
.fontWeight(.regular)
|
||||
}
|
||||
.frame(width: 15, height: 15)
|
||||
.padding(.top, 5)
|
||||
// Rectangle()
|
||||
// .frame(width: 2, height: 70)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct pi400GPIOLowerRow: View {
|
||||
|
||||
let pinOutLabel: String
|
||||
let pinOutBGcolor: Color
|
||||
let pinOutFGcolor: Color
|
||||
|
||||
let pinOutLabel2: String
|
||||
let pinOutBGcolor2: Color
|
||||
let pinOutFGcolor2: Color
|
||||
|
||||
let GPIONumber: String
|
||||
let circleColor: Color
|
||||
|
||||
var body: some View {
|
||||
|
||||
VStack{
|
||||
//Circle Group
|
||||
ZStack {
|
||||
//Circle
|
||||
Circle()
|
||||
.foregroundColor(circleColor)
|
||||
//Text within the circle
|
||||
Text(GPIONumber)
|
||||
.font(.system(size: 10))
|
||||
.fontWeight(.medium)
|
||||
}
|
||||
|
||||
.frame(width: 15, height: 15)
|
||||
.padding(.bottom, 5)
|
||||
|
||||
VStack{
|
||||
|
||||
Text(pinOutLabel)
|
||||
.foregroundColor(pinOutFGcolor)
|
||||
.font(.system(size: 8))
|
||||
.fontWeight(.bold)
|
||||
.frame(width: 35, height: 10)
|
||||
.background(pinOutBGcolor)
|
||||
|
||||
Text(pinOutLabel2)
|
||||
.foregroundColor(pinOutFGcolor)
|
||||
.font(.system(size: 6))
|
||||
.fontWeight(.medium)
|
||||
.frame(width: 35, height: 10)
|
||||
.background(pinOutBGcolor)
|
||||
|
||||
}
|
||||
.rotationEffect(.degrees(-90))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
struct Pi400Overlay_Previews: PreviewProvider {
|
||||
|
||||
|
||||
static var previews: some View {
|
||||
Pi400Overlay()
|
||||
.previewDevice(PreviewDevice(rawValue: "iPad Pro (11-inch) (2nd generation)"))
|
||||
.previewDisplayName("iPad Pro (11-inch) (2nd generation)")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
//
|
||||
// PICOBoardOverlay.swift
|
||||
// Adafruit AR
|
||||
//
|
||||
// Created by Trevor Beaton on 1/26/21.
|
||||
// Copyright © 2021 Vanguard Logic LLC. All rights reserved.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
struct Teensy41BoardOverlay: View {
|
||||
|
||||
@State private var viewY = 0
|
||||
|
||||
@State private var debugY = 0
|
||||
|
||||
var body: some View {
|
||||
|
||||
let data = [
|
||||
|
||||
Data(value: "",prefix:"Vin (3.6 to 5.5 Volts)", fgColor: .white, bgcolor: .red, prefix2: "", bgColor2: .clear, prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "",prefix:"GND", fgColor: .white, bgcolor: .black,prefix2: "", bgColor2: .clear, prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "",prefix:"3.3V (250 mA max)", fgColor: .white, bgcolor: .red, prefix2: "", bgColor2: .clear, prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "23", prefix: "A9", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: "CRX1", bgColor2: Color(#colorLiteral(red: 1, green: 0.6997302593, blue: 0.8755037922, alpha: 1)), prefix3: "MCLK1", bgColor3: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "22", prefix: "A8", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: "CTX1", bgColor2: Color(#colorLiteral(red: 1, green: 0.6997302593, blue: 0.8755037922, alpha: 1)), prefix3: " ", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "21", prefix: "A7", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: "RX5", bgColor2: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix3: "BCLK1", bgColor3: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "20", prefix: "A6", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: "TX5", bgColor2: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix3: "LRCLK1", bgColor3: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "19", prefix: "A5", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: " ", bgColor2: .clear, prefix3: "SCL", bgColor3: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "18", prefix: "A4", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: " ", bgColor2: .clear, prefix3: "SDA", bgColor3: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "17", prefix: "A3", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: "TX4", bgColor2: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix3: "SDA1", bgColor3: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "16", prefix: "A2", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: "RX4", bgColor2: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix3: "SCL1", bgColor3: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "15", prefix: "A1", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: "RX3", bgColor2: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix3: "S/PDIF IN", bgColor3: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "14", prefix: "A0", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: "TX3", bgColor2: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix3: "S/PDIF OUT", bgColor3: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "13", prefix: "(LED)", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix2: "SCK", bgColor2: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix3: " ", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "",prefix:"GND", fgColor: .white, bgcolor: .black,prefix2: "", bgColor2: .clear, prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "41",prefix:"A17", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: "", bgColor2:.clear, prefix3: "", bgColor3: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix4: "", bgColor4: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)),prefix5: "", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "40",prefix:"A16", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: "", bgColor2:.clear, prefix3: "", bgColor3: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix4: "", bgColor4: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)),prefix5: "", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "39", prefix: "A15", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: "MISO1", bgColor2: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix3: "OUT1A", bgColor3: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "38", prefix: "A14", fgColor: .black, bgcolor: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)), prefix2: "CS1", bgColor2: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix3: "IN1", bgColor3: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "37", prefix: " ", fgColor: .black, bgcolor: .clear, prefix2: "CS", bgColor2: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "36", prefix: " ", fgColor: .black, bgcolor: .clear, prefix2: "CS", bgColor2: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "35", prefix: "TX8", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix2: "", bgColor2: .clear, prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "34", prefix: "RX8", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix2: "", bgColor2: .clear, prefix3: "", bgColor3: Color(#colorLiteral(red: 0.8178200382, green: 0.6525374868, blue: 1, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "33", prefix: " ", fgColor: .black, bgcolor: .clear, prefix2: "", bgColor2: .clear, prefix3: "MCLK2", bgColor3: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)), prefix4: "", bgColor4: .clear,prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)))
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
let data2 = [
|
||||
Data(value: "",prefix:"GND", fgColor: .white, bgcolor: .black,prefix2: "", bgColor2: .clear, prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "0",prefix:"RX1", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.7311126544, green: 0.6819911648, blue: 0.9686274529, alpha: 1)), prefix2: "CS1", bgColor2: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix3: "CRX2", bgColor3: Color(#colorLiteral(red: 1, green: 0.7170018578, blue: 0.7933105978, alpha: 1)), prefix4: "PWM", bgColor4: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)),prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "1",prefix:"TX1", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.7311126544, green: 0.6819911648, blue: 0.9686274529, alpha: 1)), prefix2: "MISO1", bgColor2: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix3: "CTX2", bgColor3: Color(#colorLiteral(red: 1, green: 0.7170018578, blue: 0.7933105978, alpha: 1)), prefix4: "PWM", bgColor4: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)),prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "2",prefix:" ", fgColor: .black, bgcolor: .clear, prefix2: " ", bgColor2: .clear, prefix3: " ", bgColor3: .clear, prefix4: "OUT2", bgColor4: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)),prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "3",prefix:" ", fgColor: .black, bgcolor: .clear, prefix2: " ", bgColor2: .clear, prefix3: " ", bgColor3: .clear, prefix4: "LRCLK2", bgColor4: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)),prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "4",prefix:" ", fgColor: .black, bgcolor: .clear, prefix2: " ", bgColor2: .clear, prefix3: " ", bgColor3: .clear, prefix4: "BCLK2", bgColor4: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)),prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "5",prefix:" ", fgColor: .black, bgcolor: .clear, prefix2: " ", bgColor2: .clear, prefix3: " ", bgColor3: .clear, prefix4: "IN2", bgColor4: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)),prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "6",prefix:" ", fgColor: .black, bgcolor: .clear, prefix2: " ", bgColor2: .clear, prefix3: " ", bgColor3: .clear, prefix4: "OUT1D", bgColor4: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)),prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "7",prefix:"RX2", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.7311126544, green: 0.6819911648, blue: 0.9686274529, alpha: 1)), prefix2: " ", bgColor2: .clear, prefix3: " ", bgColor3: .clear, prefix4: "OUT1A", bgColor4: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)),prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "8",prefix:"TX2", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.7311126544, green: 0.6819911648, blue: 0.9686274529, alpha: 1)), prefix2: " ", bgColor2: .clear, prefix3: " ", bgColor3: .clear, prefix4: "IN1", bgColor4: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)),prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "9",prefix:" ", fgColor: .black, bgcolor: .clear, prefix2: " ", bgColor2: .clear, prefix3: " ", bgColor3: .clear, prefix4: "OUT1C", bgColor4: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)),prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "10",prefix:" ", fgColor: .black, bgcolor: .clear, prefix2: "", bgColor2:.clear, prefix3: "CS", bgColor3: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix4: "OUT1D", bgColor4: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)),prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "11",prefix:" ", fgColor: .black, bgcolor: .clear, prefix2: "", bgColor2:.clear, prefix3: "MOSI", bgColor3: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix4: "CTX1", bgColor4: Color(#colorLiteral(red: 1, green: 0.7170018578, blue: 0.7933105978, alpha: 1)) ,prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "12",prefix:" ", fgColor: .black, bgcolor: .clear, prefix2: "", bgColor2:.clear, prefix3: "MISO", bgColor3: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix4: "MQSL", bgColor4: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)),prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "",prefix:"3.3V",fgColor: .white, bgcolor: .red, prefix2: "", bgColor2: .clear, prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "24", prefix: "A10", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.9568627477, green: 0.6588235497, blue: 0.5450980663, alpha: 1)), prefix2: "TX6", bgColor2: Color(#colorLiteral(red: 0.7311126544, green: 0.6819911648, blue: 0.9686274529, alpha: 1)), prefix3: "SCL2", bgColor3: Color(#colorLiteral(red: 0.7311126544, green: 0.6819911648, blue: 0.9686274529, alpha: 1)), prefix4: "PWM", bgColor4: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)),prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "25", prefix: "A11", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.9568627477, green: 0.6588235497, blue: 0.5450980663, alpha: 1)), prefix2: "RX6", bgColor2: Color(#colorLiteral(red: 0.7311126544, green: 0.6819911648, blue: 0.9686274529, alpha: 1)), prefix3: "SDA2", bgColor3: Color(#colorLiteral(red: 0.7311126544, green: 0.6819911648, blue: 0.9686274529, alpha: 1)), prefix4: "PWM", bgColor4: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1)),prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "26", prefix: "A12", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.9568627477, green: 0.6588235497, blue: 0.5450980663, alpha: 1)), prefix2: "MOSI1", bgColor2: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix3: "", bgColor3: Color(#colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)), prefix4: "", bgColor4: Color(#colorLiteral(red: 0.9411764741, green: 0.4980392158, blue: 0.3529411852, alpha: 1)),prefix5: "", bgColor5: .clear),
|
||||
|
||||
Data(value: "27", prefix: "A13", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.9568627477, green: 0.6588235497, blue: 0.5450980663, alpha: 1)), prefix2: "SCK1", bgColor2: Color(#colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)), prefix3: "", bgColor3: Color(#colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)), prefix4: "", bgColor4: Color(#colorLiteral(red: 0.9411764741, green: 0.4980392158, blue: 0.3529411852, alpha: 1)),prefix5: "", bgColor5: .clear),
|
||||
|
||||
|
||||
Data(value: "28", prefix: "RX7", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.7311126544, green: 0.6819911648, blue: 0.9686274529, alpha: 1)), prefix2: " ", bgColor2: .clear, prefix3: "", bgColor3: Color(#colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)), prefix4: "", bgColor4: Color(#colorLiteral(red: 0.7311126544, green: 0.6819911648, blue: 0.9686274529, alpha: 1)),prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "29", prefix: "TX7", fgColor: .black, bgcolor: Color(#colorLiteral(red: 0.7311126544, green: 0.6819911648, blue: 0.9686274529, alpha: 1)), prefix2: " ", bgColor2: .clear, prefix3: "", bgColor3: Color(#colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)), prefix4: "", bgColor4: Color(#colorLiteral(red: 0.7311126544, green: 0.6819911648, blue: 0.9686274529, alpha: 1)),prefix5: "PWM", bgColor5: Color(#colorLiteral(red: 1, green: 0.7205477193, blue: 0.5445609691, alpha: 1))),
|
||||
|
||||
Data(value: "30", prefix: " ", fgColor: .black, bgcolor: .clear, prefix2: "", bgColor2: .clear, prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "CRX3", bgColor5: Color(#colorLiteral(red: 1, green: 0.7170018578, blue: 0.7933105978, alpha: 1))),
|
||||
|
||||
Data(value: "31", prefix: " ", fgColor: .black, bgcolor: .clear, prefix2: "", bgColor2: .clear, prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "CTX3", bgColor5: Color(#colorLiteral(red: 1, green: 0.7170018578, blue: 0.7933105978, alpha: 1))),
|
||||
|
||||
Data(value: "32", prefix: " ", fgColor: .black, bgcolor: .clear, prefix2: "", bgColor2: .clear, prefix3: "", bgColor3: .clear, prefix4: "", bgColor4: .clear,prefix5: "OUT1B", bgColor5: Color(#colorLiteral(red: 0.9764705896, green: 0.850980401, blue: 0.5490196347, alpha: 1)))
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
ZStack{
|
||||
//Border
|
||||
RoundedRectangle(cornerRadius: 1, style: .continuous)
|
||||
.fill(Color.clear)
|
||||
.frame(width: 140, height: 282.5)
|
||||
.border(Color.gray, width: 2)
|
||||
.position(x: 250, y: CGFloat(viewY))
|
||||
|
||||
|
||||
|
||||
HStack{
|
||||
|
||||
VStack(alignment: .leading) {
|
||||
ForEach(data) { (pinout) in
|
||||
pintOutStruct(value: pinout.value, prefix: pinout.prefix, fgcolor: pinout.fgColor, bgcolor: pinout.bgcolor, prefix2: pinout.prefix2, bgColor2: pinout.bgColor2, prefix3: pinout.prefix3, bgColor3: pinout.bgColor3, prefix4: pinout.prefix4, bgColor4: pinout.bgColor4, prefix5: pinout.prefix5, bgColor5: pinout.bgColor5)
|
||||
}
|
||||
.frame(width: 150, height: 11.8, alignment: .leading)
|
||||
}
|
||||
|
||||
.position(x: 395, y: CGFloat(viewY))
|
||||
|
||||
VStack(alignment: .trailing) {
|
||||
ForEach(data2) { (pinout) in
|
||||
pintOutStruct2(value: pinout.value, prefix: pinout.prefix, fgcolor: pinout.fgColor, bgcolor: pinout.bgcolor, prefix2: pinout.prefix2, bgColor2: pinout.bgColor2, prefix3: pinout.prefix3, bgColor3: pinout.bgColor3, prefix4: pinout.prefix4, bgColor4: pinout.bgColor4, prefix5: pinout.prefix5, bgColor5: pinout.bgColor5)
|
||||
}
|
||||
.frame(width: 150, height: 11.8, alignment: .trailing)
|
||||
}
|
||||
|
||||
.position(x: -148, y: CGFloat(viewY))
|
||||
|
||||
}
|
||||
}
|
||||
.onAppear(perform: {
|
||||
|
||||
if UIDevice.current.userInterfaceIdiom == .phone {
|
||||
//iPhone
|
||||
viewY = 220
|
||||
}else {
|
||||
//iPad
|
||||
viewY = 255
|
||||
}
|
||||
|
||||
})
|
||||
.rotationEffect(.degrees(-180))
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
struct Teensy41BoardOverlay_Previews: PreviewProvider {
|
||||
|
||||
|
||||
static var previews: some View {
|
||||
Teensy41BoardOverlay()
|
||||
.previewDevice(PreviewDevice(rawValue: "iPhone 12 Pro Max"))
|
||||
.previewDisplayName("iPhone 12 Pro Max")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -6,14 +6,19 @@
|
|||
// Copyright © 2018 Vanguard Logic LLC. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import ARKit
|
||||
import UIKit
|
||||
|
||||
|
||||
class MainViewController: UIViewController {
|
||||
|
||||
class MainViewController: UIViewController, ARSCNViewDelegate {
|
||||
|
||||
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"]
|
||||
|
||||
|
||||
|
||||
@IBOutlet weak var boardView: ARSCNView!
|
||||
|
||||
@IBOutlet weak var qrModeIcon: UIButton!
|
||||
|
||||
@IBOutlet weak var qrLabel: UILabel!
|
||||
|
|
@ -32,6 +37,15 @@ class MainViewController: UIViewController {
|
|||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
versionString()
|
||||
|
||||
let scene = SCNScene()
|
||||
// Set the view's delegate
|
||||
boardView.delegate = self
|
||||
|
||||
boardView.session.delegate = self as? ARSessionDelegate
|
||||
|
||||
boardView.scene = scene
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
BIN
Adafruit AR/art.scnassets/BLM_Display.scn
Executable file
BIN
Assets.xcassets/.DS_Store
vendored
BIN
Assets.xcassets/Photos.arresourcegroup/.DS_Store
vendored
0
Assets.xcassets/Photos.arresourcegroup/CPX-QRCode_v2.arreferenceimage/CPX-QRCode_v2.jpg
Executable file → Normal file
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
8
Assets.xcassets/Photos.arresourcegroup/CPX-QRCode_v2.arreferenceimage/Contents.json
Executable file → Normal file
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "CPX-QRCode_v2.jpg"
|
||||
"filename" : "CPX-QRCode_v2.jpg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"width" : 0.20000000000000001
|
||||
|
|
|
|||
12
Assets.xcassets/Photos.arresourcegroup/Contents.json
Executable file → Normal file
|
|
@ -4,6 +4,9 @@
|
|||
"version" : 1
|
||||
},
|
||||
"resources" : [
|
||||
{
|
||||
"filename" : "backBLM.arreferenceimage"
|
||||
},
|
||||
{
|
||||
"filename" : "ChariotCard.arreferenceimage"
|
||||
},
|
||||
|
|
@ -25,6 +28,9 @@
|
|||
{
|
||||
"filename" : "EmpressCard.arreferenceimage"
|
||||
},
|
||||
{
|
||||
"filename" : "fist.arreferenceimage"
|
||||
},
|
||||
{
|
||||
"filename" : "FOCCard.arreferenceimage"
|
||||
},
|
||||
|
|
@ -61,6 +67,9 @@
|
|||
{
|
||||
"filename" : "NeoTrellis_v2.arreferenceimage"
|
||||
},
|
||||
{
|
||||
"filename" : "pi400.arreferenceimage"
|
||||
},
|
||||
{
|
||||
"filename" : "pico4.arreferenceimage"
|
||||
},
|
||||
|
|
@ -85,6 +94,9 @@
|
|||
{
|
||||
"filename" : "SunCard.arreferenceimage"
|
||||
},
|
||||
{
|
||||
"filename" : "teensy.arreferenceimage"
|
||||
},
|
||||
{
|
||||
"filename" : "TemperanceCard.arreferenceimage"
|
||||
},
|
||||
|
|
|
|||
8
Assets.xcassets/Photos.arresourcegroup/CrickitQRCode_v2.arreferenceimage/Contents.json
Executable file → Normal file
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "CrickitQRCode_v2.jpg"
|
||||
"filename" : "CrickitQRCode_v2.jpg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"width" : 0.20000000000000001
|
||||
|
|
|
|||
0
Assets.xcassets/Photos.arresourcegroup/CrickitQRCode_v2.arreferenceimage/CrickitQRCode_v2.jpg
Executable file → Normal file
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
8
Assets.xcassets/Photos.arresourcegroup/GC-3.arreferenceimage/Contents.json
Executable file → Normal file
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "GC-3.png"
|
||||
"filename" : "GC-3.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"width" : 0.20000000000000001
|
||||
|
|
|
|||
0
Assets.xcassets/Photos.arresourcegroup/GC-3.arreferenceimage/GC-3.png
Executable file → Normal file
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
8
Assets.xcassets/Photos.arresourcegroup/HallowingQRcode_v2.arreferenceimage/Contents.json
Executable file → Normal file
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "HallowingQRcode_v2.jpg"
|
||||
"filename" : "HallowingQRcode_v2.jpg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"width" : 0.20000000000000001
|
||||
|
|
|
|||
0
Assets.xcassets/Photos.arresourcegroup/HallowingQRcode_v2.arreferenceimage/HallowingQRcode_v2.jpg
Executable file → Normal file
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
8
Assets.xcassets/Photos.arresourcegroup/NeoTrellis_v2.arreferenceimage/Contents.json
Executable file → Normal file
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "NeoTrellis_v2.jpg"
|
||||
"filename" : "NeoTrellis_v2.jpg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"width" : 0.20000000000000001
|
||||
|
|
|
|||
0
Assets.xcassets/Photos.arresourcegroup/NeoTrellis_v2.arreferenceimage/NeoTrellis_v2.jpg
Executable file → Normal file
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "backBLM.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"width" : 0.20000000000000001
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 101 KiB |
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "pico4.png",
|
||||
"filename" : "fist.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
|
|
@ -10,6 +10,6 @@
|
|||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"width" : 0.23999999999999999
|
||||
"width" : 0.20000000000000001
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.3 MiB |
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "pi40012.jpg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"unit" : "inches",
|
||||
"width" : 26
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.1 MiB |
8
Assets.xcassets/Photos.arresourcegroup/portal2.arreferenceimage/Contents.json
Executable file → Normal file
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "pyportal-image.png"
|
||||
"filename" : "pyportal-image.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"width" : 0.20000000000000001
|
||||
|
|
|
|||
0
Assets.xcassets/Photos.arresourcegroup/portal2.arreferenceimage/pyportal-image.png
Executable file → Normal file
|
Before Width: | Height: | Size: 467 KiB After Width: | Height: | Size: 467 KiB |
8
Assets.xcassets/Photos.arresourcegroup/pyportal.arreferenceimage/Contents.json
Executable file → Normal file
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "pyportal.png"
|
||||
"filename" : "pyportal.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"width" : 0.32000000000000001
|
||||
|
|
|
|||
0
Assets.xcassets/Photos.arresourcegroup/pyportal.arreferenceimage/pyportal.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "teensy.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"width" : 0.20000000000000001
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.4 MiB |
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"resources" : [
|
||||
{
|
||||
"filename" : "pico4.arreferenceimage"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 5.3 MiB |