Skip to content

emilyselwood/esvg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

esvg

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

Examples

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);

Features

  • Constructing SVGs in memory
  • Reading SVGs (Including comments and text nodes)
  • Writing SVGs (Including comments and text nodes)
  • Path objects
  • Text objects
  • Circles
  • Common page sizes built in

Wanted features

  • Path data to polygons

Things we explicitly won't support

  • Converting SVGs to other formats.

About

Document object model based SVG library written in rust.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages