Crate unsvg

source
Expand description

The unsvg crate provides a very simple interface for drawing images.

See below for an example:

use unsvg::{Image, COLORS};

fn main() -> Result<(), String> {
    let mut img: Image = Image::new(200, 200);
    let (x1, y1) = (10, 10);
    // Second point's x and y coordinates.
    let (x2, y2) = img.draw_simple_line(x1, y1, 120, 100, COLORS[1])?;
    // Third point's x and y coordinates.
    let (x3, y3) = img.draw_simple_line(x2, y2, 240, 100, COLORS[2])?;
    let _ = img.draw_simple_line(x3, y3, 0, 100, COLORS[3])?;

    img.save_svg("path_to.svg")?;

    Ok(())
}

Note that unsvg’s underlying SVG library uses floats to represent x and y coordinates. unsvg, on the other hand, expects signed integer coordinate values. This design decision was made to ensure consistent, deterministic behaviour for all coordinate inputs, which is not a given when using floats due to float imprecision.

Structs§

  • A 8-bit RGB color.
  • This represents an image that’s being constructed. Use the new function to create one.

Statics§

  • This contains 16 simple colors which users can select from. These correspond to the 16 colors available in the original Logo language. The colors are:

Functions§

  • Tells you where a line will end, given a starting point, direction, and length. This is used by draw_simple_line to get the end point of a line.