use crate::Direction;
use crate::cells::*;
use crate::errors::QuadbinError;
use crate::utils::*;
#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub(crate) struct Tile {
pub x: u32,
pub y: u32,
pub z: u8,
}
impl Tile {
pub fn new(x: u32, y: u32, z: u8) -> Tile {
Tile { x, y, z }
}
pub fn to_cell(self) -> Result<Cell, QuadbinError> {
tile_to_cell(self)
}
pub fn from_point(lat: f64, lng: f64, res: u8) -> Result<Self, QuadbinError> {
point_to_tile(lat, lng, res)
}
pub fn area(&self) -> f64 {
tile_area(self)
}
pub fn to_latitude(self, offset: f64) -> Option<f64> {
tile_to_latitude(&self, offset).ok()
}
pub fn to_longitude(self, offset: f64) -> Option<f64> {
tile_to_longitude(&self, offset).ok()
}
pub fn neighbor(&self, direction: Direction) -> Option<Self> {
tile_neighbor(self, direction)
}
}