Refactor Viewport and Compositor
This commit is contained in:
parent
720e7756f2
commit
a1a5fcfd46
24 changed files with 202 additions and 278 deletions
|
|
@ -125,17 +125,29 @@ impl Rectangle<f32> {
|
|||
None
|
||||
}
|
||||
}
|
||||
|
||||
/// Rounds the [`Rectangle`] to __unsigned__ integer coordinates.
|
||||
///
|
||||
/// [`Rectangle`]: struct.Rectangle.html
|
||||
pub fn round(self) -> Rectangle<u32> {
|
||||
Rectangle {
|
||||
x: self.x as u32,
|
||||
y: self.y as u32,
|
||||
width: (self.width + 0.5).round() as u32,
|
||||
height: (self.height + 0.5).round() as u32,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::ops::Mul<f32> for Rectangle<u32> {
|
||||
impl std::ops::Mul<f32> for Rectangle<f32> {
|
||||
type Output = Self;
|
||||
|
||||
fn mul(self, scale: f32) -> Self {
|
||||
Self {
|
||||
x: (self.x as f32 * scale).round() as u32,
|
||||
y: (self.y as f32 * scale).round() as u32,
|
||||
width: (self.width as f32 * scale).round() as u32,
|
||||
height: (self.height as f32 * scale).round() as u32,
|
||||
x: self.x as f32 * scale,
|
||||
y: self.y as f32 * scale,
|
||||
width: self.width * scale,
|
||||
height: self.height * scale,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -151,17 +163,6 @@ impl From<Rectangle<u32>> for Rectangle<f32> {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<Rectangle<f32>> for Rectangle<u32> {
|
||||
fn from(rectangle: Rectangle<f32>) -> Rectangle<u32> {
|
||||
Rectangle {
|
||||
x: rectangle.x as u32,
|
||||
y: rectangle.y as u32,
|
||||
width: (rectangle.width + 0.5).round() as u32,
|
||||
height: (rectangle.height + 0.5).round() as u32,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> std::ops::Add<Vector<T>> for Rectangle<T>
|
||||
where
|
||||
T: std::ops::Add<Output = T>,
|
||||
|
|
|
|||
|
|
@ -2,11 +2,20 @@ use std::f32;
|
|||
|
||||
/// An amount of space in 2 dimensions.
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
pub struct Size {
|
||||
pub struct Size<T = f32> {
|
||||
/// The width.
|
||||
pub width: f32,
|
||||
pub width: T,
|
||||
/// The height.
|
||||
pub height: f32,
|
||||
pub height: T,
|
||||
}
|
||||
|
||||
impl<T> Size<T> {
|
||||
/// Creates a new [`Size`] with the given width and height.
|
||||
///
|
||||
/// [`Size`]: struct.Size.html
|
||||
pub const fn new(width: T, height: T) -> Self {
|
||||
Size { width, height }
|
||||
}
|
||||
}
|
||||
|
||||
impl Size {
|
||||
|
|
@ -25,13 +34,6 @@ impl Size {
|
|||
/// [`Size`]: struct.Size.html
|
||||
pub const INFINITY: Size = Size::new(f32::INFINITY, f32::INFINITY);
|
||||
|
||||
/// Creates a new [`Size`] with the given width and height.
|
||||
///
|
||||
/// [`Size`]: struct.Size.html
|
||||
pub const fn new(width: f32, height: f32) -> Self {
|
||||
Size { width, height }
|
||||
}
|
||||
|
||||
/// Increments the [`Size`] to account for the given padding.
|
||||
///
|
||||
/// [`Size`]: struct.Size.html
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue