abletk/abletk-common/src/rect.rs

75 lines
1.6 KiB
Rust
Executable File

/*
* Copyright (C) 2022 Umut İnan Erdoğan <umutinanerdogan@pm.me>
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
#[cfg(windows)]
use windows::Win32::{
Foundation::RECT,
Graphics::Direct2D::Common::{D2D_RECT_F, D2D_RECT_U},
};
#[derive(Copy, Clone, Debug)]
pub struct Rect {
x: f32,
y: f32,
width: f32,
height: f32,
}
impl Rect {
pub fn new(x: f32, y: f32, width: f32, height: f32) -> Self {
Self {
x,
y,
width,
height,
}
}
}
impl From<Rect> for (f64, f64, f64, f64) {
fn from(rect: Rect) -> Self {
(rect.x.into(), rect.y.into(), rect.width.into(), rect.height.into())
}
}
#[cfg(windows)]
impl From<Rect> for RECT {
fn from(rect: Rect) -> Self {
Self {
left: rect.x as i32,
top: rect.y as i32,
right: rect.width as i32,
bottom: rect.height as i32,
}
}
}
#[cfg(windows)]
impl From<Rect> for D2D_RECT_U {
fn from(rect: Rect) -> Self {
Self {
left: rect.x as u32,
top: rect.y as u32,
right: rect.width as u32,
bottom: rect.height as u32,
}
}
}
#[cfg(windows)]
impl From<Rect> for D2D_RECT_F {
fn from(rect: Rect) -> Self {
Self {
left: rect.x,
top: rect.y,
right: rect.width,
bottom: rect.height,
}
}
}