mirror of
https://github.com/typst/typst
synced 2025-07-27 06:17:53 +08:00
28 lines
767 B
Rust
28 lines
767 B
Rust
use crate::layout::{Point, Size};
|
|
|
|
/// A rectangle in 2D.
|
|
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
|
|
pub struct Rect {
|
|
/// The top left corner (minimum coordinate).
|
|
pub min: Point,
|
|
/// The bottom right corner (maximum coordinate).
|
|
pub max: Point,
|
|
}
|
|
|
|
impl Rect {
|
|
/// Create a new rectangle from the minimum/maximum coordinate.
|
|
pub fn new(min: Point, max: Point) -> Self {
|
|
Self { min, max }
|
|
}
|
|
|
|
/// Create a new rectangle from the position and size.
|
|
pub fn from_pos_size(pos: Point, size: Size) -> Self {
|
|
Self { min: pos, max: pos + size.to_point() }
|
|
}
|
|
|
|
/// Compute the size of the rectangle.
|
|
pub fn size(&self) -> Size {
|
|
Size::new(self.max.x - self.min.x, self.max.y - self.min.y)
|
|
}
|
|
}
|