Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

svg.transform-0.1b1.tar.gz (4.3 kB view hashes)

Uploaded Source

Built Distribution

svg.transform-0.1b1-py2.py3-none-any.whl (4.6 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page