Crates.io | esvg |
lib.rs | esvg |
version | 0.5.0 |
source | src |
created_at | 2023-02-04 22:20:10.665629 |
updated_at | 2024-02-17 08:29:17.528415 |
description | Document object model based SVG library |
homepage | |
repository | https://github.com/emilyselwood/esvg |
max_upload_size | |
id | 776672 |
size | 40,865 |
A document object model based SVG library for construction of vector graphics.
Access is available to the attributes and tags allowing you to construct any SVG you need.
Uses Polygonical for its shape representation
Construct a document and draw a circle
use esvg::page::Page;
use esvg::{create_document, Element};
use polygonical::point::Point;
let page = Page::A4(96); // 96 dpi
let mut doc = create_document(&page);
let mut group = Element::new("g");
group.set("class", "foo");
let mut circle = esvg::shapes::circle(page.center(), 50);
circle.add_style("stroke", "red");
group.add(&circle);
doc.add(&group);
let expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.0//EN\" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">
<svg height=\"297.1270833333333mm\" viewBox=\"0, 0, 794, 1123\" width=\"210.07916666666668mm\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">
\t<g class=\"foo\">
\t\t<circle cx=\"397\" cy=\"561\" fill=\"none\" r=\"50\" style=\"stroke:red\" />
\t</g>
</svg>
";
assert_eq!(doc.to_pretty_string(), expected);