A Swift iOS rewrite of Andy Finnell's VectorBoolean bezier path tools
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Swift VectorBoolean.xcodeproj Upgrade project settings for Xcode 9 Nov 26, 2017
Swift VectorBoolean Switch to current pi constant Nov 26, 2017
Swift VectorBooleanTests Upgrade to Swift 3.0 Oct 9, 2016
images Added a readme file and images for GitHub Sep 1, 2015
LICENSE.txt Added Andrew Finnell's original license file Aug 8, 2015
README.md More readme Nov 26, 2017


Swift VectorBoolean for iOS

✻ Updated for Xcode 9 and Swift 3.2


  • Now contains a framework target thanks to Lin Wang.
  • Beginning to include CocoaPods support thanks to Avishay Cohen.
  • Many thanks to Louis D'hauwe for his work translating this entire project to Swift 3 for Xcode 8
  • The old version for Xcode 8 Swift 3 is available in the "Xcode_8_Swift_3" branch.
  • The old version for Xcode 7 Swift 2 is available in the "Xcode_7_Swift_2" branch.

About VectorBoolean

This is an iOS rewrite of the code for Andy Finnell's article How to implement boolean operations on bezier paths. It is a literal translation of his original Objective-C Mac OS X VectorBoolean library with a tiny bit of Swifty goodness introduced.

It compiles under XCode 9 and includes an iOS app which tests the bezier operations and serves as an example of using the code.

I wrote this because I had a specific need for boolean operations on bezier paths in iOS. Rather than simply modifing the original Objective-C code to work on iOS, I bit the bullet and decided to redo it in Swift. Six months after beginning, I'm pleased to share it with you. I hope you enjoy it.

Note: This code is now compatible with both 32-bit and 64-bit iOS devices. Due to numeric precision limitations of the 32 bit version of iOS however, this code will misbehave on fractionally dimensioned bezier curves for the 32-bit case. For example, a line from 0.01, 0.01 to 0.02, 0.02 will be behave as a single point on an iPhone 4s but not on an iPhone 5s.

For the majority of applications this should not be a significant limitation.

iOS Screens