diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/main.rs b/src/main.rs index 7f7c532..11133af 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,7 +7,7 @@ use color_eyre::{ }; use hittekaart::{ gpx::{self, Compression}, - renderer::{self, heatmap, tilehunt, Renderer}, + renderer::{self, heatmap, marktile, tilehunt, Renderer}, storage::{Folder, Sqlite, Storage}, }; use indicatif::{MultiProgress, ProgressBar, ProgressDrawTarget, ProgressStyle}; @@ -21,7 +21,8 @@ use rayon::{ #[derive(ValueEnum, Debug, Clone, Copy, PartialEq, Eq, Hash)] enum Mode { Heatmap, - Tilehunt, + Marktile, + Tilehunter, } #[derive(Parser, Debug, Clone)] @@ -56,6 +57,10 @@ struct Args { /// Generation mode. #[arg(value_enum, long, short, default_value_t = Mode::Heatmap)] mode: Mode, + + /// Zoom level for the tilehunter mode. + #[arg(long, default_value_t = 14)] + tilehunter_zoom: u32, } fn main() -> Result<()> { @@ -72,12 +77,13 @@ fn main() -> Result<()> { .build_global()?; match args.mode { - Mode::Heatmap => run::<heatmap::Renderer>(args), - Mode::Tilehunt => run::<tilehunt::Renderer>(args), + Mode::Heatmap => run(heatmap::Renderer, args), + Mode::Marktile => run(marktile::Renderer, args), + Mode::Tilehunter => run(tilehunt::Renderer::new(args.tilehunter_zoom), args), } } -fn run<R: Renderer>(args: Args) -> Result<()> { +fn run<R: Renderer>(renderer: R, args: Args) -> Result<()> { let progress_style = ProgressStyle::with_template("[{elapsed}] {prefix:.cyan} {wide_bar} {pos:.green}/{len}")?; let zoom_style = @@ -130,7 +136,7 @@ fn run<R: Renderer>(args: Args) -> Result<()> { let bar = make_bar(tracks.len().try_into().unwrap()).with_style(progress_style.clone()); multibar.insert_from_back(1, bar.clone()); bar.set_prefix("Rendering heat zones"); - let counter = renderer::prepare::<R, _>(zoom, &tracks, || { + let counter = renderer::prepare(&renderer, zoom, &tracks, || { bar.inc(1); Ok(()) })?; @@ -139,10 +145,10 @@ fn run<R: Renderer>(args: Args) -> Result<()> { storage.prepare_zoom(zoom)?; - let bar = make_bar(R::tile_count(&counter)?).with_style(progress_style.clone()); + let bar = make_bar(renderer.tile_count(&counter)?).with_style(progress_style.clone()); multibar.insert_from_back(1, bar.clone()); bar.set_prefix("Saving heat tiles"); - renderer::colorize::<R, _>(counter, |rendered_tile| { + renderer::colorize(&renderer, counter, |rendered_tile| { storage.store(zoom, rendered_tile.x, rendered_tile.y, &rendered_tile.data)?; bar.inc(1); Ok(()) |