utiles_core/
tilecrz.rs

1use crate::Tile;
2use crate::fns::flipy;
3use crate::tile_like::TileLike;
4
5#[derive(Debug)]
6pub struct TileCrz {
7    // column -> x
8    tile_column: u32,
9    // row -> y
10    tile_row: u32,
11    // zoom_level -> z
12    zoom_level: u8,
13}
14
15impl TileCrz {
16    pub fn new(tile_column: u32, tile_row: u32, zoom_level: u8) -> Self {
17        Self {
18            tile_column,
19            tile_row,
20            zoom_level,
21        }
22    }
23}
24
25impl From<Tile> for TileCrz {
26    fn from(tile: Tile) -> Self {
27        Self::new(tile.x, flipy(tile.y, tile.z), tile.z)
28    }
29}
30
31impl From<TileCrz> for Tile {
32    fn from(tile: TileCrz) -> Self {
33        Self::new(
34            tile.tile_column,
35            flipy(tile.tile_row, tile.zoom_level),
36            tile.zoom_level,
37        )
38    }
39}
40
41impl TileLike for TileCrz {
42    fn x(&self) -> u32 {
43        self.tile_column
44    }
45
46    fn y(&self) -> u32 {
47        flipy(self.tile_row, self.zoom_level)
48    }
49
50    fn z(&self) -> u8 {
51        self.zoom_level
52    }
53}