diff --git a/CapCollector.xcodeproj/project.pbxproj b/CapCollector.xcodeproj/project.pbxproj index 4c135eb..d5e9ccf 100644 --- a/CapCollector.xcodeproj/project.pbxproj +++ b/CapCollector.xcodeproj/project.pbxproj @@ -7,21 +7,74 @@ objects = { /* Begin PBXBuildFile section */ + 043EC7C35065DD26F6BB496F /* Pods_CapCollector.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86546C4DAB5E47A540F6E8DD /* Pods_CapCollector.framework */; }; CE56CECE209D81DE00932C01 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CECD209D81DE00932C01 /* AppDelegate.swift */; }; - CE56CED0209D81DE00932C01 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CECF209D81DE00932C01 /* ViewController.swift */; }; CE56CED3209D81DE00932C01 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CE56CED1209D81DE00932C01 /* Main.storyboard */; }; CE56CED5209D81E000932C01 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CE56CED4209D81E000932C01 /* Assets.xcassets */; }; CE56CED8209D81E000932C01 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CE56CED6209D81E000932C01 /* LaunchScreen.storyboard */; }; + CE56CEF8209D83B800932C01 /* CapCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEE0209D83B200932C01 /* CapCell.swift */; }; + CE56CEF9209D83B800932C01 /* CapImages.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEE1209D83B200932C01 /* CapImages.swift */; }; + CE56CEFA209D83B800932C01 /* CapNames.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEE2209D83B200932C01 /* CapNames.swift */; }; + CE56CEFC209D83B800932C01 /* DropboxUpload.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEE4209D83B300932C01 /* DropboxUpload.swift */; }; + CE56CEFD209D83B800932C01 /* NameFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEE5209D83B300932C01 /* NameFile.swift */; }; + CE56CEFE209D83B800932C01 /* RoundedButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEE6209D83B300932C01 /* RoundedButton.swift */; }; + CE56CEFF209D83B800932C01 /* CameraController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEE7209D83B300932C01 /* CameraController.swift */; }; + CE56CF00209D83B800932C01 /* UIAlertControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEE8209D83B300932C01 /* UIAlertControllerExtensions.swift */; }; + CE56CF01209D83B800932C01 /* DropBoxController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEE9209D83B400932C01 /* DropBoxController.swift */; }; + CE56CF02209D83B800932C01 /* RoundedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEEA209D83B400932C01 /* RoundedImageView.swift */; }; + CE56CF03209D83B800932C01 /* TableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEEB209D83B400932C01 /* TableView.swift */; }; + CE56CF04209D83B800932C01 /* UIViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEEC209D83B400932C01 /* UIViewExtensions.swift */; }; + CE56CF05209D83B800932C01 /* ViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEED209D83B400932C01 /* ViewControllerExtensions.swift */; }; + CE56CF06209D83B800932C01 /* CameraView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEEE209D83B500932C01 /* CameraView.swift */; }; + CE56CF07209D83B800932C01 /* ImageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEEF209D83B500932C01 /* ImageCell.swift */; }; + CE56CF08209D83B800932C01 /* DiskManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEF0209D83B500932C01 /* DiskManager.swift */; }; + CE56CF09209D83B800932C01 /* Classifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEF1209D83B500932C01 /* Classifier.swift */; }; + CE56CF0A209D83B800932C01 /* CropView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEF2209D83B600932C01 /* CropView.swift */; }; + CE56CF0B209D83B800932C01 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEF3209D83B600932C01 /* Logger.swift */; }; + CE56CF0C209D83B800932C01 /* DropboxDownload.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEF4209D83B600932C01 /* DropboxDownload.swift */; }; + CE56CF0D209D83B800932C01 /* ImageSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEF5209D83B600932C01 /* ImageSelector.swift */; }; + CE56CF0E209D83B800932C01 /* PhotoCaptureHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEF6209D83B700932C01 /* PhotoCaptureHandler.swift */; }; + CE56CF0F209D83B800932C01 /* UIImageExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE56CEF7209D83B700932C01 /* UIImageExtensions.swift */; }; + CEF38744209D8476001C8D3C /* Resnet.mlmodel in Sources */ = {isa = PBXBuildFile; fileRef = CEF38742209D8476001C8D3C /* Resnet.mlmodel */; }; + CEF38745209D8476001C8D3C /* Squeezenet.mlmodel in Sources */ = {isa = PBXBuildFile; fileRef = CEF38743209D8476001C8D3C /* Squeezenet.mlmodel */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 342A23CD7996DA1E7039C097 /* Pods-CapCollector.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CapCollector.release.xcconfig"; path = "Pods/Target Support Files/Pods-CapCollector/Pods-CapCollector.release.xcconfig"; sourceTree = ""; }; + 86546C4DAB5E47A540F6E8DD /* Pods_CapCollector.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CapCollector.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CE56CECA209D81DD00932C01 /* CapCollector.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CapCollector.app; sourceTree = BUILT_PRODUCTS_DIR; }; CE56CECD209D81DE00932C01 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - CE56CECF209D81DE00932C01 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; CE56CED2209D81DE00932C01 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; CE56CED4209D81E000932C01 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; CE56CED7209D81E000932C01 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; CE56CED9209D81E000932C01 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + CE56CEE0209D83B200932C01 /* CapCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CapCell.swift; sourceTree = ""; }; + CE56CEE1209D83B200932C01 /* CapImages.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CapImages.swift; sourceTree = ""; }; + CE56CEE2209D83B200932C01 /* CapNames.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CapNames.swift; sourceTree = ""; }; + CE56CEE4209D83B300932C01 /* DropboxUpload.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DropboxUpload.swift; sourceTree = ""; }; + CE56CEE5209D83B300932C01 /* NameFile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NameFile.swift; sourceTree = ""; }; + CE56CEE6209D83B300932C01 /* RoundedButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoundedButton.swift; sourceTree = ""; }; + CE56CEE7209D83B300932C01 /* CameraController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CameraController.swift; sourceTree = ""; }; + CE56CEE8209D83B300932C01 /* UIAlertControllerExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIAlertControllerExtensions.swift; sourceTree = ""; }; + CE56CEE9209D83B400932C01 /* DropBoxController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DropBoxController.swift; sourceTree = ""; }; + CE56CEEA209D83B400932C01 /* RoundedImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoundedImageView.swift; sourceTree = ""; }; + CE56CEEB209D83B400932C01 /* TableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TableView.swift; path = ../TableView.swift; sourceTree = ""; }; + CE56CEEC209D83B400932C01 /* UIViewExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewExtensions.swift; sourceTree = ""; }; + CE56CEED209D83B400932C01 /* ViewControllerExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewControllerExtensions.swift; sourceTree = ""; }; + CE56CEEE209D83B500932C01 /* CameraView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CameraView.swift; sourceTree = ""; }; + CE56CEEF209D83B500932C01 /* ImageCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageCell.swift; sourceTree = ""; }; + CE56CEF0209D83B500932C01 /* DiskManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiskManager.swift; sourceTree = ""; }; + CE56CEF1209D83B500932C01 /* Classifier.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Classifier.swift; sourceTree = ""; }; + CE56CEF2209D83B600932C01 /* CropView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CropView.swift; sourceTree = ""; }; + CE56CEF3209D83B600932C01 /* Logger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = ""; }; + CE56CEF4209D83B600932C01 /* DropboxDownload.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DropboxDownload.swift; sourceTree = ""; }; + CE56CEF5209D83B600932C01 /* ImageSelector.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageSelector.swift; sourceTree = ""; }; + CE56CEF6209D83B700932C01 /* PhotoCaptureHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhotoCaptureHandler.swift; sourceTree = ""; }; + CE56CEF7209D83B700932C01 /* UIImageExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIImageExtensions.swift; sourceTree = ""; }; + CE92CA6120CAD38600D5DAA4 /* Xcode.mlmodel */ = {isa = PBXFileReference; lastKnownFileType = file.mlmodel; path = Xcode.mlmodel; sourceTree = ""; }; + CEF38742209D8476001C8D3C /* Resnet.mlmodel */ = {isa = PBXFileReference; lastKnownFileType = file.mlmodel; name = Resnet.mlmodel; path = ../../../../Dropbox/Models/Resnet.mlmodel; sourceTree = ""; }; + CEF38743209D8476001C8D3C /* Squeezenet.mlmodel */ = {isa = PBXFileReference; lastKnownFileType = file.mlmodel; name = Squeezenet.mlmodel; path = ../../../../Dropbox/Models/Squeezenet.mlmodel; sourceTree = ""; }; + DBD72193E502C23E06DA913D /* Pods-CapCollector.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CapCollector.debug.xcconfig"; path = "Pods/Target Support Files/Pods-CapCollector/Pods-CapCollector.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -29,17 +82,37 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 043EC7C35065DD26F6BB496F /* Pods_CapCollector.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 0FE92EFB7AA01ED92CDE6BF3 /* Pods */ = { + isa = PBXGroup; + children = ( + DBD72193E502C23E06DA913D /* Pods-CapCollector.debug.xcconfig */, + 342A23CD7996DA1E7039C097 /* Pods-CapCollector.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + 9EAE4B3CEE704AF443897B44 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 86546C4DAB5E47A540F6E8DD /* Pods_CapCollector.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; CE56CEC1209D81DD00932C01 = { isa = PBXGroup; children = ( CE56CECC209D81DD00932C01 /* CapCollector */, CE56CECB209D81DD00932C01 /* Products */, + 0FE92EFB7AA01ED92CDE6BF3 /* Pods */, + 9EAE4B3CEE704AF443897B44 /* Frameworks */, ); sourceTree = ""; }; @@ -55,13 +128,94 @@ isa = PBXGroup; children = ( CE56CECD209D81DE00932C01 /* AppDelegate.swift */, - CE56CECF209D81DE00932C01 /* ViewController.swift */, + CEF38742209D8476001C8D3C /* Resnet.mlmodel */, + CEF38743209D8476001C8D3C /* Squeezenet.mlmodel */, + CE92CA6120CAD38600D5DAA4 /* Xcode.mlmodel */, + CE56CEF1209D83B500932C01 /* Classifier.swift */, + CEF3874D209D9378001C8D3C /* Capture */, + CEF3874E209D9390001C8D3C /* Sync */, + CEF38750209D93D1001C8D3C /* Data */, + CEF3874B209D932E001C8D3C /* View Components */, + CEF3874F209D93A6001C8D3C /* Presentation */, + CEF3874C209D935E001C8D3C /* Extensions */, + CE56CEF3209D83B600932C01 /* Logger.swift */, CE56CED1209D81DE00932C01 /* Main.storyboard */, + CE56CEDF209D81FD00932C01 /* Support */, + ); + path = CapCollector; + sourceTree = ""; + }; + CE56CEDF209D81FD00932C01 /* Support */ = { + isa = PBXGroup; + children = ( CE56CED4209D81E000932C01 /* Assets.xcassets */, CE56CED6209D81E000932C01 /* LaunchScreen.storyboard */, CE56CED9209D81E000932C01 /* Info.plist */, ); - path = CapCollector; + name = Support; + sourceTree = ""; + }; + CEF3874B209D932E001C8D3C /* View Components */ = { + isa = PBXGroup; + children = ( + CE56CEF2209D83B600932C01 /* CropView.swift */, + CE56CEEA209D83B400932C01 /* RoundedImageView.swift */, + CE56CEE6209D83B300932C01 /* RoundedButton.swift */, + ); + path = "View Components"; + sourceTree = ""; + }; + CEF3874C209D935E001C8D3C /* Extensions */ = { + isa = PBXGroup; + children = ( + CE56CEE8209D83B300932C01 /* UIAlertControllerExtensions.swift */, + CE56CEF7209D83B700932C01 /* UIImageExtensions.swift */, + CE56CEEC209D83B400932C01 /* UIViewExtensions.swift */, + CE56CEED209D83B400932C01 /* ViewControllerExtensions.swift */, + ); + path = Extensions; + sourceTree = ""; + }; + CEF3874D209D9378001C8D3C /* Capture */ = { + isa = PBXGroup; + children = ( + CE56CEE7209D83B300932C01 /* CameraController.swift */, + CE56CEEE209D83B500932C01 /* CameraView.swift */, + CE56CEF6209D83B700932C01 /* PhotoCaptureHandler.swift */, + ); + path = Capture; + sourceTree = ""; + }; + CEF3874E209D9390001C8D3C /* Sync */ = { + isa = PBXGroup; + children = ( + CE56CEE9209D83B400932C01 /* DropBoxController.swift */, + CE56CEF4209D83B600932C01 /* DropboxDownload.swift */, + CE56CEE4209D83B300932C01 /* DropboxUpload.swift */, + ); + path = Sync; + sourceTree = ""; + }; + CEF3874F209D93A6001C8D3C /* Presentation */ = { + isa = PBXGroup; + children = ( + CE56CEEB209D83B400932C01 /* TableView.swift */, + CE56CEE0209D83B200932C01 /* CapCell.swift */, + CE56CEF5209D83B600932C01 /* ImageSelector.swift */, + CE56CEEF209D83B500932C01 /* ImageCell.swift */, + ); + path = Presentation; + sourceTree = ""; + }; + CEF38750209D93D1001C8D3C /* Data */ = { + isa = PBXGroup; + children = ( + CE56CEE1209D83B200932C01 /* CapImages.swift */, + CE56CEE2209D83B200932C01 /* CapNames.swift */, + CE56CEF0209D83B500932C01 /* DiskManager.swift */, + CE56CEE5209D83B300932C01 /* NameFile.swift */, + ); + path = Data; sourceTree = ""; }; /* End PBXGroup section */ @@ -71,9 +225,11 @@ isa = PBXNativeTarget; buildConfigurationList = CE56CEDC209D81E000932C01 /* Build configuration list for PBXNativeTarget "CapCollector" */; buildPhases = ( + 3E8A16B5B7B80A2451075442 /* [CP] Check Pods Manifest.lock */, CE56CEC6209D81DD00932C01 /* Sources */, CE56CEC7209D81DD00932C01 /* Frameworks */, CE56CEC8209D81DD00932C01 /* Resources */, + 135644FD94500ABE4DA09082 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -96,6 +252,7 @@ TargetAttributes = { CE56CEC9209D81DD00932C01 = { CreatedOnToolsVersion = 9.4; + LastSwiftMigration = 1000; }; }; }; @@ -130,13 +287,78 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 135644FD94500ABE4DA09082 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-CapCollector/Pods-CapCollector-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", + "${BUILT_PRODUCTS_DIR}/SwiftyDropbox/SwiftyDropbox.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyDropbox.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-CapCollector/Pods-CapCollector-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3E8A16B5B7B80A2451075442 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-CapCollector-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ CE56CEC6209D81DD00932C01 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CE56CED0209D81DE00932C01 /* ViewController.swift in Sources */, + CE56CF09209D83B800932C01 /* Classifier.swift in Sources */, + CE56CF0B209D83B800932C01 /* Logger.swift in Sources */, + CE56CF01209D83B800932C01 /* DropBoxController.swift in Sources */, + CE56CF04209D83B800932C01 /* UIViewExtensions.swift in Sources */, + CE56CF08209D83B800932C01 /* DiskManager.swift in Sources */, + CE56CF0F209D83B800932C01 /* UIImageExtensions.swift in Sources */, + CE56CEF9209D83B800932C01 /* CapImages.swift in Sources */, + CEF38745209D8476001C8D3C /* Squeezenet.mlmodel in Sources */, + CEF38744209D8476001C8D3C /* Resnet.mlmodel in Sources */, + CE56CF03209D83B800932C01 /* TableView.swift in Sources */, + CE56CEFD209D83B800932C01 /* NameFile.swift in Sources */, CE56CECE209D81DE00932C01 /* AppDelegate.swift in Sources */, + CE56CF0D209D83B800932C01 /* ImageSelector.swift in Sources */, + CE56CEFF209D83B800932C01 /* CameraController.swift in Sources */, + CE56CF05209D83B800932C01 /* ViewControllerExtensions.swift in Sources */, + CE56CF0E209D83B800932C01 /* PhotoCaptureHandler.swift in Sources */, + CE56CEFE209D83B800932C01 /* RoundedButton.swift in Sources */, + CE56CEFA209D83B800932C01 /* CapNames.swift in Sources */, + CE56CF07209D83B800932C01 /* ImageCell.swift in Sources */, + CE56CF00209D83B800932C01 /* UIAlertControllerExtensions.swift in Sources */, + CE56CF06209D83B800932C01 /* CameraView.swift in Sources */, + CE56CF0A209D83B800932C01 /* CropView.swift in Sources */, + CE56CF0C209D83B800932C01 /* DropboxDownload.swift in Sources */, + CE56CF02209D83B800932C01 /* RoundedImageView.swift in Sources */, + CE56CEFC209D83B800932C01 /* DropboxUpload.swift in Sources */, + CE56CEF8209D83B800932C01 /* CapCell.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -278,8 +500,10 @@ }; CE56CEDD209D81E000932C01 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = DBD72193E502C23E06DA913D /* Pods-CapCollector.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = H8WR4M6QQ4; INFOPLIST_FILE = CapCollector/Info.plist; @@ -289,15 +513,19 @@ ); PRODUCT_BUNDLE_IDENTIFIER = christophhagen.CapCollector; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; + PROVISIONING_PROFILE = ""; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = 1; }; name = Debug; }; CE56CEDE209D81E000932C01 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 342A23CD7996DA1E7039C097 /* Pods-CapCollector.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = H8WR4M6QQ4; INFOPLIST_FILE = CapCollector/Info.plist; @@ -307,8 +535,10 @@ ); PRODUCT_BUNDLE_IDENTIFIER = christophhagen.CapCollector; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; + PROVISIONING_PROFILE = ""; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = 1; }; name = Release; }; diff --git a/CapCollector/AppDelegate.swift b/CapCollector/AppDelegate.swift index b8593ee..2a1d98c 100644 --- a/CapCollector/AppDelegate.swift +++ b/CapCollector/AppDelegate.swift @@ -1,24 +1,45 @@ // // AppDelegate.swift -// CapCollector +// CapFinder // -// Created by User on 05.05.18. -// Copyright © 2018 CH. All rights reserved. +// Created by User on 31.01.18. +// Copyright © 2018 User. All rights reserved. // import UIKit +import CoreData +import SwiftyDropbox @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { + + /// Main tint color of the app + static let tintColor = UIColor(red: 122/255, green: 155/255, blue: 41/255, alpha: 1) + var window: UIWindow? + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. + DropboxClientsManager.setupWithAppKey("n81tx2g638wuffl") + DiskManager.setupOnFirstLaunch() return true } + var frontmostViewController: UIViewController? { + var controller = window?.rootViewController + while let presentedViewController = controller?.presentedViewController { + controller = presentedViewController + } + return controller + } + + func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { + DropboxController.shared.handle(url: url) + return true + } + + /** func applicationWillResignActive(_ application: UIApplication) { // 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. @@ -39,8 +60,55 @@ class AppDelegate: UIResponder, UIApplicationDelegate { func applicationWillTerminate(_ application: UIApplication) { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + // Saves changes in the application's managed object context before the application terminates. + self.saveContext() } + */ + // MARK: - Core Data stack + + lazy var persistentContainer: NSPersistentContainer = { + /* + The persistent container for the application. This implementation + creates and returns a container, having loaded the store for the + application to it. This property is optional since there are legitimate + error conditions that could cause the creation of the store to fail. + */ + let container = NSPersistentContainer(name: "CapFinder") + container.loadPersistentStores(completionHandler: { (storeDescription, error) in + if let error = error as NSError? { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + + /* + Typical reasons for an error here include: + * The parent directory does not exist, cannot be created, or disallows writing. + * The persistent store is not accessible, due to permissions or data protection when the device is locked. + * The device is out of space. + * The store could not be migrated to the current model version. + Check the error message to determine what the actual problem was. + */ + fatalError("Unresolved error \(error), \(error.userInfo)") + } + }) + return container + }() + + // MARK: - Core Data Saving support + + func saveContext () { + let context = persistentContainer.viewContext + if context.hasChanges { + do { + try context.save() + } catch { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + let nserror = error as NSError + fatalError("Unresolved error \(nserror), \(nserror.userInfo)") + } + } + } } diff --git a/CapCollector/Assets.xcassets/AppIcon.appiconset/Contents.json b/CapCollector/Assets.xcassets/AppIcon.appiconset/Contents.json index d8db8d6..02dd3cb 100644 --- a/CapCollector/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/CapCollector/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,43 +1,51 @@ { "images" : [ { - "idiom" : "iphone", "size" : "20x20", + "idiom" : "iphone", + "filename" : "bottle-cap40.png", "scale" : "2x" }, { - "idiom" : "iphone", "size" : "20x20", + "idiom" : "iphone", + "filename" : "bottle-cap60.png", "scale" : "3x" }, { - "idiom" : "iphone", "size" : "29x29", + "idiom" : "iphone", + "filename" : "bottle-cap58.png", "scale" : "2x" }, { - "idiom" : "iphone", "size" : "29x29", + "idiom" : "iphone", + "filename" : "bottle-cap87.png", "scale" : "3x" }, { - "idiom" : "iphone", "size" : "40x40", + "idiom" : "iphone", + "filename" : "bottle-cap80.png", "scale" : "2x" }, { - "idiom" : "iphone", "size" : "40x40", + "idiom" : "iphone", + "filename" : "bottle-cap120.png", "scale" : "3x" }, { - "idiom" : "iphone", "size" : "60x60", + "idiom" : "iphone", + "filename" : "bottle-cap120-1.png", "scale" : "2x" }, { - "idiom" : "iphone", "size" : "60x60", + "idiom" : "iphone", + "filename" : "bottle-cap180.png", "scale" : "3x" }, { @@ -86,8 +94,9 @@ "scale" : "2x" }, { - "idiom" : "ios-marketing", "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "bottle-cap1024.png", "scale" : "1x" } ], diff --git a/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap1024.png b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap1024.png new file mode 100644 index 0000000..d5ebf50 Binary files /dev/null and b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap1024.png differ diff --git a/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap120-1.png b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap120-1.png new file mode 100644 index 0000000..6701b1d Binary files /dev/null and b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap120-1.png differ diff --git a/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap120.png b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap120.png new file mode 100644 index 0000000..6701b1d Binary files /dev/null and b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap120.png differ diff --git a/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap180.png b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap180.png new file mode 100644 index 0000000..a04bc67 Binary files /dev/null and b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap180.png differ diff --git a/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap40.png b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap40.png new file mode 100644 index 0000000..63d6c79 Binary files /dev/null and b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap40.png differ diff --git a/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap58.png b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap58.png new file mode 100644 index 0000000..981bd76 Binary files /dev/null and b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap58.png differ diff --git a/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap60.png b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap60.png new file mode 100644 index 0000000..0f08502 Binary files /dev/null and b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap60.png differ diff --git a/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap80.png b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap80.png new file mode 100644 index 0000000..d953e22 Binary files /dev/null and b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap80.png differ diff --git a/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap87.png b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap87.png new file mode 100644 index 0000000..bc7cd40 Binary files /dev/null and b/CapCollector/Assets.xcassets/AppIcon.appiconset/bottle-cap87.png differ diff --git a/CapCollector/Assets.xcassets/camera.imageset/Contents.json b/CapCollector/Assets.xcassets/camera.imageset/Contents.json new file mode 100644 index 0000000..1518837 --- /dev/null +++ b/CapCollector/Assets.xcassets/camera.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "camera.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CapCollector/Assets.xcassets/camera.imageset/camera.png b/CapCollector/Assets.xcassets/camera.imageset/camera.png new file mode 100644 index 0000000..6067088 Binary files /dev/null and b/CapCollector/Assets.xcassets/camera.imageset/camera.png differ diff --git a/CapCollector/Assets.xcassets/camera_square.imageset/Contents.json b/CapCollector/Assets.xcassets/camera_square.imageset/Contents.json new file mode 100644 index 0000000..5096c74 --- /dev/null +++ b/CapCollector/Assets.xcassets/camera_square.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "camera_square.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CapCollector/Assets.xcassets/camera_square.imageset/camera_square.png b/CapCollector/Assets.xcassets/camera_square.imageset/camera_square.png new file mode 100644 index 0000000..8c48ff3 Binary files /dev/null and b/CapCollector/Assets.xcassets/camera_square.imageset/camera_square.png differ diff --git a/CapCollector/Assets.xcassets/cancel.imageset/Contents.json b/CapCollector/Assets.xcassets/cancel.imageset/Contents.json new file mode 100644 index 0000000..450a4d1 --- /dev/null +++ b/CapCollector/Assets.xcassets/cancel.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "cancel.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CapCollector/Assets.xcassets/cancel.imageset/cancel.png b/CapCollector/Assets.xcassets/cancel.imageset/cancel.png new file mode 100644 index 0000000..abc8ca7 Binary files /dev/null and b/CapCollector/Assets.xcassets/cancel.imageset/cancel.png differ diff --git a/CapCollector/Assets.xcassets/launch.imageset/Contents.json b/CapCollector/Assets.xcassets/launch.imageset/Contents.json new file mode 100644 index 0000000..5989f83 --- /dev/null +++ b/CapCollector/Assets.xcassets/launch.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "launch.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CapCollector/Assets.xcassets/launch.imageset/launch.png b/CapCollector/Assets.xcassets/launch.imageset/launch.png new file mode 100644 index 0000000..8802657 Binary files /dev/null and b/CapCollector/Assets.xcassets/launch.imageset/launch.png differ diff --git a/CapCollector/Assets.xcassets/search_icon.imageset/Contents.json b/CapCollector/Assets.xcassets/search_icon.imageset/Contents.json new file mode 100644 index 0000000..3333eca --- /dev/null +++ b/CapCollector/Assets.xcassets/search_icon.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "search_icon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/CapCollector/Assets.xcassets/search_icon.imageset/search_icon.png b/CapCollector/Assets.xcassets/search_icon.imageset/search_icon.png new file mode 100644 index 0000000..6e6cbe6 Binary files /dev/null and b/CapCollector/Assets.xcassets/search_icon.imageset/search_icon.png differ diff --git a/CapCollector/Base.lproj/LaunchScreen.storyboard b/CapCollector/Base.lproj/LaunchScreen.storyboard index f83f6fd..75652b9 100644 --- a/CapCollector/Base.lproj/LaunchScreen.storyboard +++ b/CapCollector/Base.lproj/LaunchScreen.storyboard @@ -1,7 +1,12 @@ - - + + + + + - + + + @@ -13,7 +18,20 @@ - + + + + + + + + + + + + + + @@ -22,4 +40,7 @@ + + + diff --git a/CapCollector/Base.lproj/Main.storyboard b/CapCollector/Base.lproj/Main.storyboard index 03c13c2..28ed6da 100644 --- a/CapCollector/Base.lproj/Main.storyboard +++ b/CapCollector/Base.lproj/Main.storyboard @@ -1,24 +1,447 @@ - + + + + - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Title + Title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CapCollector/Capture/CameraController.swift b/CapCollector/Capture/CameraController.swift new file mode 100644 index 0000000..0e50306 --- /dev/null +++ b/CapCollector/Capture/CameraController.swift @@ -0,0 +1,142 @@ +// +// CameraController.swift +// CapFinder +// +// Created by User on 22.02.18. +// Copyright © 2018 User. All rights reserved. +// + +import UIKit + +protocol CameraControllerDelegate { + + func didCapture(image: UIImage) + + func didCancel() +} + +class CameraController: UIViewController { + + private let imageSize = 299 // New for XCode models, 227 for turicreate + + // MARK: Outlets + + @IBOutlet weak var imageButton: RoundedButton! + + @IBOutlet weak var cropView: CropView! + + @IBOutlet weak var cancelButton: RoundedButton! + + @IBOutlet weak var cameraView: CameraView! { + didSet { + cameraView.configure() + } + } + + var delegate: CameraControllerDelegate? + + // MARK: Actions + + @IBAction func backButtonPressed() { + delegate?.didCancel() + self.dismiss(animated: true) + } + + @IBAction func imageButtonPressed() { + imageButton.isEnabled = false + event("Taking image") + cameraView.capture() + } + + // MARK: Life cycle + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + cameraView.delegate = self + imageButton.imageView?.image = UIImage.templateImage(named: "camera") + setTintColor() + + cameraView.launch { success, error in + guard let err = error else { + return + } + switch err { + case "No camera access": self.showNoCameraAccessAlert() + case "Camera error": self.showAlert("Unable to capture media") + default: self.showAlert("Error in camera setup") + } + } + self.imageButton.isEnabled = true + } + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + cameraView.complete() + } + + private func setTintColor() { + let tint = AppDelegate.tintColor + cropView.lineColor = tint + imageButton.borderColor = tint + imageButton.imageView?.tintColor = tint + cancelButton.borderColor = tint + cancelButton.set(template: "cancel", with: tint) + } + + // MARK: Alerts + + private func showNoCameraAccessAlert() { + let alert = UIAlertController(title: "Unable to access the Camera", + message: "To enable access, go to Settings > Privacy > Camera and turn on Camera access for this app.", + preferredStyle: .alert, + blurStyle: .dark) + + let okAction = UIAlertAction(title: "OK", style: .cancel, handler: nil) + alert.addAction(okAction) + + let settingsAction = UIAlertAction(title: "Settings", style: .default, handler: { _ in + // Take the user to Settings app to possibly change permission. + guard let settingsUrl = URL(string: UIApplication.openSettingsURLString) else { return } + if UIApplication.shared.canOpenURL(settingsUrl) { + UIApplication.shared.open(settingsUrl, completionHandler: nil) + } + }) + alert.addAction(settingsAction) + self.present(alert, animated: true, completion: nil) + } +} + +extension CameraController: PhotoCaptureHandlerDelegate { + + func didCapture(_ image: UIImage?) { + event("Image captured") + let factor = CGFloat(cropView.relativeSize) + self.dismiss(animated: true) + let size = CGSize(width: imageSize, height: imageSize) + guard let img = image else { + self.error("No image captured") + return + } + + guard delegate != nil else { + self.error("No delegate") + return + } + + guard let masked = img.crop(factor: factor).circleMasked else { + self.error("Could not mask image") + return + } + + // Only use 227 x 227 image + let scaled = masked.resize(to: size) + + delegate!.didCapture(image: scaled) + } +} + +extension CameraController: Logger { + + static var logToken = "[Camera]" +} diff --git a/CapCollector/Capture/CameraView.swift b/CapCollector/Capture/CameraView.swift new file mode 100644 index 0000000..e410ba5 --- /dev/null +++ b/CapCollector/Capture/CameraView.swift @@ -0,0 +1,197 @@ +// +// CameraView.swift +// CapFinder +// +// Created by User on 07.02.18. +// Copyright © 2018 User. All rights reserved. +// + +import UIKit +import AVFoundation + +class CameraView: UIView { + + // MARK: UIView overrides + + /** + Override for AVCapture + */ + override class var layerClass: AnyClass { + return AVCaptureVideoPreviewLayer.self + } + + // MARK: Enums + + private enum SessionSetupResult { + case success + case notAuthorized + case configurationFailed + } + + // MARK: Variables + + var delegate: PhotoCaptureHandlerDelegate? { + get { + return photoCaptureProcessor.delegate + } + set { + photoCaptureProcessor.delegate = newValue + } + } + + private let session = AVCaptureSession() + + private var isSessionRunning = false + + /// Communicate with the session and other session objects on this queue. + private let sessionQueue = DispatchQueue(label: "session queue") + + private var setupResult: SessionSetupResult = .success + + var videoDeviceInput: AVCaptureDeviceInput! + + private let photoOutput = AVCapturePhotoOutput() + + private let photoCaptureProcessor = PhotoCaptureHandler() + + var videoPreviewLayer: AVCaptureVideoPreviewLayer { + return layer as! AVCaptureVideoPreviewLayer + } + + // MARK: Life cycle + + func configure() { + videoPreviewLayer.session = session + + checkPermission() + + // Setup the capture session. + sessionQueue.async { + self.configureSession() + } + } + + func launch(completionHandler: @escaping (Bool, String?) -> ()) { + sessionQueue.async { + switch self.setupResult { + case .success: + // Only setup observers and start the session running if setup succeeded. + self.session.startRunning() + self.isSessionRunning = self.session.isRunning + + case .notAuthorized: + DispatchQueue.main.async { + completionHandler(false, "No camera access") + } + + case .configurationFailed: + DispatchQueue.main.async { + completionHandler(false, "Camera error") + } + } + } + } + + func complete() { + sessionQueue.async { + if self.setupResult == .success { + self.session.stopRunning() + self.isSessionRunning = self.session.isRunning + } + } + } + + // MARK: Photo Capture + + func capture() { + sessionQueue.async { + self.photoOutput.capturePhoto( + with: self.photoCaptureProcessor.photoSettings, + delegate: self.photoCaptureProcessor) + } + } + + // MARK: Camera permissions + + private func checkPermission() { + switch AVCaptureDevice.authorizationStatus(for: .video) { + case .authorized: break + case .notDetermined: + sessionQueue.suspend() + AVCaptureDevice.requestAccess(for: .video, completionHandler: { granted in + if !granted { + self.setupResult = .notAuthorized + } + self.sessionQueue.resume() + }) + + default: + // The user has previously denied access. + setupResult = .notAuthorized + } + } + + // Call this on the session queue. + private func configureSession() { + if setupResult != .success { + return + } + + session.beginConfiguration() + + /* + We do not create an AVCaptureMovieFileOutput when setting up the session because the + AVCaptureMovieFileOutput does not support movie recording with AVCaptureSession.Preset.Photo. + */ + session.sessionPreset = .photo + + // Add video input. + do { + guard let backCameraDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .back) else { + print("No camera on device") + setupResult = .configurationFailed + session.commitConfiguration() + return + } + + let videoDeviceInput = try AVCaptureDeviceInput(device: backCameraDevice) + + if session.canAddInput(videoDeviceInput) { + session.addInput(videoDeviceInput) + self.videoDeviceInput = videoDeviceInput + + DispatchQueue.main.async { + self.videoPreviewLayer.connection?.videoOrientation = .portrait + } + } else { + print("Could not add video device input to the session") + setupResult = .configurationFailed + session.commitConfiguration() + return + } + } catch { + print("Could not create video device input: \(error)") + setupResult = .configurationFailed + session.commitConfiguration() + return + } + + // Add photo output. + if session.canAddOutput(photoOutput) { + session.addOutput(photoOutput) + + photoOutput.isHighResolutionCaptureEnabled = true + photoOutput.isDepthDataDeliveryEnabled = false + photoOutput.isDualCameraDualPhotoDeliveryEnabled = false + photoOutput.isLivePhotoCaptureEnabled = false + } else { + print("Could not add photo output to the session") + setupResult = .configurationFailed + session.commitConfiguration() + return + } + + session.commitConfiguration() + } +} + diff --git a/CapCollector/Capture/PhotoCaptureHandler.swift b/CapCollector/Capture/PhotoCaptureHandler.swift new file mode 100644 index 0000000..b854fd8 --- /dev/null +++ b/CapCollector/Capture/PhotoCaptureHandler.swift @@ -0,0 +1,51 @@ +/* +See LICENSE.txt for this sample’s licensing information. + +Abstract: +Photo capture delegate. +*/ + +import AVFoundation +import Photos + +protocol PhotoCaptureHandlerDelegate { + + func didCapture(_ image: UIImage?) +} + +class PhotoCaptureHandler: NSObject { + + var delegate: PhotoCaptureHandlerDelegate? + + var photoSettings: AVCapturePhotoSettings { + let photoSettings = AVCapturePhotoSettings() + photoSettings.flashMode = .off + return photoSettings + } +} + +extension PhotoCaptureHandler: AVCapturePhotoCaptureDelegate { + /* + This extension includes all the delegate callbacks for AVCapturePhotoCaptureDelegate protocol + */ + + func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) { + + guard error == nil else { + print("PhotoCaptureHandler: \(error!)") + delegate?.didCapture(nil) + return + } + + guard let cgImage = photo.cgImageRepresentation()?.takeUnretainedValue() else { + print("PhotoCaptureHandler: No image captured") + delegate?.didCapture(nil) + return + } + + let image = UIImage(cgImage: cgImage, scale: 1.0, orientation: .right) + DispatchQueue.main.async { + self.delegate?.didCapture(image) + } + } +} diff --git a/CapCollector/Extensions/UIAlertControllerExtensions.swift b/CapCollector/Extensions/UIAlertControllerExtensions.swift new file mode 100644 index 0000000..97b65ad --- /dev/null +++ b/CapCollector/Extensions/UIAlertControllerExtensions.swift @@ -0,0 +1,61 @@ +// +// UIAlertControllerExtensions.swift +// CapFinder +// +// Created by User on 23.03.18. +// Copyright © 2018 User. All rights reserved. +// + +import Foundation +import UIKit + +extension UIAlertController { + + private struct AssociatedKeys { + static var blurStyleKey = "UIAlertController.blurStyleKey" + } + + public var blurStyle: UIBlurEffect.Style { + get { + return objc_getAssociatedObject(self, &AssociatedKeys.blurStyleKey) as? UIBlurEffect.Style ?? .extraLight + } set (style) { + objc_setAssociatedObject(self, &AssociatedKeys.blurStyleKey, style, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) + + view.setNeedsLayout() + view.layoutIfNeeded() + } + } + + public var cancelButtonColor: UIColor? { + return blurStyle == .dark ? UIColor(red: 28.0/255.0, green: 28.0/255.0, blue: 28.0/255.0, alpha: 1.0) : nil + } + + private var visualEffectView: UIVisualEffectView? { + if let presentationController = presentationController, presentationController.responds(to: Selector(("popoverView"))), let view = presentationController.value(forKey: "popoverView") as? UIView // We're on an iPad and visual effect view is in a different place. + { + return view.recursiveSubviews.compactMap({$0 as? UIVisualEffectView}).first + } + + return view.recursiveSubviews.compactMap({$0 as? UIVisualEffectView}).first + } + + private var cancelActionView: UIView? { + return view.recursiveSubviews.compactMap({ + $0 as? UILabel} + ).first(where: { + $0.text == actions.first(where: { $0.style == .cancel })?.title + })?.superview?.superview + } + + public convenience init(title: String?, message: String?, preferredStyle: UIAlertController.Style, blurStyle: UIBlurEffect.Style) { + self.init(title: title, message: message, preferredStyle: preferredStyle) + self.blurStyle = blurStyle + } + + open override func viewWillLayoutSubviews() { + super.viewWillLayoutSubviews() + + visualEffectView?.effect = UIBlurEffect(style: blurStyle) + cancelActionView?.backgroundColor = cancelButtonColor + } +} diff --git a/CapCollector/Extensions/UIImageExtensions.swift b/CapCollector/Extensions/UIImageExtensions.swift new file mode 100644 index 0000000..c5767aa --- /dev/null +++ b/CapCollector/Extensions/UIImageExtensions.swift @@ -0,0 +1,82 @@ +// +// UIImageExtensions.swift +// CapFinder +// +// Created by User on 13.02.18. +// Copyright © 2018 User. All rights reserved. +// + +import Foundation +import UIKit + +extension UIImage { + + static func templateImage(named: String) -> UIImage { + return UIImage(named: named)!.withRenderingMode(.alwaysTemplate) + } + + /** + Resize an image to the target size + */ + func resize(to targetSize: CGSize) -> UIImage { + let rect = CGRect(x: 0, y: 0, width: targetSize.width, height: targetSize.height) + + UIGraphicsBeginImageContextWithOptions(targetSize, false, 1.0) + self.draw(in: rect) + let newImage = UIGraphicsGetImageFromCurrentImageContext() + UIGraphicsEndImageContext() + return newImage! + } + + /** + Crop an image to a square, centered around the middle of the frame + - parameter factor: The crop factor of the resulting image + - returns: The cropped image + */ + func crop(factor: CGFloat) -> UIImage { + let width = self.size.width * factor + return crop(to: width) + } + + /** + Crop an image to a square, centered around the middle of the frame + - parameter size: The height and width of the resulting image + - returns: The cropped image + */ + func crop(to size: CGFloat) -> UIImage { + var rect = CGRect( + x: (self.size.height - size) / 2, + y: (self.size.width - size) / 2, + width: size, + height: size) + rect.origin.x *= scale + rect.origin.y *= scale + rect.size.width *= scale + rect.size.height *= scale + + let imageRef = cgImage!.cropping(to: rect) + return UIImage(cgImage: imageRef!, scale: scale, orientation: imageOrientation) + } + + /// The (circular) image masked by a circle + var circleMasked: UIImage? { + let width = size.width + let height = size.height + let isPortrait = height > width + let breadth = min(width, height) + let breadthSize = CGSize(width: breadth, height: breadth) + let breadthRect = CGRect(origin: .zero, size: breadthSize) + UIGraphicsBeginImageContextWithOptions(breadthSize, false, scale) + defer { UIGraphicsEndImageContext() } + + let x = isPortrait ? 0 : floor((width - height) / 2) + let y = isPortrait ? floor((height - width) / 2) : 0 + let rect = CGRect(origin: CGPoint( x: x, y: y), size: breadthSize) + guard let cgImage = cgImage?.cropping(to: rect) else { + return nil + } + UIBezierPath(ovalIn: breadthRect).addClip() + UIImage(cgImage: cgImage, scale: 1, orientation: imageOrientation).draw(in: breadthRect) + return UIGraphicsGetImageFromCurrentImageContext() + } +} diff --git a/CapCollector/Extensions/UIViewExtensions.swift b/CapCollector/Extensions/UIViewExtensions.swift new file mode 100644 index 0000000..84dc911 --- /dev/null +++ b/CapCollector/Extensions/UIViewExtensions.swift @@ -0,0 +1,19 @@ +// +// UIViewExtensions.swift +// CapFinder +// +// Created by User on 23.03.18. +// Copyright © 2018 User. All rights reserved. +// + +import Foundation +import UIKit + +extension UIView { + + var recursiveSubviews: [UIView] { + var subviews = self.subviews.compactMap{ $0 } + subviews.forEach { subviews.append(contentsOf: $0.recursiveSubviews) } + return subviews + } +} diff --git a/CapCollector/Extensions/ViewControllerExtensions.swift b/CapCollector/Extensions/ViewControllerExtensions.swift new file mode 100644 index 0000000..0f86723 --- /dev/null +++ b/CapCollector/Extensions/ViewControllerExtensions.swift @@ -0,0 +1,28 @@ +// +// ViewControllerExtensions.swift +// CapFinder +// +// Created by User on 18.03.18. +// Copyright © 2018 User. All rights reserved. +// + +import Foundation +import UIKit + +extension UIViewController { + + // MARK: Alerts + + /// Present an alert with a message to the user + func showAlert(_ message: String, title: String = "Error") { + let alertController = UIAlertController( + title: title, + message: message, + preferredStyle: .alert, + blurStyle: .dark) + + alertController.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil)) + + self.present(alertController, animated: true, completion: nil) + } +} diff --git a/CapCollector/Info.plist b/CapCollector/Info.plist index 16be3b6..756f0c5 100644 --- a/CapCollector/Info.plist +++ b/CapCollector/Info.plist @@ -2,8 +2,26 @@ + LSApplicationQueriesSchemes + + dbapi-8-emm + dbapi-2 + + CFBundleURLTypes + + + CFBundleURLSchemes + + db-n81tx2g638wuffl + + CFBundleURLName + + + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Cap Collector CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -28,12 +46,16 @@ armv7 + UIStatusBarStyle + UIStatusBarStyleLightContent UISupportedInterfaceOrientations UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight + NSCameraUsageDescription + Take images to identify matching caps and register new ones + UIViewControllerBasedStatusBarAppearance + UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait diff --git a/CapCollector/Models/Squeezenet.mlmodel b/CapCollector/Models/Squeezenet.mlmodel new file mode 100644 index 0000000..f1c74d8 Binary files /dev/null and b/CapCollector/Models/Squeezenet.mlmodel differ diff --git a/CapCollector/View Components/RoundedButton.swift b/CapCollector/View Components/RoundedButton.swift new file mode 100644 index 0000000..240c3bd --- /dev/null +++ b/CapCollector/View Components/RoundedButton.swift @@ -0,0 +1,99 @@ +// +// RoundedButton.swift +// CapFinder +// +// Created by User on 01.02.18. +// Copyright © 2018 User. All rights reserved. +// + +import Foundation +import UIKit + +@IBDesignable +class RoundedButton: UIButton { + + @IBInspectable var borderColor: UIColor = UIColor.black { + didSet { + layer.borderColor = borderColor.cgColor + } + } + + @IBInspectable var borderWidth: CGFloat = 0 { + didSet { + layer.borderWidth = borderWidth + } + } + //Normal state bg and border + @IBInspectable var normalBorderColor: UIColor? { + didSet { + layer.borderColor = normalBorderColor?.cgColor + } + } + + @IBInspectable var normalBackgroundColor: UIColor? { + didSet { + setBgColorForState(color: normalBackgroundColor, forState: []) + } + } + + + //Highlighted state bg and border + @IBInspectable var highlightedBorderColor: UIColor? + + @IBInspectable var highlightedBackgroundColor: UIColor? { + didSet { + setBgColorForState(color: highlightedBackgroundColor, forState: .highlighted) + } + } + + + private func setBgColorForState(color: UIColor?, forState: UIControl.State){ + self.backgroundColor = color +// if color != nil { +// self.backgroundColor = color! +// setBackgroundImage(UIImage.imageWithColor(color: color!), for: forState) +// } else { +// setBackgroundImage(nil, for: forState) +// } + } + + override func layoutSubviews() { + super.layoutSubviews() + + layer.cornerRadius = layer.frame.height / 2 + // layer.cornerRadius = min(layer.frame.height, layer.frame.width) / 2 + clipsToBounds = true + + if borderWidth > 0 { + if state == [] && layer.borderColor == normalBorderColor?.cgColor { + layer.borderColor = normalBorderColor?.cgColor + } else if state == .highlighted && highlightedBorderColor != nil { + layer.borderColor = highlightedBorderColor!.cgColor + } + } + } + +} + +extension RoundedButton { + + func set(template: String, with tint: UIColor) { + self.setImage(UIImage.templateImage(named: template), for: .normal) + self.tintColor = tint + self.borderColor = tint + } +} + +//Extension Required by RoundedButton to create UIImage from UIColor +extension UIImage { + class func imageWithColor(color: UIColor) -> UIImage { + let rect: CGRect = CGRect(x: 0, y: 0, width: 1, height: 1) + UIGraphicsBeginImageContextWithOptions(CGSize(width: 1, height: 1), false, 1.0) + color.setFill() + UIRectFill(rect) + let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! + UIGraphicsEndImageContext() + return image + } +} + diff --git a/CapCollector/View Components/RoundedImageView.swift b/CapCollector/View Components/RoundedImageView.swift new file mode 100644 index 0000000..4d70fbd --- /dev/null +++ b/CapCollector/View Components/RoundedImageView.swift @@ -0,0 +1,31 @@ +// +// RoundedImageView.swift +// CapFinder +// +// Created by User on 22.04.18. +// Copyright © 2018 User. All rights reserved. +// + +import UIKit + +class RoundedImageView: UIImageView { + + @IBInspectable var borderColor: UIColor = UIColor.black { + didSet { + layer.borderColor = borderColor.cgColor + } + } + + @IBInspectable var borderWidth: CGFloat = 0 { + didSet { + layer.borderWidth = borderWidth + } + } + + override func layoutSubviews() { + super.layoutSubviews() + + layer.cornerRadius = layer.frame.height / 2 + clipsToBounds = true + } +} diff --git a/CapCollector/ViewController.swift b/CapCollector/ViewController.swift deleted file mode 100644 index 587e0c0..0000000 --- a/CapCollector/ViewController.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// ViewController.swift -// CapCollector -// -// Created by User on 05.05.18. -// Copyright © 2018 CH. All rights reserved. -// - -import UIKit - -class ViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - // Do any additional setup after loading the view, typically from a nib. - } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. - } - - -} - diff --git a/CapCollector/Xcode.mlmodel b/CapCollector/Xcode.mlmodel new file mode 100644 index 0000000..6cfb8c1 Binary files /dev/null and b/CapCollector/Xcode.mlmodel differ diff --git a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-all-non-framework-target-headers.hmap b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-all-non-framework-target-headers.hmap index dc511c4..dd8b535 100644 Binary files a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-all-non-framework-target-headers.hmap and b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-all-non-framework-target-headers.hmap differ diff --git a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-all-target-headers.hmap b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-all-target-headers.hmap index dc511c4..dd8b535 100644 Binary files a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-all-target-headers.hmap and b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-all-target-headers.hmap differ diff --git a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-own-target-headers.hmap b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-own-target-headers.hmap index dc511c4..dd8b535 100644 Binary files a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-own-target-headers.hmap and b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-own-target-headers.hmap differ diff --git a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-project-headers.hmap b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-project-headers.hmap index dc511c4..dd8b535 100644 Binary files a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-project-headers.hmap and b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector-project-headers.hmap differ diff --git a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector.hmap b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector.hmap index dc511c4..dd8b535 100644 Binary files a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector.hmap and b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/CapCollector.hmap differ diff --git a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCollector-OutputFileMap.json b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCollector-OutputFileMap.json index cce27f5..a6f9a5e 100644 --- a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCollector-OutputFileMap.json +++ b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCollector-OutputFileMap.json @@ -1 +1 @@ -{"\/Users\/User\/Development\/CapCollector\/CapCollector\/AppDelegate.swift":{"swiftmodule":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/AppDelegate~partial.swiftmodule","object":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/AppDelegate.o","llvm-bc":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/AppDelegate.bc","diagnostics":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/AppDelegate.dia","dependencies":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/AppDelegate.d","swift-dependencies":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/AppDelegate.swiftdeps"},"":{"swift-dependencies":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/CapCollector-master.swiftdeps"},"\/Users\/User\/Development\/CapCollector\/CapCollector\/ViewController.swift":{"swiftmodule":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/ViewController~partial.swiftmodule","object":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/ViewController.o","llvm-bc":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/ViewController.bc","diagnostics":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/ViewController.dia","dependencies":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/ViewController.d","swift-dependencies":"\/Users\/User\/Development\/CapCollector\/build\/CapCollector\/Build\/Intermediates.noindex\/CapCollector.build\/Debug-iphoneos\/CapCollector.build\/Objects-normal\/arm64\/ViewController.swiftdeps"}} \ No newline at end of file +{"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Presentation/ImageSelector.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageSelector.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageSelector.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageSelector.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageSelector.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageSelector~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageSelector.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Classifier.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Classifier.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Classifier.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Classifier.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Classifier.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Classifier~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Classifier.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Extensions/ViewControllerExtensions.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ViewControllerExtensions.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ViewControllerExtensions.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ViewControllerExtensions.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ViewControllerExtensions.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ViewControllerExtensions~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ViewControllerExtensions.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Data/DiskManager.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DiskManager.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DiskManager.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DiskManager.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DiskManager.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DiskManager~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DiskManager.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Sync/DropboxUpload.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxUpload.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxUpload.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxUpload.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxUpload.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxUpload~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxUpload.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Data/CapImages.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapImages.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapImages.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapImages.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapImages.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapImages~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapImages.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Sync/DropBoxController.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropBoxController.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropBoxController.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropBoxController.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropBoxController.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropBoxController~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropBoxController.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Extensions/UIViewExtensions.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIViewExtensions.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIViewExtensions.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIViewExtensions.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIViewExtensions.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIViewExtensions~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIViewExtensions.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/AppDelegate.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/AppDelegate.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/AppDelegate.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/AppDelegate.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/AppDelegate.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/AppDelegate~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/AppDelegate.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Presentation/ImageCell.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageCell.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageCell.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageCell.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageCell.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageCell~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageCell.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/TableView.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/TableView.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/TableView.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/TableView.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/TableView.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/TableView~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/TableView.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Presentation/CapCell.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCell.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCell.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCell.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCell.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCell~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCell.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Extensions/UIImageExtensions.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIImageExtensions.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIImageExtensions.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIImageExtensions.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIImageExtensions.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIImageExtensions~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIImageExtensions.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Capture/CameraController.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraController.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraController.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraController.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraController.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraController~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraController.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Extensions/UIAlertControllerExtensions.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIAlertControllerExtensions.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIAlertControllerExtensions.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIAlertControllerExtensions.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIAlertControllerExtensions.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIAlertControllerExtensions~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIAlertControllerExtensions.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Capture/PhotoCaptureHandler.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/PhotoCaptureHandler.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/PhotoCaptureHandler.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/PhotoCaptureHandler.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/PhotoCaptureHandler.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/PhotoCaptureHandler~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/PhotoCaptureHandler.o"},"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/DerivedSources/CoreMLGenerated/Squeezenet/Squeezenet.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Squeezenet.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Squeezenet.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Squeezenet.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Squeezenet.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Squeezenet~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Squeezenet.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Data/CapNames.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapNames.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapNames.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapNames.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapNames.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapNames~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapNames.o"},"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/DerivedSources/CoreMLGenerated/Resnet/Resnet.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Resnet.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Resnet.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Resnet.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Resnet.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Resnet~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Resnet.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/View Components/RoundedImageView.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedImageView.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedImageView.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedImageView.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedImageView.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedImageView~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedImageView.o"},"":{"swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCollector-master.swiftdeps"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Capture/CameraView.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraView.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraView.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraView.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraView.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraView~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraView.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/View Components/CropView.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CropView.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CropView.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CropView.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CropView.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CropView~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CropView.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Data/NameFile.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/NameFile.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/NameFile.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/NameFile.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/NameFile.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/NameFile~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/NameFile.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Logger.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Logger.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Logger.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Logger.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Logger.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Logger~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Logger.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/Sync/DropboxDownload.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxDownload.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxDownload.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxDownload.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxDownload.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxDownload~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxDownload.o"},"/Users/christoph/Documents/GitHub/CapCollector/CapCollector/View Components/RoundedButton.swift":{"dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedButton.d","diagnostics":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedButton.dia","swift-dependencies":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedButton.swiftdeps","llvm-bc":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedButton.bc","swiftmodule":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedButton~partial.swiftmodule","object":"/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedButton.o"}} \ No newline at end of file diff --git a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCollector.LinkFileList b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCollector.LinkFileList index c370353..d0ea9cd 100644 --- a/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCollector.LinkFileList +++ b/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCollector.LinkFileList @@ -1,2 +1,26 @@ -/Users/User/Development/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ViewController.o -/Users/User/Development/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/AppDelegate.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Classifier.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Logger.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropBoxController.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIViewExtensions.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DiskManager.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIImageExtensions.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapImages.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/TableView.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/NameFile.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/AppDelegate.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageSelector.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraController.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ViewControllerExtensions.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/PhotoCaptureHandler.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedButton.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapNames.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/ImageCell.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/UIAlertControllerExtensions.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CameraView.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CropView.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxDownload.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/RoundedImageView.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/DropboxUpload.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/CapCell.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Squeezenet.o +/Users/christoph/Documents/GitHub/CapCollector/build/CapCollector/Build/Intermediates.noindex/CapCollector.build/Debug-iphoneos/CapCollector.build/Objects-normal/arm64/Resnet.o diff --git a/build/CapCollector/info.plist b/build/CapCollector/info.plist index be51d14..225ffa3 100644 --- a/build/CapCollector/info.plist +++ b/build/CapCollector/info.plist @@ -3,8 +3,8 @@ LastAccessedDate - 2018-05-05T06:08:35Z + 2018-08-16T09:18:02Z WorkspacePath - /Users/User/Development/CapCollector/CapCollector.xcodeproj + /Users/christoph/Documents/GitHub/CapCollector/CapCollector.xcworkspace diff --git a/build/ModuleCache.noindex/Session.modulevalidation b/build/ModuleCache.noindex/Session.modulevalidation index 266cb62..1b99f12 100644 --- a/build/ModuleCache.noindex/Session.modulevalidation +++ b/build/ModuleCache.noindex/Session.modulevalidation @@ -1 +1 @@ -Module build session file for module cache at /Users/User/Development/CapCollector/build/ModuleCache.noindex +1534411083.265933: Module build session file for module cache at Path(str: "/Users/christoph/Documents/GitHub/CapCollector/build/ModuleCache.noindex")