diff options
Diffstat (limited to 'src/osd/modules/render/bgfx')
-rw-r--r-- | src/osd/modules/render/bgfx/chainmanager.cpp | 18 | ||||
-rw-r--r-- | src/osd/modules/render/bgfx/chainmanager.h | 5 | ||||
-rw-r--r-- | src/osd/modules/render/bgfx/inputpair.cpp | 21 | ||||
-rw-r--r-- | src/osd/modules/render/bgfx/inputpair.h | 4 | ||||
-rw-r--r-- | src/osd/modules/render/bgfx/slider.cpp | 29 | ||||
-rw-r--r-- | src/osd/modules/render/bgfx/slider.h | 5 |
6 files changed, 25 insertions, 57 deletions
diff --git a/src/osd/modules/render/bgfx/chainmanager.cpp b/src/osd/modules/render/bgfx/chainmanager.cpp index f0394d3b0a3..43bc463a5e1 100644 --- a/src/osd/modules/render/bgfx/chainmanager.cpp +++ b/src/osd/modules/render/bgfx/chainmanager.cpp @@ -377,7 +377,7 @@ void chain_manager::update_screen_count(uint32_t screen_count) } } -int32_t chain_manager::slider_changed(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) +int32_t chain_manager::slider_changed(int id, std::string *str, int32_t newval) { if (newval != SLIDER_NOCHANGE) { @@ -405,18 +405,16 @@ void chain_manager::create_selection_slider(uint32_t screen_index) return; } - std::unique_ptr<slider_state> state = std::make_unique<slider_state>(); + int32_t minval = 0; + int32_t defval = m_current_chain[screen_index]; + int32_t maxval = m_available_chains.size() - 1; + int32_t incval = 1; - state->minval = 0; - state->defval = m_current_chain[screen_index]; - state->maxval = m_available_chains.size() - 1; - state->incval = 1; + std::string description = "Window " + std::to_string(m_window_index) + ", Screen " + std::to_string(screen_index) + " Effect:"; using namespace std::placeholders; - state->update = std::bind(&chain_manager::slider_changed, this, _1, _2, _3, _4, _5); - state->arg = this; - state->id = screen_index; - state->description = "Window " + std::to_string(m_window_index) + ", Screen " + std::to_string(screen_index) + " Effect:"; + auto state = std::make_unique<slider_state>(std::move(description), minval, defval, maxval, incval, + std::bind(&chain_manager::slider_changed, this, screen_index, _1, _2)); ui::menu_item item; item.text = state->description; diff --git a/src/osd/modules/render/bgfx/chainmanager.h b/src/osd/modules/render/bgfx/chainmanager.h index f4daf9a25a9..2c130354dc1 100644 --- a/src/osd/modules/render/bgfx/chainmanager.h +++ b/src/osd/modules/render/bgfx/chainmanager.h @@ -22,7 +22,6 @@ #include "targetmanager.h" #include "effectmanager.h" #include "../frontend/mame/ui/menuitem.h" -#include "../frontend/mame/ui/sliderchangednotifier.h" #include "render.h" class running_machine; @@ -47,7 +46,7 @@ public: const std::string m_path; }; -class chain_manager : public slider_changed_notifier +class chain_manager { public: chain_manager(running_machine& machine, osd_options& options, texture_manager& textures, target_manager& targets, effect_manager& effects, uint32_t window_index, slider_dirty_notifier& slider_notifier); @@ -123,7 +122,7 @@ private: void update_screen_count(uint32_t screen_count); - virtual int32_t slider_changed(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) override; + int32_t slider_changed(int id, std::string *str, int32_t newval); void create_selection_slider(uint32_t screen_index); bool needs_sliders(); diff --git a/src/osd/modules/render/bgfx/inputpair.cpp b/src/osd/modules/render/bgfx/inputpair.cpp index 09b77fc6891..9b430607cb8 100644 --- a/src/osd/modules/render/bgfx/inputpair.cpp +++ b/src/osd/modules/render/bgfx/inputpair.cpp @@ -72,11 +72,6 @@ void bgfx_input_pair::bind(bgfx_effect *effect, const int32_t screen) const bgfx::setTexture(m_index, effect->uniform(m_sampler)->handle(), chains().textures().handle(name)); } -int32_t bgfx_input_pair::slider_changed(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) -{ - return texture_changed(id, str, newval); -} - int32_t bgfx_input_pair::texture_changed(int32_t id, std::string *str, int32_t newval) { if (newval != SLIDER_NOCHANGE) @@ -111,18 +106,16 @@ int32_t bgfx_input_pair::texture_changed(int32_t id, std::string *str, int32_t n void bgfx_input_pair::create_selection_slider(uint32_t screen_index) { - m_slider_state = std::make_unique<slider_state>(); + int32_t minval = 0; + int32_t defval = m_current_texture; + int32_t maxval = m_available_textures.size() - 1; + int32_t incval = 1; - m_slider_state->minval = 0; - m_slider_state->defval = m_current_texture; - m_slider_state->maxval = m_available_textures.size() - 1; - m_slider_state->incval = 1; + std::string description = "Window " + std::to_string(chains().window_index()) + ", Screen " + std::to_string(screen_index) + " " + m_selection + ":"; using namespace std::placeholders; - m_slider_state->update = std::bind(&bgfx_input_pair::slider_changed, this, _1, _2, _3, _4, _5); - m_slider_state->arg = this; - m_slider_state->id = screen_index; - m_slider_state->description = "Window " + std::to_string(chains().window_index()) + ", Screen " + std::to_string(screen_index) + " " + m_selection + ":"; + m_slider_state = std::make_unique<slider_state>(std::move(description), minval, defval, maxval, incval, + std::bind(&bgfx_input_pair::texture_changed, this, screen_index, _1, _2)); ui::menu_item item; item.text = m_slider_state->description; diff --git a/src/osd/modules/render/bgfx/inputpair.h b/src/osd/modules/render/bgfx/inputpair.h index fb3fc58e1f7..6102d7eba70 100644 --- a/src/osd/modules/render/bgfx/inputpair.h +++ b/src/osd/modules/render/bgfx/inputpair.h @@ -17,13 +17,12 @@ #include <string> #include "../frontend/mame/ui/menuitem.h" -#include "../frontend/mame/ui/sliderchangednotifier.h" struct slider_state; class bgfx_effect; class chain_manager; -class bgfx_input_pair : public slider_changed_notifier +class bgfx_input_pair { public: bgfx_input_pair(int index, std::string sampler, std::string texture, std::vector<std::string> available_textures, std::string selection, chain_manager& chains, uint32_t screen_index); @@ -39,7 +38,6 @@ public: std::vector<ui::menu_item> get_slider_list(); private: - virtual int32_t slider_changed(running_machine &machine, void *arg, int /*id*/, std::string *str, int32_t newval) override; void create_selection_slider(uint32_t screen_index); bool needs_sliders(); diff --git a/src/osd/modules/render/bgfx/slider.cpp b/src/osd/modules/render/bgfx/slider.cpp index 927898be5a5..bfd472f7a8a 100644 --- a/src/osd/modules/render/bgfx/slider.cpp +++ b/src/osd/modules/render/bgfx/slider.cpp @@ -37,38 +37,21 @@ bgfx_slider::~bgfx_slider() { } -int32_t bgfx_slider::slider_changed(running_machine& /*machine*/, void *arg, int /*id*/, std::string *str, int32_t newval) -{ - if (arg != nullptr) - { - return reinterpret_cast<bgfx_slider*>(arg)->update(str, newval); - } - return 0; -} - void bgfx_slider::import(float val) { m_value = val; - slider_changed(m_machine, this, m_slider_state->id, nullptr, int32_t(floor(m_value / m_step + 0.5f))); + update(nullptr, int32_t(floor(m_value / m_step + 0.5f))); } std::unique_ptr<slider_state> bgfx_slider::create_core_slider() { - auto state = std::make_unique<slider_state>(); - - state->minval = int32_t(floor(m_min / m_step + 0.5f)); - state->defval = int32_t(floor(m_default / m_step + 0.5f)); - state->maxval = int32_t(floor(m_max / m_step + 0.5f)); - state->incval = int32_t(floor(m_step / m_step + 0.5f)); + int32_t minval = int32_t(floor(m_min / m_step + 0.5f)); + int32_t defval = int32_t(floor(m_default / m_step + 0.5f)); + int32_t maxval = int32_t(floor(m_max / m_step + 0.5f)); + int32_t incval = int32_t(floor(m_step / m_step + 0.5f)); using namespace std::placeholders; - state->update = std::bind(&bgfx_slider::slider_changed, this, _1, _2, _3, _4, _5); - - state->arg = this; - state->id = 0; - state->description = m_description; - - return state; + return std::make_unique<slider_state>(m_description, minval, defval, maxval, incval, std::bind(&bgfx_slider::update, this, _1, _2)); } int32_t bgfx_slider::update(std::string *str, int32_t newval) diff --git a/src/osd/modules/render/bgfx/slider.h b/src/osd/modules/render/bgfx/slider.h index d59f8587bd3..21fb93cbe0d 100644 --- a/src/osd/modules/render/bgfx/slider.h +++ b/src/osd/modules/render/bgfx/slider.h @@ -16,11 +16,9 @@ #include <string> #include <vector> -#include "../frontend/mame/ui/sliderchangednotifier.h" - struct slider_state; -class bgfx_slider : public slider_changed_notifier +class bgfx_slider { public: enum slider_type @@ -62,7 +60,6 @@ public: void import(float val); protected: - virtual int32_t slider_changed(running_machine &machine, void *arg, int /*id*/, std::string *str, int32_t newval) override; std::unique_ptr<slider_state> create_core_slider(); int32_t as_int() const { return int32_t(floor(m_value / m_step + 0.5f)); } |