celesterender/
lib.rs

1#![allow(clippy::wildcard_in_or_patterns, clippy::too_many_arguments)]
2
3use anyhow::Result;
4
5pub mod asset;
6mod rendering;
7
8use asset::{AssetDb, LookupAsset};
9use celesteloader::{map::Map, CelesteInstallation};
10pub use png::Compression;
11pub use rendering::{
12    render, CelesteRenderData, Layer, MapTileset, RenderMapSettings, RenderResult,
13};
14
15pub fn render_map_bin(
16    celeste: &CelesteInstallation,
17    render_data: &mut CelesteRenderData,
18    asset_db: &mut AssetDb<impl LookupAsset>,
19    map_bin: &str,
20    settings: RenderMapSettings<'_>,
21) -> Result<(RenderResult, Map)> {
22    let (map, mut archive) = celeste.find_map_by_map_bin(map_bin)?;
23
24    if let Some(archive) = &mut archive {
25        render_data.load_map_tileset(celeste, archive, &map)?;
26    } else {
27        render_data.map_tileset = MapTileset::vanilla(celeste)?;
28    }
29
30    let image = render(render_data, asset_db, &map, settings)?;
31
32    Ok((image, map))
33}