1use crate::Tile;
2use crate::fns::flipy;
3use crate::tile_like::TileLike;
4
5#[derive(Debug)]
6pub struct TileCrz {
7 tile_column: u32,
9 tile_row: u32,
11 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}