pub use dpi::*;
use serde::Serialize;
#[derive(Clone, Copy, Debug, Serialize)]
pub struct Rect {
pub position: dpi::Position,
pub size: dpi::Size,
}
impl Rect {
pub fn to_physical<P: dpi::Pixel, S: dpi::Pixel>(self, scale: f64) -> PhysicalRect<P, S> {
PhysicalRect {
position: self.position.to_physical(scale),
size: self.size.to_physical(scale),
}
}
pub fn to_logical<P: dpi::Pixel, S: dpi::Pixel>(self, scale: f64) -> LogicalRect<P, S> {
LogicalRect {
position: self.position.to_logical(scale),
size: self.size.to_logical(scale),
}
}
}
impl Default for Rect {
fn default() -> Self {
Self {
position: Position::Logical((0, 0).into()),
size: Size::Logical((0, 0).into()),
}
}
}
#[derive(Clone, Copy, Debug, Serialize)]
pub struct PhysicalRect<P: dpi::Pixel, S: dpi::Pixel> {
pub position: dpi::PhysicalPosition<P>,
pub size: dpi::PhysicalSize<S>,
}
impl<P: dpi::Pixel, S: dpi::Pixel> Default for PhysicalRect<P, S> {
fn default() -> Self {
Self {
position: (0, 0).into(),
size: (0, 0).into(),
}
}
}
impl<P: dpi::Pixel, S: dpi::Pixel> PhysicalRect<P, S> {
pub fn to_logical(self, scale: f64) -> LogicalRect<P, S> {
LogicalRect {
position: self.position.to_logical(scale),
size: self.size.to_logical(scale),
}
}
}
#[derive(Clone, Copy, Debug, Serialize)]
pub struct LogicalRect<P: dpi::Pixel, S: dpi::Pixel> {
pub position: dpi::LogicalPosition<P>,
pub size: dpi::LogicalSize<S>,
}
impl<P: dpi::Pixel, S: dpi::Pixel> Default for LogicalRect<P, S> {
fn default() -> Self {
Self {
position: (0, 0).into(),
size: (0, 0).into(),
}
}
}
impl<P: dpi::Pixel, S: dpi::Pixel> LogicalRect<P, S> {
pub fn to_physical(self, scale: f64) -> PhysicalRect<P, S> {
PhysicalRect {
position: self.position.to_physical(scale),
size: self.size.to_physical(scale),
}
}
}