1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-30 05:10:03 -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

View File

@@ -67,6 +67,7 @@ use std::ops::{Add, Div, Mul, RangeInclusive, Sub};
// ----------------------------------------------------------------------------
pub mod align;
mod numeric;
mod pos2;
mod rect;
mod rect_transform;
@@ -76,6 +77,7 @@ mod vec2;
pub use {
align::{Align, Align2},
numeric::*,
pos2::*,
rect::*,
rect_transform::*,

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);