1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-31 13:50:04 -04:00

Add DragValue::new and Slider::new

This commit is contained in:
Emil Ernerfeldt
2021-03-27 16:03:11 +01:00
parent fd80a64cdb
commit 5481aa8d98
4 changed files with 100 additions and 4 deletions

60
emath/src/numeric.rs Normal file
View File

@@ -0,0 +1,60 @@
/// Implemented for all builtin numeric types
pub trait Numeric: Clone + Copy + PartialEq + PartialOrd + 'static {
/// Is this an integer type?
const INTEGRAL: bool;
/// Smallest finite value
const MIN: Self;
/// Largest finite value
const MAX: Self;
fn to_f64(self) -> f64;
fn from_f64(num: f64) -> Self;
}
macro_rules! impl_numeric_float {
($t:ident) => {
impl Numeric for $t {
const INTEGRAL: bool = false;
const MIN: Self = std::$t::MIN;
const MAX: Self = std::$t::MAX;
fn to_f64(self) -> f64 {
self as f64
}
fn from_f64(num: f64) -> Self {
num as Self
}
}
};
}
macro_rules! impl_numeric_integer {
($t:ident) => {
impl Numeric for $t {
const INTEGRAL: bool = true;
const MIN: Self = std::$t::MIN;
const MAX: Self = std::$t::MAX;
fn to_f64(self) -> f64 {
self as f64
}
fn from_f64(num: f64) -> Self {
num as Self
}
}
};
}
impl_numeric_float!(f32);
impl_numeric_float!(f64);
impl_numeric_integer!(i8);
impl_numeric_integer!(u8);
impl_numeric_integer!(i16);
impl_numeric_integer!(u16);
impl_numeric_integer!(i32);
impl_numeric_integer!(u32);
impl_numeric_integer!(i64);
impl_numeric_integer!(u64);
impl_numeric_integer!(isize);
impl_numeric_integer!(usize);