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.6.tar.gz (13.0 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.6-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ipolypad-1.0.6.tar.gz
  • Upload date:
  • Size: 13.0 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.6.tar.gz
Algorithm Hash digest
SHA256 e7d55d59052b50e8d9f577a622db8477761ec11921e650d3417254e1e3ed7e25
MD5 0636340f491876e3a6688dbbb769448d
BLAKE2b-256 635e6d28dd492530f795683d9019c3ac522156d6f2bb0574ffa455eeb1a97190

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ipolypad-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 16.3 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 b237f78f41122d83f802bc74a7ffc446471161c157469add8347cfe2198f1a98
MD5 53fe67f206cdfa6ab37ad6982fc7cabe
BLAKE2b-256 6036f88c44935ffe006b55ec4c4bf92fe9ee06dae7dc72ad0cc4df3323069aac

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