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 version1.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.pyfile was modified from a CMake-based build example of the PyBind project
License
- clipper-py is available under a MIT license.
- Pyclipper is available under a MIT license.
- The core Clipper library is available under a Boost Software License. Freeware for both open source and commercial applications.
- cmake_example by Pybind is available under a BSD-style license
Changelog
0.0.1
Initial project setup.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2e7b6fad71a5022c589c90e52b7398d7541d6130b7cb63862b4aa08b0f1354d
|
|
| MD5 |
9bb39b680a47e8d7d3c7cdd04e2e0097
|
|
| BLAKE2b-256 |
c1ef79f5b4208c31573c5a1e6b11bd1e07bb571a6a43bfe6346fdeb6dd775ca7
|