├── .gitignore ├── Assets ├── ExampleDemo.png └── ExampleDemo.psd ├── Example ├── FoggyExample.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── FoggyExample.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── FoggyExample │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── ContentView.swift │ ├── FoggyExampleApp.swift │ └── Preview Content │ │ └── Preview Assets.xcassets │ │ └── Contents.json ├── Podfile ├── Podfile.lock └── Pods │ ├── Local Podspecs │ └── FoggyColors.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ └── project.pbxproj │ └── Target Support Files │ ├── FoggyColors │ ├── FoggyColors-Info.plist │ ├── FoggyColors-dummy.m │ ├── FoggyColors-prefix.pch │ ├── FoggyColors-umbrella.h │ ├── FoggyColors.debug.xcconfig │ ├── FoggyColors.modulemap │ └── FoggyColors.release.xcconfig │ └── Pods-FoggyExample │ ├── Pods-FoggyExample-Info.plist │ ├── Pods-FoggyExample-acknowledgements.markdown │ ├── Pods-FoggyExample-acknowledgements.plist │ ├── Pods-FoggyExample-dummy.m │ ├── Pods-FoggyExample-frameworks-Debug-input-files.xcfilelist │ ├── Pods-FoggyExample-frameworks-Debug-output-files.xcfilelist │ ├── Pods-FoggyExample-frameworks-Release-input-files.xcfilelist │ ├── Pods-FoggyExample-frameworks-Release-output-files.xcfilelist │ ├── Pods-FoggyExample-frameworks.sh │ ├── Pods-FoggyExample-umbrella.h │ ├── Pods-FoggyExample.debug.xcconfig │ ├── Pods-FoggyExample.modulemap │ └── Pods-FoggyExample.release.xcconfig ├── FoggyColors.podspec ├── LICENSE ├── Package.swift ├── README.md ├── Sources └── FoggyColors │ ├── FoggyColorsView.swift │ └── PointRandomization.swift └── Tests └── FoggyColorsTests └── FoggyColorsTests.swift /.gitignore: -------------------------------------------------------------------------------- 1 | # macOS 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 26 | # Carthage/Checkouts 27 | 28 | Carthage/Build 29 | 30 | # We recommend against adding the Pods directory to your .gitignore. However 31 | # you should judge for yourself, the pros and cons are mentioned at: 32 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 33 | # 34 | # Note: if you ignore the Pods directory, make sure to uncomment 35 | # `pod install` in .travis.yml 36 | # 37 | Pods/ 38 | 39 | .swiftpm 40 | -------------------------------------------------------------------------------- /Assets/ExampleDemo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexdremov/FoggyColors/98ba7b491903432eba9aa38ae36cc6267016a9a4/Assets/ExampleDemo.png -------------------------------------------------------------------------------- /Assets/ExampleDemo.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexdremov/FoggyColors/98ba7b491903432eba9aa38ae36cc6267016a9a4/Assets/ExampleDemo.psd -------------------------------------------------------------------------------- /Example/FoggyExample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 55; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 25F949C927B5A19900F43529 /* FoggyExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25F949C827B5A19900F43529 /* FoggyExampleApp.swift */; }; 11 | 25F949CB27B5A19900F43529 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25F949CA27B5A19900F43529 /* ContentView.swift */; }; 12 | 25F949CD27B5A19A00F43529 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 25F949CC27B5A19A00F43529 /* Assets.xcassets */; }; 13 | 25F949D027B5A19A00F43529 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 25F949CF27B5A19A00F43529 /* Preview Assets.xcassets */; }; 14 | 512FA407353696249E7B0A13 /* Pods_FoggyExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5F29A0011E6AF20AA3344EA /* Pods_FoggyExample.framework */; }; 15 | /* End PBXBuildFile section */ 16 | 17 | /* Begin PBXFileReference section */ 18 | 25F949C527B5A19900F43529 /* FoggyExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FoggyExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 19 | 25F949C827B5A19900F43529 /* FoggyExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FoggyExampleApp.swift; sourceTree = ""; }; 20 | 25F949CA27B5A19900F43529 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 21 | 25F949CC27B5A19A00F43529 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 22 | 25F949CF27B5A19A00F43529 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 23 | 31872D632582E38FC4F7D3E3 /* Pods-FoggyExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FoggyExample.debug.xcconfig"; path = "Target Support Files/Pods-FoggyExample/Pods-FoggyExample.debug.xcconfig"; sourceTree = ""; }; 24 | 989933FAA3C93B036D7D1E8D /* Pods-FoggyExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FoggyExample.release.xcconfig"; path = "Target Support Files/Pods-FoggyExample/Pods-FoggyExample.release.xcconfig"; sourceTree = ""; }; 25 | B5F29A0011E6AF20AA3344EA /* Pods_FoggyExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FoggyExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 26 | /* End PBXFileReference section */ 27 | 28 | /* Begin PBXFrameworksBuildPhase section */ 29 | 25F949C227B5A19900F43529 /* Frameworks */ = { 30 | isa = PBXFrameworksBuildPhase; 31 | buildActionMask = 2147483647; 32 | files = ( 33 | 512FA407353696249E7B0A13 /* Pods_FoggyExample.framework in Frameworks */, 34 | ); 35 | runOnlyForDeploymentPostprocessing = 0; 36 | }; 37 | /* End PBXFrameworksBuildPhase section */ 38 | 39 | /* Begin PBXGroup section */ 40 | 25F949BC27B5A19900F43529 = { 41 | isa = PBXGroup; 42 | children = ( 43 | 25F949C727B5A19900F43529 /* FoggyExample */, 44 | 25F949C627B5A19900F43529 /* Products */, 45 | 6290597772A2D76739973398 /* Pods */, 46 | 9C891A4FDB80066370932748 /* Frameworks */, 47 | ); 48 | sourceTree = ""; 49 | }; 50 | 25F949C627B5A19900F43529 /* Products */ = { 51 | isa = PBXGroup; 52 | children = ( 53 | 25F949C527B5A19900F43529 /* FoggyExample.app */, 54 | ); 55 | name = Products; 56 | sourceTree = ""; 57 | }; 58 | 25F949C727B5A19900F43529 /* FoggyExample */ = { 59 | isa = PBXGroup; 60 | children = ( 61 | 25F949C827B5A19900F43529 /* FoggyExampleApp.swift */, 62 | 25F949CA27B5A19900F43529 /* ContentView.swift */, 63 | 25F949CC27B5A19A00F43529 /* Assets.xcassets */, 64 | 25F949CE27B5A19A00F43529 /* Preview Content */, 65 | ); 66 | path = FoggyExample; 67 | sourceTree = ""; 68 | }; 69 | 25F949CE27B5A19A00F43529 /* Preview Content */ = { 70 | isa = PBXGroup; 71 | children = ( 72 | 25F949CF27B5A19A00F43529 /* Preview Assets.xcassets */, 73 | ); 74 | path = "Preview Content"; 75 | sourceTree = ""; 76 | }; 77 | 6290597772A2D76739973398 /* Pods */ = { 78 | isa = PBXGroup; 79 | children = ( 80 | 31872D632582E38FC4F7D3E3 /* Pods-FoggyExample.debug.xcconfig */, 81 | 989933FAA3C93B036D7D1E8D /* Pods-FoggyExample.release.xcconfig */, 82 | ); 83 | path = Pods; 84 | sourceTree = ""; 85 | }; 86 | 9C891A4FDB80066370932748 /* Frameworks */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | B5F29A0011E6AF20AA3344EA /* Pods_FoggyExample.framework */, 90 | ); 91 | name = Frameworks; 92 | sourceTree = ""; 93 | }; 94 | /* End PBXGroup section */ 95 | 96 | /* Begin PBXNativeTarget section */ 97 | 25F949C427B5A19900F43529 /* FoggyExample */ = { 98 | isa = PBXNativeTarget; 99 | buildConfigurationList = 25F949D327B5A19A00F43529 /* Build configuration list for PBXNativeTarget "FoggyExample" */; 100 | buildPhases = ( 101 | D4B53A5E85A5CF78F7D23BE7 /* [CP] Check Pods Manifest.lock */, 102 | 25F949C127B5A19900F43529 /* Sources */, 103 | 25F949C227B5A19900F43529 /* Frameworks */, 104 | 25F949C327B5A19900F43529 /* Resources */, 105 | 0D4EA4E9F48BEFF1CF58078D /* [CP] Embed Pods Frameworks */, 106 | ); 107 | buildRules = ( 108 | ); 109 | dependencies = ( 110 | ); 111 | name = FoggyExample; 112 | packageProductDependencies = ( 113 | ); 114 | productName = FoggyExample; 115 | productReference = 25F949C527B5A19900F43529 /* FoggyExample.app */; 116 | productType = "com.apple.product-type.application"; 117 | }; 118 | /* End PBXNativeTarget section */ 119 | 120 | /* Begin PBXProject section */ 121 | 25F949BD27B5A19900F43529 /* Project object */ = { 122 | isa = PBXProject; 123 | attributes = { 124 | BuildIndependentTargetsInParallel = 1; 125 | LastSwiftUpdateCheck = 1320; 126 | LastUpgradeCheck = 1320; 127 | TargetAttributes = { 128 | 25F949C427B5A19900F43529 = { 129 | CreatedOnToolsVersion = 13.2.1; 130 | }; 131 | }; 132 | }; 133 | buildConfigurationList = 25F949C027B5A19900F43529 /* Build configuration list for PBXProject "FoggyExample" */; 134 | compatibilityVersion = "Xcode 13.0"; 135 | developmentRegion = en; 136 | hasScannedForEncodings = 0; 137 | knownRegions = ( 138 | en, 139 | Base, 140 | ); 141 | mainGroup = 25F949BC27B5A19900F43529; 142 | packageReferences = ( 143 | ); 144 | productRefGroup = 25F949C627B5A19900F43529 /* Products */; 145 | projectDirPath = ""; 146 | projectRoot = ""; 147 | targets = ( 148 | 25F949C427B5A19900F43529 /* FoggyExample */, 149 | ); 150 | }; 151 | /* End PBXProject section */ 152 | 153 | /* Begin PBXResourcesBuildPhase section */ 154 | 25F949C327B5A19900F43529 /* Resources */ = { 155 | isa = PBXResourcesBuildPhase; 156 | buildActionMask = 2147483647; 157 | files = ( 158 | 25F949D027B5A19A00F43529 /* Preview Assets.xcassets in Resources */, 159 | 25F949CD27B5A19A00F43529 /* Assets.xcassets in Resources */, 160 | ); 161 | runOnlyForDeploymentPostprocessing = 0; 162 | }; 163 | /* End PBXResourcesBuildPhase section */ 164 | 165 | /* Begin PBXShellScriptBuildPhase section */ 166 | 0D4EA4E9F48BEFF1CF58078D /* [CP] Embed Pods Frameworks */ = { 167 | isa = PBXShellScriptBuildPhase; 168 | buildActionMask = 2147483647; 169 | files = ( 170 | ); 171 | inputFileListPaths = ( 172 | "${PODS_ROOT}/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", 173 | ); 174 | name = "[CP] Embed Pods Frameworks"; 175 | outputFileListPaths = ( 176 | "${PODS_ROOT}/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", 177 | ); 178 | runOnlyForDeploymentPostprocessing = 0; 179 | shellPath = /bin/sh; 180 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-frameworks.sh\"\n"; 181 | showEnvVarsInLog = 0; 182 | }; 183 | D4B53A5E85A5CF78F7D23BE7 /* [CP] Check Pods Manifest.lock */ = { 184 | isa = PBXShellScriptBuildPhase; 185 | buildActionMask = 2147483647; 186 | files = ( 187 | ); 188 | inputFileListPaths = ( 189 | ); 190 | inputPaths = ( 191 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 192 | "${PODS_ROOT}/Manifest.lock", 193 | ); 194 | name = "[CP] Check Pods Manifest.lock"; 195 | outputFileListPaths = ( 196 | ); 197 | outputPaths = ( 198 | "$(DERIVED_FILE_DIR)/Pods-FoggyExample-checkManifestLockResult.txt", 199 | ); 200 | runOnlyForDeploymentPostprocessing = 0; 201 | shellPath = /bin/sh; 202 | 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"; 203 | showEnvVarsInLog = 0; 204 | }; 205 | /* End PBXShellScriptBuildPhase section */ 206 | 207 | /* Begin PBXSourcesBuildPhase section */ 208 | 25F949C127B5A19900F43529 /* Sources */ = { 209 | isa = PBXSourcesBuildPhase; 210 | buildActionMask = 2147483647; 211 | files = ( 212 | 25F949CB27B5A19900F43529 /* ContentView.swift in Sources */, 213 | 25F949C927B5A19900F43529 /* FoggyExampleApp.swift in Sources */, 214 | ); 215 | runOnlyForDeploymentPostprocessing = 0; 216 | }; 217 | /* End PBXSourcesBuildPhase section */ 218 | 219 | /* Begin XCBuildConfiguration section */ 220 | 25F949D127B5A19A00F43529 /* Debug */ = { 221 | isa = XCBuildConfiguration; 222 | buildSettings = { 223 | ALWAYS_SEARCH_USER_PATHS = NO; 224 | CLANG_ANALYZER_NONNULL = YES; 225 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 226 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; 227 | CLANG_CXX_LIBRARY = "libc++"; 228 | CLANG_ENABLE_MODULES = YES; 229 | CLANG_ENABLE_OBJC_ARC = YES; 230 | CLANG_ENABLE_OBJC_WEAK = YES; 231 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 232 | CLANG_WARN_BOOL_CONVERSION = YES; 233 | CLANG_WARN_COMMA = YES; 234 | CLANG_WARN_CONSTANT_CONVERSION = YES; 235 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 236 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 237 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 238 | CLANG_WARN_EMPTY_BODY = YES; 239 | CLANG_WARN_ENUM_CONVERSION = YES; 240 | CLANG_WARN_INFINITE_RECURSION = YES; 241 | CLANG_WARN_INT_CONVERSION = YES; 242 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 243 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 244 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 245 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 246 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 247 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 248 | CLANG_WARN_STRICT_PROTOTYPES = YES; 249 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 250 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 251 | CLANG_WARN_UNREACHABLE_CODE = YES; 252 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 253 | COPY_PHASE_STRIP = NO; 254 | DEBUG_INFORMATION_FORMAT = dwarf; 255 | ENABLE_STRICT_OBJC_MSGSEND = YES; 256 | ENABLE_TESTABILITY = YES; 257 | GCC_C_LANGUAGE_STANDARD = gnu11; 258 | GCC_DYNAMIC_NO_PIC = NO; 259 | GCC_NO_COMMON_BLOCKS = YES; 260 | GCC_OPTIMIZATION_LEVEL = 0; 261 | GCC_PREPROCESSOR_DEFINITIONS = ( 262 | "DEBUG=1", 263 | "$(inherited)", 264 | ); 265 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 266 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 267 | GCC_WARN_UNDECLARED_SELECTOR = YES; 268 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 269 | GCC_WARN_UNUSED_FUNCTION = YES; 270 | GCC_WARN_UNUSED_VARIABLE = YES; 271 | IPHONEOS_DEPLOYMENT_TARGET = 15.2; 272 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 273 | MTL_FAST_MATH = YES; 274 | ONLY_ACTIVE_ARCH = YES; 275 | SDKROOT = iphoneos; 276 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 277 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 278 | }; 279 | name = Debug; 280 | }; 281 | 25F949D227B5A19A00F43529 /* Release */ = { 282 | isa = XCBuildConfiguration; 283 | buildSettings = { 284 | ALWAYS_SEARCH_USER_PATHS = NO; 285 | CLANG_ANALYZER_NONNULL = YES; 286 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 287 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; 288 | CLANG_CXX_LIBRARY = "libc++"; 289 | CLANG_ENABLE_MODULES = YES; 290 | CLANG_ENABLE_OBJC_ARC = YES; 291 | CLANG_ENABLE_OBJC_WEAK = YES; 292 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 293 | CLANG_WARN_BOOL_CONVERSION = YES; 294 | CLANG_WARN_COMMA = YES; 295 | CLANG_WARN_CONSTANT_CONVERSION = YES; 296 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 297 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 298 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 299 | CLANG_WARN_EMPTY_BODY = YES; 300 | CLANG_WARN_ENUM_CONVERSION = YES; 301 | CLANG_WARN_INFINITE_RECURSION = YES; 302 | CLANG_WARN_INT_CONVERSION = YES; 303 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 304 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 305 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 306 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 307 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 308 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 309 | CLANG_WARN_STRICT_PROTOTYPES = YES; 310 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 311 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 312 | CLANG_WARN_UNREACHABLE_CODE = YES; 313 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 314 | COPY_PHASE_STRIP = NO; 315 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 316 | ENABLE_NS_ASSERTIONS = NO; 317 | ENABLE_STRICT_OBJC_MSGSEND = YES; 318 | GCC_C_LANGUAGE_STANDARD = gnu11; 319 | GCC_NO_COMMON_BLOCKS = YES; 320 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 321 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 322 | GCC_WARN_UNDECLARED_SELECTOR = YES; 323 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 324 | GCC_WARN_UNUSED_FUNCTION = YES; 325 | GCC_WARN_UNUSED_VARIABLE = YES; 326 | IPHONEOS_DEPLOYMENT_TARGET = 15.2; 327 | MTL_ENABLE_DEBUG_INFO = NO; 328 | MTL_FAST_MATH = YES; 329 | SDKROOT = iphoneos; 330 | SWIFT_COMPILATION_MODE = wholemodule; 331 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 332 | VALIDATE_PRODUCT = YES; 333 | }; 334 | name = Release; 335 | }; 336 | 25F949D427B5A19A00F43529 /* Debug */ = { 337 | isa = XCBuildConfiguration; 338 | baseConfigurationReference = 31872D632582E38FC4F7D3E3 /* Pods-FoggyExample.debug.xcconfig */; 339 | buildSettings = { 340 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 341 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 342 | CODE_SIGN_STYLE = Automatic; 343 | CURRENT_PROJECT_VERSION = 1; 344 | DEVELOPMENT_ASSET_PATHS = "\"FoggyExample/Preview Content\""; 345 | DEVELOPMENT_TEAM = 7D49J2XMDA; 346 | ENABLE_PREVIEWS = YES; 347 | GENERATE_INFOPLIST_FILE = YES; 348 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 349 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 350 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 351 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 352 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 353 | LD_RUNPATH_SEARCH_PATHS = ( 354 | "$(inherited)", 355 | "@executable_path/Frameworks", 356 | ); 357 | MARKETING_VERSION = 1.0; 358 | PRODUCT_BUNDLE_IDENTIFIER = com.alexdremov.FoggyExample; 359 | PRODUCT_NAME = "$(TARGET_NAME)"; 360 | SWIFT_EMIT_LOC_STRINGS = YES; 361 | SWIFT_VERSION = 5.0; 362 | TARGETED_DEVICE_FAMILY = "1,2"; 363 | }; 364 | name = Debug; 365 | }; 366 | 25F949D527B5A19A00F43529 /* Release */ = { 367 | isa = XCBuildConfiguration; 368 | baseConfigurationReference = 989933FAA3C93B036D7D1E8D /* Pods-FoggyExample.release.xcconfig */; 369 | buildSettings = { 370 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 371 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 372 | CODE_SIGN_STYLE = Automatic; 373 | CURRENT_PROJECT_VERSION = 1; 374 | DEVELOPMENT_ASSET_PATHS = "\"FoggyExample/Preview Content\""; 375 | DEVELOPMENT_TEAM = 7D49J2XMDA; 376 | ENABLE_PREVIEWS = YES; 377 | GENERATE_INFOPLIST_FILE = YES; 378 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 379 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 380 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 381 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 382 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 383 | LD_RUNPATH_SEARCH_PATHS = ( 384 | "$(inherited)", 385 | "@executable_path/Frameworks", 386 | ); 387 | MARKETING_VERSION = 1.0; 388 | PRODUCT_BUNDLE_IDENTIFIER = com.alexdremov.FoggyExample; 389 | PRODUCT_NAME = "$(TARGET_NAME)"; 390 | SWIFT_EMIT_LOC_STRINGS = YES; 391 | SWIFT_VERSION = 5.0; 392 | TARGETED_DEVICE_FAMILY = "1,2"; 393 | }; 394 | name = Release; 395 | }; 396 | /* End XCBuildConfiguration section */ 397 | 398 | /* Begin XCConfigurationList section */ 399 | 25F949C027B5A19900F43529 /* Build configuration list for PBXProject "FoggyExample" */ = { 400 | isa = XCConfigurationList; 401 | buildConfigurations = ( 402 | 25F949D127B5A19A00F43529 /* Debug */, 403 | 25F949D227B5A19A00F43529 /* Release */, 404 | ); 405 | defaultConfigurationIsVisible = 0; 406 | defaultConfigurationName = Release; 407 | }; 408 | 25F949D327B5A19A00F43529 /* Build configuration list for PBXNativeTarget "FoggyExample" */ = { 409 | isa = XCConfigurationList; 410 | buildConfigurations = ( 411 | 25F949D427B5A19A00F43529 /* Debug */, 412 | 25F949D527B5A19A00F43529 /* Release */, 413 | ); 414 | defaultConfigurationIsVisible = 0; 415 | defaultConfigurationName = Release; 416 | }; 417 | /* End XCConfigurationList section */ 418 | }; 419 | rootObject = 25F949BD27B5A19900F43529 /* Project object */; 420 | } 421 | -------------------------------------------------------------------------------- /Example/FoggyExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/FoggyExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/FoggyExample.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/FoggyExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/FoggyExample/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Example/FoggyExample/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | } 93 | ], 94 | "info" : { 95 | "author" : "xcode", 96 | "version" : 1 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Example/FoggyExample/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Example/FoggyExample/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // FoggyExample 4 | // 5 | // Created by Alex Dremov on 10.02.2022. 6 | // 7 | 8 | import SwiftUI 9 | import FoggyColors 10 | 11 | struct ContentView: View { 12 | @State var started: Bool = false 13 | var body: some View { 14 | if !started { 15 | HStack(alignment: .top) { 16 | VStack(alignment: .leading) { 17 | Text("FoggyColors.") 18 | .font(.largeTitle) 19 | .fontWeight(.heavy) 20 | .foregroundColor(Color.indigo) 21 | .padding(.bottom, 3) 22 | Text("Beautiful randomly generated colored shapes on the background.") 23 | .font(.title2) 24 | .fontWeight(.light) 25 | .foregroundColor(Color.black) 26 | .multilineTextAlignment(.leading) 27 | .opacity(0.8) 28 | } 29 | .padding() 30 | Spacer() 31 | } 32 | .frame(width: 330, height: 530, alignment: .center) 33 | .background(FoggyColorsView()) 34 | .cornerRadius(20) 35 | .overlay( 36 | RoundedRectangle(cornerRadius: 20).stroke(.indigo, lineWidth: 7) 37 | ) 38 | .onAppear { 39 | DispatchQueue.main.asyncAfter(deadline: .now() + 3) { 40 | started = true 41 | } 42 | } 43 | } else { 44 | FoggyColorsView( 45 | blurRadius: 64, 46 | globalOpacity: 0.8, 47 | elementOpacity: 0.4, 48 | animated: true, 49 | numberShapes: 15 50 | ) 51 | .ignoresSafeArea() 52 | } 53 | } 54 | } 55 | 56 | struct ContentView_Previews: PreviewProvider { 57 | static var previews: some View { 58 | ContentView() 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Example/FoggyExample/FoggyExampleApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FoggyExampleApp.swift 3 | // FoggyExample 4 | // 5 | // Created by Alex Dremov on 10.02.2022. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct FoggyExampleApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | ContentView() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Example/FoggyExample/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '14.0' 3 | 4 | target 'FoggyExample' do 5 | # Comment the next line if you don't want to use dynamic frameworks 6 | use_frameworks! 7 | pod 'FoggyColors', :path => "./../" 8 | # Pods for FoggyExample 9 | 10 | end 11 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - FoggyColors (1.0.0) 3 | 4 | DEPENDENCIES: 5 | - FoggyColors (from `./../`) 6 | 7 | EXTERNAL SOURCES: 8 | FoggyColors: 9 | :path: "./../" 10 | 11 | SPEC CHECKSUMS: 12 | FoggyColors: 0c088fbb25b738bbe31a71176e0ff31573abd6c0 13 | 14 | PODFILE CHECKSUM: 3669402e1f422d8f6d74973cc98bb7ae405800ed 15 | 16 | COCOAPODS: 1.11.2 17 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/FoggyColors.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FoggyColors", 3 | "version": "1.0.0", 4 | "summary": "Beautiful randomly generated colored shapes on the background with SwiftUI", 5 | "description": "SwiftUI View to generate blurred or foggy colors on the background. Animation is supported, so colors will move and morph.", 6 | "homepage": "https://github.com/AlexRoar/FoggyColors", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "alexdremov": "dremov.me@gmail.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/AlexRoar/FoggyColors.git", 16 | "tag": "1.0.0" 17 | }, 18 | "platforms": { 19 | "ios": "14.0" 20 | }, 21 | "swift_versions": "4.0", 22 | "source_files": "Sources/FoggyColors/**/*", 23 | "frameworks": "SwiftUI", 24 | "swift_version": "4.0" 25 | } 26 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - FoggyColors (1.0.0) 3 | 4 | DEPENDENCIES: 5 | - FoggyColors (from `./../`) 6 | 7 | EXTERNAL SOURCES: 8 | FoggyColors: 9 | :path: "./../" 10 | 11 | SPEC CHECKSUMS: 12 | FoggyColors: 0c088fbb25b738bbe31a71176e0ff31573abd6c0 13 | 14 | PODFILE CHECKSUM: 3669402e1f422d8f6d74973cc98bb7ae405800ed 15 | 16 | COCOAPODS: 1.11.2 17 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 55; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 3FE1CD8E1791C46E1C920C3970706070 /* FoggyColors-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B9B9D3AD31CC3E8B08E2E5C1DD8A3A8 /* FoggyColors-dummy.m */; }; 11 | 4ED744F5D7BB7A484D4D7E9892886DDC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC7C7CBF4366B196F4F8B133C8319AB1 /* Foundation.framework */; }; 12 | 6375F90CA949D484B2097BB38431E1F1 /* Pods-FoggyExample-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 386B8CE45FF5EE5BB34F484D1B7D2C6A /* Pods-FoggyExample-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 13 | 71EE0A81893A67383B9CCC24656B39C8 /* FoggyColors-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5181F952F47A3C06C577AD38E6E83D02 /* FoggyColors-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | C9709C791BE29186A277C3DEDB82EC07 /* PointRandomization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B5E80F4770BCBAB07579CFBA1215F77 /* PointRandomization.swift */; }; 15 | CD37F23C79D2FB759236A840B8B0AEAF /* Pods-FoggyExample-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CA70A960575199C0BD9C15719058B6F /* Pods-FoggyExample-dummy.m */; }; 16 | D2D1E5071A3A5BCEF7CDF6DCCF948BF2 /* FoggyColorsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3F95C2134B2FFBF52B9D0707C6050F6 /* FoggyColorsView.swift */; }; 17 | E6CC9731D33840D42BCDBE9343AEBE7F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC7C7CBF4366B196F4F8B133C8319AB1 /* Foundation.framework */; }; 18 | F31E81A0E2FE6E9EEFC21153E6F44D96 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20094AF9A05B5AFEE065EFE5403128D1 /* SwiftUI.framework */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXContainerItemProxy section */ 22 | 21344DE58C176B6D7D3051DE9FEC46E0 /* PBXContainerItemProxy */ = { 23 | isa = PBXContainerItemProxy; 24 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 25 | proxyType = 1; 26 | remoteGlobalIDString = 3C338B923167BD9A90D04157F31BA511; 27 | remoteInfo = FoggyColors; 28 | }; 29 | /* End PBXContainerItemProxy section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 063019F77BA089B21988B31618C2EDCD /* Pods-FoggyExample-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FoggyExample-acknowledgements.plist"; sourceTree = ""; }; 33 | 20094AF9A05B5AFEE065EFE5403128D1 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/SwiftUI.framework; sourceTree = DEVELOPER_DIR; }; 34 | 269F76590C670559E1DCDEB096F14F49 /* Pods-FoggyExample-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FoggyExample-Info.plist"; sourceTree = ""; }; 35 | 33B029E13E0CCDE6B28CF5C41229B8CC /* FoggyColors-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FoggyColors-Info.plist"; sourceTree = ""; }; 36 | 386B8CE45FF5EE5BB34F484D1B7D2C6A /* Pods-FoggyExample-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-FoggyExample-umbrella.h"; sourceTree = ""; }; 37 | 40631DC55212EB6F70D927230F73D515 /* Pods-FoggyExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FoggyExample.release.xcconfig"; sourceTree = ""; }; 38 | 4A9D2766F963F0AF41E30A24A10C54C8 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 39 | 5181F952F47A3C06C577AD38E6E83D02 /* FoggyColors-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FoggyColors-umbrella.h"; sourceTree = ""; }; 40 | 6B5E80F4770BCBAB07579CFBA1215F77 /* PointRandomization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PointRandomization.swift; path = Sources/FoggyColors/PointRandomization.swift; sourceTree = ""; }; 41 | 6B9B9D3AD31CC3E8B08E2E5C1DD8A3A8 /* FoggyColors-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FoggyColors-dummy.m"; sourceTree = ""; }; 42 | 6C9616D8A42766ECBB9E6BABDAB9A100 /* Pods-FoggyExample.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-FoggyExample.modulemap"; sourceTree = ""; }; 43 | 6CA70A960575199C0BD9C15719058B6F /* Pods-FoggyExample-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FoggyExample-dummy.m"; sourceTree = ""; }; 44 | 7963021DA869C40C030A2C7B8E75E202 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 45 | 7D64D621F9A2746BC2A0806AF6C64ADF /* Pods-FoggyExample-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FoggyExample-acknowledgements.markdown"; sourceTree = ""; }; 46 | 834AB90A79786F1CC21F6C99D88D19B6 /* Pods-FoggyExample-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FoggyExample-frameworks.sh"; sourceTree = ""; }; 47 | 8A5637BD71746103DA703FCE33814AA4 /* Pods-FoggyExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FoggyExample.debug.xcconfig"; sourceTree = ""; }; 48 | 8C028DF95133C22BFF990E6470D5857B /* Pods-FoggyExample */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-FoggyExample"; path = Pods_FoggyExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 49 | 91973E135FA551BDB8E5B5AEF7A0AF61 /* FoggyColors */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FoggyColors; path = FoggyColors.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 50 | 9CDEFA0FC9D880FCFBD0156A44A7FF67 /* FoggyColors.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = FoggyColors.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 51 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 52 | A4927249C006743AC955AB072ED1A700 /* FoggyColors.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FoggyColors.debug.xcconfig; sourceTree = ""; }; 53 | BA40AFFCC0B1826A877EF88CA2353143 /* FoggyColors.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FoggyColors.modulemap; sourceTree = ""; }; 54 | D3F95C2134B2FFBF52B9D0707C6050F6 /* FoggyColorsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FoggyColorsView.swift; path = Sources/FoggyColors/FoggyColorsView.swift; sourceTree = ""; }; 55 | DC7C7CBF4366B196F4F8B133C8319AB1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 56 | F084E02423612C80E52D87689F22847E /* FoggyColors.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FoggyColors.release.xcconfig; sourceTree = ""; }; 57 | F3F392DF09B50D0AFCB45AD0A2A573BA /* FoggyColors-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FoggyColors-prefix.pch"; sourceTree = ""; }; 58 | /* End PBXFileReference section */ 59 | 60 | /* Begin PBXFrameworksBuildPhase section */ 61 | 65B33F075DA91208E2A6CC0A0B366AEF /* Frameworks */ = { 62 | isa = PBXFrameworksBuildPhase; 63 | buildActionMask = 2147483647; 64 | files = ( 65 | 4ED744F5D7BB7A484D4D7E9892886DDC /* Foundation.framework in Frameworks */, 66 | F31E81A0E2FE6E9EEFC21153E6F44D96 /* SwiftUI.framework in Frameworks */, 67 | ); 68 | runOnlyForDeploymentPostprocessing = 0; 69 | }; 70 | D23B86216A080583216BB4AA312B1E67 /* Frameworks */ = { 71 | isa = PBXFrameworksBuildPhase; 72 | buildActionMask = 2147483647; 73 | files = ( 74 | E6CC9731D33840D42BCDBE9343AEBE7F /* Foundation.framework in Frameworks */, 75 | ); 76 | runOnlyForDeploymentPostprocessing = 0; 77 | }; 78 | /* End PBXFrameworksBuildPhase section */ 79 | 80 | /* Begin PBXGroup section */ 81 | 0D11239749877A1FE1E8B8B38B59BFB4 /* Support Files */ = { 82 | isa = PBXGroup; 83 | children = ( 84 | BA40AFFCC0B1826A877EF88CA2353143 /* FoggyColors.modulemap */, 85 | 6B9B9D3AD31CC3E8B08E2E5C1DD8A3A8 /* FoggyColors-dummy.m */, 86 | 33B029E13E0CCDE6B28CF5C41229B8CC /* FoggyColors-Info.plist */, 87 | F3F392DF09B50D0AFCB45AD0A2A573BA /* FoggyColors-prefix.pch */, 88 | 5181F952F47A3C06C577AD38E6E83D02 /* FoggyColors-umbrella.h */, 89 | A4927249C006743AC955AB072ED1A700 /* FoggyColors.debug.xcconfig */, 90 | F084E02423612C80E52D87689F22847E /* FoggyColors.release.xcconfig */, 91 | ); 92 | name = "Support Files"; 93 | path = "Example/Pods/Target Support Files/FoggyColors"; 94 | sourceTree = ""; 95 | }; 96 | 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { 97 | isa = PBXGroup; 98 | children = ( 99 | 367350C0206CEB39C83981ABCAA29148 /* iOS */, 100 | ); 101 | name = Frameworks; 102 | sourceTree = ""; 103 | }; 104 | 2B910C97B920DF0DA568ABD4421F4690 /* Targets Support Files */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | 344D892AAE04088603F93A2575F43045 /* Pods-FoggyExample */, 108 | ); 109 | name = "Targets Support Files"; 110 | sourceTree = ""; 111 | }; 112 | 344D892AAE04088603F93A2575F43045 /* Pods-FoggyExample */ = { 113 | isa = PBXGroup; 114 | children = ( 115 | 6C9616D8A42766ECBB9E6BABDAB9A100 /* Pods-FoggyExample.modulemap */, 116 | 7D64D621F9A2746BC2A0806AF6C64ADF /* Pods-FoggyExample-acknowledgements.markdown */, 117 | 063019F77BA089B21988B31618C2EDCD /* Pods-FoggyExample-acknowledgements.plist */, 118 | 6CA70A960575199C0BD9C15719058B6F /* Pods-FoggyExample-dummy.m */, 119 | 834AB90A79786F1CC21F6C99D88D19B6 /* Pods-FoggyExample-frameworks.sh */, 120 | 269F76590C670559E1DCDEB096F14F49 /* Pods-FoggyExample-Info.plist */, 121 | 386B8CE45FF5EE5BB34F484D1B7D2C6A /* Pods-FoggyExample-umbrella.h */, 122 | 8A5637BD71746103DA703FCE33814AA4 /* Pods-FoggyExample.debug.xcconfig */, 123 | 40631DC55212EB6F70D927230F73D515 /* Pods-FoggyExample.release.xcconfig */, 124 | ); 125 | name = "Pods-FoggyExample"; 126 | path = "Target Support Files/Pods-FoggyExample"; 127 | sourceTree = ""; 128 | }; 129 | 367350C0206CEB39C83981ABCAA29148 /* iOS */ = { 130 | isa = PBXGroup; 131 | children = ( 132 | DC7C7CBF4366B196F4F8B133C8319AB1 /* Foundation.framework */, 133 | 20094AF9A05B5AFEE065EFE5403128D1 /* SwiftUI.framework */, 134 | ); 135 | name = iOS; 136 | sourceTree = ""; 137 | }; 138 | 467A9AA1202EF00D2ED90FC401A76012 /* Development Pods */ = { 139 | isa = PBXGroup; 140 | children = ( 141 | 6FFFFB53C7D959FF185B5D0A2C868682 /* FoggyColors */, 142 | ); 143 | name = "Development Pods"; 144 | sourceTree = ""; 145 | }; 146 | 6FFFFB53C7D959FF185B5D0A2C868682 /* FoggyColors */ = { 147 | isa = PBXGroup; 148 | children = ( 149 | D3F95C2134B2FFBF52B9D0707C6050F6 /* FoggyColorsView.swift */, 150 | 6B5E80F4770BCBAB07579CFBA1215F77 /* PointRandomization.swift */, 151 | A62D9CAE6A28E1F7285F881B5B3A8A71 /* Pod */, 152 | 0D11239749877A1FE1E8B8B38B59BFB4 /* Support Files */, 153 | ); 154 | name = FoggyColors; 155 | path = ../..; 156 | sourceTree = ""; 157 | }; 158 | 9D9934414F6EB1A4E01DF80246F2BAE6 /* Products */ = { 159 | isa = PBXGroup; 160 | children = ( 161 | 91973E135FA551BDB8E5B5AEF7A0AF61 /* FoggyColors */, 162 | 8C028DF95133C22BFF990E6470D5857B /* Pods-FoggyExample */, 163 | ); 164 | name = Products; 165 | sourceTree = ""; 166 | }; 167 | A62D9CAE6A28E1F7285F881B5B3A8A71 /* Pod */ = { 168 | isa = PBXGroup; 169 | children = ( 170 | 9CDEFA0FC9D880FCFBD0156A44A7FF67 /* FoggyColors.podspec */, 171 | 4A9D2766F963F0AF41E30A24A10C54C8 /* LICENSE */, 172 | 7963021DA869C40C030A2C7B8E75E202 /* README.md */, 173 | ); 174 | name = Pod; 175 | sourceTree = ""; 176 | }; 177 | CF1408CF629C7361332E53B88F7BD30C = { 178 | isa = PBXGroup; 179 | children = ( 180 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 181 | 467A9AA1202EF00D2ED90FC401A76012 /* Development Pods */, 182 | 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, 183 | 9D9934414F6EB1A4E01DF80246F2BAE6 /* Products */, 184 | 2B910C97B920DF0DA568ABD4421F4690 /* Targets Support Files */, 185 | ); 186 | sourceTree = ""; 187 | }; 188 | /* End PBXGroup section */ 189 | 190 | /* Begin PBXHeadersBuildPhase section */ 191 | 15663B812034DE8D8F9240A96FCB7642 /* Headers */ = { 192 | isa = PBXHeadersBuildPhase; 193 | buildActionMask = 2147483647; 194 | files = ( 195 | 6375F90CA949D484B2097BB38431E1F1 /* Pods-FoggyExample-umbrella.h in Headers */, 196 | ); 197 | runOnlyForDeploymentPostprocessing = 0; 198 | }; 199 | F099D974BD4B26ECA67DCEE4AC12894D /* Headers */ = { 200 | isa = PBXHeadersBuildPhase; 201 | buildActionMask = 2147483647; 202 | files = ( 203 | 71EE0A81893A67383B9CCC24656B39C8 /* FoggyColors-umbrella.h in Headers */, 204 | ); 205 | runOnlyForDeploymentPostprocessing = 0; 206 | }; 207 | /* End PBXHeadersBuildPhase section */ 208 | 209 | /* Begin PBXNativeTarget section */ 210 | 1DCBD19BF21A7278AF012337A75E935B /* Pods-FoggyExample */ = { 211 | isa = PBXNativeTarget; 212 | buildConfigurationList = F837934DC2B0BEBEB1240E87F9CCD0F7 /* Build configuration list for PBXNativeTarget "Pods-FoggyExample" */; 213 | buildPhases = ( 214 | 15663B812034DE8D8F9240A96FCB7642 /* Headers */, 215 | 42A0A29D980D5492057310A0570A2B25 /* Sources */, 216 | D23B86216A080583216BB4AA312B1E67 /* Frameworks */, 217 | 49225B3778631945BB64DD5E1E982DA7 /* Resources */, 218 | ); 219 | buildRules = ( 220 | ); 221 | dependencies = ( 222 | 8F224D42A07C09D5F55DB691DAD043F5 /* PBXTargetDependency */, 223 | ); 224 | name = "Pods-FoggyExample"; 225 | productName = Pods_FoggyExample; 226 | productReference = 8C028DF95133C22BFF990E6470D5857B /* Pods-FoggyExample */; 227 | productType = "com.apple.product-type.framework"; 228 | }; 229 | 3C338B923167BD9A90D04157F31BA511 /* FoggyColors */ = { 230 | isa = PBXNativeTarget; 231 | buildConfigurationList = DF4C08F2D593C3C919CA69BE61542E04 /* Build configuration list for PBXNativeTarget "FoggyColors" */; 232 | buildPhases = ( 233 | F099D974BD4B26ECA67DCEE4AC12894D /* Headers */, 234 | 870B53518F0D23C407032ED89E638072 /* Sources */, 235 | 65B33F075DA91208E2A6CC0A0B366AEF /* Frameworks */, 236 | 41B80E4B7D9E7C91C2C0ED7CAF129D1F /* Resources */, 237 | ); 238 | buildRules = ( 239 | ); 240 | dependencies = ( 241 | ); 242 | name = FoggyColors; 243 | productName = FoggyColors; 244 | productReference = 91973E135FA551BDB8E5B5AEF7A0AF61 /* FoggyColors */; 245 | productType = "com.apple.product-type.framework"; 246 | }; 247 | /* End PBXNativeTarget section */ 248 | 249 | /* Begin PBXProject section */ 250 | BFDFE7DC352907FC980B868725387E98 /* Project object */ = { 251 | isa = PBXProject; 252 | attributes = { 253 | LastSwiftUpdateCheck = 1240; 254 | LastUpgradeCheck = 1240; 255 | }; 256 | buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; 257 | compatibilityVersion = "Xcode 13.0"; 258 | developmentRegion = en; 259 | hasScannedForEncodings = 0; 260 | knownRegions = ( 261 | Base, 262 | en, 263 | ); 264 | mainGroup = CF1408CF629C7361332E53B88F7BD30C; 265 | productRefGroup = 9D9934414F6EB1A4E01DF80246F2BAE6 /* Products */; 266 | projectDirPath = ""; 267 | projectRoot = ""; 268 | targets = ( 269 | 3C338B923167BD9A90D04157F31BA511 /* FoggyColors */, 270 | 1DCBD19BF21A7278AF012337A75E935B /* Pods-FoggyExample */, 271 | ); 272 | }; 273 | /* End PBXProject section */ 274 | 275 | /* Begin PBXResourcesBuildPhase section */ 276 | 41B80E4B7D9E7C91C2C0ED7CAF129D1F /* Resources */ = { 277 | isa = PBXResourcesBuildPhase; 278 | buildActionMask = 2147483647; 279 | files = ( 280 | ); 281 | runOnlyForDeploymentPostprocessing = 0; 282 | }; 283 | 49225B3778631945BB64DD5E1E982DA7 /* Resources */ = { 284 | isa = PBXResourcesBuildPhase; 285 | buildActionMask = 2147483647; 286 | files = ( 287 | ); 288 | runOnlyForDeploymentPostprocessing = 0; 289 | }; 290 | /* End PBXResourcesBuildPhase section */ 291 | 292 | /* Begin PBXSourcesBuildPhase section */ 293 | 42A0A29D980D5492057310A0570A2B25 /* Sources */ = { 294 | isa = PBXSourcesBuildPhase; 295 | buildActionMask = 2147483647; 296 | files = ( 297 | CD37F23C79D2FB759236A840B8B0AEAF /* Pods-FoggyExample-dummy.m in Sources */, 298 | ); 299 | runOnlyForDeploymentPostprocessing = 0; 300 | }; 301 | 870B53518F0D23C407032ED89E638072 /* Sources */ = { 302 | isa = PBXSourcesBuildPhase; 303 | buildActionMask = 2147483647; 304 | files = ( 305 | 3FE1CD8E1791C46E1C920C3970706070 /* FoggyColors-dummy.m in Sources */, 306 | D2D1E5071A3A5BCEF7CDF6DCCF948BF2 /* FoggyColorsView.swift in Sources */, 307 | C9709C791BE29186A277C3DEDB82EC07 /* PointRandomization.swift in Sources */, 308 | ); 309 | runOnlyForDeploymentPostprocessing = 0; 310 | }; 311 | /* End PBXSourcesBuildPhase section */ 312 | 313 | /* Begin PBXTargetDependency section */ 314 | 8F224D42A07C09D5F55DB691DAD043F5 /* PBXTargetDependency */ = { 315 | isa = PBXTargetDependency; 316 | name = FoggyColors; 317 | target = 3C338B923167BD9A90D04157F31BA511 /* FoggyColors */; 318 | targetProxy = 21344DE58C176B6D7D3051DE9FEC46E0 /* PBXContainerItemProxy */; 319 | }; 320 | /* End PBXTargetDependency section */ 321 | 322 | /* Begin XCBuildConfiguration section */ 323 | 251F1EF1077221BE1C8ABCD1ED6DB088 /* Debug */ = { 324 | isa = XCBuildConfiguration; 325 | baseConfigurationReference = 8A5637BD71746103DA703FCE33814AA4 /* Pods-FoggyExample.debug.xcconfig */; 326 | buildSettings = { 327 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 328 | CLANG_ENABLE_OBJC_WEAK = NO; 329 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 330 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 331 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 332 | CURRENT_PROJECT_VERSION = 1; 333 | DEFINES_MODULE = YES; 334 | DYLIB_COMPATIBILITY_VERSION = 1; 335 | DYLIB_CURRENT_VERSION = 1; 336 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 337 | INFOPLIST_FILE = "Target Support Files/Pods-FoggyExample/Pods-FoggyExample-Info.plist"; 338 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 339 | IPHONEOS_DEPLOYMENT_TARGET = 15.2; 340 | LD_RUNPATH_SEARCH_PATHS = ( 341 | "$(inherited)", 342 | "@executable_path/Frameworks", 343 | "@loader_path/Frameworks", 344 | ); 345 | MACH_O_TYPE = staticlib; 346 | MODULEMAP_FILE = "Target Support Files/Pods-FoggyExample/Pods-FoggyExample.modulemap"; 347 | OTHER_LDFLAGS = ""; 348 | OTHER_LIBTOOLFLAGS = ""; 349 | PODS_ROOT = "$(SRCROOT)"; 350 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 351 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 352 | SDKROOT = iphoneos; 353 | SKIP_INSTALL = YES; 354 | TARGETED_DEVICE_FAMILY = "1,2"; 355 | VERSIONING_SYSTEM = "apple-generic"; 356 | VERSION_INFO_PREFIX = ""; 357 | }; 358 | name = Debug; 359 | }; 360 | 4214E6946993DF02ED98D89047C64016 /* Debug */ = { 361 | isa = XCBuildConfiguration; 362 | buildSettings = { 363 | ALWAYS_SEARCH_USER_PATHS = NO; 364 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 365 | CLANG_ANALYZER_NONNULL = YES; 366 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 367 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 368 | CLANG_CXX_LIBRARY = "libc++"; 369 | CLANG_ENABLE_MODULES = YES; 370 | CLANG_ENABLE_OBJC_ARC = YES; 371 | CLANG_ENABLE_OBJC_WEAK = YES; 372 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 373 | CLANG_WARN_BOOL_CONVERSION = YES; 374 | CLANG_WARN_COMMA = YES; 375 | CLANG_WARN_CONSTANT_CONVERSION = YES; 376 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 377 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 378 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 379 | CLANG_WARN_EMPTY_BODY = YES; 380 | CLANG_WARN_ENUM_CONVERSION = YES; 381 | CLANG_WARN_INFINITE_RECURSION = YES; 382 | CLANG_WARN_INT_CONVERSION = YES; 383 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 384 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 385 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 386 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 387 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 388 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 389 | CLANG_WARN_STRICT_PROTOTYPES = YES; 390 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 391 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 392 | CLANG_WARN_UNREACHABLE_CODE = YES; 393 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 394 | COPY_PHASE_STRIP = NO; 395 | DEBUG_INFORMATION_FORMAT = dwarf; 396 | ENABLE_STRICT_OBJC_MSGSEND = YES; 397 | ENABLE_TESTABILITY = YES; 398 | GCC_C_LANGUAGE_STANDARD = gnu11; 399 | GCC_DYNAMIC_NO_PIC = NO; 400 | GCC_NO_COMMON_BLOCKS = YES; 401 | GCC_OPTIMIZATION_LEVEL = 0; 402 | GCC_PREPROCESSOR_DEFINITIONS = ( 403 | "POD_CONFIGURATION_DEBUG=1", 404 | "DEBUG=1", 405 | "$(inherited)", 406 | ); 407 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 408 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 409 | GCC_WARN_UNDECLARED_SELECTOR = YES; 410 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 411 | GCC_WARN_UNUSED_FUNCTION = YES; 412 | GCC_WARN_UNUSED_VARIABLE = YES; 413 | IPHONEOS_DEPLOYMENT_TARGET = 15.2; 414 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 415 | MTL_FAST_MATH = YES; 416 | ONLY_ACTIVE_ARCH = YES; 417 | PRODUCT_NAME = "$(TARGET_NAME)"; 418 | STRIP_INSTALLED_PRODUCT = NO; 419 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 420 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 421 | SWIFT_VERSION = 5.0; 422 | SYMROOT = "${SRCROOT}/../build"; 423 | }; 424 | name = Debug; 425 | }; 426 | 7CFFF305C54C9C3D9B925E74B5C880E8 /* Release */ = { 427 | isa = XCBuildConfiguration; 428 | baseConfigurationReference = 40631DC55212EB6F70D927230F73D515 /* Pods-FoggyExample.release.xcconfig */; 429 | buildSettings = { 430 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 431 | CLANG_ENABLE_OBJC_WEAK = NO; 432 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 433 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 434 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 435 | CURRENT_PROJECT_VERSION = 1; 436 | DEFINES_MODULE = YES; 437 | DYLIB_COMPATIBILITY_VERSION = 1; 438 | DYLIB_CURRENT_VERSION = 1; 439 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 440 | INFOPLIST_FILE = "Target Support Files/Pods-FoggyExample/Pods-FoggyExample-Info.plist"; 441 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 442 | IPHONEOS_DEPLOYMENT_TARGET = 15.2; 443 | LD_RUNPATH_SEARCH_PATHS = ( 444 | "$(inherited)", 445 | "@executable_path/Frameworks", 446 | "@loader_path/Frameworks", 447 | ); 448 | MACH_O_TYPE = staticlib; 449 | MODULEMAP_FILE = "Target Support Files/Pods-FoggyExample/Pods-FoggyExample.modulemap"; 450 | OTHER_LDFLAGS = ""; 451 | OTHER_LIBTOOLFLAGS = ""; 452 | PODS_ROOT = "$(SRCROOT)"; 453 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 454 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 455 | SDKROOT = iphoneos; 456 | SKIP_INSTALL = YES; 457 | TARGETED_DEVICE_FAMILY = "1,2"; 458 | VALIDATE_PRODUCT = YES; 459 | VERSIONING_SYSTEM = "apple-generic"; 460 | VERSION_INFO_PREFIX = ""; 461 | }; 462 | name = Release; 463 | }; 464 | CBD7EDB2978A0A1B40A850600EDFE71B /* Release */ = { 465 | isa = XCBuildConfiguration; 466 | baseConfigurationReference = F084E02423612C80E52D87689F22847E /* FoggyColors.release.xcconfig */; 467 | buildSettings = { 468 | CLANG_ENABLE_OBJC_WEAK = NO; 469 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 470 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 471 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 472 | CURRENT_PROJECT_VERSION = 1; 473 | DEFINES_MODULE = YES; 474 | DYLIB_COMPATIBILITY_VERSION = 1; 475 | DYLIB_CURRENT_VERSION = 1; 476 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 477 | GCC_PREFIX_HEADER = "Target Support Files/FoggyColors/FoggyColors-prefix.pch"; 478 | INFOPLIST_FILE = "Target Support Files/FoggyColors/FoggyColors-Info.plist"; 479 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 480 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 481 | LD_RUNPATH_SEARCH_PATHS = ( 482 | "$(inherited)", 483 | "@executable_path/Frameworks", 484 | "@loader_path/Frameworks", 485 | ); 486 | MODULEMAP_FILE = "Target Support Files/FoggyColors/FoggyColors.modulemap"; 487 | PRODUCT_MODULE_NAME = FoggyColors; 488 | PRODUCT_NAME = FoggyColors; 489 | SDKROOT = iphoneos; 490 | SKIP_INSTALL = YES; 491 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 492 | SWIFT_VERSION = 4.0; 493 | TARGETED_DEVICE_FAMILY = "1,2"; 494 | VALIDATE_PRODUCT = YES; 495 | VERSIONING_SYSTEM = "apple-generic"; 496 | VERSION_INFO_PREFIX = ""; 497 | }; 498 | name = Release; 499 | }; 500 | CD85FD90473CFBE797E4264E7BBC70AF /* Release */ = { 501 | isa = XCBuildConfiguration; 502 | buildSettings = { 503 | ALWAYS_SEARCH_USER_PATHS = NO; 504 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 505 | CLANG_ANALYZER_NONNULL = YES; 506 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 507 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 508 | CLANG_CXX_LIBRARY = "libc++"; 509 | CLANG_ENABLE_MODULES = YES; 510 | CLANG_ENABLE_OBJC_ARC = YES; 511 | CLANG_ENABLE_OBJC_WEAK = YES; 512 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 513 | CLANG_WARN_BOOL_CONVERSION = YES; 514 | CLANG_WARN_COMMA = YES; 515 | CLANG_WARN_CONSTANT_CONVERSION = YES; 516 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 517 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 518 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 519 | CLANG_WARN_EMPTY_BODY = YES; 520 | CLANG_WARN_ENUM_CONVERSION = YES; 521 | CLANG_WARN_INFINITE_RECURSION = YES; 522 | CLANG_WARN_INT_CONVERSION = YES; 523 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 524 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 525 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 526 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 527 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 528 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 529 | CLANG_WARN_STRICT_PROTOTYPES = YES; 530 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 531 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 532 | CLANG_WARN_UNREACHABLE_CODE = YES; 533 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 534 | COPY_PHASE_STRIP = NO; 535 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 536 | ENABLE_NS_ASSERTIONS = NO; 537 | ENABLE_STRICT_OBJC_MSGSEND = YES; 538 | GCC_C_LANGUAGE_STANDARD = gnu11; 539 | GCC_NO_COMMON_BLOCKS = YES; 540 | GCC_PREPROCESSOR_DEFINITIONS = ( 541 | "POD_CONFIGURATION_RELEASE=1", 542 | "$(inherited)", 543 | ); 544 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 545 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 546 | GCC_WARN_UNDECLARED_SELECTOR = YES; 547 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 548 | GCC_WARN_UNUSED_FUNCTION = YES; 549 | GCC_WARN_UNUSED_VARIABLE = YES; 550 | IPHONEOS_DEPLOYMENT_TARGET = 15.2; 551 | MTL_ENABLE_DEBUG_INFO = NO; 552 | MTL_FAST_MATH = YES; 553 | PRODUCT_NAME = "$(TARGET_NAME)"; 554 | STRIP_INSTALLED_PRODUCT = NO; 555 | SWIFT_COMPILATION_MODE = wholemodule; 556 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 557 | SWIFT_VERSION = 5.0; 558 | SYMROOT = "${SRCROOT}/../build"; 559 | }; 560 | name = Release; 561 | }; 562 | D126F561373269BA9ABAE711CD7F1C5F /* Debug */ = { 563 | isa = XCBuildConfiguration; 564 | baseConfigurationReference = A4927249C006743AC955AB072ED1A700 /* FoggyColors.debug.xcconfig */; 565 | buildSettings = { 566 | CLANG_ENABLE_OBJC_WEAK = NO; 567 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 568 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 569 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 570 | CURRENT_PROJECT_VERSION = 1; 571 | DEFINES_MODULE = YES; 572 | DYLIB_COMPATIBILITY_VERSION = 1; 573 | DYLIB_CURRENT_VERSION = 1; 574 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 575 | GCC_PREFIX_HEADER = "Target Support Files/FoggyColors/FoggyColors-prefix.pch"; 576 | INFOPLIST_FILE = "Target Support Files/FoggyColors/FoggyColors-Info.plist"; 577 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 578 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 579 | LD_RUNPATH_SEARCH_PATHS = ( 580 | "$(inherited)", 581 | "@executable_path/Frameworks", 582 | "@loader_path/Frameworks", 583 | ); 584 | MODULEMAP_FILE = "Target Support Files/FoggyColors/FoggyColors.modulemap"; 585 | PRODUCT_MODULE_NAME = FoggyColors; 586 | PRODUCT_NAME = FoggyColors; 587 | SDKROOT = iphoneos; 588 | SKIP_INSTALL = YES; 589 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 590 | SWIFT_VERSION = 4.0; 591 | TARGETED_DEVICE_FAMILY = "1,2"; 592 | VERSIONING_SYSTEM = "apple-generic"; 593 | VERSION_INFO_PREFIX = ""; 594 | }; 595 | name = Debug; 596 | }; 597 | /* End XCBuildConfiguration section */ 598 | 599 | /* Begin XCConfigurationList section */ 600 | 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { 601 | isa = XCConfigurationList; 602 | buildConfigurations = ( 603 | 4214E6946993DF02ED98D89047C64016 /* Debug */, 604 | CD85FD90473CFBE797E4264E7BBC70AF /* Release */, 605 | ); 606 | defaultConfigurationIsVisible = 0; 607 | defaultConfigurationName = Release; 608 | }; 609 | DF4C08F2D593C3C919CA69BE61542E04 /* Build configuration list for PBXNativeTarget "FoggyColors" */ = { 610 | isa = XCConfigurationList; 611 | buildConfigurations = ( 612 | D126F561373269BA9ABAE711CD7F1C5F /* Debug */, 613 | CBD7EDB2978A0A1B40A850600EDFE71B /* Release */, 614 | ); 615 | defaultConfigurationIsVisible = 0; 616 | defaultConfigurationName = Release; 617 | }; 618 | F837934DC2B0BEBEB1240E87F9CCD0F7 /* Build configuration list for PBXNativeTarget "Pods-FoggyExample" */ = { 619 | isa = XCConfigurationList; 620 | buildConfigurations = ( 621 | 251F1EF1077221BE1C8ABCD1ED6DB088 /* Debug */, 622 | 7CFFF305C54C9C3D9B925E74B5C880E8 /* Release */, 623 | ); 624 | defaultConfigurationIsVisible = 0; 625 | defaultConfigurationName = Release; 626 | }; 627 | /* End XCConfigurationList section */ 628 | }; 629 | rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; 630 | } 631 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FoggyColors/FoggyColors-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FoggyColors/FoggyColors-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_FoggyColors : NSObject 3 | @end 4 | @implementation PodsDummy_FoggyColors 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FoggyColors/FoggyColors-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FoggyColors/FoggyColors-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double FoggyColorsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char FoggyColorsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FoggyColors/FoggyColors.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FoggyColors 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 5 | OTHER_LDFLAGS = $(inherited) -framework "SwiftUI" 6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 15 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FoggyColors/FoggyColors.modulemap: -------------------------------------------------------------------------------- 1 | framework module FoggyColors { 2 | umbrella header "FoggyColors-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FoggyColors/FoggyColors.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FoggyColors 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 5 | OTHER_LDFLAGS = $(inherited) -framework "SwiftUI" 6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 15 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## FoggyColors 5 | 6 | Copyright (c) 2022 alexdremov 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2022 alexdremov <dremov.me@gmail.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | FoggyColors 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_FoggyExample : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_FoggyExample 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-frameworks-Debug-input-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${PODS_ROOT}/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-frameworks.sh 2 | ${BUILT_PRODUCTS_DIR}/FoggyColors/FoggyColors.framework -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-frameworks-Debug-output-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FoggyColors.framework -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-frameworks-Release-input-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${PODS_ROOT}/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-frameworks.sh 2 | ${BUILT_PRODUCTS_DIR}/FoggyColors/FoggyColors.framework -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-frameworks-Release-output-files.xcfilelist: -------------------------------------------------------------------------------- 1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FoggyColors.framework -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | function on_error { 7 | echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" 8 | } 9 | trap 'on_error $LINENO' ERR 10 | 11 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 12 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 13 | # frameworks to, so exit 0 (signalling the script phase was successful). 14 | exit 0 15 | fi 16 | 17 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 18 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 19 | 20 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 21 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 22 | BCSYMBOLMAP_DIR="BCSymbolMaps" 23 | 24 | 25 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 26 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 27 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 28 | 29 | # Copies and strips a vendored framework 30 | install_framework() 31 | { 32 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 33 | local source="${BUILT_PRODUCTS_DIR}/$1" 34 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 35 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 36 | elif [ -r "$1" ]; then 37 | local source="$1" 38 | fi 39 | 40 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 41 | 42 | if [ -L "${source}" ]; then 43 | echo "Symlinked..." 44 | source="$(readlink "${source}")" 45 | fi 46 | 47 | if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then 48 | # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied 49 | find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do 50 | echo "Installing $f" 51 | install_bcsymbolmap "$f" "$destination" 52 | rm "$f" 53 | done 54 | rmdir "${source}/${BCSYMBOLMAP_DIR}" 55 | fi 56 | 57 | # Use filter instead of exclude so missing patterns don't throw errors. 58 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 59 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 60 | 61 | local basename 62 | basename="$(basename -s .framework "$1")" 63 | binary="${destination}/${basename}.framework/${basename}" 64 | 65 | if ! [ -r "$binary" ]; then 66 | binary="${destination}/${basename}" 67 | elif [ -L "${binary}" ]; then 68 | echo "Destination binary is symlinked..." 69 | dirname="$(dirname "${binary}")" 70 | binary="${dirname}/$(readlink "${binary}")" 71 | fi 72 | 73 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 74 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 75 | strip_invalid_archs "$binary" 76 | fi 77 | 78 | # Resign the code if required by the build settings to avoid unstable apps 79 | code_sign_if_enabled "${destination}/$(basename "$1")" 80 | 81 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 82 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 83 | local swift_runtime_libs 84 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) 85 | for lib in $swift_runtime_libs; do 86 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 87 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 88 | code_sign_if_enabled "${destination}/${lib}" 89 | done 90 | fi 91 | } 92 | # Copies and strips a vendored dSYM 93 | install_dsym() { 94 | local source="$1" 95 | warn_missing_arch=${2:-true} 96 | if [ -r "$source" ]; then 97 | # Copy the dSYM into the targets temp dir. 98 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" 99 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" 100 | 101 | local basename 102 | basename="$(basename -s .dSYM "$source")" 103 | binary_name="$(ls "$source/Contents/Resources/DWARF")" 104 | binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" 105 | 106 | # Strip invalid architectures from the dSYM. 107 | if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then 108 | strip_invalid_archs "$binary" "$warn_missing_arch" 109 | fi 110 | if [[ $STRIP_BINARY_RETVAL == 0 ]]; then 111 | # Move the stripped file into its final destination. 112 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 113 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 114 | else 115 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. 116 | mkdir -p "${DWARF_DSYM_FOLDER_PATH}" 117 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" 118 | fi 119 | fi 120 | } 121 | 122 | # Used as a return value for each invocation of `strip_invalid_archs` function. 123 | STRIP_BINARY_RETVAL=0 124 | 125 | # Strip invalid architectures 126 | strip_invalid_archs() { 127 | binary="$1" 128 | warn_missing_arch=${2:-true} 129 | # Get architectures for current target binary 130 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 131 | # Intersect them with the architectures we are building for 132 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 133 | # If there are no archs supported by this binary then warn the user 134 | if [[ -z "$intersected_archs" ]]; then 135 | if [[ "$warn_missing_arch" == "true" ]]; then 136 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 137 | fi 138 | STRIP_BINARY_RETVAL=1 139 | return 140 | fi 141 | stripped="" 142 | for arch in $binary_archs; do 143 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 144 | # Strip non-valid architectures in-place 145 | lipo -remove "$arch" -output "$binary" "$binary" 146 | stripped="$stripped $arch" 147 | fi 148 | done 149 | if [[ "$stripped" ]]; then 150 | echo "Stripped $binary of architectures:$stripped" 151 | fi 152 | STRIP_BINARY_RETVAL=0 153 | } 154 | 155 | # Copies the bcsymbolmap files of a vendored framework 156 | install_bcsymbolmap() { 157 | local bcsymbolmap_path="$1" 158 | local destination="${BUILT_PRODUCTS_DIR}" 159 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" 160 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" 161 | } 162 | 163 | # Signs a framework with the provided identity 164 | code_sign_if_enabled() { 165 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 166 | # Use the current code_sign_identity 167 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 168 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 169 | 170 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 171 | code_sign_cmd="$code_sign_cmd &" 172 | fi 173 | echo "$code_sign_cmd" 174 | eval "$code_sign_cmd" 175 | fi 176 | } 177 | 178 | if [[ "$CONFIGURATION" == "Debug" ]]; then 179 | install_framework "${BUILT_PRODUCTS_DIR}/FoggyColors/FoggyColors.framework" 180 | fi 181 | if [[ "$CONFIGURATION" == "Release" ]]; then 182 | install_framework "${BUILT_PRODUCTS_DIR}/FoggyColors/FoggyColors.framework" 183 | fi 184 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 185 | wait 186 | fi 187 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_FoggyExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_FoggyExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FoggyColors" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FoggyColors/FoggyColors.framework/Headers" 6 | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' 7 | LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 8 | OTHER_LDFLAGS = $(inherited) -framework "FoggyColors" -framework "SwiftUI" 9 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 10 | PODS_BUILD_DIR = ${BUILD_DIR} 11 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 12 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 13 | PODS_ROOT = ${SRCROOT}/Pods 14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 16 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_FoggyExample { 2 | umbrella header "Pods-FoggyExample-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FoggyExample/Pods-FoggyExample.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FoggyColors" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FoggyColors/FoggyColors.framework/Headers" 6 | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' 7 | LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 8 | OTHER_LDFLAGS = $(inherited) -framework "FoggyColors" -framework "SwiftUI" 9 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 10 | PODS_BUILD_DIR = ${BUILD_DIR} 11 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 12 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 13 | PODS_ROOT = ${SRCROOT}/Pods 14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 16 | -------------------------------------------------------------------------------- /FoggyColors.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint FoggyColors.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = 'FoggyColors' 11 | s.version = '1.2.0' 12 | s.summary = 'Beautiful randomly generated colored shapes on the background with SwiftUI' 13 | 14 | # This description is used to generate tags and improve search results. 15 | # * Think: What does it do? Why did you write it? What is the focus? 16 | # * Try to keep it short, snappy and to the point. 17 | # * Write the description between the DESC delimiters below. 18 | # * Finally, don't worry about the indent, CocoaPods strips it! 19 | 20 | s.description = <<-DESC 21 | SwiftUI View to generate blurred or foggy colors on the background. Animation is supported, so colors will move and morph. 22 | DESC 23 | 24 | s.homepage = 'https://github.com/AlexRoar/FoggyColors' 25 | # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' 26 | s.license = { :type => 'MIT', :file => 'LICENSE' } 27 | s.author = { 'alexdremov' => 'dremov.me@gmail.com' } 28 | s.source = { :git => 'https://github.com/AlexRoar/FoggyColors.git', :tag => s.version.to_s } 29 | # s.social_media_url = 'https://twitter.com/' 30 | 31 | s.ios.deployment_target = '14.0' 32 | s.swift_version = '4.0' 33 | 34 | s.source_files = 'Sources/FoggyColors/**/*' 35 | 36 | # s.resource_bundles = { 37 | # 'FoggyColors' => ['FoggyColors/Assets/*.png'] 38 | # } 39 | 40 | # s.public_header_files = 'Pod/Classes/**/*.h' 41 | s.frameworks = 'SwiftUI' 42 | # s.dependency 'AFNetworking', '~> 2.3' 43 | end 44 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 alexdremov 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.5 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "FoggyColors", 8 | platforms: [ 9 | .iOS(.v14), 10 | .macOS(.v10_14), 11 | .watchOS(.v7), 12 | .tvOS(.v14) 13 | ], 14 | products: [ 15 | // Products define the executables and libraries a package produces, and make them visible to other packages. 16 | .library( 17 | name: "FoggyColors", 18 | targets: ["FoggyColors"]), 19 | ], 20 | dependencies: [ 21 | // Dependencies declare other packages that this package depends on. 22 | // .package(url: /* package url */, from: "1.0.0"), 23 | ], 24 | targets: [ 25 | // Targets are the basic building blocks of a package. A target can define a module or a test suite. 26 | // Targets can depend on other targets in this package, and on products in packages this package depends on. 27 | .target( 28 | name: "FoggyColors", 29 | dependencies: []), 30 | .testTarget( 31 | name: "FoggyColorsTests", 32 | dependencies: ["FoggyColors"]), 33 | ], 34 | swiftLanguageVersions: [ 35 | .v4 36 | ] 37 | ) 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FoggyColors 2 | 3 | [![Version](https://img.shields.io/cocoapods/v/FoggyColors.svg?style=flat)](https://cocoapods.org/pods/FoggyColors) 4 | [![License](https://img.shields.io/cocoapods/l/FoggyColors.svg?style=flat)](https://cocoapods.org/pods/FoggyColors) 5 | [![Platform](https://img.shields.io/cocoapods/p/FoggyColors.svg?style=flat)](https://cocoapods.org/pods/FoggyColors) 6 | 7 | 8 | 9 | ## Example 10 | 11 | To run the example project, clone the repo, and run `pod install` from the Example directory first. 12 | 13 | Or execute `pod try FoggyColors` 14 | 15 | ```swift 16 | import SwiftUI 17 | import FoggyColors 18 | 19 | struct ContentView: View { 20 | var body: some View { 21 | FoggyColorsView( 22 | blurRadius: 64, 23 | globalOpacity: 0.6, 24 | elementOpacity: 0.4, 25 | animated: true, 26 | numberShapes: 5 27 | ) 28 | .ignoresSafeArea() 29 | } 30 | } 31 | ``` 32 | 33 | ## Installation 34 | ### CocoaPods 35 | FoggyColors is available through [CocoaPods](https://cocoapods.org). To install 36 | it, simply add the following line to your Podfile: 37 | 38 | ```ruby 39 | pod 'FoggyColors' 40 | ``` 41 | 42 | ### Swift PM 43 | 44 | Just add this repository to your project in Xcode 45 | 46 | ## Author 47 | 48 | alexdremov, dremov.me@gmail.com 49 | 50 | ## License 51 | 52 | FoggyColors is available under the MIT license. See the LICENSE file for more info. 53 | -------------------------------------------------------------------------------- /Sources/FoggyColors/FoggyColorsView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | public struct FoggyColorsView: View { 4 | @State var blurRadius: CGFloat 5 | @State var opacity: CGFloat 6 | @State var randomization = [PointRandomization]() 7 | @State var size: CGSize = CGSize() 8 | var randomColors = [Int]() 9 | var randomShapes = [Int]() 10 | private let differentShapes = 4 11 | var elemOpacity: CGFloat 12 | 13 | private let animated: Bool 14 | private let animation: Animation 15 | private let numberShapes: Int 16 | 17 | private let timer = Timer 18 | .publish(every: 5, on: .main, in: .commonModes) 19 | .autoconnect() 20 | 21 | var colors: [LinearGradient] = [ 22 | LinearGradient(gradient: Gradient(colors:[ 23 | Color(red: 98.0 / 255.0, green: 219.0 / 255.0, blue: 198.0 / 255.0), 24 | Color(red: 48.0 / 255.0, green: 159.0 / 255.0, blue: 140.0 / 255.0) 25 | ]), startPoint: .topLeading, endPoint: .bottomTrailing), 26 | LinearGradient(gradient: Gradient(colors:[ 27 | Color(red: 255.0 / 255.0, green: 175.0 / 255.0, blue: 198.0 / 255.0), 28 | Color(red: 255.0 / 255.0, green: 108.0 / 255.0, blue: 135.0 / 255.0) 29 | ]), startPoint: .topLeading, endPoint: .bottomTrailing), 30 | LinearGradient(gradient: Gradient(colors:[ 31 | Color(red: 53.0 / 255.0, green: 127.0 / 255.0, blue: 255.0 / 255.0), 32 | Color(red: 53.0 / 255.0, green: 127.0 / 255.0, blue: 255.0 / 255.0) 33 | ]), startPoint: .topLeading, endPoint: .bottomTrailing), 34 | LinearGradient(gradient: Gradient(colors:[ 35 | Color.red, 36 | Color.red 37 | ]), startPoint: .topLeading, endPoint: .bottomTrailing), 38 | LinearGradient(gradient: Gradient(colors:[ 39 | Color.blue, 40 | Color.blue 41 | ]), startPoint: .topLeading, endPoint: .bottomTrailing), 42 | LinearGradient(gradient: Gradient(colors:[ 43 | Color.blue, 44 | Color.red 45 | ]), startPoint: .topLeading, endPoint: .bottomTrailing), 46 | LinearGradient(gradient: Gradient(colors:[ 47 | Color.orange, 48 | Color.red 49 | ]), startPoint: .topLeading, endPoint: .bottomTrailing), 50 | ] 51 | 52 | private func randomFrame(_ proxy: GeometryProxy) -> CGSize{ 53 | let x = CGFloat.random(in: (proxy.size.width / 20.0)...(proxy.size.width)) 54 | let y = CGFloat.random(in: (proxy.size.height / 20.0)...(proxy.size.height)) 55 | return CGSize(width: x, height: y) 56 | } 57 | 58 | public var body: some View { 59 | GeometryReader { proxy in 60 | Group { 61 | ForEach(obtainRangeAndUpdate(size: proxy.size), id: \.self) { i in 62 | Group { 63 | switch(randomShapes[i]){ 64 | case 0: 65 | Circle() 66 | .fill(colors[randomColors[i]]) 67 | case 1: 68 | Capsule() 69 | .fill(colors[randomColors[i]]) 70 | case 2: 71 | Capsule() 72 | .stroke(lineWidth: 30) 73 | .fill(colors[randomColors[i]]) 74 | default: 75 | Ellipse() 76 | .fill(colors[randomColors[i]]) 77 | } 78 | } 79 | 80 | .frame( 81 | width: randomization[i].width, 82 | height: randomization[i].height) 83 | .position( 84 | x: randomization[i].offsetX, 85 | y: randomization[i].offsetY) 86 | .opacity(elemOpacity) 87 | .zIndex(Double(i)) 88 | } 89 | } 90 | } 91 | .blur(radius: blurRadius) 92 | .onReceive(timer) { _ in 93 | dispatchUpdate() 94 | } 95 | .drawingGroup(opaque: false, 96 | colorMode: ColorRenderingMode.extendedLinear) 97 | .opacity(opacity) 98 | } 99 | 100 | private func dispatchUpdate() { 101 | if !randomization.isEmpty { 102 | if randomization.first?.offsetY == 0 && randomization.first?.offsetX == 0 { 103 | randomizationStart() 104 | } 105 | } 106 | if !animated { return } 107 | withAnimation(animation) { 108 | randomizationUpdate() 109 | } 110 | } 111 | 112 | private func randomizationStart() { 113 | var randomizationBuilder = [PointRandomization]() 114 | while randomizationBuilder.count < numberShapes { 115 | var randomizationElement = PointRandomization() 116 | randomizationElement.randomizeIn(size: size) 117 | randomizationBuilder.append(randomizationElement) 118 | } 119 | randomization = randomizationBuilder 120 | } 121 | 122 | private func randomizationUpdate() { 123 | var randomizationBuilder = randomization 124 | for i in 0.. Range { 131 | issueSizeUpdate(withValue: size) 132 | return 0 ..< numberShapes 133 | } 134 | 135 | private func issueSizeUpdate(withValue size: CGSize) { 136 | if self.size == size { return } 137 | DispatchQueue.main.async { 138 | self.size = size 139 | self.dispatchUpdate() 140 | } 141 | } 142 | 143 | public init( 144 | blurRadius newBlurRadius: CGFloat = 50, 145 | globalOpacity: CGFloat = 1.0, 146 | elementOpacity: CGFloat = 0.6, 147 | animated: Bool = true, 148 | animation: Animation = Animation 149 | .interpolatingSpring(stiffness: 10, damping: 5) 150 | .speed(0.08), 151 | numberShapes: Int = 8, 152 | colors: [LinearGradient]? = nil 153 | ) { 154 | self.blurRadius = newBlurRadius 155 | self.opacity = globalOpacity 156 | self.elemOpacity = elementOpacity 157 | self.animation = animation 158 | self.numberShapes = numberShapes 159 | self.animated = animated 160 | if let colors = colors { 161 | if colors.isEmpty { 162 | fatalError("Colors array must not be empty") 163 | } 164 | self.colors = colors 165 | } 166 | randomColors = [Int](repeating: 0, count: numberShapes).map{_ in Int.random(in: 0.. size.height { 33 | offsetY = size.height 34 | } 35 | 36 | if offsetX > size.width { 37 | offsetX = size.width 38 | } 39 | 40 | if offsetX < 0 { 41 | offsetX = 0 42 | } 43 | 44 | if offsetY < 0 { 45 | offsetY = 0 46 | } 47 | } 48 | 49 | func hash(into hasher: inout Hasher) { 50 | hasher.combine(width) 51 | hasher.combine(height) 52 | hasher.combine(offsetX) 53 | hasher.combine(offsetY) 54 | } 55 | 56 | static func == (lhs: PointRandomization, rhs: PointRandomization) -> Bool { 57 | lhs.width == rhs.width && 58 | lhs.height == rhs.height && 59 | lhs.offsetX == rhs.offsetX && 60 | lhs.offsetY == rhs.offsetY 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /Tests/FoggyColorsTests/FoggyColorsTests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | @testable import FoggyColors 3 | 4 | final class FoggyColorsTests: XCTestCase { 5 | func testExample() throws { 6 | // This is an example of a functional test case. 7 | // Use XCTAssert and related functions to verify your tests produce the correct 8 | // results. 9 | // XCTAssertEqual(FoggyColors().text, "Hello, World!") 10 | } 11 | } 12 | --------------------------------------------------------------------------------