SVG path objects and parser
Project description
svg.transform
It’s a library to do svg.transforms.
It’s been on a list of things to do for years, and I haven’t implemented it, because I don’t need it, and making a library you don’t use is silly. But since nobody else is implementing this, even though it’s perfectly simple, well, I did it anyway. Anger-Driven Development is a thing. :-D
You are welcome.
I’m already looking for someone to take over this, and I haven’t even started writing code. You can take over svg.path too, I don’t use it anymore either.
Usage
You make transformation matrices with the following commands:
* svg.transform.translate_matrix(tx, ty=0): Returns a matrix that will translate in x and y * svg.transform.scale_matrix(sx, sy=None): Returns a matrix that will scale in x and y * svg.transform.rotate_matrix(r, cx=0, cy=0): Returns a matrix that will rotate, with optional offset * svg.transform.skewx_matrix(ax): Returns a matrix that will skew in the x axis * svg.transform.skewy_matrix(ay): Returns a matrix that will skew in the y axis * svg.transform.matrix_matrix(a, b, c, d, e, f): Returns a free form translation matrix
For example like this:
>>> from svg import transform
>>>
>>> transform.translate_matrix(5, 8)
array([[ 1, 0, 5],
[ 0, 1, 10],
[ 0, 0, 1]])
You use this matrix by applying a matrix multiplication:
>>> from array import array
>>>
>>> old_x = 10
>>> old_y = 10
>>>
>>> res = transform.translate_matrix(5, 8) @ array("f", [old_x, old_y, 1])
>>> new_x = res[0]
>>> new_y = res[1]
>>> new_x, new_y
15.0, 18.0
You can also create transformation matrices directly from the SVG transform attributes:
>>> transform.parse("translate(-10 -20) scale(2) rotate(45) translate(5 10)")
array([[ 1.05064398, -1.70180705, -21.7648506 ],
[ 1.70180705, 1.05064398, -0.98452498],
[ 0. , 0. , 1. ]])
Contributors
Lennart Regebro <regebro@gmail.com>, Original Author
Changelog
0.1b1 (2023-05-01)
First release
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file svg.transform-0.1b1.tar.gz.
File metadata
- Download URL: svg.transform-0.1b1.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f3a6676d503d3e0abe4e6597ebf85b8e45035e33691d661f6762ec04b5a7cb2
|
|
| MD5 |
9b28907983e01881a5eebc02ebdb904d
|
|
| BLAKE2b-256 |
3292fe8ad0894813c8922d63fdfad9a7023944d6c4c2a9142d271a39975e82a7
|
File details
Details for the file svg.transform-0.1b1-py2.py3-none-any.whl.
File metadata
- Download URL: svg.transform-0.1b1-py2.py3-none-any.whl
- Upload date:
- Size: 4.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cfa31422fa63ceac374d6f32ec813525b9498ba5989a15144deab63abc1ccb3f
|
|
| MD5 |
2a0416dcba42b3346c5b09013a6f4162
|
|
| BLAKE2b-256 |
08638b59aff29115f555bac006fbbf40055b17d81633c7f6ce8c46c32ef02cbc
|