use std::char;
use std::default::Default;
use std::ops::Add;
signal_decl!{Canceled(Option<String>)}
pub struct Rect<T> {
pub top: T,
pub left: T,
pub height: T,
pub width: T
}
impl<T> Rect<T> {
pub fn bottom(&self) -> <T as Add>::Output
where T: Add+Copy {
self.top + self.height
}
pub fn right(&self) -> <T as Add>::Output
where T: Add+Copy {
self.left + self.width
}
}
impl<T> Default for Rect<T>
where T: Default {
fn default() -> Rect<T> {
Rect {
top: Default::default(),
left: Default::default(),
height: Default::default(),
width: Default::default(),
}
}
}
pub fn u4_to_hex(b: u8) -> char {
char::from_digit(b as u32, 16).unwrap()
}
pub fn u8_to_hex(b: u8) -> (char, char) {
(u4_to_hex((b >> 4) & 0xF), u4_to_hex(b & 0xF))
}