use crate::{AddColor, AddColorRadial, ConcentricCircles, FromAs, ToImageCoordinates};
pub trait Radii {
fn outer_radius(&self) -> usize;
fn current_inner_radius(&self) -> usize;
}
impl<T, U> Radii for ConcentricCircles<T, U>
where
U: Copy,
usize: FromAs<U>,
{
#[inline]
fn outer_radius(&self) -> usize {
usize::from_as(self.outer_radius)
}
#[inline]
fn current_inner_radius(&self) -> usize {
usize::from_as(self.inner_radius)
}
}
impl<I: Radii, Color> Radii for AddColor<I, Color> {
#[inline]
fn outer_radius(&self) -> usize {
self.iter.outer_radius()
}
#[inline]
fn current_inner_radius(&self) -> usize {
self.iter.current_inner_radius()
}
}
impl<I, F, Color> Radii for AddColorRadial<I, F, Color>
where
I: Radii,
{
#[inline]
fn outer_radius(&self) -> usize {
self.iter.outer_radius()
}
#[inline]
fn current_inner_radius(&self) -> usize {
self.iter.current_inner_radius()
}
}
impl<I, T, U> Radii for ToImageCoordinates<I, T, U>
where
I: Iterator<Item = (T, T)> + Radii,
{
fn outer_radius(&self) -> usize {
self.iter.outer_radius()
}
fn current_inner_radius(&self) -> usize {
self.iter.current_inner_radius()
}
}