for more information visit the package's GitHub page
Package contains the following modules:
This Elm package provides functions to create and
manipulate SVG elements using the elm-geometry
data types. You can:
elm-geometry
objects as SVGelm-geometry
-based 2D transformations to arbitrary SVG elementsThe lineSegment2d
, triangle2d
, polyline2d
, polygon2d
, circle2d
,
ellipse2d
, arc2d
, ellipticalArc2d
, quadraticSpline2d
, cubicSpline2d
,
rectangle2d
and boundingBox2d
functions all produce standard Svg msg
values that can be included in any SVG diagram:
The appearance of the resulting elements can be customized by adding SVG
attributes such as fill
and stroke
.
The scaleAbout
, rotateAround
, translateBy
and mirrorAcross
functions
behave just like their standard elm-geometry
counterparts. You can use them to do
things that would be difficult to do using just SVG, such as mirror a fragment
of SVG across an arbitrary axis:
Note that these functions will work on any Svg msg
, value, not just ones
that happen to have been produced with this package! So you can use them as a
convenient way to transform SVG that you've produced in some other way.
The relativeTo
and placeIn
functions allow you to take SVG defined in one
coordinate system and convert it to another. For example, you can take SVG
defined in a model coordinate system where (0,0) is the center and positive Y is
up, and use relativeTo
to convert it into SVG in window coordinates for
display, where (0,0) is the top left corner and positive Y is down.
placeIn
is useful for 'instancing' or 'stamping' a fragment of SVG in many
different positions with different orientations:
Assuming you have installed Elm and
started a new project, you can install elm-geometry-svg
by running
elm install ianmackenzie/elm-geometry-svg
in a command prompt inside your project directory.
Full API documentation is available.
I would like for the projects I work on to be as helpful as possible in addressing the climate crisis. If
please open a new issue, describe briefly what you're working on and I will treat that issue as high priority.
Please open a new issue
if you run into a bug, if any documentation is missing/incorrect/confusing, or
if there's a new feature that you would find useful (although note that this
package is not meant to be general-purpose full-blown SVG package, more just a
convenient way to render elm-geometry
values). For general questions about
using this package, try:
You can also find me on Twitter (@ianemackenzie),
where I occasionally post elm-geometry
-related stuff like demos or new
releases. Have fun, and don't be afraid to ask for help!