Clipper2

April 20, 2026 · View on GitHub

A Polygon Clipping, Offsetting and Triangulation library (in C++, C# & Delphi)

GitHub Actions C++ status C# License Nuget documentation

The Clipper2 library performs intersection, union, difference and XOR boolean operations on both simple and complex polygons. It also performs polygon offsetting, and Constrained Delaunay Triangulation. This is a major update of my original Clipper library that was written about 15 years ago. That library I'm now calling Clipper1, and while it still works very well, Clipper2 is just better.

- CAUTION: The triangulation code is buggy and I regret releasing it when I did.
- I'm working on fixes but these may still be weeks away. Sorry.

Compilers

Clipper2 can be compiled using any one of three supported programming languages: C++, or C#, or Delphi Pascal. The library can also be accessed from other languages by dynamically linking to exported functions in the C++ compiled Clipper2 library. (The C++ compiled code is measurably faster so, where performance is critical, even C# and Delphi developers may prefer this approach in application development.)

Lang.Requirements
C++:Requires C++17, or
C#:The library uses Standard Library 2.0 but the sample code uses .NET6, or
Delphi:Compiles with any version of Delphi from version 7 to current.

Documentation

Extensive HTML documentation

Examples

Clipping

C++ https://github.com/AngusJohnson/Clipper2/blob/fa7add77364eb3877dd1b8caf9b3cbd5486347f6/CPP/Examples/SimpleClipping/SimpleClipping.cpp#L29-L34
C# https://github.com/AngusJohnson/Clipper2/blob/fa7add77364eb3877dd1b8caf9b3cbd5486347f6/CSharp/Clipper2Lib.Examples/ConsoleDemo/Main.cs#L112-L116
Delphi https://github.com/AngusJohnson/Clipper2/blob/fa7add77364eb3877dd1b8caf9b3cbd5486347f6/Delphi/Examples/Example1/Example1.dpr#L21-L26

clipperB

Inflating (aka Offsetting)

C++ https://github.com/AngusJohnson/Clipper2/blob/fa7add77364eb3877dd1b8caf9b3cbd5486347f6/CPP/Examples/Inflate/Inflate.cpp#L36-L47
C# https://github.com/AngusJohnson/Clipper2/blob/fa7add77364eb3877dd1b8caf9b3cbd5486347f6/CSharp/Clipper2Lib.Examples/InflateDemo/Main.cs#L89-L100
Delphi https://github.com/AngusJohnson/Clipper2/blob/fa7add77364eb3877dd1b8caf9b3cbd5486347f6/Delphi/Examples/Example2/Example2.dpr#L20-L31

rabbit rabbit_offset

Constrained Delaunay Triangulation

C++ https://github.com/AngusJohnson/Clipper2/blob/fa7add77364eb3877dd1b8caf9b3cbd5486347f6/CPP/Examples/Triangulation/Triangulation.cpp#L135-L138
C# https://github.com/AngusJohnson/Clipper2/blob/fa7add77364eb3877dd1b8caf9b3cbd5486347f6/CSharp/Clipper2Lib.Examples/Triangulation/Main.cs#L110-L115
Delphi https://github.com/AngusJohnson/Clipper2/blob/fa7add77364eb3877dd1b8caf9b3cbd5486347f6/Delphi/Examples/Triangulation/ClipperTri.dpr#L28-L33

coral3 coral3t

C++ https://github.com/AngusJohnson/Clipper2/blob/2970649befb89af85e2132e5242a7d6926cbfa11/CPP/Examples/UsingZ/UsingZ.cpp#L173-L184

coral3_t2


Ports to other languages

lang.link
golanghttps://github.com/epit3d/goclipper2
Haxehttps://github.com/jeremyfa/Clipper2/tree/main/Haxe
Javahttps://github.com/micycle1/Clipper2-java/
Kotlinhttps://github.com/Monkey-Maestro/clipper2-kotlin
Luahttps://github.com/Ark223/Clipper2-Lua
Rusthttps://github.com/larsbrubaker/clipper2-rust
Swifthttps://github.com/zyunlongz/clipper2-swift
TypeScripthttps://github.com/countertype/clipper2-ts
WASMhttps://github.com/ErikSom/Clipper2-WASM/