#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct TileKey {
pub x: u32,
pub y: u32,
pub z: u8,
}
pub trait TileSource: Send + Sync {
fn tile(&self, key: TileKey) -> Option<slint::Image>;
fn tile_size(&self) -> u32 {
256
}
fn max_zoom(&self) -> u8 {
22
}
fn min_zoom(&self) -> u8 {
0
}
fn cancel_all_except(&self, _keep: &std::collections::HashSet<TileKey>) {}
}
impl<T: TileSource + ?Sized> TileSource for Box<T> {
fn tile(&self, key: TileKey) -> Option<slint::Image> {
(**self).tile(key)
}
fn tile_size(&self) -> u32 {
(**self).tile_size()
}
fn min_zoom(&self) -> u8 {
(**self).min_zoom()
}
fn max_zoom(&self) -> u8 {
(**self).max_zoom()
}
fn cancel_all_except(&self, keep: &std::collections::HashSet<TileKey>) {
(**self).cancel_all_except(keep)
}
}