Skip to content

Remove unmaintained C++ implementation - #124

Merged
mourner merged 1 commit into
masterfrom
remove-cpp
Jun 8, 2026
Merged

mourner merged 1 commit into
masterfrom
remove-cpp

Conversation

@kkaefer

@kkaefer kkaefer commented Jun 8, 2026

Copy link
Copy Markdown
Member

It is out of date with the JavaScript implementation.

@kkaefer
kkaefer requested a review from mourner June 8, 2026 14:57
@mourner
mourner merged commit 531a867 into master Jun 8, 2026
2 checks passed
@kkaefer
kkaefer deleted the remove-cpp branch June 8, 2026 15:09
jolars added a commit to jolars/polylabelr that referenced this pull request Aug 9, 2026
Mapbox deleted their C++ implementation in mapbox/polylabel#124, so
`polylabel.hpp` is now a local C++ port of their `polylabel.js` rather
than vendored upstream code. It is kept structurally close to the
JavaScript so that future upstream changes can be transliterated.

The search now flattens the rings into one coordinate buffer, skips
blocks of edges using precomputed bounding boxes, seeds each cell with
its parent's nearest segment, and stops measuring once a cell cannot
beat the best candidate. This runs 25 to 35 times faster on the
upstream fixtures and reproduces their expected values exactly.

The old header had been frozen since 2020 and never picked up the fix
for mapbox/polylabel#97, so `poi()` could return a point outside the
polygon when the precision was too coarse to refine the first guess.

Unlike upstream we still search polygons smaller than the requested
precision instead of returning a corner of their bounding box.

`poi_cpp()` now takes the distance from the search rather than
recomputing it with a second pass over the outline.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants