├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── .gitignore ├── .travis.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Example ├── .swiftlint.yml ├── Gemfile ├── Podfile ├── Podfile.lock ├── Pods │ ├── Local Podspecs │ │ └── Squircle.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ └── project.pbxproj │ └── Target Support Files │ │ ├── Pods-Squircle_Example │ │ ├── Info.plist │ │ ├── Pods-Squircle_Example-Info.plist │ │ ├── Pods-Squircle_Example-acknowledgements.markdown │ │ ├── Pods-Squircle_Example-acknowledgements.plist │ │ ├── Pods-Squircle_Example-dummy.m │ │ ├── Pods-Squircle_Example-frameworks.sh │ │ ├── Pods-Squircle_Example-resources.sh │ │ ├── Pods-Squircle_Example-umbrella.h │ │ ├── Pods-Squircle_Example.debug.xcconfig │ │ ├── Pods-Squircle_Example.modulemap │ │ └── Pods-Squircle_Example.release.xcconfig │ │ ├── Pods-Squircle_Tests │ │ ├── Info.plist │ │ ├── Pods-Squircle_Tests-Info.plist │ │ ├── Pods-Squircle_Tests-acknowledgements.markdown │ │ ├── Pods-Squircle_Tests-acknowledgements.plist │ │ ├── Pods-Squircle_Tests-dummy.m │ │ ├── Pods-Squircle_Tests-frameworks.sh │ │ ├── Pods-Squircle_Tests-resources.sh │ │ ├── Pods-Squircle_Tests-umbrella.h │ │ ├── Pods-Squircle_Tests.debug.xcconfig │ │ ├── Pods-Squircle_Tests.modulemap │ │ └── Pods-Squircle_Tests.release.xcconfig │ │ └── Squircle │ │ ├── Info.plist │ │ ├── Squircle-Info.plist │ │ ├── Squircle-dummy.m │ │ ├── Squircle-prefix.pch │ │ ├── Squircle-umbrella.h │ │ ├── Squircle.debug.xcconfig │ │ ├── Squircle.modulemap │ │ ├── Squircle.release.xcconfig │ │ └── Squircle.xcconfig ├── Squircle.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── Squircle-Example.xcscheme ├── Squircle.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Squircle │ ├── AppDelegate.swift │ ├── Base.lproj │ │ ├── LaunchScreen.xib │ │ └── Main.storyboard │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Info.plist │ └── ViewController.swift ├── Tests │ ├── BasicTests.swift │ └── Info.plist └── fastlane │ ├── Appfile │ ├── Fastfile │ └── README.md ├── LICENSE ├── Package.swift ├── README.md ├── Squircle.podspec ├── Squircle ├── Internal │ ├── CGPoint+Delta.swift │ ├── Checkpoints.swift │ └── Squircle+Internal.swift └── Squircle.swift └── _Pods.xcodeproj /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: neobeppe 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: ['https://paypal.me/giuseppetravasoni'] 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 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 | # http://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 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | os: osx 2 | osx_image: xcode14.2 3 | before_install: 4 | - gem update fastlane --no-document 5 | - gem update cocoapods --no-document 6 | script: 7 | - cd Example/ 8 | - fastlane ci 9 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at giuseppe@travasoni.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | When contributing to this repository, please first discuss the change you wish to make via issue, 4 | email, or any other method with the owners of this repository before making a change. 5 | 6 | Please note we have a code of conduct, please follow it in all your interactions with the project. 7 | 8 | ## Pull Request Process 9 | 10 | 1. Ensure any install or build dependencies are removed before the end of the layer when doing a 11 | build. 12 | 2. Update the README.md with details of changes to the interface, this includes new environment 13 | variables, exposed ports, useful file locations and container parameters. 14 | 3. Increase the version numbers in any examples files and the README.md to the new version that this 15 | Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). 16 | 4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you 17 | do not have permission to do that, you may request the second reviewer to merge it for you 18 | -------------------------------------------------------------------------------- /Example/.swiftlint.yml: -------------------------------------------------------------------------------- 1 | disabled_rules: # rule identifiers to exclude from running 2 | - trailing_whitespace 3 | - line_length 4 | - function_parameter_count 5 | - unused_closure_parameter 6 | - identifier_name 7 | opt_in_rules: # some rules are only opt-in 8 | - force_unwrapping 9 | - empty_count 10 | # Find all the available rules by running: 11 | # swiftlint rules 12 | 13 | included: # paths to include during linting. `--path` is ignored if present. 14 | - ../Squircle 15 | 16 | excluded: # paths to ignore during linting. Takes precedence over `included`. 17 | - ../Example 18 | # - Source/ExcludedFolder 19 | # - Source/ExcludedFile.swift 20 | 21 | # configurable rules can be customized from this configuration file 22 | # binary rules can set their severity level 23 | # force_cast: warning # implicitly 24 | # force_try: 25 | # severity: warning # explicitly 26 | 27 | ## rules that have both warning and error levels, can set just the warning level 28 | ## implicitly 29 | line_length: 30 | warning: 175 31 | error: 220 32 | 33 | ## they can set both implicitly with an array 34 | #type_body_length: 35 | # - 300 # warning 36 | # - 400 # error 37 | 38 | # or they can set both explicitly 39 | file_length: 40 | warning: 800 41 | error: 1200 42 | 43 | ## naming rules can set warnings/errors for min_length and max_length 44 | ## additionally they can set excluded names 45 | #type_name: 46 | #min_length: 4 # only warning 47 | #max_length: # warning and error 48 | #warning: 40 49 | #error: 50 50 | #excluded: iPhone # excluded via string 51 | #variable_name: 52 | #min_length: # only min_length 53 | #error: 4 # only error 54 | #excluded: # excluded via string array 55 | # - id 56 | # - URL 57 | # - GlobalAPIKey 58 | #reporter: "csv" # reporter type (xcode, json, csv, checkstyle) 59 | identifier_name: 60 | min_length: 2 61 | max_length: 50 62 | 63 | type_name: 64 | max_length: 65 | warning: 50 66 | error: 60 67 | min_length: 68 | warning: 1 69 | 70 | type_body_length: 71 | warning: 250 72 | 73 | function_body_length: 74 | warning: 70 75 | 76 | custom_rules: 77 | enum_force_cast: # rule identifier 78 | name: "Enum force Cast" # rule name. optional. 79 | regex: '\(rawValue: [a-zA-Z]*\)\!' # matching pattern 80 | # match_kinds: # SyntaxKinds to match. optional. 81 | # - comment 82 | # - identifier 83 | message: "Enum force Cast." # violation message. optional. 84 | # match_kinds: string 85 | -------------------------------------------------------------------------------- /Example/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" 4 | gem "cocoapods" 5 | gem "slather" 6 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target 'Squircle_Example' do 4 | pod 'Squircle', :path => '../' 5 | 6 | target 'Squircle_Tests' do 7 | inherit! :search_paths 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Squircle (2.1.0) 3 | 4 | DEPENDENCIES: 5 | - Squircle (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | Squircle: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | Squircle: d7f42f39ba843da88a1eeb61815fba46d539c0c7 13 | 14 | PODFILE CHECKSUM: e4d2edd6186ce9f21427c7f696f29d7c6fc51a55 15 | 16 | COCOAPODS: 1.13.0 17 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/Squircle.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Squircle", 3 | "version": "2.1.0", 4 | "summary": "Squircle rounding corner for UIView", 5 | "description": "Lightweight library to apply a squircle rounded corner to any UIView or CALayer.", 6 | "homepage": "https://github.com/neobeppe/Squircle", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "Giuseppe Travasoni": "giuseppe.travasoni@gmail.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/neobeppe/Squircle.git", 16 | "tag": "2.1.0" 17 | }, 18 | "platforms": { 19 | "ios": "12.0" 20 | }, 21 | "source_files": "Squircle/**/*", 22 | "frameworks": [ 23 | "UIKit", 24 | "QuartzCore", 25 | "CoreGraphics" 26 | ], 27 | "swift_versions": "5.0", 28 | "swift_version": "5.0" 29 | } 30 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Squircle (2.1.0) 3 | 4 | DEPENDENCIES: 5 | - Squircle (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | Squircle: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | Squircle: d7f42f39ba843da88a1eeb61815fba46d539c0c7 13 | 14 | PODFILE CHECKSUM: e4d2edd6186ce9f21427c7f696f29d7c6fc51a55 15 | 16 | COCOAPODS: 1.13.0 17 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1141932BDF052B1DF45098F68018BF3B /* Pods-Squircle_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AFC17E82E0D24DEE57E6651FBA702FEC /* Pods-Squircle_Tests-dummy.m */; }; 11 | 16B428B9D0F2150DB0F04616C6F4185F /* Checkpoints.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CFB421E65CF37C1652F605C70E4BE19 /* Checkpoints.swift */; }; 12 | 2F9C35AC17D2B24F534FA9F233DDC42D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F00BEE59DC7EC91BB1C827BEF78C6A7 /* CoreGraphics.framework */; }; 13 | 5AD81C53A3AAD38C987E74AEB23C9BFC /* CGPoint+Delta.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDBF3A4DB381C9EFA004605E483D56BC /* CGPoint+Delta.swift */; }; 14 | 5AF5DBFE6B27889EDEA2FB3027487295 /* Pods-Squircle_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C74AF982657CFCDC9DF19BB9DD4036ED /* Pods-Squircle_Example-dummy.m */; }; 15 | 5B19526841727AC3F2A0AA2323064361 /* Squircle+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93C609443831CE7750B014C021610567 /* Squircle+Internal.swift */; }; 16 | 72572861109F4867C063EFD6D48412F6 /* Pods-Squircle_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EB0625BE476AB3CA41E96D7C99D21CC6 /* Pods-Squircle_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 17 | 85803A695BDFC853FCC5C342E27B7536 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 251D60A893F479C33123291FB0EED416 /* QuartzCore.framework */; }; 18 | 9CACF779DD504E294A24DFAF41FC207F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 316612CB60866F3952D1AEFFE9E409E7 /* Foundation.framework */; }; 19 | A5848EC2967D8AD727EBB5BB172383EA /* Squircle-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F10091CF31FEBEE80471F80E71AB4460 /* Squircle-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 20 | BFB0435B09407A12E0DB317F9CE6C3E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 316612CB60866F3952D1AEFFE9E409E7 /* Foundation.framework */; }; 21 | CE64CE9EE1FAC739B07F5457A424E35C /* Pods-Squircle_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CB04EDB722A9EAA526E0C35B946FD96C /* Pods-Squircle_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 22 | D39AC79D9609E44E6C291C05609E8D77 /* Squircle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 023FBED2B74742ABF6A73134B04D6999 /* Squircle.swift */; }; 23 | D5050F43FE0CA75D91038611FF47B4AE /* Squircle-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7512CAD6AEC8E43F2AFEEA9F6CD3AE38 /* Squircle-dummy.m */; }; 24 | F392F709FF8C6B7D8CC26CFBE34DE52C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DF9E080A9A1ED9063D387790E4AE632 /* UIKit.framework */; }; 25 | FF3456CDEB200F2B745E7E14A845CBF6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 316612CB60866F3952D1AEFFE9E409E7 /* Foundation.framework */; }; 26 | /* End PBXBuildFile section */ 27 | 28 | /* Begin PBXContainerItemProxy section */ 29 | 15451E29A8DBA482678FAE3B743C112A /* PBXContainerItemProxy */ = { 30 | isa = PBXContainerItemProxy; 31 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 32 | proxyType = 1; 33 | remoteGlobalIDString = 0CC520EC56321EC62CAEA50C54725471; 34 | remoteInfo = Squircle; 35 | }; 36 | 61A88D43D3CAA20B4CDA984BE847EBC9 /* PBXContainerItemProxy */ = { 37 | isa = PBXContainerItemProxy; 38 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 39 | proxyType = 1; 40 | remoteGlobalIDString = F581CDC52BF2A786BE7684EA6834DA47; 41 | remoteInfo = "Pods-Squircle_Example"; 42 | }; 43 | /* End PBXContainerItemProxy section */ 44 | 45 | /* Begin PBXFileReference section */ 46 | 023FBED2B74742ABF6A73134B04D6999 /* Squircle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Squircle.swift; path = Squircle/Squircle.swift; sourceTree = ""; }; 47 | 067F5384CED857AAE44D4F12E648AB2B /* Pods-Squircle_Tests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-Squircle_Tests"; path = Pods_Squircle_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 48 | 106696C48FCCF12FE8B7A2227DF4720B /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 49 | 1D35CEC4E9DB22DC124ED1563099BDEA /* Squircle.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Squircle.release.xcconfig; sourceTree = ""; }; 50 | 1F05E83685D7BCCF2DABB2595E99A07A /* Pods-Squircle_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Squircle_Tests.modulemap"; sourceTree = ""; }; 51 | 251D60A893F479C33123291FB0EED416 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; 52 | 2F00BEE59DC7EC91BB1C827BEF78C6A7 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; 53 | 316612CB60866F3952D1AEFFE9E409E7 /* 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; }; 54 | 395D649541D9BF38CEBC963C98B02608 /* Pods-Squircle_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Squircle_Tests.debug.xcconfig"; sourceTree = ""; }; 55 | 44F013B0950EF19DBD3B2208720957C8 /* Squircle-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Squircle-Info.plist"; sourceTree = ""; }; 56 | 46DAE341A9170D068EE379A39424AA82 /* Pods-Squircle_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Squircle_Example-frameworks.sh"; sourceTree = ""; }; 57 | 5006733F1DBE867C038E679B764AF7B1 /* Pods-Squircle_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Squircle_Tests-acknowledgements.plist"; sourceTree = ""; }; 58 | 6DF9E080A9A1ED9063D387790E4AE632 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 59 | 7348672B6308C9A23BAB03F845B461D8 /* Pods-Squircle_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Squircle_Example-acknowledgements.plist"; sourceTree = ""; }; 60 | 7512CAD6AEC8E43F2AFEEA9F6CD3AE38 /* Squircle-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Squircle-dummy.m"; sourceTree = ""; }; 61 | 7659402C48DD9EF42DFBE6124CA5C567 /* Pods-Squircle_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Squircle_Example.release.xcconfig"; sourceTree = ""; }; 62 | 792E0FE963FB752388146583092E0647 /* Pods-Squircle_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Squircle_Tests.release.xcconfig"; sourceTree = ""; }; 63 | 8EBF45244BA6366AF83D412C8A4F429E /* Pods-Squircle_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Squircle_Example.modulemap"; sourceTree = ""; }; 64 | 93C609443831CE7750B014C021610567 /* Squircle+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Squircle+Internal.swift"; sourceTree = ""; }; 65 | 9552BDE921FCA6FB94523F0A50337026 /* Squircle.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Squircle.debug.xcconfig; sourceTree = ""; }; 66 | 966E08CF4EBF3A65A6B8E70B06AA8063 /* Squircle */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Squircle; path = Squircle.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 67 | 9CFB421E65CF37C1652F605C70E4BE19 /* Checkpoints.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Checkpoints.swift; sourceTree = ""; }; 68 | 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; }; 69 | AD5B21DCED0E2056F03C39999F1BA43E /* Pods-Squircle_Example */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-Squircle_Example"; path = Pods_Squircle_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 70 | AFC17E82E0D24DEE57E6651FBA702FEC /* Pods-Squircle_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Squircle_Tests-dummy.m"; sourceTree = ""; }; 71 | B03AA97BA166B3208B73B2902E5EA622 /* Pods-Squircle_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Squircle_Example.debug.xcconfig"; sourceTree = ""; }; 72 | B2A9A1F51E2443448B225B3CEFDD176E /* Squircle-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Squircle-prefix.pch"; sourceTree = ""; }; 73 | B97B3D071B7465092D60A1F8656BB560 /* Pods-Squircle_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Squircle_Example-Info.plist"; sourceTree = ""; }; 74 | BB9085EBE55E1D486FC9705E87211108 /* Pods-Squircle_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Squircle_Example-acknowledgements.markdown"; sourceTree = ""; }; 75 | C74AF982657CFCDC9DF19BB9DD4036ED /* Pods-Squircle_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Squircle_Example-dummy.m"; sourceTree = ""; }; 76 | CB04EDB722A9EAA526E0C35B946FD96C /* Pods-Squircle_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Squircle_Tests-umbrella.h"; sourceTree = ""; }; 77 | CDBF3A4DB381C9EFA004605E483D56BC /* CGPoint+Delta.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CGPoint+Delta.swift"; sourceTree = ""; }; 78 | D3D90DE96E4AA8AE8F22A10B8B2A4550 /* Squircle.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Squircle.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 79 | D539AB577554FC9DBBC0BF1C7C861EBD /* Pods-Squircle_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Squircle_Tests-acknowledgements.markdown"; sourceTree = ""; }; 80 | D7F1ADFFAEB7E8EEF46EE62FF9BAEAAF /* Pods-Squircle_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Squircle_Tests-Info.plist"; sourceTree = ""; }; 81 | D8E526E32D4402B9BCE48CC948DA087A /* Squircle.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Squircle.modulemap; sourceTree = ""; }; 82 | E02288C07BB3472E054D9CB91201C7E8 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 83 | EB0625BE476AB3CA41E96D7C99D21CC6 /* Pods-Squircle_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Squircle_Example-umbrella.h"; sourceTree = ""; }; 84 | F10091CF31FEBEE80471F80E71AB4460 /* Squircle-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Squircle-umbrella.h"; sourceTree = ""; }; 85 | /* End PBXFileReference section */ 86 | 87 | /* Begin PBXFrameworksBuildPhase section */ 88 | 37980AF48F299469DECFC86E85D82DFB /* Frameworks */ = { 89 | isa = PBXFrameworksBuildPhase; 90 | buildActionMask = 2147483647; 91 | files = ( 92 | 9CACF779DD504E294A24DFAF41FC207F /* Foundation.framework in Frameworks */, 93 | ); 94 | runOnlyForDeploymentPostprocessing = 0; 95 | }; 96 | 5F5BF450695994637893323617B80B4D /* Frameworks */ = { 97 | isa = PBXFrameworksBuildPhase; 98 | buildActionMask = 2147483647; 99 | files = ( 100 | 2F9C35AC17D2B24F534FA9F233DDC42D /* CoreGraphics.framework in Frameworks */, 101 | FF3456CDEB200F2B745E7E14A845CBF6 /* Foundation.framework in Frameworks */, 102 | 85803A695BDFC853FCC5C342E27B7536 /* QuartzCore.framework in Frameworks */, 103 | F392F709FF8C6B7D8CC26CFBE34DE52C /* UIKit.framework in Frameworks */, 104 | ); 105 | runOnlyForDeploymentPostprocessing = 0; 106 | }; 107 | 699023934C9D0C75AEF8B226CD5FE9E0 /* Frameworks */ = { 108 | isa = PBXFrameworksBuildPhase; 109 | buildActionMask = 2147483647; 110 | files = ( 111 | BFB0435B09407A12E0DB317F9CE6C3E4 /* Foundation.framework in Frameworks */, 112 | ); 113 | runOnlyForDeploymentPostprocessing = 0; 114 | }; 115 | /* End PBXFrameworksBuildPhase section */ 116 | 117 | /* Begin PBXGroup section */ 118 | 043A5FB8DBB741B8071EAD93E16E0E5B /* Targets Support Files */ = { 119 | isa = PBXGroup; 120 | children = ( 121 | D7B633C62070B29D213ECD8D063B866B /* Pods-Squircle_Example */, 122 | 3D30C783B6E79CE0D2F86BBEE3DF5365 /* Pods-Squircle_Tests */, 123 | ); 124 | name = "Targets Support Files"; 125 | sourceTree = ""; 126 | }; 127 | 0615E1F28DAE0A20C0310082F832170D /* Support Files */ = { 128 | isa = PBXGroup; 129 | children = ( 130 | D8E526E32D4402B9BCE48CC948DA087A /* Squircle.modulemap */, 131 | 7512CAD6AEC8E43F2AFEEA9F6CD3AE38 /* Squircle-dummy.m */, 132 | 44F013B0950EF19DBD3B2208720957C8 /* Squircle-Info.plist */, 133 | B2A9A1F51E2443448B225B3CEFDD176E /* Squircle-prefix.pch */, 134 | F10091CF31FEBEE80471F80E71AB4460 /* Squircle-umbrella.h */, 135 | 9552BDE921FCA6FB94523F0A50337026 /* Squircle.debug.xcconfig */, 136 | 1D35CEC4E9DB22DC124ED1563099BDEA /* Squircle.release.xcconfig */, 137 | ); 138 | name = "Support Files"; 139 | path = "Example/Pods/Target Support Files/Squircle"; 140 | sourceTree = ""; 141 | }; 142 | 0F280211E3A82F17944E8F4E53E67078 /* Development Pods */ = { 143 | isa = PBXGroup; 144 | children = ( 145 | 19002F11F4F995540789C990C7D60BAB /* Squircle */, 146 | ); 147 | name = "Development Pods"; 148 | sourceTree = ""; 149 | }; 150 | 19002F11F4F995540789C990C7D60BAB /* Squircle */ = { 151 | isa = PBXGroup; 152 | children = ( 153 | 023FBED2B74742ABF6A73134B04D6999 /* Squircle.swift */, 154 | C502803B368BBC1B42F3F0B1DBEAA7E5 /* Internal */, 155 | 6C63BA1A0F64A0E960C2A416907A34FF /* Pod */, 156 | 0615E1F28DAE0A20C0310082F832170D /* Support Files */, 157 | ); 158 | name = Squircle; 159 | path = ../..; 160 | sourceTree = ""; 161 | }; 162 | 3D30C783B6E79CE0D2F86BBEE3DF5365 /* Pods-Squircle_Tests */ = { 163 | isa = PBXGroup; 164 | children = ( 165 | 1F05E83685D7BCCF2DABB2595E99A07A /* Pods-Squircle_Tests.modulemap */, 166 | D539AB577554FC9DBBC0BF1C7C861EBD /* Pods-Squircle_Tests-acknowledgements.markdown */, 167 | 5006733F1DBE867C038E679B764AF7B1 /* Pods-Squircle_Tests-acknowledgements.plist */, 168 | AFC17E82E0D24DEE57E6651FBA702FEC /* Pods-Squircle_Tests-dummy.m */, 169 | D7F1ADFFAEB7E8EEF46EE62FF9BAEAAF /* Pods-Squircle_Tests-Info.plist */, 170 | CB04EDB722A9EAA526E0C35B946FD96C /* Pods-Squircle_Tests-umbrella.h */, 171 | 395D649541D9BF38CEBC963C98B02608 /* Pods-Squircle_Tests.debug.xcconfig */, 172 | 792E0FE963FB752388146583092E0647 /* Pods-Squircle_Tests.release.xcconfig */, 173 | ); 174 | name = "Pods-Squircle_Tests"; 175 | path = "Target Support Files/Pods-Squircle_Tests"; 176 | sourceTree = ""; 177 | }; 178 | 6C63BA1A0F64A0E960C2A416907A34FF /* Pod */ = { 179 | isa = PBXGroup; 180 | children = ( 181 | E02288C07BB3472E054D9CB91201C7E8 /* LICENSE */, 182 | 106696C48FCCF12FE8B7A2227DF4720B /* README.md */, 183 | D3D90DE96E4AA8AE8F22A10B8B2A4550 /* Squircle.podspec */, 184 | ); 185 | name = Pod; 186 | sourceTree = ""; 187 | }; 188 | BA4F31F07263C99FC76E66D632A59F09 /* Frameworks */ = { 189 | isa = PBXGroup; 190 | children = ( 191 | EB0E3A0897B38211D65ACB5E48640571 /* iOS */, 192 | ); 193 | name = Frameworks; 194 | sourceTree = ""; 195 | }; 196 | C502803B368BBC1B42F3F0B1DBEAA7E5 /* Internal */ = { 197 | isa = PBXGroup; 198 | children = ( 199 | CDBF3A4DB381C9EFA004605E483D56BC /* CGPoint+Delta.swift */, 200 | 9CFB421E65CF37C1652F605C70E4BE19 /* Checkpoints.swift */, 201 | 93C609443831CE7750B014C021610567 /* Squircle+Internal.swift */, 202 | ); 203 | name = Internal; 204 | path = Squircle/Internal; 205 | sourceTree = ""; 206 | }; 207 | CF1408CF629C7361332E53B88F7BD30C = { 208 | isa = PBXGroup; 209 | children = ( 210 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 211 | 0F280211E3A82F17944E8F4E53E67078 /* Development Pods */, 212 | BA4F31F07263C99FC76E66D632A59F09 /* Frameworks */, 213 | CF351F55973B12945C2AD16D3B4590D6 /* Products */, 214 | 043A5FB8DBB741B8071EAD93E16E0E5B /* Targets Support Files */, 215 | ); 216 | sourceTree = ""; 217 | }; 218 | CF351F55973B12945C2AD16D3B4590D6 /* Products */ = { 219 | isa = PBXGroup; 220 | children = ( 221 | AD5B21DCED0E2056F03C39999F1BA43E /* Pods-Squircle_Example */, 222 | 067F5384CED857AAE44D4F12E648AB2B /* Pods-Squircle_Tests */, 223 | 966E08CF4EBF3A65A6B8E70B06AA8063 /* Squircle */, 224 | ); 225 | name = Products; 226 | sourceTree = ""; 227 | }; 228 | D7B633C62070B29D213ECD8D063B866B /* Pods-Squircle_Example */ = { 229 | isa = PBXGroup; 230 | children = ( 231 | 8EBF45244BA6366AF83D412C8A4F429E /* Pods-Squircle_Example.modulemap */, 232 | BB9085EBE55E1D486FC9705E87211108 /* Pods-Squircle_Example-acknowledgements.markdown */, 233 | 7348672B6308C9A23BAB03F845B461D8 /* Pods-Squircle_Example-acknowledgements.plist */, 234 | C74AF982657CFCDC9DF19BB9DD4036ED /* Pods-Squircle_Example-dummy.m */, 235 | 46DAE341A9170D068EE379A39424AA82 /* Pods-Squircle_Example-frameworks.sh */, 236 | B97B3D071B7465092D60A1F8656BB560 /* Pods-Squircle_Example-Info.plist */, 237 | EB0625BE476AB3CA41E96D7C99D21CC6 /* Pods-Squircle_Example-umbrella.h */, 238 | B03AA97BA166B3208B73B2902E5EA622 /* Pods-Squircle_Example.debug.xcconfig */, 239 | 7659402C48DD9EF42DFBE6124CA5C567 /* Pods-Squircle_Example.release.xcconfig */, 240 | ); 241 | name = "Pods-Squircle_Example"; 242 | path = "Target Support Files/Pods-Squircle_Example"; 243 | sourceTree = ""; 244 | }; 245 | EB0E3A0897B38211D65ACB5E48640571 /* iOS */ = { 246 | isa = PBXGroup; 247 | children = ( 248 | 2F00BEE59DC7EC91BB1C827BEF78C6A7 /* CoreGraphics.framework */, 249 | 316612CB60866F3952D1AEFFE9E409E7 /* Foundation.framework */, 250 | 251D60A893F479C33123291FB0EED416 /* QuartzCore.framework */, 251 | 6DF9E080A9A1ED9063D387790E4AE632 /* UIKit.framework */, 252 | ); 253 | name = iOS; 254 | sourceTree = ""; 255 | }; 256 | /* End PBXGroup section */ 257 | 258 | /* Begin PBXHeadersBuildPhase section */ 259 | 116C6CA8D1630A4E86ED0FEE40C6C2E0 /* Headers */ = { 260 | isa = PBXHeadersBuildPhase; 261 | buildActionMask = 2147483647; 262 | files = ( 263 | A5848EC2967D8AD727EBB5BB172383EA /* Squircle-umbrella.h in Headers */, 264 | ); 265 | runOnlyForDeploymentPostprocessing = 0; 266 | }; 267 | 1BE465C23B9E7090F9765DA3DBE3B377 /* Headers */ = { 268 | isa = PBXHeadersBuildPhase; 269 | buildActionMask = 2147483647; 270 | files = ( 271 | CE64CE9EE1FAC739B07F5457A424E35C /* Pods-Squircle_Tests-umbrella.h in Headers */, 272 | ); 273 | runOnlyForDeploymentPostprocessing = 0; 274 | }; 275 | 48E6F312577B349669919E68FA60A20C /* Headers */ = { 276 | isa = PBXHeadersBuildPhase; 277 | buildActionMask = 2147483647; 278 | files = ( 279 | 72572861109F4867C063EFD6D48412F6 /* Pods-Squircle_Example-umbrella.h in Headers */, 280 | ); 281 | runOnlyForDeploymentPostprocessing = 0; 282 | }; 283 | /* End PBXHeadersBuildPhase section */ 284 | 285 | /* Begin PBXNativeTarget section */ 286 | 0CC520EC56321EC62CAEA50C54725471 /* Squircle */ = { 287 | isa = PBXNativeTarget; 288 | buildConfigurationList = 1D2BFAC5B2A972A535D9A0B5D8C36B4C /* Build configuration list for PBXNativeTarget "Squircle" */; 289 | buildPhases = ( 290 | 116C6CA8D1630A4E86ED0FEE40C6C2E0 /* Headers */, 291 | 626A82D63BD15FC8AD5A626A916BED7F /* Sources */, 292 | 5F5BF450695994637893323617B80B4D /* Frameworks */, 293 | BF5AE2B936B70904B411D97E06D1A3A5 /* Resources */, 294 | ); 295 | buildRules = ( 296 | ); 297 | dependencies = ( 298 | ); 299 | name = Squircle; 300 | productName = Squircle; 301 | productReference = 966E08CF4EBF3A65A6B8E70B06AA8063 /* Squircle */; 302 | productType = "com.apple.product-type.framework"; 303 | }; 304 | EFE613A3B6CA7B2574A699C7E9F64829 /* Pods-Squircle_Tests */ = { 305 | isa = PBXNativeTarget; 306 | buildConfigurationList = DABFA66710B335916566CA82AFFD03C3 /* Build configuration list for PBXNativeTarget "Pods-Squircle_Tests" */; 307 | buildPhases = ( 308 | 1BE465C23B9E7090F9765DA3DBE3B377 /* Headers */, 309 | 1B6853CA4703CFF7D6170BED80AB583C /* Sources */, 310 | 699023934C9D0C75AEF8B226CD5FE9E0 /* Frameworks */, 311 | A3CF453A822FF9225AD407FDDAF038C5 /* Resources */, 312 | ); 313 | buildRules = ( 314 | ); 315 | dependencies = ( 316 | EFF5E43E7241EC6DEDC8BD9ACE58ED80 /* PBXTargetDependency */, 317 | ); 318 | name = "Pods-Squircle_Tests"; 319 | productName = Pods_Squircle_Tests; 320 | productReference = 067F5384CED857AAE44D4F12E648AB2B /* Pods-Squircle_Tests */; 321 | productType = "com.apple.product-type.framework"; 322 | }; 323 | F581CDC52BF2A786BE7684EA6834DA47 /* Pods-Squircle_Example */ = { 324 | isa = PBXNativeTarget; 325 | buildConfigurationList = E8FFACB70D4E0BBBEB505938D1068461 /* Build configuration list for PBXNativeTarget "Pods-Squircle_Example" */; 326 | buildPhases = ( 327 | 48E6F312577B349669919E68FA60A20C /* Headers */, 328 | 1833FC81BAE41FB05E1BB8F2CD660546 /* Sources */, 329 | 37980AF48F299469DECFC86E85D82DFB /* Frameworks */, 330 | 1F68E8EBC174D64A23F3F2F0FE09B14D /* Resources */, 331 | ); 332 | buildRules = ( 333 | ); 334 | dependencies = ( 335 | DAD3196F64D7C67CA29B6C68FFE8C95B /* PBXTargetDependency */, 336 | ); 337 | name = "Pods-Squircle_Example"; 338 | productName = Pods_Squircle_Example; 339 | productReference = AD5B21DCED0E2056F03C39999F1BA43E /* Pods-Squircle_Example */; 340 | productType = "com.apple.product-type.framework"; 341 | }; 342 | /* End PBXNativeTarget section */ 343 | 344 | /* Begin PBXProject section */ 345 | BFDFE7DC352907FC980B868725387E98 /* Project object */ = { 346 | isa = PBXProject; 347 | attributes = { 348 | LastSwiftUpdateCheck = 1500; 349 | LastUpgradeCheck = 1500; 350 | }; 351 | buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; 352 | compatibilityVersion = "Xcode 3.2"; 353 | developmentRegion = en; 354 | hasScannedForEncodings = 0; 355 | knownRegions = ( 356 | Base, 357 | en, 358 | ); 359 | mainGroup = CF1408CF629C7361332E53B88F7BD30C; 360 | productRefGroup = CF351F55973B12945C2AD16D3B4590D6 /* Products */; 361 | projectDirPath = ""; 362 | projectRoot = ""; 363 | targets = ( 364 | F581CDC52BF2A786BE7684EA6834DA47 /* Pods-Squircle_Example */, 365 | EFE613A3B6CA7B2574A699C7E9F64829 /* Pods-Squircle_Tests */, 366 | 0CC520EC56321EC62CAEA50C54725471 /* Squircle */, 367 | ); 368 | }; 369 | /* End PBXProject section */ 370 | 371 | /* Begin PBXResourcesBuildPhase section */ 372 | 1F68E8EBC174D64A23F3F2F0FE09B14D /* Resources */ = { 373 | isa = PBXResourcesBuildPhase; 374 | buildActionMask = 2147483647; 375 | files = ( 376 | ); 377 | runOnlyForDeploymentPostprocessing = 0; 378 | }; 379 | A3CF453A822FF9225AD407FDDAF038C5 /* Resources */ = { 380 | isa = PBXResourcesBuildPhase; 381 | buildActionMask = 2147483647; 382 | files = ( 383 | ); 384 | runOnlyForDeploymentPostprocessing = 0; 385 | }; 386 | BF5AE2B936B70904B411D97E06D1A3A5 /* Resources */ = { 387 | isa = PBXResourcesBuildPhase; 388 | buildActionMask = 2147483647; 389 | files = ( 390 | ); 391 | runOnlyForDeploymentPostprocessing = 0; 392 | }; 393 | /* End PBXResourcesBuildPhase section */ 394 | 395 | /* Begin PBXSourcesBuildPhase section */ 396 | 1833FC81BAE41FB05E1BB8F2CD660546 /* Sources */ = { 397 | isa = PBXSourcesBuildPhase; 398 | buildActionMask = 2147483647; 399 | files = ( 400 | 5AF5DBFE6B27889EDEA2FB3027487295 /* Pods-Squircle_Example-dummy.m in Sources */, 401 | ); 402 | runOnlyForDeploymentPostprocessing = 0; 403 | }; 404 | 1B6853CA4703CFF7D6170BED80AB583C /* Sources */ = { 405 | isa = PBXSourcesBuildPhase; 406 | buildActionMask = 2147483647; 407 | files = ( 408 | 1141932BDF052B1DF45098F68018BF3B /* Pods-Squircle_Tests-dummy.m in Sources */, 409 | ); 410 | runOnlyForDeploymentPostprocessing = 0; 411 | }; 412 | 626A82D63BD15FC8AD5A626A916BED7F /* Sources */ = { 413 | isa = PBXSourcesBuildPhase; 414 | buildActionMask = 2147483647; 415 | files = ( 416 | 5AD81C53A3AAD38C987E74AEB23C9BFC /* CGPoint+Delta.swift in Sources */, 417 | 16B428B9D0F2150DB0F04616C6F4185F /* Checkpoints.swift in Sources */, 418 | D39AC79D9609E44E6C291C05609E8D77 /* Squircle.swift in Sources */, 419 | 5B19526841727AC3F2A0AA2323064361 /* Squircle+Internal.swift in Sources */, 420 | D5050F43FE0CA75D91038611FF47B4AE /* Squircle-dummy.m in Sources */, 421 | ); 422 | runOnlyForDeploymentPostprocessing = 0; 423 | }; 424 | /* End PBXSourcesBuildPhase section */ 425 | 426 | /* Begin PBXTargetDependency section */ 427 | DAD3196F64D7C67CA29B6C68FFE8C95B /* PBXTargetDependency */ = { 428 | isa = PBXTargetDependency; 429 | name = Squircle; 430 | target = 0CC520EC56321EC62CAEA50C54725471 /* Squircle */; 431 | targetProxy = 15451E29A8DBA482678FAE3B743C112A /* PBXContainerItemProxy */; 432 | }; 433 | EFF5E43E7241EC6DEDC8BD9ACE58ED80 /* PBXTargetDependency */ = { 434 | isa = PBXTargetDependency; 435 | name = "Pods-Squircle_Example"; 436 | target = F581CDC52BF2A786BE7684EA6834DA47 /* Pods-Squircle_Example */; 437 | targetProxy = 61A88D43D3CAA20B4CDA984BE847EBC9 /* PBXContainerItemProxy */; 438 | }; 439 | /* End PBXTargetDependency section */ 440 | 441 | /* Begin XCBuildConfiguration section */ 442 | 1EA0B9D190A671437E8881384089495C /* Release */ = { 443 | isa = XCBuildConfiguration; 444 | baseConfigurationReference = 1D35CEC4E9DB22DC124ED1563099BDEA /* Squircle.release.xcconfig */; 445 | buildSettings = { 446 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 447 | CLANG_ENABLE_OBJC_WEAK = NO; 448 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 449 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 450 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 451 | CURRENT_PROJECT_VERSION = 1; 452 | DEFINES_MODULE = YES; 453 | DYLIB_COMPATIBILITY_VERSION = 1; 454 | DYLIB_CURRENT_VERSION = 1; 455 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 456 | GCC_PREFIX_HEADER = "Target Support Files/Squircle/Squircle-prefix.pch"; 457 | INFOPLIST_FILE = "Target Support Files/Squircle/Squircle-Info.plist"; 458 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 459 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 460 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 461 | MODULEMAP_FILE = "Target Support Files/Squircle/Squircle.modulemap"; 462 | PRODUCT_MODULE_NAME = Squircle; 463 | PRODUCT_NAME = Squircle; 464 | SDKROOT = iphoneos; 465 | SKIP_INSTALL = YES; 466 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 467 | SWIFT_VERSION = 5.0; 468 | TARGETED_DEVICE_FAMILY = "1,2"; 469 | VALIDATE_PRODUCT = YES; 470 | VERSIONING_SYSTEM = "apple-generic"; 471 | VERSION_INFO_PREFIX = ""; 472 | }; 473 | name = Release; 474 | }; 475 | 2B9E26EAE2CD392AD762421F663075A1 /* Debug */ = { 476 | isa = XCBuildConfiguration; 477 | buildSettings = { 478 | ALWAYS_SEARCH_USER_PATHS = NO; 479 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 480 | CLANG_ANALYZER_NONNULL = YES; 481 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 482 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 483 | CLANG_CXX_LIBRARY = "libc++"; 484 | CLANG_ENABLE_MODULES = YES; 485 | CLANG_ENABLE_OBJC_ARC = YES; 486 | CLANG_ENABLE_OBJC_WEAK = YES; 487 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 488 | CLANG_WARN_BOOL_CONVERSION = YES; 489 | CLANG_WARN_COMMA = YES; 490 | CLANG_WARN_CONSTANT_CONVERSION = YES; 491 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 492 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 493 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 494 | CLANG_WARN_EMPTY_BODY = YES; 495 | CLANG_WARN_ENUM_CONVERSION = YES; 496 | CLANG_WARN_INFINITE_RECURSION = YES; 497 | CLANG_WARN_INT_CONVERSION = YES; 498 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 499 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 500 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 501 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 502 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 503 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 504 | CLANG_WARN_STRICT_PROTOTYPES = YES; 505 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 506 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 507 | CLANG_WARN_UNREACHABLE_CODE = YES; 508 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 509 | COPY_PHASE_STRIP = NO; 510 | DEBUG_INFORMATION_FORMAT = dwarf; 511 | ENABLE_STRICT_OBJC_MSGSEND = YES; 512 | ENABLE_TESTABILITY = YES; 513 | GCC_C_LANGUAGE_STANDARD = gnu11; 514 | GCC_DYNAMIC_NO_PIC = NO; 515 | GCC_NO_COMMON_BLOCKS = YES; 516 | GCC_OPTIMIZATION_LEVEL = 0; 517 | GCC_PREPROCESSOR_DEFINITIONS = ( 518 | "POD_CONFIGURATION_DEBUG=1", 519 | "DEBUG=1", 520 | "$(inherited)", 521 | ); 522 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 523 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 524 | GCC_WARN_UNDECLARED_SELECTOR = YES; 525 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 526 | GCC_WARN_UNUSED_FUNCTION = YES; 527 | GCC_WARN_UNUSED_VARIABLE = YES; 528 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 529 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 530 | MTL_FAST_MATH = YES; 531 | ONLY_ACTIVE_ARCH = YES; 532 | PRODUCT_NAME = "$(TARGET_NAME)"; 533 | STRIP_INSTALLED_PRODUCT = NO; 534 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 535 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 536 | SWIFT_VERSION = 5.0; 537 | SYMROOT = "${SRCROOT}/../build"; 538 | }; 539 | name = Debug; 540 | }; 541 | 32C10EA0CFCCC54803060F88ADA7625D /* Release */ = { 542 | isa = XCBuildConfiguration; 543 | baseConfigurationReference = 7659402C48DD9EF42DFBE6124CA5C567 /* Pods-Squircle_Example.release.xcconfig */; 544 | buildSettings = { 545 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 546 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 547 | CLANG_ENABLE_OBJC_WEAK = NO; 548 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 549 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 550 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 551 | CURRENT_PROJECT_VERSION = 1; 552 | DEFINES_MODULE = YES; 553 | DYLIB_COMPATIBILITY_VERSION = 1; 554 | DYLIB_CURRENT_VERSION = 1; 555 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 556 | INFOPLIST_FILE = "Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example-Info.plist"; 557 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 558 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 559 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 560 | MACH_O_TYPE = staticlib; 561 | MODULEMAP_FILE = "Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example.modulemap"; 562 | OTHER_LDFLAGS = ""; 563 | OTHER_LIBTOOLFLAGS = ""; 564 | PODS_ROOT = "$(SRCROOT)"; 565 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 566 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 567 | SDKROOT = iphoneos; 568 | SKIP_INSTALL = YES; 569 | TARGETED_DEVICE_FAMILY = "1,2"; 570 | VALIDATE_PRODUCT = YES; 571 | VERSIONING_SYSTEM = "apple-generic"; 572 | VERSION_INFO_PREFIX = ""; 573 | }; 574 | name = Release; 575 | }; 576 | 638E5AA17A3AB3328B3FF48548B28671 /* Release */ = { 577 | isa = XCBuildConfiguration; 578 | baseConfigurationReference = 792E0FE963FB752388146583092E0647 /* Pods-Squircle_Tests.release.xcconfig */; 579 | buildSettings = { 580 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 581 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 582 | CLANG_ENABLE_OBJC_WEAK = NO; 583 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 584 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 585 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 586 | CURRENT_PROJECT_VERSION = 1; 587 | DEFINES_MODULE = YES; 588 | DYLIB_COMPATIBILITY_VERSION = 1; 589 | DYLIB_CURRENT_VERSION = 1; 590 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 591 | INFOPLIST_FILE = "Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests-Info.plist"; 592 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 593 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 594 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 595 | MACH_O_TYPE = staticlib; 596 | MODULEMAP_FILE = "Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests.modulemap"; 597 | OTHER_LDFLAGS = ""; 598 | OTHER_LIBTOOLFLAGS = ""; 599 | PODS_ROOT = "$(SRCROOT)"; 600 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 601 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 602 | SDKROOT = iphoneos; 603 | SKIP_INSTALL = YES; 604 | TARGETED_DEVICE_FAMILY = "1,2"; 605 | VALIDATE_PRODUCT = YES; 606 | VERSIONING_SYSTEM = "apple-generic"; 607 | VERSION_INFO_PREFIX = ""; 608 | }; 609 | name = Release; 610 | }; 611 | 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */ = { 612 | isa = XCBuildConfiguration; 613 | buildSettings = { 614 | ALWAYS_SEARCH_USER_PATHS = NO; 615 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 616 | CLANG_ANALYZER_NONNULL = YES; 617 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 618 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 619 | CLANG_CXX_LIBRARY = "libc++"; 620 | CLANG_ENABLE_MODULES = YES; 621 | CLANG_ENABLE_OBJC_ARC = YES; 622 | CLANG_ENABLE_OBJC_WEAK = YES; 623 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 624 | CLANG_WARN_BOOL_CONVERSION = YES; 625 | CLANG_WARN_COMMA = YES; 626 | CLANG_WARN_CONSTANT_CONVERSION = YES; 627 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 628 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 629 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 630 | CLANG_WARN_EMPTY_BODY = YES; 631 | CLANG_WARN_ENUM_CONVERSION = YES; 632 | CLANG_WARN_INFINITE_RECURSION = YES; 633 | CLANG_WARN_INT_CONVERSION = YES; 634 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 635 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 636 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 637 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 638 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 639 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 640 | CLANG_WARN_STRICT_PROTOTYPES = YES; 641 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 642 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 643 | CLANG_WARN_UNREACHABLE_CODE = YES; 644 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 645 | COPY_PHASE_STRIP = NO; 646 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 647 | ENABLE_NS_ASSERTIONS = NO; 648 | ENABLE_STRICT_OBJC_MSGSEND = YES; 649 | GCC_C_LANGUAGE_STANDARD = gnu11; 650 | GCC_NO_COMMON_BLOCKS = YES; 651 | GCC_PREPROCESSOR_DEFINITIONS = ( 652 | "POD_CONFIGURATION_RELEASE=1", 653 | "$(inherited)", 654 | ); 655 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 656 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 657 | GCC_WARN_UNDECLARED_SELECTOR = YES; 658 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 659 | GCC_WARN_UNUSED_FUNCTION = YES; 660 | GCC_WARN_UNUSED_VARIABLE = YES; 661 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 662 | MTL_ENABLE_DEBUG_INFO = NO; 663 | MTL_FAST_MATH = YES; 664 | PRODUCT_NAME = "$(TARGET_NAME)"; 665 | STRIP_INSTALLED_PRODUCT = NO; 666 | SWIFT_COMPILATION_MODE = wholemodule; 667 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 668 | SWIFT_VERSION = 5.0; 669 | SYMROOT = "${SRCROOT}/../build"; 670 | }; 671 | name = Release; 672 | }; 673 | 677D3FBEA8CE27A632C8CA69D4E440B1 /* Debug */ = { 674 | isa = XCBuildConfiguration; 675 | baseConfigurationReference = 9552BDE921FCA6FB94523F0A50337026 /* Squircle.debug.xcconfig */; 676 | buildSettings = { 677 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 678 | CLANG_ENABLE_OBJC_WEAK = NO; 679 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 680 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 681 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 682 | CURRENT_PROJECT_VERSION = 1; 683 | DEFINES_MODULE = YES; 684 | DYLIB_COMPATIBILITY_VERSION = 1; 685 | DYLIB_CURRENT_VERSION = 1; 686 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 687 | GCC_PREFIX_HEADER = "Target Support Files/Squircle/Squircle-prefix.pch"; 688 | INFOPLIST_FILE = "Target Support Files/Squircle/Squircle-Info.plist"; 689 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 690 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 691 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 692 | MODULEMAP_FILE = "Target Support Files/Squircle/Squircle.modulemap"; 693 | PRODUCT_MODULE_NAME = Squircle; 694 | PRODUCT_NAME = Squircle; 695 | SDKROOT = iphoneos; 696 | SKIP_INSTALL = YES; 697 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 698 | SWIFT_VERSION = 5.0; 699 | TARGETED_DEVICE_FAMILY = "1,2"; 700 | VERSIONING_SYSTEM = "apple-generic"; 701 | VERSION_INFO_PREFIX = ""; 702 | }; 703 | name = Debug; 704 | }; 705 | CBAB15F0883DA293B4DACD15AFFE013A /* Debug */ = { 706 | isa = XCBuildConfiguration; 707 | baseConfigurationReference = 395D649541D9BF38CEBC963C98B02608 /* Pods-Squircle_Tests.debug.xcconfig */; 708 | buildSettings = { 709 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 710 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 711 | CLANG_ENABLE_OBJC_WEAK = NO; 712 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 713 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 714 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 715 | CURRENT_PROJECT_VERSION = 1; 716 | DEFINES_MODULE = YES; 717 | DYLIB_COMPATIBILITY_VERSION = 1; 718 | DYLIB_CURRENT_VERSION = 1; 719 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 720 | INFOPLIST_FILE = "Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests-Info.plist"; 721 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 722 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 723 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 724 | MACH_O_TYPE = staticlib; 725 | MODULEMAP_FILE = "Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests.modulemap"; 726 | OTHER_LDFLAGS = ""; 727 | OTHER_LIBTOOLFLAGS = ""; 728 | PODS_ROOT = "$(SRCROOT)"; 729 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 730 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 731 | SDKROOT = iphoneos; 732 | SKIP_INSTALL = YES; 733 | TARGETED_DEVICE_FAMILY = "1,2"; 734 | VERSIONING_SYSTEM = "apple-generic"; 735 | VERSION_INFO_PREFIX = ""; 736 | }; 737 | name = Debug; 738 | }; 739 | F903765B4319F14AE4A78D00E68AE6E0 /* Debug */ = { 740 | isa = XCBuildConfiguration; 741 | baseConfigurationReference = B03AA97BA166B3208B73B2902E5EA622 /* Pods-Squircle_Example.debug.xcconfig */; 742 | buildSettings = { 743 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 744 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 745 | CLANG_ENABLE_OBJC_WEAK = NO; 746 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 747 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 748 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 749 | CURRENT_PROJECT_VERSION = 1; 750 | DEFINES_MODULE = YES; 751 | DYLIB_COMPATIBILITY_VERSION = 1; 752 | DYLIB_CURRENT_VERSION = 1; 753 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 754 | INFOPLIST_FILE = "Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example-Info.plist"; 755 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 756 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 757 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 758 | MACH_O_TYPE = staticlib; 759 | MODULEMAP_FILE = "Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example.modulemap"; 760 | OTHER_LDFLAGS = ""; 761 | OTHER_LIBTOOLFLAGS = ""; 762 | PODS_ROOT = "$(SRCROOT)"; 763 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 764 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 765 | SDKROOT = iphoneos; 766 | SKIP_INSTALL = YES; 767 | TARGETED_DEVICE_FAMILY = "1,2"; 768 | VERSIONING_SYSTEM = "apple-generic"; 769 | VERSION_INFO_PREFIX = ""; 770 | }; 771 | name = Debug; 772 | }; 773 | /* End XCBuildConfiguration section */ 774 | 775 | /* Begin XCConfigurationList section */ 776 | 1D2BFAC5B2A972A535D9A0B5D8C36B4C /* Build configuration list for PBXNativeTarget "Squircle" */ = { 777 | isa = XCConfigurationList; 778 | buildConfigurations = ( 779 | 677D3FBEA8CE27A632C8CA69D4E440B1 /* Debug */, 780 | 1EA0B9D190A671437E8881384089495C /* Release */, 781 | ); 782 | defaultConfigurationIsVisible = 0; 783 | defaultConfigurationName = Release; 784 | }; 785 | 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { 786 | isa = XCConfigurationList; 787 | buildConfigurations = ( 788 | 2B9E26EAE2CD392AD762421F663075A1 /* Debug */, 789 | 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */, 790 | ); 791 | defaultConfigurationIsVisible = 0; 792 | defaultConfigurationName = Release; 793 | }; 794 | DABFA66710B335916566CA82AFFD03C3 /* Build configuration list for PBXNativeTarget "Pods-Squircle_Tests" */ = { 795 | isa = XCConfigurationList; 796 | buildConfigurations = ( 797 | CBAB15F0883DA293B4DACD15AFFE013A /* Debug */, 798 | 638E5AA17A3AB3328B3FF48548B28671 /* Release */, 799 | ); 800 | defaultConfigurationIsVisible = 0; 801 | defaultConfigurationName = Release; 802 | }; 803 | E8FFACB70D4E0BBBEB505938D1068461 /* Build configuration list for PBXNativeTarget "Pods-Squircle_Example" */ = { 804 | isa = XCConfigurationList; 805 | buildConfigurations = ( 806 | F903765B4319F14AE4A78D00E68AE6E0 /* Debug */, 807 | 32C10EA0CFCCC54803060F88ADA7625D /* Release */, 808 | ); 809 | defaultConfigurationIsVisible = 0; 810 | defaultConfigurationName = Release; 811 | }; 812 | /* End XCConfigurationList section */ 813 | }; 814 | rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; 815 | } 816 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Example/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-Squircle_Example/Pods-Squircle_Example-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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-Squircle_Example/Pods-Squircle_Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## Squircle 5 | 6 | Copyright (c) 2018 Giuseppe Travasoni 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-Squircle_Example/Pods-Squircle_Example-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) 2018 Giuseppe Travasoni <giuseppe.travasoni@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 | Squircle 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-Squircle_Example/Pods-Squircle_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_Squircle_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_Squircle_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example-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="${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 -f "${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}/Squircle/Squircle.framework" 180 | fi 181 | if [[ "$CONFIGURATION" == "Release" ]]; then 182 | install_framework "${BUILT_PRODUCTS_DIR}/Squircle/Squircle.framework" 183 | fi 184 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 185 | wait 186 | fi 187 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then 7 | # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # resources to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 13 | 14 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 15 | > "$RESOURCES_TO_COPY" 16 | 17 | XCASSET_FILES=() 18 | 19 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 20 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 21 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 22 | 23 | case "${TARGETED_DEVICE_FAMILY:-}" in 24 | 1,2) 25 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 26 | ;; 27 | 1) 28 | TARGET_DEVICE_ARGS="--target-device iphone" 29 | ;; 30 | 2) 31 | TARGET_DEVICE_ARGS="--target-device ipad" 32 | ;; 33 | 3) 34 | TARGET_DEVICE_ARGS="--target-device tv" 35 | ;; 36 | 4) 37 | TARGET_DEVICE_ARGS="--target-device watch" 38 | ;; 39 | *) 40 | TARGET_DEVICE_ARGS="--target-device mac" 41 | ;; 42 | esac 43 | 44 | install_resource() 45 | { 46 | if [[ "$1" = /* ]] ; then 47 | RESOURCE_PATH="$1" 48 | else 49 | RESOURCE_PATH="${PODS_ROOT}/$1" 50 | fi 51 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 52 | cat << EOM 53 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 54 | EOM 55 | exit 1 56 | fi 57 | case $RESOURCE_PATH in 58 | *.storyboard) 59 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 60 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 61 | ;; 62 | *.xib) 63 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 64 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 65 | ;; 66 | *.framework) 67 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 68 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 69 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 70 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 71 | ;; 72 | *.xcdatamodel) 73 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true 74 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 75 | ;; 76 | *.xcdatamodeld) 77 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true 78 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 79 | ;; 80 | *.xcmappingmodel) 81 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true 82 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 83 | ;; 84 | *.xcassets) 85 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 86 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 87 | ;; 88 | *) 89 | echo "$RESOURCE_PATH" || true 90 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 91 | ;; 92 | esac 93 | } 94 | 95 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 96 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 97 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 98 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 99 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 100 | fi 101 | rm -f "$RESOURCES_TO_COPY" 102 | 103 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] 104 | then 105 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 106 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 107 | while read line; do 108 | if [[ $line != "${PODS_ROOT}*" ]]; then 109 | XCASSET_FILES+=("$line") 110 | fi 111 | done <<<"$OTHER_XCASSETS" 112 | 113 | if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then 114 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 115 | else 116 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" 117 | fi 118 | fi 119 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example-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_Squircle_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_Squircle_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example.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}/Squircle" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Squircle/Squircle.framework/Headers" 6 | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' 7 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 8 | OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "QuartzCore" -framework "Squircle" -framework "UIKit" 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-Squircle_Example/Pods-Squircle_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_Squircle_Example { 2 | umbrella header "Pods-Squircle_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example.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}/Squircle" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Squircle/Squircle.framework/Headers" 6 | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' 7 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 8 | OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "QuartzCore" -framework "Squircle" -framework "UIKit" 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-Squircle_Tests/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-Squircle_Tests/Pods-Squircle_Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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-Squircle_Tests/Pods-Squircle_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests-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 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_Squircle_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_Squircle_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 7 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # frameworks to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 13 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 14 | 15 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 16 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 17 | 18 | # Used as a return value for each invocation of `strip_invalid_archs` function. 19 | STRIP_BINARY_RETVAL=0 20 | 21 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 22 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 23 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 24 | 25 | # Copies and strips a vendored framework 26 | install_framework() 27 | { 28 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 29 | local source="${BUILT_PRODUCTS_DIR}/$1" 30 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 31 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 32 | elif [ -r "$1" ]; then 33 | local source="$1" 34 | fi 35 | 36 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 37 | 38 | if [ -L "${source}" ]; then 39 | echo "Symlinked..." 40 | source="$(readlink "${source}")" 41 | fi 42 | 43 | # Use filter instead of exclude so missing patterns don't throw errors. 44 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 45 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 46 | 47 | local basename 48 | basename="$(basename -s .framework "$1")" 49 | binary="${destination}/${basename}.framework/${basename}" 50 | if ! [ -r "$binary" ]; then 51 | binary="${destination}/${basename}" 52 | fi 53 | 54 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 55 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 56 | strip_invalid_archs "$binary" 57 | fi 58 | 59 | # Resign the code if required by the build settings to avoid unstable apps 60 | code_sign_if_enabled "${destination}/$(basename "$1")" 61 | 62 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 63 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 64 | local swift_runtime_libs 65 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 66 | for lib in $swift_runtime_libs; do 67 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 68 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 69 | code_sign_if_enabled "${destination}/${lib}" 70 | done 71 | fi 72 | } 73 | 74 | # Copies and strips a vendored dSYM 75 | install_dsym() { 76 | local source="$1" 77 | if [ -r "$source" ]; then 78 | # Copy the dSYM into a the targets temp dir. 79 | 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}\"" 80 | 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}" 81 | 82 | local basename 83 | basename="$(basename -s .framework.dSYM "$source")" 84 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" 85 | 86 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 87 | if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then 88 | strip_invalid_archs "$binary" 89 | fi 90 | 91 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then 92 | # Move the stripped file into its final destination. 93 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 94 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 95 | else 96 | # 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. 97 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" 98 | fi 99 | fi 100 | } 101 | 102 | # Signs a framework with the provided identity 103 | code_sign_if_enabled() { 104 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 105 | # Use the current code_sign_identitiy 106 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 107 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 108 | 109 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 110 | code_sign_cmd="$code_sign_cmd &" 111 | fi 112 | echo "$code_sign_cmd" 113 | eval "$code_sign_cmd" 114 | fi 115 | } 116 | 117 | # Strip invalid architectures 118 | strip_invalid_archs() { 119 | binary="$1" 120 | # Get architectures for current target binary 121 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 122 | # Intersect them with the architectures we are building for 123 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 124 | # If there are no archs supported by this binary then warn the user 125 | if [[ -z "$intersected_archs" ]]; then 126 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 127 | STRIP_BINARY_RETVAL=0 128 | return 129 | fi 130 | stripped="" 131 | for arch in $binary_archs; do 132 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 133 | # Strip non-valid architectures in-place 134 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 135 | stripped="$stripped $arch" 136 | fi 137 | done 138 | if [[ "$stripped" ]]; then 139 | echo "Stripped $binary of architectures:$stripped" 140 | fi 141 | STRIP_BINARY_RETVAL=1 142 | } 143 | 144 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 145 | wait 146 | fi 147 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then 7 | # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # resources to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 13 | 14 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 15 | > "$RESOURCES_TO_COPY" 16 | 17 | XCASSET_FILES=() 18 | 19 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 20 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 21 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 22 | 23 | case "${TARGETED_DEVICE_FAMILY:-}" in 24 | 1,2) 25 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 26 | ;; 27 | 1) 28 | TARGET_DEVICE_ARGS="--target-device iphone" 29 | ;; 30 | 2) 31 | TARGET_DEVICE_ARGS="--target-device ipad" 32 | ;; 33 | 3) 34 | TARGET_DEVICE_ARGS="--target-device tv" 35 | ;; 36 | 4) 37 | TARGET_DEVICE_ARGS="--target-device watch" 38 | ;; 39 | *) 40 | TARGET_DEVICE_ARGS="--target-device mac" 41 | ;; 42 | esac 43 | 44 | install_resource() 45 | { 46 | if [[ "$1" = /* ]] ; then 47 | RESOURCE_PATH="$1" 48 | else 49 | RESOURCE_PATH="${PODS_ROOT}/$1" 50 | fi 51 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 52 | cat << EOM 53 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 54 | EOM 55 | exit 1 56 | fi 57 | case $RESOURCE_PATH in 58 | *.storyboard) 59 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 60 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 61 | ;; 62 | *.xib) 63 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 64 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 65 | ;; 66 | *.framework) 67 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 68 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 69 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 70 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 71 | ;; 72 | *.xcdatamodel) 73 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true 74 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 75 | ;; 76 | *.xcdatamodeld) 77 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true 78 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 79 | ;; 80 | *.xcmappingmodel) 81 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true 82 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 83 | ;; 84 | *.xcassets) 85 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 86 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 87 | ;; 88 | *) 89 | echo "$RESOURCE_PATH" || true 90 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 91 | ;; 92 | esac 93 | } 94 | 95 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 96 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 97 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 98 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 99 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 100 | fi 101 | rm -f "$RESOURCES_TO_COPY" 102 | 103 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] 104 | then 105 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 106 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 107 | while read line; do 108 | if [[ $line != "${PODS_ROOT}*" ]]; then 109 | XCASSET_FILES+=("$line") 110 | fi 111 | done <<<"$OTHER_XCASSETS" 112 | 113 | if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then 114 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 115 | else 116 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" 117 | fi 118 | fi 119 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests-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_Squircle_TestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_Squircle_TestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Squircle" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Squircle/Squircle.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "QuartzCore" -framework "Squircle" -framework "UIKit" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_Squircle_Tests { 2 | umbrella header "Pods-Squircle_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Squircle" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Squircle/Squircle.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "QuartzCore" -framework "Squircle" -framework "UIKit" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Squircle/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.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Squircle/Squircle-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 2.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Squircle/Squircle-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Squircle : NSObject 3 | @end 4 | @implementation PodsDummy_Squircle 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Squircle/Squircle-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/Squircle/Squircle-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 SquircleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char SquircleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Squircle/Squircle.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Squircle 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 5 | OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "QuartzCore" -framework "UIKit" 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_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 10 | PODS_ROOT = ${SRCROOT} 11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 14 | SKIP_INSTALL = YES 15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 16 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Squircle/Squircle.modulemap: -------------------------------------------------------------------------------- 1 | framework module Squircle { 2 | umbrella header "Squircle-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Squircle/Squircle.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Squircle 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 5 | OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "QuartzCore" -framework "UIKit" 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_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 10 | PODS_ROOT = ${SRCROOT} 11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 14 | SKIP_INSTALL = YES 15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 16 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Squircle/Squircle.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Squircle 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "QuartzCore" -framework "UIKit" 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Example/Squircle.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 58F2BCBB9A2BEDDE90F14875 /* Pods_Squircle_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8AFB9627F6E82DDE418539D /* Pods_Squircle_Example.framework */; }; 11 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; 12 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; }; 13 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; }; 14 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; 15 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; 16 | 607FACEC1AFB9204008FA782 /* BasicTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* BasicTests.swift */; }; 17 | C9860FC93E17B1C5D1B23BFA /* Pods_Squircle_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04FCCCF2F3E3A88422FC8B03 /* Pods_Squircle_Tests.framework */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXContainerItemProxy section */ 21 | 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = { 22 | isa = PBXContainerItemProxy; 23 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */; 24 | proxyType = 1; 25 | remoteGlobalIDString = 607FACCF1AFB9204008FA782; 26 | remoteInfo = Squircle; 27 | }; 28 | /* End PBXContainerItemProxy section */ 29 | 30 | /* Begin PBXFileReference section */ 31 | 04FCCCF2F3E3A88422FC8B03 /* Pods_Squircle_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Squircle_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 32 | 179BB92D40BF1D3B085369FC /* Pods-Squircle_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Squircle_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests.release.xcconfig"; sourceTree = ""; }; 33 | 1C6E433BD7F6FF8FD2D90E62 /* Pods-Squircle_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Squircle_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example.release.xcconfig"; sourceTree = ""; }; 34 | 2AD31BB12E7DD7DFE7C2D8DB /* Pods-Squircle_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Squircle_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example.debug.xcconfig"; sourceTree = ""; }; 35 | 5718F198AC40766DD2E49343 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 36 | 5907B2BF3CDD5B41AFB9DD05 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 37 | 607FACD01AFB9204008FA782 /* Squircle_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Squircle_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 38 | 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 39 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 40 | 607FACD71AFB9204008FA782 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 41 | 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 42 | 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 43 | 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 44 | 607FACE51AFB9204008FA782 /* Squircle_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Squircle_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 45 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 46 | 607FACEB1AFB9204008FA782 /* BasicTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicTests.swift; sourceTree = ""; }; 47 | 6AE1B410C2ECC79C31558EC3 /* Pods-Squircle_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Squircle_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Squircle_Tests/Pods-Squircle_Tests.debug.xcconfig"; sourceTree = ""; }; 48 | BA912335C0EB13E3080E3B83 /* Squircle.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Squircle.podspec; path = ../Squircle.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 49 | F8AFB9627F6E82DDE418539D /* Pods_Squircle_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Squircle_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 50 | /* End PBXFileReference section */ 51 | 52 | /* Begin PBXFrameworksBuildPhase section */ 53 | 607FACCD1AFB9204008FA782 /* Frameworks */ = { 54 | isa = PBXFrameworksBuildPhase; 55 | buildActionMask = 2147483647; 56 | files = ( 57 | 58F2BCBB9A2BEDDE90F14875 /* Pods_Squircle_Example.framework in Frameworks */, 58 | ); 59 | runOnlyForDeploymentPostprocessing = 0; 60 | }; 61 | 607FACE21AFB9204008FA782 /* Frameworks */ = { 62 | isa = PBXFrameworksBuildPhase; 63 | buildActionMask = 2147483647; 64 | files = ( 65 | C9860FC93E17B1C5D1B23BFA /* Pods_Squircle_Tests.framework in Frameworks */, 66 | ); 67 | runOnlyForDeploymentPostprocessing = 0; 68 | }; 69 | /* End PBXFrameworksBuildPhase section */ 70 | 71 | /* Begin PBXGroup section */ 72 | 4520015950D1B22F9243FC64 /* Frameworks */ = { 73 | isa = PBXGroup; 74 | children = ( 75 | F8AFB9627F6E82DDE418539D /* Pods_Squircle_Example.framework */, 76 | 04FCCCF2F3E3A88422FC8B03 /* Pods_Squircle_Tests.framework */, 77 | ); 78 | name = Frameworks; 79 | sourceTree = ""; 80 | }; 81 | 607FACC71AFB9204008FA782 = { 82 | isa = PBXGroup; 83 | children = ( 84 | 607FACF51AFB993E008FA782 /* Podspec Metadata */, 85 | 607FACD21AFB9204008FA782 /* Example for Squircle */, 86 | 607FACE81AFB9204008FA782 /* Tests */, 87 | 607FACD11AFB9204008FA782 /* Products */, 88 | A9859F25FD69545AC38145B5 /* Pods */, 89 | 4520015950D1B22F9243FC64 /* Frameworks */, 90 | ); 91 | sourceTree = ""; 92 | }; 93 | 607FACD11AFB9204008FA782 /* Products */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | 607FACD01AFB9204008FA782 /* Squircle_Example.app */, 97 | 607FACE51AFB9204008FA782 /* Squircle_Tests.xctest */, 98 | ); 99 | name = Products; 100 | sourceTree = ""; 101 | }; 102 | 607FACD21AFB9204008FA782 /* Example for Squircle */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */, 106 | 607FACD71AFB9204008FA782 /* ViewController.swift */, 107 | 607FACD91AFB9204008FA782 /* Main.storyboard */, 108 | 607FACDC1AFB9204008FA782 /* Images.xcassets */, 109 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, 110 | 607FACD31AFB9204008FA782 /* Supporting Files */, 111 | ); 112 | name = "Example for Squircle"; 113 | path = Squircle; 114 | sourceTree = ""; 115 | }; 116 | 607FACD31AFB9204008FA782 /* Supporting Files */ = { 117 | isa = PBXGroup; 118 | children = ( 119 | 607FACD41AFB9204008FA782 /* Info.plist */, 120 | ); 121 | name = "Supporting Files"; 122 | sourceTree = ""; 123 | }; 124 | 607FACE81AFB9204008FA782 /* Tests */ = { 125 | isa = PBXGroup; 126 | children = ( 127 | 607FACEB1AFB9204008FA782 /* BasicTests.swift */, 128 | 607FACE91AFB9204008FA782 /* Supporting Files */, 129 | ); 130 | path = Tests; 131 | sourceTree = ""; 132 | }; 133 | 607FACE91AFB9204008FA782 /* Supporting Files */ = { 134 | isa = PBXGroup; 135 | children = ( 136 | 607FACEA1AFB9204008FA782 /* Info.plist */, 137 | ); 138 | name = "Supporting Files"; 139 | sourceTree = ""; 140 | }; 141 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { 142 | isa = PBXGroup; 143 | children = ( 144 | BA912335C0EB13E3080E3B83 /* Squircle.podspec */, 145 | 5907B2BF3CDD5B41AFB9DD05 /* README.md */, 146 | 5718F198AC40766DD2E49343 /* LICENSE */, 147 | ); 148 | name = "Podspec Metadata"; 149 | sourceTree = ""; 150 | }; 151 | A9859F25FD69545AC38145B5 /* Pods */ = { 152 | isa = PBXGroup; 153 | children = ( 154 | 2AD31BB12E7DD7DFE7C2D8DB /* Pods-Squircle_Example.debug.xcconfig */, 155 | 1C6E433BD7F6FF8FD2D90E62 /* Pods-Squircle_Example.release.xcconfig */, 156 | 6AE1B410C2ECC79C31558EC3 /* Pods-Squircle_Tests.debug.xcconfig */, 157 | 179BB92D40BF1D3B085369FC /* Pods-Squircle_Tests.release.xcconfig */, 158 | ); 159 | name = Pods; 160 | sourceTree = ""; 161 | }; 162 | /* End PBXGroup section */ 163 | 164 | /* Begin PBXNativeTarget section */ 165 | 607FACCF1AFB9204008FA782 /* Squircle_Example */ = { 166 | isa = PBXNativeTarget; 167 | buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "Squircle_Example" */; 168 | buildPhases = ( 169 | 1FBD4EE1661EFE482219F859 /* [CP] Check Pods Manifest.lock */, 170 | 7A43152F207E027F00848808 /* SwiftLint */, 171 | 607FACCC1AFB9204008FA782 /* Sources */, 172 | 607FACCD1AFB9204008FA782 /* Frameworks */, 173 | 607FACCE1AFB9204008FA782 /* Resources */, 174 | 610DA86C8A8D88CCFF1E31A8 /* [CP] Embed Pods Frameworks */, 175 | ); 176 | buildRules = ( 177 | ); 178 | dependencies = ( 179 | ); 180 | name = Squircle_Example; 181 | productName = Squircle; 182 | productReference = 607FACD01AFB9204008FA782 /* Squircle_Example.app */; 183 | productType = "com.apple.product-type.application"; 184 | }; 185 | 607FACE41AFB9204008FA782 /* Squircle_Tests */ = { 186 | isa = PBXNativeTarget; 187 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "Squircle_Tests" */; 188 | buildPhases = ( 189 | DA7CD24010ADD7FCCE0A4135 /* [CP] Check Pods Manifest.lock */, 190 | 607FACE11AFB9204008FA782 /* Sources */, 191 | 607FACE21AFB9204008FA782 /* Frameworks */, 192 | 607FACE31AFB9204008FA782 /* Resources */, 193 | ); 194 | buildRules = ( 195 | ); 196 | dependencies = ( 197 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */, 198 | ); 199 | name = Squircle_Tests; 200 | productName = Tests; 201 | productReference = 607FACE51AFB9204008FA782 /* Squircle_Tests.xctest */; 202 | productType = "com.apple.product-type.bundle.unit-test"; 203 | }; 204 | /* End PBXNativeTarget section */ 205 | 206 | /* Begin PBXProject section */ 207 | 607FACC81AFB9204008FA782 /* Project object */ = { 208 | isa = PBXProject; 209 | attributes = { 210 | LastSwiftUpdateCheck = 0830; 211 | LastUpgradeCheck = 0930; 212 | ORGANIZATIONNAME = CocoaPods; 213 | TargetAttributes = { 214 | 607FACCF1AFB9204008FA782 = { 215 | CreatedOnToolsVersion = 6.3.1; 216 | LastSwiftMigration = 1020; 217 | }; 218 | 607FACE41AFB9204008FA782 = { 219 | CreatedOnToolsVersion = 6.3.1; 220 | LastSwiftMigration = 1020; 221 | TestTargetID = 607FACCF1AFB9204008FA782; 222 | }; 223 | }; 224 | }; 225 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "Squircle" */; 226 | compatibilityVersion = "Xcode 3.2"; 227 | developmentRegion = en; 228 | hasScannedForEncodings = 0; 229 | knownRegions = ( 230 | en, 231 | Base, 232 | ); 233 | mainGroup = 607FACC71AFB9204008FA782; 234 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */; 235 | projectDirPath = ""; 236 | projectRoot = ""; 237 | targets = ( 238 | 607FACCF1AFB9204008FA782 /* Squircle_Example */, 239 | 607FACE41AFB9204008FA782 /* Squircle_Tests */, 240 | ); 241 | }; 242 | /* End PBXProject section */ 243 | 244 | /* Begin PBXResourcesBuildPhase section */ 245 | 607FACCE1AFB9204008FA782 /* Resources */ = { 246 | isa = PBXResourcesBuildPhase; 247 | buildActionMask = 2147483647; 248 | files = ( 249 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */, 250 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, 251 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, 252 | ); 253 | runOnlyForDeploymentPostprocessing = 0; 254 | }; 255 | 607FACE31AFB9204008FA782 /* Resources */ = { 256 | isa = PBXResourcesBuildPhase; 257 | buildActionMask = 2147483647; 258 | files = ( 259 | ); 260 | runOnlyForDeploymentPostprocessing = 0; 261 | }; 262 | /* End PBXResourcesBuildPhase section */ 263 | 264 | /* Begin PBXShellScriptBuildPhase section */ 265 | 1FBD4EE1661EFE482219F859 /* [CP] Check Pods Manifest.lock */ = { 266 | isa = PBXShellScriptBuildPhase; 267 | buildActionMask = 2147483647; 268 | files = ( 269 | ); 270 | inputPaths = ( 271 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 272 | "${PODS_ROOT}/Manifest.lock", 273 | ); 274 | name = "[CP] Check Pods Manifest.lock"; 275 | outputPaths = ( 276 | "$(DERIVED_FILE_DIR)/Pods-Squircle_Example-checkManifestLockResult.txt", 277 | ); 278 | runOnlyForDeploymentPostprocessing = 0; 279 | shellPath = /bin/sh; 280 | 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"; 281 | showEnvVarsInLog = 0; 282 | }; 283 | 610DA86C8A8D88CCFF1E31A8 /* [CP] Embed Pods Frameworks */ = { 284 | isa = PBXShellScriptBuildPhase; 285 | buildActionMask = 2147483647; 286 | files = ( 287 | ); 288 | inputPaths = ( 289 | "${PODS_ROOT}/Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example-frameworks.sh", 290 | "${BUILT_PRODUCTS_DIR}/Squircle/Squircle.framework", 291 | ); 292 | name = "[CP] Embed Pods Frameworks"; 293 | outputPaths = ( 294 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Squircle.framework", 295 | ); 296 | runOnlyForDeploymentPostprocessing = 0; 297 | shellPath = /bin/sh; 298 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Squircle_Example/Pods-Squircle_Example-frameworks.sh\"\n"; 299 | showEnvVarsInLog = 0; 300 | }; 301 | 7A43152F207E027F00848808 /* SwiftLint */ = { 302 | isa = PBXShellScriptBuildPhase; 303 | buildActionMask = 2147483647; 304 | files = ( 305 | ); 306 | inputPaths = ( 307 | ); 308 | name = SwiftLint; 309 | outputPaths = ( 310 | ); 311 | runOnlyForDeploymentPostprocessing = 0; 312 | shellPath = /bin/sh; 313 | shellScript = "if which swiftlint >/dev/null; then\n\nif [ \"$CI\" == true ]; then\nswiftlint lint --strict\nelse\nswiftlint\nfi\n\nelse\necho \"error: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nexit 1\nfi"; 314 | }; 315 | DA7CD24010ADD7FCCE0A4135 /* [CP] Check Pods Manifest.lock */ = { 316 | isa = PBXShellScriptBuildPhase; 317 | buildActionMask = 2147483647; 318 | files = ( 319 | ); 320 | inputPaths = ( 321 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 322 | "${PODS_ROOT}/Manifest.lock", 323 | ); 324 | name = "[CP] Check Pods Manifest.lock"; 325 | outputPaths = ( 326 | "$(DERIVED_FILE_DIR)/Pods-Squircle_Tests-checkManifestLockResult.txt", 327 | ); 328 | runOnlyForDeploymentPostprocessing = 0; 329 | shellPath = /bin/sh; 330 | 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"; 331 | showEnvVarsInLog = 0; 332 | }; 333 | /* End PBXShellScriptBuildPhase section */ 334 | 335 | /* Begin PBXSourcesBuildPhase section */ 336 | 607FACCC1AFB9204008FA782 /* Sources */ = { 337 | isa = PBXSourcesBuildPhase; 338 | buildActionMask = 2147483647; 339 | files = ( 340 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */, 341 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, 342 | ); 343 | runOnlyForDeploymentPostprocessing = 0; 344 | }; 345 | 607FACE11AFB9204008FA782 /* Sources */ = { 346 | isa = PBXSourcesBuildPhase; 347 | buildActionMask = 2147483647; 348 | files = ( 349 | 607FACEC1AFB9204008FA782 /* BasicTests.swift in Sources */, 350 | ); 351 | runOnlyForDeploymentPostprocessing = 0; 352 | }; 353 | /* End PBXSourcesBuildPhase section */ 354 | 355 | /* Begin PBXTargetDependency section */ 356 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = { 357 | isa = PBXTargetDependency; 358 | target = 607FACCF1AFB9204008FA782 /* Squircle_Example */; 359 | targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */; 360 | }; 361 | /* End PBXTargetDependency section */ 362 | 363 | /* Begin PBXVariantGroup section */ 364 | 607FACD91AFB9204008FA782 /* Main.storyboard */ = { 365 | isa = PBXVariantGroup; 366 | children = ( 367 | 607FACDA1AFB9204008FA782 /* Base */, 368 | ); 369 | name = Main.storyboard; 370 | sourceTree = ""; 371 | }; 372 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { 373 | isa = PBXVariantGroup; 374 | children = ( 375 | 607FACDF1AFB9204008FA782 /* Base */, 376 | ); 377 | name = LaunchScreen.xib; 378 | sourceTree = ""; 379 | }; 380 | /* End PBXVariantGroup section */ 381 | 382 | /* Begin XCBuildConfiguration section */ 383 | 607FACED1AFB9204008FA782 /* Debug */ = { 384 | isa = XCBuildConfiguration; 385 | buildSettings = { 386 | ALWAYS_SEARCH_USER_PATHS = NO; 387 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 388 | CLANG_CXX_LIBRARY = "libc++"; 389 | CLANG_ENABLE_MODULES = YES; 390 | CLANG_ENABLE_OBJC_ARC = YES; 391 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 392 | CLANG_WARN_BOOL_CONVERSION = YES; 393 | CLANG_WARN_COMMA = YES; 394 | CLANG_WARN_CONSTANT_CONVERSION = YES; 395 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 396 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 397 | CLANG_WARN_EMPTY_BODY = YES; 398 | CLANG_WARN_ENUM_CONVERSION = YES; 399 | CLANG_WARN_INFINITE_RECURSION = YES; 400 | CLANG_WARN_INT_CONVERSION = YES; 401 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 402 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 403 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 404 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 405 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 406 | CLANG_WARN_STRICT_PROTOTYPES = YES; 407 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 408 | CLANG_WARN_UNREACHABLE_CODE = YES; 409 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 410 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 411 | COPY_PHASE_STRIP = NO; 412 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 413 | ENABLE_STRICT_OBJC_MSGSEND = YES; 414 | ENABLE_TESTABILITY = YES; 415 | GCC_C_LANGUAGE_STANDARD = gnu99; 416 | GCC_DYNAMIC_NO_PIC = NO; 417 | GCC_NO_COMMON_BLOCKS = YES; 418 | GCC_OPTIMIZATION_LEVEL = 0; 419 | GCC_PREPROCESSOR_DEFINITIONS = ( 420 | "DEBUG=1", 421 | "$(inherited)", 422 | ); 423 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 424 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 425 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 426 | GCC_WARN_UNDECLARED_SELECTOR = YES; 427 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 428 | GCC_WARN_UNUSED_FUNCTION = YES; 429 | GCC_WARN_UNUSED_VARIABLE = YES; 430 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 431 | MTL_ENABLE_DEBUG_INFO = YES; 432 | ONLY_ACTIVE_ARCH = YES; 433 | SDKROOT = iphoneos; 434 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 435 | }; 436 | name = Debug; 437 | }; 438 | 607FACEE1AFB9204008FA782 /* Release */ = { 439 | isa = XCBuildConfiguration; 440 | buildSettings = { 441 | ALWAYS_SEARCH_USER_PATHS = NO; 442 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 443 | CLANG_CXX_LIBRARY = "libc++"; 444 | CLANG_ENABLE_MODULES = YES; 445 | CLANG_ENABLE_OBJC_ARC = YES; 446 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 447 | CLANG_WARN_BOOL_CONVERSION = YES; 448 | CLANG_WARN_COMMA = YES; 449 | CLANG_WARN_CONSTANT_CONVERSION = YES; 450 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 451 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 452 | CLANG_WARN_EMPTY_BODY = YES; 453 | CLANG_WARN_ENUM_CONVERSION = YES; 454 | CLANG_WARN_INFINITE_RECURSION = YES; 455 | CLANG_WARN_INT_CONVERSION = YES; 456 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 457 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 458 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 459 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 460 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 461 | CLANG_WARN_STRICT_PROTOTYPES = YES; 462 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 463 | CLANG_WARN_UNREACHABLE_CODE = YES; 464 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 465 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 466 | COPY_PHASE_STRIP = NO; 467 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 468 | ENABLE_NS_ASSERTIONS = NO; 469 | ENABLE_STRICT_OBJC_MSGSEND = YES; 470 | GCC_C_LANGUAGE_STANDARD = gnu99; 471 | GCC_NO_COMMON_BLOCKS = YES; 472 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 473 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 474 | GCC_WARN_UNDECLARED_SELECTOR = YES; 475 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 476 | GCC_WARN_UNUSED_FUNCTION = YES; 477 | GCC_WARN_UNUSED_VARIABLE = YES; 478 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 479 | MTL_ENABLE_DEBUG_INFO = NO; 480 | SDKROOT = iphoneos; 481 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 482 | VALIDATE_PRODUCT = YES; 483 | }; 484 | name = Release; 485 | }; 486 | 607FACF01AFB9204008FA782 /* Debug */ = { 487 | isa = XCBuildConfiguration; 488 | baseConfigurationReference = 2AD31BB12E7DD7DFE7C2D8DB /* Pods-Squircle_Example.debug.xcconfig */; 489 | buildSettings = { 490 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 491 | INFOPLIST_FILE = Squircle/Info.plist; 492 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 493 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 494 | MODULE_NAME = ExampleApp; 495 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; 496 | PRODUCT_NAME = "$(TARGET_NAME)"; 497 | SWIFT_VERSION = 5.0; 498 | }; 499 | name = Debug; 500 | }; 501 | 607FACF11AFB9204008FA782 /* Release */ = { 502 | isa = XCBuildConfiguration; 503 | baseConfigurationReference = 1C6E433BD7F6FF8FD2D90E62 /* Pods-Squircle_Example.release.xcconfig */; 504 | buildSettings = { 505 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 506 | INFOPLIST_FILE = Squircle/Info.plist; 507 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 508 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 509 | MODULE_NAME = ExampleApp; 510 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; 511 | PRODUCT_NAME = "$(TARGET_NAME)"; 512 | SWIFT_VERSION = 5.0; 513 | }; 514 | name = Release; 515 | }; 516 | 607FACF31AFB9204008FA782 /* Debug */ = { 517 | isa = XCBuildConfiguration; 518 | baseConfigurationReference = 6AE1B410C2ECC79C31558EC3 /* Pods-Squircle_Tests.debug.xcconfig */; 519 | buildSettings = { 520 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 521 | GCC_PREPROCESSOR_DEFINITIONS = ( 522 | "DEBUG=1", 523 | "$(inherited)", 524 | ); 525 | INFOPLIST_FILE = Tests/Info.plist; 526 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 527 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 528 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 529 | PRODUCT_NAME = "$(TARGET_NAME)"; 530 | SWIFT_VERSION = 5.0; 531 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Squircle_Example.app/Squircle_Example"; 532 | }; 533 | name = Debug; 534 | }; 535 | 607FACF41AFB9204008FA782 /* Release */ = { 536 | isa = XCBuildConfiguration; 537 | baseConfigurationReference = 179BB92D40BF1D3B085369FC /* Pods-Squircle_Tests.release.xcconfig */; 538 | buildSettings = { 539 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 540 | INFOPLIST_FILE = Tests/Info.plist; 541 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 542 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 543 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 544 | PRODUCT_NAME = "$(TARGET_NAME)"; 545 | SWIFT_VERSION = 5.0; 546 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Squircle_Example.app/Squircle_Example"; 547 | }; 548 | name = Release; 549 | }; 550 | /* End XCBuildConfiguration section */ 551 | 552 | /* Begin XCConfigurationList section */ 553 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "Squircle" */ = { 554 | isa = XCConfigurationList; 555 | buildConfigurations = ( 556 | 607FACED1AFB9204008FA782 /* Debug */, 557 | 607FACEE1AFB9204008FA782 /* Release */, 558 | ); 559 | defaultConfigurationIsVisible = 0; 560 | defaultConfigurationName = Release; 561 | }; 562 | 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "Squircle_Example" */ = { 563 | isa = XCConfigurationList; 564 | buildConfigurations = ( 565 | 607FACF01AFB9204008FA782 /* Debug */, 566 | 607FACF11AFB9204008FA782 /* Release */, 567 | ); 568 | defaultConfigurationIsVisible = 0; 569 | defaultConfigurationName = Release; 570 | }; 571 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "Squircle_Tests" */ = { 572 | isa = XCConfigurationList; 573 | buildConfigurations = ( 574 | 607FACF31AFB9204008FA782 /* Debug */, 575 | 607FACF41AFB9204008FA782 /* Release */, 576 | ); 577 | defaultConfigurationIsVisible = 0; 578 | defaultConfigurationName = Release; 579 | }; 580 | /* End XCConfigurationList section */ 581 | }; 582 | rootObject = 607FACC81AFB9204008FA782 /* Project object */; 583 | } 584 | -------------------------------------------------------------------------------- /Example/Squircle.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Squircle.xcodeproj/xcshareddata/xcschemes/Squircle-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 45 | 46 | 48 | 54 | 55 | 56 | 57 | 58 | 64 | 65 | 66 | 67 | 68 | 69 | 79 | 81 | 87 | 88 | 89 | 90 | 91 | 92 | 98 | 100 | 106 | 107 | 108 | 109 | 111 | 112 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /Example/Squircle.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/Squircle.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/Squircle/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // Squircle 4 | // 5 | // Created by neobeppe on 04/10/2018. 6 | // Copyright (c) 2018 neobeppe. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(_ application: UIApplication) { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(_ application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(_ application: UIApplication) { 33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(_ application: UIApplication) { 37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 38 | } 39 | 40 | func applicationWillTerminate(_ application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /Example/Squircle/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 25 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Example/Squircle/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /Example/Squircle/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ios-marketing", 45 | "size" : "1024x1024", 46 | "scale" : "1x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Example/Squircle/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 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /Example/Squircle/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // Squircle 4 | // 5 | // Created by neobeppe on 04/10/2018. 6 | // Copyright (c) 2018 neobeppe. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import Squircle 11 | 12 | class ViewController: UIViewController { 13 | 14 | @IBOutlet weak var squircle1View: UIView! 15 | @IBOutlet weak var squircle2View: UIView! 16 | @IBOutlet weak var squircle3View: UIView! 17 | 18 | var showSquircles = true { 19 | didSet { 20 | if self.showSquircles { 21 | squircle1View.squircle() 22 | squircle2View.squircleWithBorder(width: 5.0, color: .orange) 23 | squircle3View.squircleWithBorder(width: 5.0, color: .orange) 24 | } else { 25 | squircle1View.removeSquircle() 26 | squircle2View.removeSquircle() 27 | squircle3View.removeSquircleBorder() 28 | } 29 | 30 | } 31 | } 32 | 33 | override func viewDidLoad() { 34 | 35 | super.viewDidLoad() 36 | showSquircles = true 37 | } 38 | 39 | override func didReceiveMemoryWarning() { 40 | super.didReceiveMemoryWarning() 41 | // Dispose of any resources that can be recreated. 42 | } 43 | 44 | @IBAction func toggleSquircles() { 45 | showSquircles = !showSquircles 46 | } 47 | 48 | } 49 | 50 | -------------------------------------------------------------------------------- /Example/Tests/BasicTests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | @testable import Squircle 3 | 4 | class BasicTests: XCTestCase { 5 | 6 | func testImplementation() { 7 | let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 8 | view.squircle() 9 | 10 | // Test that we have a squircle mask 11 | var mask = view.layer.mask 12 | XCTAssertNotNil(mask) 13 | 14 | // Test that we can remove the squircle 15 | view.removeSquircle() 16 | mask = view.layer.mask 17 | XCTAssertNil(mask) 18 | } 19 | 20 | func testPoints() { 21 | let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 22 | let path = view.layer.squirclePath 23 | 24 | let zeroPoint = CGPoint.zero 25 | XCTAssertFalse(path.contains(zeroPoint)) 26 | 27 | let midPoint = view.center 28 | XCTAssertTrue(path.contains(midPoint)) 29 | 30 | XCTAssertNotNil(path) 31 | } 32 | 33 | func testBorderImplementation() { 34 | let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 35 | view.squircleWithBorder(width: 5.0, color: .orange) 36 | 37 | // Test that we have a border 38 | var count = borderCount(view: view) 39 | XCTAssertTrue(count == 1) 40 | 41 | // Test that we can remove border 42 | view.removeSquircleBorder() 43 | count = borderCount(view: view) 44 | XCTAssertTrue(count == 0) 45 | } 46 | 47 | func borderCount(view: UIView) -> Int { 48 | return view.layer.sublayers?.filter({ $0.name == squircleBorderName }).count ?? 0 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Example/Tests/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 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/fastlane/Appfile: -------------------------------------------------------------------------------- 1 | # app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app 2 | # apple_id("[[APPLE_ID]]") # Your Apple email address 3 | 4 | 5 | # For more information about the Appfile, see: 6 | # https://docs.fastlane.tools/advanced/#appfile 7 | -------------------------------------------------------------------------------- /Example/fastlane/Fastfile: -------------------------------------------------------------------------------- 1 | # This file contains the fastlane.tools configuration 2 | # You can find the documentation at https://docs.fastlane.tools 3 | # 4 | # For a list of all available actions, check out 5 | # 6 | # https://docs.fastlane.tools/actions 7 | # 8 | # For a list of all available plugins, check out 9 | # 10 | # https://docs.fastlane.tools/plugins/available-plugins 11 | # 12 | 13 | # Uncomment the line if you want fastlane to automatically update itself 14 | update_fastlane 15 | 16 | default_platform(:ios) 17 | 18 | platform :ios do 19 | 20 | lane :ci do 21 | pod_lint 22 | lint 23 | test 24 | coverage 25 | end 26 | 27 | lane :pod_lint do 28 | Dir.chdir("../..") do 29 | sh("pod lib lint") 30 | end 31 | end 32 | 33 | lane :lint do 34 | swiftlint( 35 | mode: :lint, 36 | config_file: ".swiftlint.yml", 37 | ignore_exit_status: false 38 | ) 39 | end 40 | 41 | lane :test do 42 | cocoapods( 43 | use_bundle_exec: false 44 | ) 45 | scan( 46 | scheme: "Squircle-Example", 47 | device: "iPhone 14" 48 | ) 49 | end 50 | 51 | lane :coverage do 52 | slather( 53 | travis: true, 54 | proj: "Squircle.xcodeproj", 55 | workspace: "Squircle.xcworkspace", 56 | scheme: "Squircle-Example", 57 | binary_basename: "Squircle", 58 | source_directory: "../Squircle", 59 | simple_output: true, 60 | coveralls: true 61 | ) 62 | end 63 | 64 | lane :clean do 65 | clean_build_artifacts 66 | end 67 | 68 | after_all do |lane| 69 | clean 70 | end 71 | 72 | end 73 | -------------------------------------------------------------------------------- /Example/fastlane/README.md: -------------------------------------------------------------------------------- 1 | fastlane documentation 2 | ================ 3 | # Installation 4 | 5 | Make sure you have the latest version of the Xcode command line tools installed: 6 | 7 | ``` 8 | xcode-select --install 9 | ``` 10 | 11 | Install _fastlane_ using 12 | ``` 13 | [sudo] gem install fastlane -NV 14 | ``` 15 | or alternatively using `brew cask install fastlane` 16 | 17 | # Available Actions 18 | ## iOS 19 | ### ios ci 20 | ``` 21 | fastlane ios ci 22 | ``` 23 | 24 | ### ios lint 25 | ``` 26 | fastlane ios lint 27 | ``` 28 | 29 | ### ios test 30 | ``` 31 | fastlane ios test 32 | ``` 33 | 34 | ### ios coverage 35 | ``` 36 | fastlane ios coverage 37 | ``` 38 | 39 | ### ios clean 40 | ``` 41 | fastlane ios clean 42 | ``` 43 | 44 | 45 | ---- 46 | 47 | This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run. 48 | More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). 49 | The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools). 50 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 Giuseppe Travasoni 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.3 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: "Squircle", 8 | platforms: [ 9 | .iOS(.v9) 10 | ], 11 | products: [ 12 | .library(name: "Squircle", targets: ["Squircle"]), 13 | ], 14 | targets: [ 15 | .target( 16 | name: "Squircle", 17 | path: "Squircle"), 18 | ] 19 | ) 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Squircle 3 | 4 | [![Build Status](https://travis-ci.org/neobeppe/Squircle.svg?branch=master)](https://travis-ci.org/neobeppe/Squircle) [![Version](https://img.shields.io/cocoapods/v/Squircle.svg?style=flat)](http://cocoapods.org/pods/Squircle) [![License](https://img.shields.io/cocoapods/l/Squircle.svg?style=flat)](http://cocoapods.org/pods/Squircle) [![Platform](https://img.shields.io/cocoapods/p/Squircle.svg?style=flat)](http://cocoapods.org/pods/Squircle) [![Coverage Status](https://coveralls.io/repos/github/neobeppe/Squircle/badge.svg)](https://coveralls.io/github/neobeppe/Squircle?branch=master) [![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fneobeppe%2FSquircle%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/neobeppe/Squircle) [![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fneobeppe%2FSquircle%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/neobeppe/Squircle) [![](https://neobeppe.github.io/Squircle/badge.svg)](https://neobeppe.github.io/Squircle/) 5 | 6 | ## Example 7 | 8 | To run the example project, clone the repo, and run `pod install` from the Example directory first. 9 | 10 | 11 | ## Installation 12 | 13 | ### Swift Package Manager 14 | 15 | Squircle is available through SPM. To install it, simply add the URL in Xcode: `https://github.com/neobeppe/Squircle` 16 | 17 | ### Cocoapods 18 | 19 | Squircle is available through [CocoaPods](http://cocoapods.org). To install it, simply add the following line to your Podfile: 20 | 21 | ```ruby 22 | 23 | pod 'Squircle' 24 | 25 | ``` 26 | 27 | ## Usage 28 | 29 | ### Squircle 30 | 31 | Squircle is an UIView extension, and can be used in different ways: 32 | 33 | ```swift 34 | let view = UIView() 35 | view.squircle() 36 | ``` 37 | 38 | Just apply conventional squircle radius to the view. If the view is a square, i'll obtain the same effect as iOS springboard icons, if it's a rectangle i'll obtain rounded corners based on a square built on smallest side. 39 | 40 | Squircle is also an CALayer extension, permitting you to add a squircle mask directly on a layer. 41 | Rules are the same as the UIView methods, invocation is: 42 | 43 | ```swift 44 | let layer = CALayer() 45 | layer.applySquircle() 46 | ``` 47 | 48 | ### Squircle with border 49 | 50 | If you want to apply squircle with a border use the dedicated methods: 51 | 52 | 53 | ```swift 54 | let view = UIView() 55 | view.squircleWithBorder(width: CGFloat, color: UIColor) 56 | ``` 57 | 58 | ```swift 59 | let layer = CALayer() 60 | layer.applySquircleWithBorder(width: CGFloat, color: UIColor) 61 | ``` 62 | 63 | ### Remove squircle 64 | 65 | To remove the squircle from a UIView: 66 | 67 | 68 | ```swift 69 | view.removeSquircle() 70 | ``` 71 | 72 | or directly on CALayer: 73 | 74 | 75 | ```swift 76 | layer.removeSquircle() 77 | ``` 78 | 79 | If a border has been added to the squircle, both functions above will remove it too. 80 | 81 | 82 | ### Remove border 83 | 84 | To remove only the border from a squircle: 85 | 86 | 87 | ```swift 88 | view.removeSquircleBorder() 89 | ``` 90 | 91 | or directly on CALayer: 92 | 93 | 94 | ```swift 95 | layer.removeSquircleBorder() 96 | ``` 97 | 98 | 99 | ## License 100 | 101 | Squircle is available under the MIT license. See the LICENSE file for more info. 102 | -------------------------------------------------------------------------------- /Squircle.podspec: -------------------------------------------------------------------------------- 1 | 2 | Pod::Spec.new do |s| 3 | s.name = 'Squircle' 4 | s.version = '2.2.2' 5 | s.summary = 'Squircle rounding corner for UIView' 6 | 7 | s.description = <<-DESC 8 | Lightweight library to apply a squircle rounded corner to any UIView or CALayer. 9 | DESC 10 | 11 | s.homepage = 'https://github.com/neobeppe/Squircle' 12 | s.license = { :type => 'MIT', :file => 'LICENSE' } 13 | s.author = { 'Giuseppe Travasoni' => 'giuseppe.travasoni@gmail.com' } 14 | s.source = { :git => 'https://github.com/neobeppe/Squircle.git', :tag => s.version.to_s } 15 | 16 | s.ios.deployment_target = '12.0' 17 | s.source_files = 'Squircle/**/*' 18 | s.frameworks = 'UIKit', 'QuartzCore', 'CoreGraphics' 19 | 20 | s.swift_version = '5.0' 21 | 22 | end 23 | -------------------------------------------------------------------------------- /Squircle/Internal/CGPoint+Delta.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CGPoint+Delta.swift 3 | // Squircle 4 | // 5 | // Created by Giuseppe Travasoni on 24/04/2019. 6 | // 7 | 8 | import Foundation 9 | import CoreGraphics 10 | 11 | extension CGPoint { 12 | 13 | static var xDelta: CGFloat = 0 14 | static var yDelta: CGFloat = 0 15 | 16 | static func xDeltaPoint(x: CGFloat, y: CGFloat) -> CGPoint { 17 | return CGPoint(x: xDelta + x, y: y) 18 | } 19 | 20 | static func yDeltaPoint(x: CGFloat, y: CGFloat) -> CGPoint { 21 | return CGPoint(x: x, y: yDelta + y) 22 | } 23 | 24 | static func deltaPoint(x: CGFloat, y: CGFloat) -> CGPoint { 25 | return CGPoint(x: xDelta + x, y: yDelta + y) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Squircle/Internal/Checkpoints.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Chepoints.swift 3 | // Squircle 4 | // 5 | // Created by Giuseppe Travasoni on 24/04/2019. 6 | // 7 | 8 | import Foundation 9 | import CoreGraphics 10 | 11 | internal struct Checkpoints { 12 | 13 | let width: CGFloat 14 | let height: CGFloat 15 | 16 | let startRatio: CGFloat = 256/87.15 17 | 18 | let checkpoint0Ratio: CGFloat = 256/219.33 19 | let checkpoint1Ratio: CGFloat = 256/198.35 20 | let checkpoint2Ratio: CGFloat = 256/206.63 21 | let checkpoint3Ratio: CGFloat = 256/251.73 22 | let checkpoint4Ratio: CGFloat = 256/234.35 23 | let checkpoint5Ratio: CGFloat = 256/246.24 24 | 25 | var squircleSide: CGFloat { return min(width, height) } 26 | 27 | var cornerDelta: CGFloat { return squircleSide/startRatio } 28 | var checkpoint0: CGFloat { return squircleSide/checkpoint0Ratio } 29 | var checkpoint1: CGFloat { return squircleSide/checkpoint1Ratio } 30 | var checkpoint2: CGFloat { return squircleSide/checkpoint2Ratio } 31 | var checkpoint3: CGFloat { return squircleSide/checkpoint3Ratio } 32 | var checkpoint4: CGFloat { return squircleSide/checkpoint4Ratio } 33 | var checkpoint5: CGFloat { return squircleSide/checkpoint5Ratio } 34 | } 35 | -------------------------------------------------------------------------------- /Squircle/Internal/Squircle+Internal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Squircle+Internal.swift 3 | // Squircle 4 | // 5 | // Created by Giuseppe Travasoni on 24/04/2019. 6 | // 7 | 8 | import Foundation 9 | import QuartzCore 10 | import UIKit 11 | 12 | extension CALayer { 13 | 14 | internal var squirclePath: UIBezierPath { 15 | 16 | let width = bounds.width 17 | let height = bounds.height 18 | let squircleSide = min(width, height) 19 | CGPoint.xDelta = abs(squircleSide - width) 20 | CGPoint.yDelta = abs(squircleSide - height) 21 | 22 | let checkpoints = Checkpoints(width: bounds.width, height: bounds.height) 23 | 24 | let path = UIBezierPath() 25 | path.move(to: CGPoint(x: checkpoints.cornerDelta, y: 0)) 26 | 27 | path.addLine(to: CGPoint(x: width-checkpoints.cornerDelta, y: 0)) 28 | path.addCurve(to: CGPoint.xDeltaPoint(x: checkpoints.checkpoint0, y: squircleSide-checkpoints.checkpoint3), 29 | controlPoint1: CGPoint.xDeltaPoint(x: checkpoints.checkpoint1, y: 0), 30 | controlPoint2: CGPoint.xDeltaPoint(x: checkpoints.checkpoint2, y: 0)) 31 | path.addCurve(to: CGPoint.xDeltaPoint(x: checkpoints.checkpoint3, y: squircleSide-checkpoints.checkpoint0), 32 | controlPoint1: CGPoint.xDeltaPoint(x: checkpoints.checkpoint4, y: squircleSide-checkpoints.checkpoint5), 33 | controlPoint2: CGPoint.xDeltaPoint(x: checkpoints.checkpoint5, y: squircleSide-checkpoints.checkpoint4)) 34 | path.addCurve(to: CGPoint.xDeltaPoint(x: squircleSide, y: checkpoints.cornerDelta), 35 | controlPoint1: CGPoint.xDeltaPoint(x: squircleSide, y: squircleSide-checkpoints.checkpoint2), 36 | controlPoint2: CGPoint.xDeltaPoint(x: squircleSide, y: squircleSide-checkpoints.checkpoint1)) 37 | 38 | path.addLine(to: CGPoint(x: width, y: height-checkpoints.cornerDelta)) 39 | path.addCurve(to: CGPoint.deltaPoint(x: checkpoints.checkpoint3, y: checkpoints.checkpoint0), 40 | controlPoint1: CGPoint.deltaPoint(x: squircleSide, y: checkpoints.checkpoint1), 41 | controlPoint2: CGPoint.deltaPoint(x: squircleSide, y: checkpoints.checkpoint2)) 42 | path.addCurve(to: CGPoint.deltaPoint(x: checkpoints.checkpoint0, y: checkpoints.checkpoint3), 43 | controlPoint1: CGPoint.deltaPoint(x: checkpoints.checkpoint5, y: checkpoints.checkpoint4), 44 | controlPoint2: CGPoint.deltaPoint(x: checkpoints.checkpoint4, y: checkpoints.checkpoint5)) 45 | path.addCurve(to: CGPoint.deltaPoint(x: squircleSide-checkpoints.cornerDelta, y: squircleSide), 46 | controlPoint1: CGPoint.deltaPoint(x: checkpoints.checkpoint2, y: squircleSide), 47 | controlPoint2: CGPoint.deltaPoint(x: checkpoints.checkpoint1, y: squircleSide)) 48 | 49 | path.addLine(to: CGPoint(x: checkpoints.cornerDelta, y: height)) 50 | path.addCurve(to: CGPoint.yDeltaPoint(x: squircleSide-checkpoints.checkpoint0, y: checkpoints.checkpoint3), 51 | controlPoint1: CGPoint.yDeltaPoint(x: squircleSide-checkpoints.checkpoint1, y: squircleSide), 52 | controlPoint2: CGPoint.yDeltaPoint(x: squircleSide-checkpoints.checkpoint2, y: squircleSide)) 53 | path.addCurve(to: CGPoint.yDeltaPoint(x: squircleSide-checkpoints.checkpoint3, y: checkpoints.checkpoint0), 54 | controlPoint1: CGPoint.yDeltaPoint(x: squircleSide-checkpoints.checkpoint4, y: checkpoints.checkpoint5), 55 | controlPoint2: CGPoint.yDeltaPoint(x: squircleSide-checkpoints.checkpoint5, y: checkpoints.checkpoint4)) 56 | path.addCurve(to: CGPoint.yDeltaPoint(x: 0, y: squircleSide-checkpoints.cornerDelta), 57 | controlPoint1: CGPoint.yDeltaPoint(x: 0, y: checkpoints.checkpoint2), 58 | controlPoint2: CGPoint.yDeltaPoint(x: 0, y: checkpoints.checkpoint1)) 59 | 60 | path.addLine(to: CGPoint(x: 0, y: checkpoints.cornerDelta)) 61 | path.addCurve(to: CGPoint(x: squircleSide-checkpoints.checkpoint3, y: squircleSide-checkpoints.checkpoint0), 62 | controlPoint1: CGPoint(x: 0, y: squircleSide-checkpoints.checkpoint1), 63 | controlPoint2: CGPoint(x: 0, y: squircleSide-checkpoints.checkpoint2)) 64 | path.addCurve(to: CGPoint(x: squircleSide-checkpoints.checkpoint0, y: squircleSide-checkpoints.checkpoint3), 65 | controlPoint1: CGPoint(x: squircleSide-checkpoints.checkpoint5, y: squircleSide-checkpoints.checkpoint4), 66 | controlPoint2: CGPoint(x: squircleSide-checkpoints.checkpoint4, y: squircleSide-checkpoints.checkpoint5)) 67 | path.addCurve(to: CGPoint(x: checkpoints.cornerDelta, y: 0), 68 | controlPoint1: CGPoint(x: squircleSide-checkpoints.checkpoint2, y: 0), 69 | controlPoint2: CGPoint(x: squircleSide-checkpoints.checkpoint1, y: 0)) 70 | 71 | path.close() 72 | 73 | return path 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /Squircle/Squircle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Squircle.swift 3 | // Squircle 4 | // 5 | // Created by Giuseppe Travasoni on 10/04/18. 6 | // 7 | 8 | import UIKit 9 | import QuartzCore 10 | 11 | extension UIView { 12 | 13 | /** 14 | Apply squircle corner radius. 15 | */ 16 | public func squircle() { 17 | self.layer.applySquircle() 18 | } 19 | 20 | /** 21 | Apply squircle corner radius with a border. 22 | - parameters: 23 | - borderWidth: Border width 24 | - borderColor: Border color 25 | */ 26 | public func squircleWithBorder(width: CGFloat, color: UIColor) { 27 | self.layer.applySquircleWithBorder(width: width, color: color) 28 | } 29 | 30 | /** 31 | Remove squircle corner radius and border. 32 | */ 33 | public func removeSquircle() { 34 | self.layer.removeSquircle() 35 | } 36 | 37 | /** 38 | Remove squircle border. 39 | */ 40 | public func removeSquircleBorder() { 41 | self.layer.removeSquircleBorder() 42 | } 43 | } 44 | 45 | internal let squircleBorderName = "squircleBorder" 46 | 47 | extension CALayer { 48 | 49 | /** 50 | Apply squircle corner radius. 51 | */ 52 | public func applySquircle() { 53 | let maskLayer = CAShapeLayer() 54 | maskLayer.path = squirclePath.cgPath 55 | self.mask = maskLayer 56 | } 57 | 58 | /** 59 | Apply squircle corner radius with a border. 60 | - parameters: 61 | - borderWidth: Border width 62 | - borderColor: Border color 63 | */ 64 | public func applySquircleWithBorder(width: CGFloat, color: UIColor) { 65 | applySquircle() 66 | let borderLayer = CAShapeLayer() 67 | borderLayer.name = squircleBorderName 68 | borderLayer.path = squirclePath.cgPath 69 | borderLayer.lineWidth = width 70 | borderLayer.strokeColor = color.cgColor 71 | borderLayer.fillColor = UIColor.clear.cgColor 72 | borderLayer.frame = self.bounds 73 | self.addSublayer(borderLayer) 74 | } 75 | 76 | /** 77 | Remove the squircle corner radius and border. 78 | */ 79 | public func removeSquircle() { 80 | removeSquircleBorder() 81 | self.mask?.removeFromSuperlayer() 82 | } 83 | 84 | /** 85 | Remove the squircle border. 86 | */ 87 | public func removeSquircleBorder() { 88 | self.sublayers? 89 | .filter { layer in return layer.name == squircleBorderName } 90 | .forEach { layer in 91 | layer.removeFromSuperlayer() 92 | } 93 | } 94 | 95 | } 96 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj --------------------------------------------------------------------------------