pub mod rect;
pub mod padding;
pub mod border;
pub mod pos;
pub mod radius;
pub mod font;
#[derive(Clone, Copy)]
pub enum SizeMode {
Auto,
FixWidth(f32),
FixHeight(f32),
Fix(f32, f32),
}
impl SizeMode {
pub fn fix_width(&mut self, w: f32) {
match self {
SizeMode::Auto => *self = SizeMode::FixWidth(w),
SizeMode::FixHeight(h) => *self = SizeMode::Fix(w, *h),
SizeMode::FixWidth(fw) => *fw = w,
SizeMode::Fix(fw, _) => *fw = w,
}
}
pub fn fix_height(&mut self, h: f32) {
match self {
SizeMode::Auto => *self = SizeMode::FixHeight(h),
SizeMode::FixWidth(w) => *self = SizeMode::Fix(*w, h),
SizeMode::FixHeight(fh) => *fh = h,
SizeMode::Fix(_, fh) => *fh = h,
}
}
pub fn is_fixed_width(&self) -> bool {
match self {
SizeMode::FixWidth(_) | SizeMode::Fix(_, _) => true,
_ => false,
}
}
pub fn is_auto_width(&self) -> bool {
match self {
SizeMode::Auto => true,
SizeMode::FixHeight(_) => true,
_=> false,
}
}
pub fn size(&self, w: f32, h: f32) -> (f32, f32) {
match self {
SizeMode::Auto => (w, h),
SizeMode::FixWidth(w) => (*w, h),
SizeMode::FixHeight(h) => (w, *h),
SizeMode::Fix(w, h) => (*w, *h)
}
}
pub fn width(&self, w: f32) -> f32 {
match self {
SizeMode::Auto => w,
SizeMode::FixWidth(w) => *w,
SizeMode::FixHeight(_) => w,
SizeMode::Fix(w, _) => *w,
}
}
}
#[derive(Clone, Debug, Copy, PartialEq)]
pub struct Size {
pub width: u32,
pub height: u32,
}
impl Size {
pub fn as_gamma_size(&self) -> [f32; 2] {
[self.width as f32, self.height as f32]
}
#[cfg(feature = "winit")]
pub fn as_physical_size(&self) -> winit::dpi::PhysicalSize<u32> {
winit::dpi::PhysicalSize::new(self.width, self.height)
}
}
impl From<(u32, u32)> for Size {
fn from(value: (u32, u32)) -> Self {
Size {
width: value.0,
height: value.1,
}
}
}
impl From<&wgpu::SurfaceConfiguration> for Size {
fn from(value: &wgpu::SurfaceConfiguration) -> Self {
Size {
width: value.width,
height: value.height,
}
}
}