gd_icon_renderer/
lib.rs

1//! # gd-icon-renderer
2//! 
3//! gd-icon-renderer is a library for rendering Geometry Dash icons.
4//! 
5//! It uses the [image](https://crates.io/crates/image) crate and [imageproc](https://crates.io/crates/imageproc) crate for image manipulation and [plist](https://crates.io/crates/plist) for parsing plist files.
6//!
7//! The main entrypoint is found in the [`renderer`](renderer/index.html) module.
8
9#![feature(lazy_cell)]
10
11pub mod assets;
12pub mod constants;
13pub mod renderer;
14    
15#[cfg(test)]
16mod tests {
17    use super::*;
18
19    use renderer::*;
20    use assets::*;
21
22    use std::time::Instant;
23        
24    #[test]
25    fn render_test() {
26        let game_sheet_02 = load_spritesheet("assets/GJ_GameSheet02-uhd.plist");
27        let game_sheet_glow = load_spritesheet("assets/GJ_GameSheetGlow-uhd.plist");
28        let robot_sheet = load_animations("assets/Robot_AnimDesc2.plist");
29        let spider_sheet = load_animations("assets/Spider_AnimDesc2.plist");
30
31        let start = Instant::now();
32        let rendered_icon = render_icon("ship", 44, [0.0, 0.0, 0.0], [255.0/255.0, 125.0/255.0, 125.0/255.0], true, game_sheet_02, game_sheet_glow, robot_sheet, spider_sheet).expect("failed to render image");
33        let end = start.elapsed();
34
35        println!("time taken to render: {:?}", end);
36
37        rendered_icon.save("rendered_icon.png").expect("saving image failed");
38    }
39}