aboutsummaryrefslogtreecommitdiff
path: root/examples/generate_map.rs
blob: 1728d524689b50504f3be3d5784f68e2377a6016 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
use std::fs;
use wmap_renderer::{Configuration, StageType, render_to_png, render_to_svg};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Read the example.wmap file
    let map_source = fs::read_to_string("examples/example.wmap")?;
    let map = wmap_parser::parse(&map_source);
    let config = Configuration::default();

    // Generate PNG with smart positioning
    println!("Generating PNG with smart positioning...");
    let png_data = render_to_png(&map, &StageType::Activities, &config)?;
    fs::write("example.png", png_data)?;
    println!("Generated example.png");

    // Generate SVG with smart positioning
    println!("Generating SVG with smart positioning...");
    let svg_data = render_to_svg(&map, &StageType::Activities, &config)?;
    fs::write("example.svg", svg_data)?;
    println!("Generated example.svg");

    // Generate with different stage type
    println!("Generating with publication types stage type...");
    let png_publication_types = render_to_png(&map, &StageType::PublicationTypes, &config)?;
    fs::write("example_publication_types.png", png_publication_types)?;
    println!("Generated example_publication_types.png");

    // Generate with a custom stage type
    println!("Generating with publication types stage type...");
    let stage_type = StageType::Custom {
        name: "My Stage Type".to_string(),
        i: "Earlier".to_string(),
        ii: "Early".to_string(),
        iii: "Late".to_string(),
        iv: "Later".to_string(),
    };
    let png_publication_types = render_to_svg(&map, &stage_type, &config)?;
    fs::write("example_custom_stages.svg", png_publication_types)?;
    println!("Generated example_publication_types.png");

    // Generate without smart positioning (simple right-side positioning)
    println!("Generating without smart positioning...");
    let mut config_no_smart = Configuration::default();
    config_no_smart.options.smart_label_positioning = false;
    let png_no_smart = render_to_png(&map, &StageType::Activities, &config_no_smart)?;
    fs::write("example_no_smart_positioning.png", png_no_smart)?;
    println!("Generated example_no_smart_positioning.png");

    println!("\nAll examples generated successfully!");
    Ok(())
}