Skip to main content

Python Bindings for Clipper using Boost.Python

Project description

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

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

From PyPI

pip install pyclipper

From source

CMake required.

Clone the repository:

git clone git@github.com:fonttools/pyclipper.git

Install:

python setup.py install

Usage

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

from pyclipper 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 (a list of paths): [[[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.0.1

Initial project setup.

Project details


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.0.4.tar.gz (43.0 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: clipper-py-0.0.4.tar.gz
  • Upload date:
  • Size: 43.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.5.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for clipper-py-0.0.4.tar.gz
Algorithm Hash digest
SHA256 b2e7b6fad71a5022c589c90e52b7398d7541d6130b7cb63862b4aa08b0f1354d
MD5 9bb39b680a47e8d7d3c7cdd04e2e0097
BLAKE2b-256 c1ef79f5b4208c31573c5a1e6b11bd1e07bb571a6a43bfe6346fdeb6dd775ca7

See more details on using hashes here.

Supported by

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