Skip to main content

Convert an image or SVG into a padded polygon hull for CSS shape-outside / text-wrap.

Project description

ipolypad

Convert an image or SVG into a padded polygon hull suitable for CSS shape-outside and HTML/canvas text-wrap engines. Reference implementation. Positive padding dilates the silhouette; negative padding erodes it.

See the project root README.md and SPEC.md for the full design. This package is the Python side — smart, batteries-included, multi-format output.

Install

uvx ipolypad trace dragon.svg --pad 6 --max-points 32 --out dragon.json
# or
uv pip install ipolypad

CLI

ipolypad trace <src> [--size 200] [--pad 6] [--max-points 32] \
                     [--hull / --no-hull] [--format json,css,svg,png,html] \
                     [--enhance / --no-enhance] [--bg-tolerance 12] \
                     [--selector .figure] [--out path]

ipolypad batch '*.svg' --out-dir dist/ [trace options...]

src may be a local path, an http(s):// URL, or a data: URL.

Library

from ipolypad import trace

result = trace("dragon.svg", size=200, pad=6, max_points=32, format="json")
print(result["points"])

Output

Default JSON:

{
  "src": "dragon.svg",
  "raster": { "width": 200, "height": 200, "pad": 6 },
  "max_points": 32,
  "n_points": 18,
  "points": [[0.500000, 0.020000], ...]
}

points are normalized 0..1 against the rasterization box, six decimals, no trailing closing vertex (polygon is implicitly closed).

License

Apache-2.0. See LICENSE.

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

ipolypad-1.0.8.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ipolypad-1.0.8-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file ipolypad-1.0.8.tar.gz.

File metadata

  • Download URL: ipolypad-1.0.8.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ipolypad-1.0.8.tar.gz
Algorithm Hash digest
SHA256 8eaaf0343335c8354fe62880e1de3b52461594ef5c7bdd38ecf5bb9fb984cc99
MD5 8fc724a2a94c55c56e6b3c7091957158
BLAKE2b-256 8588dbc9dc3223957c61f740f58afcfa8fb06fdee72d7ffa455db0a51db1113f

See more details on using hashes here.

File details

Details for the file ipolypad-1.0.8-py3-none-any.whl.

File metadata

  • Download URL: ipolypad-1.0.8-py3-none-any.whl
  • Upload date:
  • Size: 16.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ipolypad-1.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 906858d00cbd47c7666328afed6040c7fec927908ef60257d0a9479a1ec787d6
MD5 4b75df754ff6fb8872eba84ec302f51f
BLAKE2b-256 53d9e223df056b5397b49f0a16dbeec772303fe79907c3d64146a112540017ff

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