diff --git a/rpcs3/Emu/RSX/Overlays/overlay_controls.cpp b/rpcs3/Emu/RSX/Overlays/overlay_controls.cpp index 408ff6cc34..8c293ed7bd 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_controls.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_controls.cpp @@ -730,9 +730,10 @@ namespace rsx return compiled_resources; } - void layout_container::add_spacer() + void layout_container::add_spacer(u16 size) { std::unique_ptr spacer_element = std::make_unique(); + spacer_element->set_size(size, size); add_element(spacer_element); } diff --git a/rpcs3/Emu/RSX/Overlays/overlay_controls.h b/rpcs3/Emu/RSX/Overlays/overlay_controls.h index 81b51904ba..25ccb16e49 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_controls.h +++ b/rpcs3/Emu/RSX/Overlays/overlay_controls.h @@ -265,7 +265,7 @@ namespace rsx compiled_resource& get_compiled() override; virtual u16 get_scroll_offset_px() = 0; - void add_spacer(); + void add_spacer(u16 size = 0); }; struct vertical_layout : public layout_container diff --git a/rpcs3/Emu/RSX/Overlays/overlay_slider.cpp b/rpcs3/Emu/RSX/Overlays/overlay_slider.cpp index a27b824da7..5ba3c5449c 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_slider.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_slider.cpp @@ -1 +1,178 @@ #include "stdafx.h" +#include "overlay_slider.h" + +namespace rsx::overlays +{ + constexpr u16 slider_rail_thickness = 5; + constexpr u16 slider_cover_thickness = 6; + constexpr u16 slider_indicator_radius = 8; + constexpr u16 slider_indicator_dia = slider_indicator_radius * 2; + + void slider::init() + { + back_color = color4f(0.3f, 0.3f, 0.3f, 0.f); + fore_color = color4f(0.5647f, 0.7922f, 0.9765f, 1.f); + auto_resize = false; + m_current_value = m_min_value; + } + + void slider::set_size(u16 w, u16 h) + { + horizontal_layout::set_size(w, h); + clear_items(); + + // Clamp the height + h = std::max(h, 8); + + // Base components + auto background = std::make_unique(); + auto foreground = std::make_unique(); + auto indicator = std::make_unique(); + auto value_label = std::make_unique