1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, Default)] pub struct Viewport<T> { x: T, y: T, width: T, height: T, } impl<T> Viewport<T> where T: Copy, { pub fn new(x: T, y: T, width: T, height: T) -> Self { Self { x, y, width, height, } } pub fn x(&self) -> T { self.x } pub fn y(&self) -> T { self.y } pub fn width(&self) -> T { self.width } pub fn height(&self) -> T { self.height } pub fn position(&self) -> (T, T) { (self.x, self.y) } pub fn dimensions(&self) -> (T, T) { (self.width, self.height) } }