Skip to main content

About

clipper-py is a Boost.Python wrapper exposing the C++ translation of the Angus Johnson's Clipper library (6.4 Rev 495).

clipper-py is tested and built against Python 3.8 on Arch Linux.

This project is very much a work-in-progress. Please contribute.

About Clipper

Clipper - an open source freeware library for clipping and offsetting lines and polygons.

The Clipper library performs line & polygon clipping - intersection, union, difference & exclusive-or, and line & polygon offsetting. The library is based on Vatti's clipping algorithm.

Angus Johnson's Clipper library

Install

Dependencies

Linux

  • Boost.Python Headers (libboost-python-dev) compiled against version 1.67.0

Debian, Ubuntu

apt-get install libboost-python-dev

Arch

pacman -S libboost-python-dev

Mac

Homebrew

brew install boost-python3

From PyPI

pip install clipper-py

From source

CMake required.

Install:

pip3 install .

Usage

Basic clipping example (based on Angus Johnson's Clipper library):

from clipper_py import Path, Paths, Clipper, IntPoint

subj = Paths()
subj.push(Path().push(IntPoint(180, 200)).push(IntPoint(260, 200)).push(IntPoint(260, 150)).push(IntPoint(180, 150)))
subj.push(Path().push(IntPoint(215, 160)).push(IntPoint(230, 190)).push(IntPoint(200, 190)))
print(subj, subj[0], subj[1])

clip = Paths()
clip.push(Path().push(IntPoint(190, 210)).push(IntPoint(240, 210)).push(IntPoint(240, 130)).push(IntPoint(190, 130)))
print(clip, clip[0])

clipper = Clipper(0)
clipper.add_paths(subj, 'subject', True)
clipper.add_paths(clip, 'clip', True)
solution = clipper.execute('intersection', 'non-zero', 'non-zero')

# solution: [[[240, 200], [190, 200], [190, 150], [240, 150]], [[200, 190], [230, 190], [215, 160]]]

Authors

  • The Clipper library is written by Angus Johnson,
  • This readme was modified from the original written by various authors of the pyclipper library
  • The PyPI setup.py file was modified from a CMake-based build example of the PyBind project

License

Changelog

0.1.5

  • Fix complex (PolyTree-based) clipping to actually work kinda

0.1.4

  • Add PolyTree, PolyNode, PolyNodes types
  • Add executeComplex
  • Add open_paths_from_polytree. closed_paths_from_polytree, polytree_to_paths

0.1.3

  • Dynamically determine version of Python for Boost.Python headers
  • Minor cleanup

0.1.2

  • Get MacOS builds working
  • Make things a little bit more portable on Linux

0.1.0

  • update setup.py with urls
  • Publish to PyPI

0.0.1

Initial project setup.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clipper-py-0.1.5.tar.gz (44.5 kB view details)

Uploaded Source

File details

Details for the file clipper-py-0.1.5.tar.gz.

File metadata

  • Download URL: clipper-py-0.1.5.tar.gz
  • Upload date:
  • Size: 44.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for clipper-py-0.1.5.tar.gz
Algorithm Hash digest
SHA256 1d9fc6fcf38dad8a04d21155aa72aa751e52e5d0398d5e5df4784cb86edfe1b4
MD5 2ec3ea59b9f098d74468cb2303f13f70
BLAKE2b-256 35106e1531a0e773e9869e2817e44d41cc4536d68657c8e1c883da5ab3f75903

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.5 This release

1 file

0.1.4

1 file

0.1.3

1 file

0.1.2

1 file

0.1.1

1 file

0.1.0

1 file

0.0.13

1 file

0.0.12

1 file

0.0.11

1 file

0.0.10

1 file

0.0.9

1 file

0.0.8

1 file

0.0.7

1 file

0.0.6

1 file

0.0.5

1 file

0.0.4

1 file

0.0.3

1 file

0.0.2

1 file

0.0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page