Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/typemytype/booleanOperations
Boolean operations on paths
https://github.com/typemytype/booleanOperations
Last synced: 3 months ago
JSON representation
Boolean operations on paths
- Host: GitHub
- URL: https://github.com/typemytype/booleanOperations
- Owner: typemytype
- License: mit
- Created: 2013-11-11T21:35:22.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2022-10-30T07:37:57.000Z (about 2 years ago)
- Last Synced: 2024-07-15T16:18:02.492Z (4 months ago)
- Language: Python
- Size: 454 KB
- Stars: 37
- Watchers: 9
- Forks: 18
- Open Issues: 12
-
Metadata Files:
- Readme: README.rst
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
|Build Status| |PyPI| |Python Versions|
BooleanOperations
=================Boolean operations on paths which uses a super fast `polygon clipper
library by Angus Johnson `__.You can download the latest version from PyPI:
https://pypi.org/project/booleanOperations.
Install
-------`Pip `__ is the recommended tool to
install booleanOperations.To install the latest version:
.. code:: sh
pip install booleanOperations
BooleanOperations depends on the following packages:
- `pyclipper `__: Cython wrapper for
the C++ Clipper library
- `fonttools `__All dependencies are available on PyPI, so they will be resolved
automatically upon installing booleanOperations.BooleanOperationManager
-----------------------Containing a ``BooleanOperationManager`` handling all boolean operations
on paths. Paths must be similar to ``defcon``, ``robofab`` contours. A
manager draws the result in a ``pointPen``... code:: py
from booleanOperations import BooleanOperationManager
manager = BooleanOperationManager()
BooleanOperationManager()
~~~~~~~~~~~~~~~~~~~~~~~~~Create a ``BooleanOperationManager``.
manager.union(contours, pointPen)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Performs a union on all ``contours`` and draw it in the ``pointPen``.
(this is a what a remove overlaps does)manager.difference(contours, clipContours, pointPen)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Knock out the ``clipContours`` from the ``contours`` and draw it in the
``pointPen``.manager.intersection(contours, clipContours, pointPen)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Draw only the overlaps from the ``contours`` with the
``clipContours``\ and draw it in the ``pointPen``.manager.xor(contours, clipContours, pointPen)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Draw only the parts that not overlaps from the ``contours`` with the
``clipContours``\ and draw it in the ``pointPen``.manager.getIntersections(contours)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Returning all intersection for the given contours
BooleanGlyph
------------A glyph like object with boolean powers.
.. code:: py
from booleanOperations.booleanGlyph import BooleanGlyph
booleanGlyph = BooleanGlyph(sourceGlyph)
BooleanGlyph(sourceGlyph)
~~~~~~~~~~~~~~~~~~~~~~~~~Create a ``BooleanGlyph`` object from ``sourceGlyph``. This is a very
shallow glyph object with basic support.booleanGlyph.union(other)
^^^^^^^^^^^^^^^^^^^^^^^^^Perform a **union** with the ``other``. Other must be a glyph or
``BooleanGlyph`` object... code:: py
result = BooleanGlyph(glyph).union(BooleanGlyph(glyph2))
result = BooleanGlyph(glyph) | BooleanGlyph(glyph2)booleanGlyph.difference(other)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Perform a **difference** with the ``other``. Other must be a glyph or
``BooleanGlyph`` object... code:: py
result = BooleanGlyph(glyph).difference(BooleanGlyph(glyph2))
result = BooleanGlyph(glyph) % BooleanGlyph(glyph2)booleanGlyph.intersection(other)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Perform a **intersection** with the ``other``. Other must be a glyph or
``BooleanGlyph`` object... code:: py
result = BooleanGlyph(glyph).intersection(BooleanGlyph(glyph2))
result = BooleanGlyph(glyph) & BooleanGlyph(glyph2)booleanGlyph.xor(other)
^^^^^^^^^^^^^^^^^^^^^^^Perform a **xor** with the ``other``. Other must be a glyph or
``BooleanGlyph`` object... code:: py
result = BooleanGlyph(glyph).xor(BooleanGlyph(glyph2))
result = BooleanGlyph(glyph) ^ BooleanGlyph(glyph2)booleanGlyph.removeOverlap()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^Perform a **union** on it self. This will remove all overlapping
contours and self intersecting contours... code:: py
result = BooleanGlyph(glyph).removeOverlap()
--------------
booleanGlyph.name
^^^^^^^^^^^^^^^^^The **name** of the ``sourceGlyph``.
booleanGlyph.unicodes
^^^^^^^^^^^^^^^^^^^^^The **unicodes** of the ``sourceGlyph``.
booleanGlyph.width
^^^^^^^^^^^^^^^^^^The **width** of the ``sourceGlyph``.
booleanGlyph.lib
^^^^^^^^^^^^^^^^The **lib** of the ``sourceGlyph``.
booleanGlyph.note
^^^^^^^^^^^^^^^^^The **note** of the ``sourceGlyph``.
booleanGlyph.contours
^^^^^^^^^^^^^^^^^^^^^List the **contours** of the glyph.
booleanGlyph.components
^^^^^^^^^^^^^^^^^^^^^^^List the **components** of the glyph.
booleanGlyph.anchors
^^^^^^^^^^^^^^^^^^^^List the **anchors** of the glyph.
.. |Build Status| image:: https://api.travis-ci.org/typemytype/booleanOperations.svg
:target: https://travis-ci.org/typemytype/booleanOperations
.. |PyPI| image:: https://img.shields.io/pypi/v/booleanOperations.svg
:target: https://pypi.org/project/booleanOperations/
.. |Python Versions| image:: https://img.shields.io/badge/python-3.6,%203.7-blue.svg