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}