|
28 | 28 | #include "ekg/ui/property.hpp" |
29 | 29 | #include "ekg/io/event.hpp" |
30 | 30 |
|
| 31 | +namespace ekg::ui { |
| 32 | + static const size_t f64 {typeid(double).hash_code()}; |
| 33 | + static const size_t f32 {typeid(float).hash_code()}; |
| 34 | + static const size_t i64 {typeid(int64_t).hash_code()}; |
| 35 | + static const size_t u64 {typeid(uint64_t).hash_code()}; |
| 36 | + static const size_t i32 {typeid(int32_t).hash_code()}; |
| 37 | + static const size_t u32 {typeid(uint32_t).hash_code()}; |
| 38 | + static const size_t i16 {typeid(int16_t).hash_code()}; |
| 39 | + static const size_t u16 {typeid(uint16_t).hash_code()}; |
| 40 | + static const size_t i8 {typeid(int8_t).hash_code()}; |
| 41 | + static const size_t u8 {typeid(uint8_t).hash_code()}; |
| 42 | +} |
| 43 | + |
| 44 | +/** |
| 45 | + * This make easily the part of adding tasks like: drag, draw, etc. |
| 46 | + **/ |
| 47 | +#define ekg_ui_slider_range_task_impl(ekg_ui_slider_range, number_t_hash, number_t, todo) \ |
| 48 | + if (hash == number_t_hash) { \ |
| 49 | + number_t &value {ekg_ui_slider_range.value.as<number_t>()}; \ |
| 50 | + number_t &min {ekg_ui_slider_range.min.as<number_t>()}; \ |
| 51 | + number_t &max {ekg_ui_slider_range.max.as<number_t>()}; \ |
| 52 | + todo; \ |
| 53 | + } |
| 54 | + |
| 55 | +/** |
| 56 | + * This provides a map for most all number-types. |
| 57 | + **/ |
| 58 | +#define ekg_ui_slider_range_task(ekg_ui_slider_range, todo) \ |
| 59 | + const size_t hash {ekg_ui_slider_range.value.get_type_info_hash()}; \ |
| 60 | + ekg_ui_slider_range_task_impl(ekg_ui_slider_range, ekg::ui::f64, double, todo); \ |
| 61 | + ekg_ui_slider_range_task_impl(ekg_ui_slider_range, ekg::ui::f32, float, todo); \ |
| 62 | + ekg_ui_slider_range_task_impl(ekg_ui_slider_range, ekg::ui::i64, int64_t, todo); \ |
| 63 | + ekg_ui_slider_range_task_impl(ekg_ui_slider_range, ekg::ui::u64, uint64_t, todo); \ |
| 64 | + ekg_ui_slider_range_task_impl(ekg_ui_slider_range, ekg::ui::i32, int32_t, todo); \ |
| 65 | + ekg_ui_slider_range_task_impl(ekg_ui_slider_range, ekg::ui::u32, uint32_t, todo); \ |
| 66 | + ekg_ui_slider_range_task_impl(ekg_ui_slider_range, ekg::ui::i16, int16_t, todo); \ |
| 67 | + ekg_ui_slider_range_task_impl(ekg_ui_slider_range, ekg::ui::u16, uint16_t, todo); \ |
| 68 | + ekg_ui_slider_range_task_impl(ekg_ui_slider_range, ekg::ui::i8, int8_t, todo); \ |
| 69 | + ekg_ui_slider_range_task_impl(ekg_ui_slider_range, ekg::ui::u8, uint8_t, todo); |
| 70 | + |
31 | 71 | namespace ekg::ui { |
32 | 72 | void reload( |
33 | 73 | ekg::property_t &property, |
|
0 commit comments