diff options
author | 2016-04-26 16:37:43 -0400 | |
---|---|---|
committer | 2016-04-26 16:37:43 -0400 | |
commit | e06384aaba8f618ad049d9fe933c76eccf24594a (patch) | |
tree | f61522b73dcae33281045d6a88f45034fd3310b0 /src | |
parent | 0b1ca9b15dd8baf20ce4abd1879478e8dd65ecfb (diff) |
Relieve UI menus and such from having to constantly fetch UI object from global state (nw)
Diffstat (limited to 'src')
79 files changed, 1193 insertions, 1205 deletions
diff --git a/src/frontend/mame/cheat.cpp b/src/frontend/mame/cheat.cpp index 2c48e8c6375..32dc85df1b6 100644 --- a/src/frontend/mame/cheat.cpp +++ b/src/frontend/mame/cheat.cpp @@ -75,6 +75,7 @@ #include "emu.h" #include "emuopts.h" #include "xmlfile.h" +#include "mame.h" #include "ui/ui.h" #include "ui/menu.h" #include "cheat.h" @@ -1221,17 +1222,17 @@ bool cheat_manager::save_all(const char *filename) // render text //------------------------------------------------- -void cheat_manager::render_text(render_container &container) +void cheat_manager::render_text(mame_ui_manager &mui, render_container &container) { // render any text and free it along the way for (int linenum = 0; linenum < m_output.size(); linenum++) if (!m_output[linenum].empty()) { // output the text - mame_machine_manager::instance()->ui().draw_text_full(&container, m_output[linenum].c_str(), - 0.0f, (float)linenum * mame_machine_manager::instance()->ui().get_line_height(), 1.0f, + mui.draw_text_full(&container, m_output[linenum].c_str(), + 0.0f, (float)linenum * mui.get_line_height(), 1.0f, m_justify[linenum], WRAP_NEVER, DRAW_OPAQUE, - ARGB_WHITE, ARGB_BLACK, nullptr, nullptr); + rgb_t::white, rgb_t::black, nullptr, nullptr); } } diff --git a/src/frontend/mame/cheat.h b/src/frontend/mame/cheat.h index dac90e17286..71cb149c62c 100644 --- a/src/frontend/mame/cheat.h +++ b/src/frontend/mame/cheat.h @@ -14,7 +14,6 @@ #define __CHEAT_H__ #include "debug/express.h" -#include "ui/ui.h" //************************************************************************** @@ -38,6 +37,7 @@ DECLARE_ENUM_OPERATORS(script_state) //************************************************************************** class cheat_manager; +class mame_ui_manager; // ======================> number_and_format @@ -303,7 +303,7 @@ public: // actions void reload(); bool save_all(const char *filename); - void render_text(render_container &container); + void render_text(mame_ui_manager &mui, render_container &container); // output helpers std::string &get_output_astring(int row, int justify); diff --git a/src/frontend/mame/clifront.cpp b/src/frontend/mame/clifront.cpp index 9d81306aa60..e169479f383 100644 --- a/src/frontend/mame/clifront.cpp +++ b/src/frontend/mame/clifront.cpp @@ -28,6 +28,8 @@ #include "softlist.h" #include "ui/moptions.h" +#include "language.h" +#include "pluginopts.h" #include <new> #include <ctype.h> diff --git a/src/frontend/mame/info.cpp b/src/frontend/mame/info.cpp index b23c8296992..fe4b161503c 100644 --- a/src/frontend/mame/info.cpp +++ b/src/frontend/mame/info.cpp @@ -9,7 +9,6 @@ ***************************************************************************/ #include "emu.h" -#include "mame.h" #include "mameopts.h" #include "machine/ram.h" #include "sound/samples.h" @@ -216,7 +215,7 @@ void info_xml_creator::output(FILE *out, bool nodevices) #endif "\" mameconfig=\"%d\">\n", XML_ROOT, - xml_normalize_string(build_version), + xml_normalize_string(emulator_info::get_build_version()), CONFIG_VERSION ); diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp index 72c36e3bd47..fb781811258 100644 --- a/src/frontend/mame/luaengine.cpp +++ b/src/frontend/mame/luaengine.cpp @@ -1507,6 +1507,7 @@ int lua_engine::lua_screen::l_draw_text(lua_State *L) } const char *msg = luaL_checkstring(L,4); rgb_t textcolor = UI_TEXT_COLOR; + rgb_t bgcolor = UI_TEXT_BG_COLOR; if (!lua_isnone(L, 5)) { textcolor = rgb_t(lua_tounsigned(L, 5)); } @@ -1515,7 +1516,7 @@ int lua_engine::lua_screen::l_draw_text(lua_State *L) render_container &rc = sc->container(); mame_machine_manager::instance()->ui().draw_text_full(&rc, msg, x, y, (1.0f - x), justify, WRAP_WORD, DRAW_NORMAL, textcolor, - UI_TEXT_BG_COLOR, nullptr, nullptr); + bgcolor, nullptr, nullptr); return 0; } diff --git a/src/frontend/mame/mame.cpp b/src/frontend/mame/mame.cpp index c162e5ff12a..83c4a6cf2b7 100644 --- a/src/frontend/mame/mame.cpp +++ b/src/frontend/mame/mame.cpp @@ -12,12 +12,14 @@ #include "mame.h" #include "emuopts.h" #include "mameopts.h" +#include "pluginopts.h" #include "osdepend.h" #include "validity.h" #include "clifront.h" #include "drivenum.h" #include "luaengine.h" #include <time.h> +#include "ui/ui.h" #include "ui/selgame.h" #include "ui/simpleselgame.h" #include "cheat.h" @@ -272,7 +274,7 @@ ui_manager* mame_machine_manager::create_ui(running_machine& machine) machine.add_notifier(MACHINE_NOTIFY_RESET, machine_notify_delegate(FUNC(mame_machine_manager::reset), this)); // start the inifile manager - m_inifile = std::make_unique<inifile_manager>(machine); + m_inifile = std::make_unique<inifile_manager>(machine, m_ui->options()); m_ui->set_startup_text("Initializing...", true); @@ -280,10 +282,10 @@ ui_manager* mame_machine_manager::create_ui(running_machine& machine) m_autoboot_timer = machine.scheduler().timer_alloc(timer_expired_delegate(FUNC(mame_machine_manager::autoboot_callback), this)); // start datfile manager - m_datfile = std::make_unique<datfile_manager>(machine); + m_datfile = std::make_unique<datfile_manager>(machine, m_ui->options()); // start favorite manager - m_favorite = std::make_unique<favorite_manager>(machine); + m_favorite = std::make_unique<favorite_manager>(machine, m_ui->options()); return m_ui.get(); } @@ -308,12 +310,12 @@ const char * emulator_info::get_build_version() { return build_version; } void emulator_info::display_ui_chooser(running_machine& machine) { // force the UI to show the game select screen - if (strcmp(machine.options().ui(), "simple") == 0) { - ui_simple_menu_select_game::force_game_select(machine, &machine.render().ui_container()); - } - else { - ui_menu_select_game::force_game_select(machine, &machine.render().ui_container()); - } + mame_ui_manager &mui = mame_machine_manager::instance()->ui(); + render_container *container = &machine.render().ui_container(); + if (strcmp(machine.options().ui(), "simple") == 0) + ui_simple_menu_select_game::force_game_select(mui, container); + else + ui_menu_select_game::force_game_select(mui, container); } int emulator_info::start_frontend(emu_options &options, osd_interface &osd, int argc, char *argv[]) diff --git a/src/frontend/mame/mame.h b/src/frontend/mame/mame.h index 8cf1a29d50b..d17b324171d 100644 --- a/src/frontend/mame/mame.h +++ b/src/frontend/mame/mame.h @@ -12,11 +12,7 @@ #ifndef __MAME_H__ #define __MAME_H__ -#include "emu.h" -#include <time.h> -#include "pluginopts.h" -#include "ui/ui.h" - +class plugin_options; class osd_interface; //************************************************************************** diff --git a/src/frontend/mame/ui/auditmenu.cpp b/src/frontend/mame/ui/auditmenu.cpp index 43da259cdc7..3ced1d2fd3e 100644 --- a/src/frontend/mame/ui/auditmenu.cpp +++ b/src/frontend/mame/ui/auditmenu.cpp @@ -84,8 +84,8 @@ bool sorted_game_list(const game_driver *x, const game_driver *y) // ctor / dtor //------------------------------------------------- -ui_menu_audit::ui_menu_audit(running_machine &machine, render_container *container, vptr_game &availablesorted, vptr_game &unavailablesorted, int _audit_mode) - : ui_menu(machine, container) +ui_menu_audit::ui_menu_audit(mame_ui_manager &mui, render_container *container, vptr_game &availablesorted, vptr_game &unavailablesorted, int _audit_mode) + : ui_menu(mui, container) , m_availablesorted(availablesorted) , m_unavailablesorted(unavailablesorted) , m_audit_mode(_audit_mode) @@ -112,7 +112,7 @@ void ui_menu_audit::handle() if (m_first) { - mame_machine_manager::instance()->ui().draw_text_box(container, _("Audit in progress..."), JUSTIFY_CENTER, 0.5f, 0.5f, UI_GREEN_COLOR); + ui().draw_text_box(container, _("Audit in progress..."), JUSTIFY_CENTER, 0.5f, 0.5f, UI_GREEN_COLOR); m_first = false; return; } @@ -177,7 +177,7 @@ void ui_menu_audit::populate() void ui_menu_audit::save_available_machines() { // attempt to open the output file - emu_file file(mame_machine_manager::instance()->ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); + emu_file file(ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); if (file.open(emulator_info::get_configname(), "_avail.ini") == osd_file::error::NONE) { // generate header diff --git a/src/frontend/mame/ui/auditmenu.h b/src/frontend/mame/ui/auditmenu.h index b63bbb6507b..6d7b6a9cbcd 100644 --- a/src/frontend/mame/ui/auditmenu.h +++ b/src/frontend/mame/ui/auditmenu.h @@ -21,7 +21,7 @@ using vptr_game = std::vector<const game_driver *>; class ui_menu_audit : public ui_menu { public: - ui_menu_audit(running_machine &machine, render_container *container, vptr_game &availablesorted, vptr_game &unavailablesorted, int audit_mode); + ui_menu_audit(mame_ui_manager &mui, render_container *container, vptr_game &availablesorted, vptr_game &unavailablesorted, int audit_mode); virtual ~ui_menu_audit(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/barcode.cpp b/src/frontend/mame/ui/barcode.cpp index 10dec5bde11..449341755d7 100644 --- a/src/frontend/mame/ui/barcode.cpp +++ b/src/frontend/mame/ui/barcode.cpp @@ -30,8 +30,8 @@ // ctor //------------------------------------------------- -ui_menu_barcode_reader::ui_menu_barcode_reader(running_machine &machine, render_container *container, barcode_reader_device *device) - : ui_menu_device_control<barcode_reader_device>(machine, container, device) +ui_menu_barcode_reader::ui_menu_barcode_reader(mame_ui_manager &mui, render_container *container, barcode_reader_device *device) + : ui_menu_device_control<barcode_reader_device>(mui, container, device) { } @@ -75,7 +75,7 @@ void ui_menu_barcode_reader::populate() item_append(ui_menu_item_type::SEPARATOR); item_append(_("Enter Code"), nullptr, 0, ITEMREF_ENTER_BARCODE); - customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } } @@ -115,7 +115,7 @@ void ui_menu_barcode_reader::handle() std::string tmp_file(m_barcode_buffer); //printf("code %s\n", m_barcode_buffer); if (!current_device()->is_valid(tmp_file.length())) - mame_machine_manager::instance()->ui().popup_time(5, "%s", _("Barcode length invalid!")); + ui().popup_time(5, "%s", _("Barcode length invalid!")); else { current_device()->write_code(tmp_file.c_str(), tmp_file.length()); diff --git a/src/frontend/mame/ui/barcode.h b/src/frontend/mame/ui/barcode.h index 5a3dbff634e..f0f584e8cce 100644 --- a/src/frontend/mame/ui/barcode.h +++ b/src/frontend/mame/ui/barcode.h @@ -18,7 +18,7 @@ class ui_menu_barcode_reader : public ui_menu_device_control<barcode_reader_device> { public: - ui_menu_barcode_reader(running_machine &machine, render_container *container, barcode_reader_device *device); + ui_menu_barcode_reader(mame_ui_manager &mui, render_container *container, barcode_reader_device *device); virtual ~ui_menu_barcode_reader(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/cheatopt.cpp b/src/frontend/mame/ui/cheatopt.cpp index 18fe17f93e4..ae6a4e9c508 100644 --- a/src/frontend/mame/ui/cheatopt.cpp +++ b/src/frontend/mame/ui/cheatopt.cpp @@ -10,6 +10,7 @@ #include "emu.h" #include "cheat.h" +#include "mame.h" #include "ui/ui.h" #include "ui/menu.h" @@ -93,7 +94,7 @@ void ui_menu_cheat::handle() /* handle autofire menu */ if (menu_event->itemref == ITEMREF_CHEATS_AUTOFIRE_SETTINGS && menu_event->iptkey == IPT_UI_SELECT) { - ui_menu::stack_push(global_alloc_clear<ui_menu_autofire>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_autofire>(ui(), container)); } /* if things changed, update */ @@ -107,7 +108,7 @@ void ui_menu_cheat::handle() menu_cheat_populate - populate the cheat menu -------------------------------------------------*/ -ui_menu_cheat::ui_menu_cheat(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_cheat::ui_menu_cheat(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } @@ -156,9 +157,9 @@ ui_menu_cheat::~ui_menu_cheat() menu -------------------------------------------------*/ -ui_menu_autofire::ui_menu_autofire(running_machine &machine, render_container *container) : ui_menu(machine, container), last_toggle(false) +ui_menu_autofire::ui_menu_autofire(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container), last_toggle(false) { - const screen_device *screen = machine.first_screen(); + const screen_device *screen = mui.machine().first_screen(); if (screen == nullptr) { diff --git a/src/frontend/mame/ui/cheatopt.h b/src/frontend/mame/ui/cheatopt.h index a9321df7304..3087dc6217d 100644 --- a/src/frontend/mame/ui/cheatopt.h +++ b/src/frontend/mame/ui/cheatopt.h @@ -21,7 +21,7 @@ class ui_menu_cheat : public ui_menu { public: - ui_menu_cheat(running_machine &machine, render_container *container); + ui_menu_cheat(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_cheat(); virtual void populate() override; virtual void handle() override; @@ -35,7 +35,7 @@ public: class ui_menu_autofire : public ui_menu { public: - ui_menu_autofire(running_machine &machine, render_container *container); + ui_menu_autofire(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_autofire(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/custmenu.cpp b/src/frontend/mame/ui/custmenu.cpp index 618b16285cd..d44206ef6c8 100644 --- a/src/frontend/mame/ui/custmenu.cpp +++ b/src/frontend/mame/ui/custmenu.cpp @@ -22,8 +22,8 @@ //------------------------------------------------- // ctor / dtor //------------------------------------------------- -ui_menu_custom_filter::ui_menu_custom_filter(running_machine &machine, render_container *container, bool _single_menu) - : ui_menu(machine, container) +ui_menu_custom_filter::ui_menu_custom_filter(mame_ui_manager &mui, render_container *container, bool _single_menu) + : ui_menu(mui, container) , m_single_menu(_single_menu) , m_added(false) { @@ -104,7 +104,7 @@ void ui_menu_custom_filter::handle() else s_sel[index] = main_filters::text[index]; - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, custfltr::other[pos])); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, s_sel, custfltr::other[pos])); } } else if ((FPTR)m_event->itemref >= YEAR_FILTER && (FPTR)m_event->itemref < YEAR_FILTER + MAX_CUST_FILTER) @@ -121,7 +121,7 @@ void ui_menu_custom_filter::handle() changed = true; } else if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, c_year::ui, custfltr::year[pos])); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, c_year::ui, custfltr::year[pos])); } else if ((FPTR)m_event->itemref >= MNFCT_FILTER && (FPTR)m_event->itemref < MNFCT_FILTER + MAX_CUST_FILTER) { @@ -137,7 +137,7 @@ void ui_menu_custom_filter::handle() changed = true; } else if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, c_mnfct::ui, custfltr::mnfct[pos])); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, c_mnfct::ui, custfltr::mnfct[pos])); } } @@ -196,7 +196,7 @@ void ui_menu_custom_filter::populate() item_append(_("Add filter"), nullptr, 0, (void *)(FPTR)ADD_FILTER); item_append(ui_menu_item_type::SEPARATOR); - customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } //------------------------------------------------- @@ -205,11 +205,10 @@ void ui_menu_custom_filter::populate() void ui_menu_custom_filter::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); // get the size of the text - mui.draw_text_full(container, _("Select custom filters:"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, _("Select custom filters:"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += (2.0f * UI_BOX_LR_BORDER) + 0.01f; float maxwidth = MAX(width, origx2 - origx1); @@ -220,7 +219,7 @@ void ui_menu_custom_filter::custom_render(void *selectedref, float top, float bo float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -228,7 +227,7 @@ void ui_menu_custom_filter::custom_render(void *selectedref, float top, float bo y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, _("Select custom filters:"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, _("Select custom filters:"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } @@ -239,7 +238,7 @@ void ui_menu_custom_filter::custom_render(void *selectedref, float top, float bo void ui_menu_custom_filter::save_custom_filters() { // attempt to open the output file - emu_file file(mame_machine_manager::instance()->ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); + emu_file file(ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); if (file.open("custom_", emulator_info::get_configname(), "_filter.ini") == osd_file::error::NONE) { // generate custom filters info @@ -266,8 +265,8 @@ void ui_menu_custom_filter::save_custom_filters() //------------------------------------------------- // ctor / dtor //------------------------------------------------- -ui_menu_swcustom_filter::ui_menu_swcustom_filter(running_machine &machine, render_container *container, const game_driver *_driver, s_filter &_filter) : - ui_menu(machine, container) +ui_menu_swcustom_filter::ui_menu_swcustom_filter(mame_ui_manager &mui, render_container *container, const game_driver *_driver, s_filter &_filter) : + ui_menu(mui, container) , m_added(false) , m_filter(_filter) , m_driver(_driver) @@ -344,7 +343,7 @@ void ui_menu_swcustom_filter::handle() else s_sel[index] = sw_filters::text[index]; - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, sw_custfltr::other[pos])); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, s_sel, sw_custfltr::other[pos])); } } else if ((FPTR)m_event->itemref >= YEAR_FILTER && (FPTR)m_event->itemref < YEAR_FILTER + MAX_CUST_FILTER) @@ -361,7 +360,7 @@ void ui_menu_swcustom_filter::handle() changed = true; } else if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.year.ui, sw_custfltr::year[pos])); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, m_filter.year.ui, sw_custfltr::year[pos])); } else if ((FPTR)m_event->itemref >= TYPE_FILTER && (FPTR)m_event->itemref < TYPE_FILTER + MAX_CUST_FILTER) { @@ -377,7 +376,7 @@ void ui_menu_swcustom_filter::handle() changed = true; } else if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.type.ui, sw_custfltr::type[pos])); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, m_filter.type.ui, sw_custfltr::type[pos])); } else if ((FPTR)m_event->itemref >= MNFCT_FILTER && (FPTR)m_event->itemref < MNFCT_FILTER + MAX_CUST_FILTER) { @@ -393,7 +392,7 @@ void ui_menu_swcustom_filter::handle() changed = true; } else if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.publisher.ui, sw_custfltr::mnfct[pos])); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, m_filter.publisher.ui, sw_custfltr::mnfct[pos])); } else if ((FPTR)m_event->itemref >= REGION_FILTER && (FPTR)m_event->itemref < REGION_FILTER + MAX_CUST_FILTER) { @@ -409,7 +408,7 @@ void ui_menu_swcustom_filter::handle() changed = true; } else if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.region.ui, sw_custfltr::region[pos])); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, m_filter.region.ui, sw_custfltr::region[pos])); } else if ((FPTR)m_event->itemref >= LIST_FILTER && (FPTR)m_event->itemref < LIST_FILTER + MAX_CUST_FILTER) { @@ -425,7 +424,7 @@ void ui_menu_swcustom_filter::handle() changed = true; } else if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.swlist.description, sw_custfltr::list[pos])); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, m_filter.swlist.description, sw_custfltr::list[pos])); } } @@ -512,7 +511,7 @@ void ui_menu_swcustom_filter::populate() item_append(ui_menu_item_type::SEPARATOR); - customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } //------------------------------------------------- @@ -521,11 +520,10 @@ void ui_menu_swcustom_filter::populate() void ui_menu_swcustom_filter::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); // get the size of the text - mui.draw_text_full(container, _("Select custom filters:"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, _("Select custom filters:"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += (2.0f * UI_BOX_LR_BORDER) + 0.01f; float maxwidth = MAX(width, origx2 - origx1); @@ -536,7 +534,7 @@ void ui_menu_swcustom_filter::custom_render(void *selectedref, float top, float float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -544,7 +542,7 @@ void ui_menu_swcustom_filter::custom_render(void *selectedref, float top, float y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, _("Select custom filters:"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, _("Select custom filters:"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } @@ -555,7 +553,7 @@ void ui_menu_swcustom_filter::custom_render(void *selectedref, float top, float void ui_menu_swcustom_filter::save_sw_custom_filters() { // attempt to open the output file - emu_file file(mame_machine_manager::instance()->ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); + emu_file file(ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); if (file.open("custom_", m_driver->name, "_filter.ini") == osd_file::error::NONE) { // generate custom filters info diff --git a/src/frontend/mame/ui/custmenu.h b/src/frontend/mame/ui/custmenu.h index 338344dcddd..c0c4508d7fe 100644 --- a/src/frontend/mame/ui/custmenu.h +++ b/src/frontend/mame/ui/custmenu.h @@ -73,7 +73,7 @@ struct s_filter class ui_menu_swcustom_filter : public ui_menu { public: - ui_menu_swcustom_filter(running_machine &machine, render_container *container, const game_driver *_driver, s_filter &_filter); + ui_menu_swcustom_filter(mame_ui_manager &mui, render_container *container, const game_driver *_driver, s_filter &_filter); virtual ~ui_menu_swcustom_filter(); virtual void populate() override; virtual void handle() override; @@ -106,7 +106,7 @@ private: class ui_menu_custom_filter : public ui_menu { public: - ui_menu_custom_filter(running_machine &machine, render_container *container, bool _single_menu = false); + ui_menu_custom_filter(mame_ui_manager &mui, render_container *container, bool _single_menu = false); virtual ~ui_menu_custom_filter(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/custui.cpp b/src/frontend/mame/ui/custui.cpp index 78818f33cf8..5f79508d404 100644 --- a/src/frontend/mame/ui/custui.cpp +++ b/src/frontend/mame/ui/custui.cpp @@ -27,11 +27,11 @@ const char *const ui_menu_custom_ui::hide_status[] = { // ctor //------------------------------------------------- -ui_menu_custom_ui::ui_menu_custom_ui(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_custom_ui::ui_menu_custom_ui(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { // load languages - file_enumerator path(machine.options().language_path()); - const char *lang = machine.options().language(); + file_enumerator path(mui.machine().options().language_path()); + const char *lang = mui.machine().options().language(); const osd_directory_entry *dirent; int cnt = 0; while ((dirent = path.next()) != nullptr) @@ -54,7 +54,7 @@ ui_menu_custom_ui::ui_menu_custom_ui(running_machine &machine, render_container ui_menu_custom_ui::~ui_menu_custom_ui() { std::string error_string; - mame_machine_manager::instance()->ui().options().set_value(OPTION_HIDE_PANELS, ui_globals::panels_status, OPTION_PRIORITY_CMDLINE, error_string); + ui().options().set_value(OPTION_HIDE_PANELS, ui_globals::panels_status, OPTION_PRIORITY_CMDLINE, error_string); if (!m_lang.empty()) { machine().options().set_value(OPTION_LANGUAGE, m_lang[m_currlang].c_str(), OPTION_PRIORITY_CMDLINE, error_string); @@ -81,11 +81,11 @@ void ui_menu_custom_ui::handle() { case FONT_MENU: if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_font_ui>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_font_ui>(ui(), container)); break; case COLORS_MENU: if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_colors_ui>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_colors_ui>(ui(), container)); break; case HIDE_MENU: { @@ -101,7 +101,7 @@ void ui_menu_custom_ui::handle() for (int index = 0; index < total; ++index) s_sel[index] = _(hide_status[index]); - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, ui_globals::panels_status)); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, s_sel, ui_globals::panels_status)); } break; } @@ -119,7 +119,7 @@ void ui_menu_custom_ui::handle() for (int index = 0; index < total; ++index) s_sel[index] = m_lang[index]; - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, m_currlang)); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, s_sel, m_currlang)); } break; } @@ -150,7 +150,7 @@ void ui_menu_custom_ui::populate() item_append(_("Show side panels"), _(hide_status[ui_globals::panels_status]), arrow_flags, (void *)(FPTR)HIDE_MENU); item_append(ui_menu_item_type::SEPARATOR); - customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } //------------------------------------------------- @@ -160,10 +160,9 @@ void ui_menu_custom_ui::populate() void ui_menu_custom_ui::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - mui.draw_text_full(container, _("Custom UI Settings"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, _("Custom UI Settings"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; float maxwidth = MAX(origx2 - origx1, width); @@ -174,7 +173,7 @@ void ui_menu_custom_ui::custom_render(void *selectedref, float top, float bottom float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -182,7 +181,7 @@ void ui_menu_custom_ui::custom_render(void *selectedref, float top, float bottom y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, _("Custom UI Settings"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, _("Custom UI Settings"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } @@ -190,10 +189,10 @@ void ui_menu_custom_ui::custom_render(void *selectedref, float top, float bottom // ctor //------------------------------------------------- -ui_menu_font_ui::ui_menu_font_ui(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_font_ui::ui_menu_font_ui(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { - ui_options &moptions = mame_machine_manager::instance()->ui().options(); - std::string name(machine.options().ui_font()); + ui_options &moptions = mui.options(); + std::string name(mui.machine().options().ui_font()); list(); #ifdef UI_WINDOWS @@ -250,7 +249,7 @@ void ui_menu_font_ui::list() ui_menu_font_ui::~ui_menu_font_ui() { std::string error_string; - ui_options &moptions = mame_machine_manager::instance()->ui().options(); + ui_options &moptions = ui().options(); std::string name(m_fonts[m_actual].first); #ifdef UI_WINDOWS @@ -311,7 +310,7 @@ void ui_menu_font_ui::handle() std::vector<std::string> display_names; display_names.reserve(m_fonts.size()); for (auto const &font : m_fonts) display_names.emplace_back(font.second); - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, std::move(display_names), m_actual)); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, std::move(display_names), m_actual)); changed = true; } break; @@ -364,7 +363,7 @@ void ui_menu_font_ui::populate() item_append(ui_menu_item_type::SEPARATOR); - custombottom = customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + custombottom = customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } //------------------------------------------------- @@ -374,13 +373,12 @@ void ui_menu_font_ui::populate() void ui_menu_font_ui::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); // top text std::string topbuf(_("UI Fonts Settings")); - mui.draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; float maxwidth = MAX(origx2 - origx1, width); @@ -391,7 +389,7 @@ void ui_menu_font_ui::custom_render(void *selectedref, float top, float bottom, float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -399,15 +397,15 @@ void ui_menu_font_ui::custom_render(void *selectedref, float top, float bottom, y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); if ((FPTR)selectedref == INFOS_SIZE) { topbuf = _("Sample text - Lorem ipsum dolor sit amet, consectetur adipiscing elit."); - mui.draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_LEFT, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr, m_info_size); + ui().draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_LEFT, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr, m_info_size); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(origx2 - origx1, width); @@ -418,7 +416,7 @@ void ui_menu_font_ui::custom_render(void *selectedref, float top, float bottom, y2 = origy2 + bottom; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -426,7 +424,7 @@ void ui_menu_font_ui::custom_render(void *selectedref, float top, float bottom, y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_LEFT, WRAP_NEVER, + ui().draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_LEFT, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, m_info_size); } } @@ -436,7 +434,7 @@ void ui_menu_font_ui::custom_render(void *selectedref, float top, float bottom, //------------------------------------------------- #define SET_COLOR_UI(var, opt) var[M##opt].color = opt; var[M##opt].option = OPTION_##opt -ui_menu_colors_ui::ui_menu_colors_ui(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_colors_ui::ui_menu_colors_ui(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { SET_COLOR_UI(m_color_table, UI_BACKGROUND_COLOR); SET_COLOR_UI(m_color_table, UI_BORDER_COLOR); @@ -466,7 +464,7 @@ ui_menu_colors_ui::~ui_menu_colors_ui() for (int index = 1; index < MUI_RESTORE; index++) { dec_color = string_format("%x", (UINT32)m_color_table[index].color); - mame_machine_manager::instance()->ui().options().set_value(m_color_table[index].option, dec_color.c_str(), OPTION_PRIORITY_CMDLINE, error_string); + ui().options().set_value(m_color_table[index].option, dec_color.c_str(), OPTION_PRIORITY_CMDLINE, error_string); } } @@ -484,7 +482,7 @@ void ui_menu_colors_ui::handle() if (m_event != nullptr && m_event->itemref != nullptr && m_event->iptkey == IPT_UI_SELECT) { if ((FPTR)m_event->itemref != MUI_RESTORE) - ui_menu::stack_push(global_alloc_clear<ui_menu_rgb_ui>(machine(), container, &m_color_table[(FPTR)m_event->itemref].color, item[selected].text)); + ui_menu::stack_push(global_alloc_clear<ui_menu_rgb_ui>(ui(), container, &m_color_table[(FPTR)m_event->itemref].color, item[selected].text)); else { changed = true; @@ -522,7 +520,7 @@ void ui_menu_colors_ui::populate() item_append(ui_menu_item_type::SEPARATOR); item_append(_("Restore originals colors"), nullptr, 0, (void *)(FPTR)MUI_RESTORE); - custombottom = customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + custombottom = customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } //------------------------------------------------- @@ -532,14 +530,13 @@ void ui_menu_colors_ui::populate() void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width, maxwidth = origx2 - origx1; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - float line_height = mui.get_line_height(); + float line_height = ui().get_line_height(); // top text std::string topbuf(_("UI Colors Settings")); - mui.draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(maxwidth, width); @@ -550,7 +547,7 @@ void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -558,7 +555,7 @@ void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); // bottom text @@ -566,8 +563,8 @@ void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom std::string ui_select_text = machine().input().seq_name(machine().ioport().type_seq(IPT_UI_SELECT, 0, SEQ_TYPE_STANDARD)); topbuf = string_format(_("Double click or press %1$s to change the color value"), ui_select_text); - mui.draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(maxwidth, width); @@ -578,7 +575,7 @@ void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom y2 = origy2 + bottom; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -586,14 +583,14 @@ void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); // compute maxwidth topbuf = _("Menu Preview"); - mui.draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); maxwidth = width + 2.0f * UI_BOX_LR_BORDER; std::string sampletxt[5]; @@ -606,8 +603,8 @@ void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom for (auto & elem: sampletxt) { - mui.draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(maxwidth, width); } @@ -619,7 +616,7 @@ void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom y2 = y1 + bottom - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -628,7 +625,7 @@ void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom y2 -= UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); // compute our bounds for menu preview @@ -638,7 +635,7 @@ void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom y2 = y1 + 5.0f * line_height + 2.0f * UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, m_color_table[MUI_BACKGROUND_COLOR].color); + ui().draw_outlined_box(container, x1, y1, x2, y2, m_color_table[MUI_BACKGROUND_COLOR].color); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -646,29 +643,29 @@ void ui_menu_colors_ui::custom_render(void *selectedref, float top, float bottom y1 += UI_BOX_TB_BORDER; // draw normal text - mui.draw_text_full(container, sampletxt[0].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, sampletxt[0].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, m_color_table[MUI_TEXT_COLOR].color, m_color_table[MUI_TEXT_BG_COLOR].color, nullptr, nullptr); y1 += line_height; // draw subitem text - mui.draw_text_full(container, sampletxt[1].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, sampletxt[1].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, m_color_table[MUI_SUBITEM_COLOR].color, m_color_table[MUI_TEXT_BG_COLOR].color, nullptr, nullptr); y1 += line_height; // draw selected text highlight(container, x1, y1, x2, y1 + line_height, m_color_table[MUI_SELECTED_BG_COLOR].color); - mui.draw_text_full(container, sampletxt[2].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, sampletxt[2].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, m_color_table[MUI_SELECTED_COLOR].color, m_color_table[MUI_SELECTED_BG_COLOR].color, nullptr, nullptr); y1 += line_height; // draw mouse over text highlight(container, x1, y1, x2, y1 + line_height, m_color_table[MUI_MOUSEOVER_BG_COLOR].color); - mui.draw_text_full(container, sampletxt[3].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, sampletxt[3].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, m_color_table[MUI_MOUSEOVER_COLOR].color, m_color_table[MUI_MOUSEOVER_BG_COLOR].color, nullptr, nullptr); y1 += line_height; // draw clone text - mui.draw_text_full(container, sampletxt[4].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, sampletxt[4].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, m_color_table[MUI_CLONE_COLOR].color, m_color_table[MUI_TEXT_BG_COLOR].color, nullptr, nullptr); } @@ -688,7 +685,7 @@ void ui_menu_colors_ui::restore_colors() // ctor //------------------------------------------------- -ui_menu_rgb_ui::ui_menu_rgb_ui(running_machine &machine, render_container *container, rgb_t *_color, std::string _title) : ui_menu(machine, container) +ui_menu_rgb_ui::ui_menu_rgb_ui(mame_ui_manager &mui, render_container *container, rgb_t *_color, std::string _title) : ui_menu(mui, container) { m_color = _color; m_key_active = false; @@ -811,7 +808,7 @@ void ui_menu_rgb_ui::handle() case PALETTE_CHOOSE: if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_palette_sel>(machine(), container, *m_color)); + ui_menu::stack_push(global_alloc_clear<ui_menu_palette_sel>(ui(), container, *m_color)); break; } } @@ -866,7 +863,7 @@ void ui_menu_rgb_ui::populate() item_append(_("Choose from palette"), nullptr, 0, (void *)(FPTR)PALETTE_CHOOSE); item_append(ui_menu_item_type::SEPARATOR); - custombottom = customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + custombottom = customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } //------------------------------------------------- @@ -876,12 +873,11 @@ void ui_menu_rgb_ui::populate() void ui_menu_rgb_ui::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width, maxwidth = origx2 - origx1; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); // top text std::string topbuf = std::string(m_title).append(_(" - ARGB Settings")); - mui.draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, topbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(maxwidth, width); @@ -892,7 +888,7 @@ void ui_menu_rgb_ui::custom_render(void *selectedref, float top, float bottom, f float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -900,13 +896,13 @@ void ui_menu_rgb_ui::custom_render(void *selectedref, float top, float bottom, f y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, topbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); std::string sampletxt(_("Color preview =")); maxwidth = origx2 - origx1; - mui.draw_text_full(container, sampletxt.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, sampletxt.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(maxwidth, width); @@ -917,7 +913,7 @@ void ui_menu_rgb_ui::custom_render(void *selectedref, float top, float bottom, f y2 = origy2 + bottom; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -925,15 +921,15 @@ void ui_menu_rgb_ui::custom_render(void *selectedref, float top, float bottom, f y1 += UI_BOX_TB_BORDER; // draw the normal text - mui.draw_text_full(container, sampletxt.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NORMAL, ARGB_WHITE, ARGB_BLACK, nullptr, nullptr); + ui().draw_text_full(container, sampletxt.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NORMAL, rgb_t::white, rgb_t::black, nullptr, nullptr); float t_x2 = x1 - UI_BOX_LR_BORDER + maxwidth; x1 = x2 + 2.0f * UI_BOX_LR_BORDER; x2 = t_x2; y1 -= UI_BOX_TB_BORDER; - mui.draw_outlined_box(container, x1, y1, x2, y2, *m_color); + ui().draw_outlined_box(container, x1, y1, x2, y2, *m_color); } @@ -1015,8 +1011,8 @@ ui_menu_palette_sel::palcolor ui_menu_palette_sel::m_palette[] = { // ctor //------------------------------------------------- -ui_menu_palette_sel::ui_menu_palette_sel(running_machine &machine, render_container *container, rgb_t &_color) - : ui_menu(machine, container), m_original(_color) +ui_menu_palette_sel::ui_menu_palette_sel(mame_ui_manager &mui, render_container *container, rgb_t &_color) + : ui_menu(mui, container), m_original(_color) { } diff --git a/src/frontend/mame/ui/custui.h b/src/frontend/mame/ui/custui.h index 0aeffca9c5b..ec271485f6c 100644 --- a/src/frontend/mame/ui/custui.h +++ b/src/frontend/mame/ui/custui.h @@ -20,7 +20,7 @@ class ui_menu_custom_ui : public ui_menu { public: - ui_menu_custom_ui(running_machine &machine, render_container *container); + ui_menu_custom_ui(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_custom_ui(); virtual void populate() override; virtual void handle() override; @@ -46,7 +46,7 @@ private: class ui_menu_font_ui : public ui_menu { public: - ui_menu_font_ui(running_machine &machine, render_container *container); + ui_menu_font_ui(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_font_ui(); virtual void populate() override; virtual void handle() override; @@ -81,7 +81,7 @@ private: class ui_menu_colors_ui : public ui_menu { public: - ui_menu_colors_ui(running_machine &machine, render_container *container); + ui_menu_colors_ui(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_colors_ui(); virtual void populate() override; virtual void handle() override; @@ -126,7 +126,7 @@ private: class ui_menu_rgb_ui : public ui_menu { public: - ui_menu_rgb_ui(running_machine &machine, render_container *container, rgb_t *_color, std::string _title); + ui_menu_rgb_ui(mame_ui_manager &mui, render_container *container, rgb_t *_color, std::string _title); virtual ~ui_menu_rgb_ui(); virtual void populate() override; virtual void handle() override; @@ -158,7 +158,7 @@ private: class ui_menu_palette_sel : public ui_menu { public: - ui_menu_palette_sel(running_machine &machine, render_container *container, rgb_t &_color); + ui_menu_palette_sel(mame_ui_manager &mui, render_container *container, rgb_t &_color); virtual ~ui_menu_palette_sel(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/datfile.cpp b/src/frontend/mame/ui/datfile.cpp index 2264a421b9e..921784de75c 100644 --- a/src/frontend/mame/ui/datfile.cpp +++ b/src/frontend/mame/ui/datfile.cpp @@ -10,7 +10,7 @@ #include "emu.h" #include "drivenum.h" -#include "ui/ui.h" +#include "ui/moptions.h" #include "ui/datfile.h" #include "ui/utils.h" @@ -58,9 +58,9 @@ bool datfile_manager::first_run = true; //------------------------------------------------- // ctor //------------------------------------------------- -datfile_manager::datfile_manager(running_machine &machine) : m_machine(machine) +datfile_manager::datfile_manager(running_machine &machine, ui_options &moptions) : m_machine(machine), m_options(moptions) { - if (mame_machine_manager::instance()->ui().options().enabled_dats() && first_run) + if (m_options.enabled_dats() && first_run) { first_run = false; if (parseopen("mameinfo.dat")) @@ -577,7 +577,7 @@ bool datfile_manager::parseopen(const char *filename) // MAME core file parsing functions fail in recognizing UNICODE chars in UTF-8 without BOM, // so it's better and faster use standard C fileio functions. - emu_file file(mame_machine_manager::instance()->ui().options().history_path(), OPEN_FLAG_READ); + emu_file file(m_options.history_path(), OPEN_FLAG_READ); if (file.open(filename) != osd_file::error::NONE) return false; diff --git a/src/frontend/mame/ui/datfile.h b/src/frontend/mame/ui/datfile.h index 27bb8094704..dca01570375 100644 --- a/src/frontend/mame/ui/datfile.h +++ b/src/frontend/mame/ui/datfile.h @@ -13,6 +13,8 @@ #ifndef __UI_DATFILE_H__ #define __UI_DATFILE_H__ +class ui_options; + //------------------------------------------------- // Datafile Manager //------------------------------------------------- @@ -20,7 +22,7 @@ class datfile_manager { public: // construction/destruction - datfile_manager(running_machine &machine); + datfile_manager(running_machine &machine, ui_options &moptions); // getters running_machine &machine() const { return m_machine; } @@ -86,6 +88,7 @@ private: // internal state running_machine &m_machine; // reference to our machine + ui_options &m_options; std::string m_fullpath; static std::string m_history_rev, m_mame_rev, m_mess_rev, m_sysinfo_rev, m_story_rev, m_ginit_rev; FILE *fp = nullptr; diff --git a/src/frontend/mame/ui/datmenu.cpp b/src/frontend/mame/ui/datmenu.cpp index 188e938acff..7c6d8079780 100644 --- a/src/frontend/mame/ui/datmenu.cpp +++ b/src/frontend/mame/ui/datmenu.cpp @@ -9,6 +9,7 @@ *********************************************************************/ #include "emu.h" +#include "mame.h" #include "ui/ui.h" #include "ui/menu.h" #include "rendfont.h" @@ -21,14 +22,14 @@ // ctor / dtor //------------------------------------------------- -ui_menu_dats_view::ui_menu_dats_view(running_machine &machine, render_container *container, const game_driver *driver) - : ui_menu(machine, container) +ui_menu_dats_view::ui_menu_dats_view(mame_ui_manager &mui, render_container *container, const game_driver *driver) + : ui_menu(mui, container) , m_actual(0) - , m_driver((driver == nullptr) ? &machine.system() : driver) + , m_driver((driver == nullptr) ? &mui.machine().system() : driver) , m_issoft(false) { - for (device_image_interface &image : image_interface_iterator(machine.root_device())) + for (device_image_interface &image : image_interface_iterator(mui.machine().root_device())) { if (image.filename()) { @@ -46,10 +47,10 @@ ui_menu_dats_view::ui_menu_dats_view(running_machine &machine, render_container // ctor //------------------------------------------------- -ui_menu_dats_view::ui_menu_dats_view(running_machine &machine, render_container *container, ui_software_info *swinfo, const game_driver *driver) - : ui_menu(machine, container) +ui_menu_dats_view::ui_menu_dats_view(mame_ui_manager &mui, render_container *container, ui_software_info *swinfo, const game_driver *driver) + : ui_menu(mui, container) , m_actual(0) - , m_driver((driver == nullptr) ? &machine.system() : driver) + , m_driver((driver == nullptr) ? &mui.machine().system() : driver) , m_swinfo(swinfo) , m_list(swinfo->listname) , m_short(swinfo->shortname) @@ -108,8 +109,8 @@ void ui_menu_dats_view::populate() (m_issoft == true) ? get_data_sw() : get_data(); item_append(MENU_SEPARATOR_ITEM, nullptr, (MENU_FLAG_UI_DATS | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW), nullptr); - customtop = 2.0f * mame_machine_manager::instance()->ui().get_line_height() + 4.0f * UI_BOX_TB_BORDER; - custombottom = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = 2.0f * ui().get_line_height() + 4.0f * UI_BOX_TB_BORDER; + custombottom = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; if (!paused) machine().resume(); @@ -121,13 +122,12 @@ void ui_menu_dats_view::populate() void ui_menu_dats_view::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); float maxwidth = origx2 - origx1; float width; std::string driver = (m_issoft == true) ? m_swinfo->longname : m_driver->description; - mui.draw_text_full(container, driver.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, driver.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(maxwidth, width); @@ -135,24 +135,24 @@ void ui_menu_dats_view::custom_render(void *selectedref, float top, float bottom float x1 = 0.5f - 0.5f * maxwidth; float x2 = x1 + maxwidth; float y1 = origy1 - top; - float y2 = origy1 - 2.0f * UI_BOX_TB_BORDER - mui.get_line_height(); + float y2 = origy1 - 2.0f * UI_BOX_TB_BORDER - ui().get_line_height(); // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; x2 -= UI_BOX_LR_BORDER; y1 += UI_BOX_TB_BORDER; - mui.draw_text_full(container, driver.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, driver.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); maxwidth = 0; for (auto & elem : m_items_list) { - mui.draw_text_full(container, elem.label.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, elem.label.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); maxwidth += width; } @@ -162,10 +162,10 @@ void ui_menu_dats_view::custom_render(void *selectedref, float top, float bottom x1 -= UI_BOX_LR_BORDER; x2 += UI_BOX_LR_BORDER; y1 = y2 + UI_BOX_TB_BORDER; - y2 += mui.get_line_height() + 2.0f * UI_BOX_TB_BORDER; + y2 += ui().get_line_height() + 2.0f * UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); // take off the borders x2 -= UI_BOX_LR_BORDER; @@ -178,13 +178,13 @@ void ui_menu_dats_view::custom_render(void *selectedref, float top, float bottom x1 += space; rgb_t fcolor = (m_actual == x) ? rgb_t(0xff, 0xff, 0xff, 0x00) : UI_TEXT_COLOR; rgb_t bcolor = (m_actual == x) ? rgb_t(0xff, 0xff, 0xff, 0xff) : UI_TEXT_BG_COLOR; - mui.draw_text_full(container, elem.label.c_str(), x1, y1, 1.0f, JUSTIFY_LEFT, WRAP_NEVER, DRAW_NONE, fcolor, bcolor, &width, nullptr); + ui().draw_text_full(container, elem.label.c_str(), x1, y1, 1.0f, JUSTIFY_LEFT, WRAP_NEVER, DRAW_NONE, fcolor, bcolor, &width, nullptr); if (bcolor != UI_TEXT_BG_COLOR) - mui.draw_textured_box(container, x1 - (space / 2), y1, x1 + width + (space / 2), y2, bcolor, rgb_t(255, 43, 43, 43), + ui().draw_textured_box(container, x1 - (space / 2), y1, x1 + width + (space / 2), y2, bcolor, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); - mui.draw_text_full(container, elem.label.c_str(), x1, y1, 1.0f, JUSTIFY_LEFT, WRAP_NEVER, DRAW_NORMAL, fcolor, bcolor, &width, nullptr); + ui().draw_text_full(container, elem.label.c_str(), x1, y1, 1.0f, JUSTIFY_LEFT, WRAP_NEVER, DRAW_NORMAL, fcolor, bcolor, &width, nullptr); x1 += width + space; ++x; } @@ -192,7 +192,7 @@ void ui_menu_dats_view::custom_render(void *selectedref, float top, float bottom // bottom std::string revision; revision.assign(_("Revision: ")).append(m_items_list[m_actual].revision); - mui.draw_text_full(container, revision.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, revision.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(origx2 - origx1, width); @@ -203,7 +203,7 @@ void ui_menu_dats_view::custom_render(void *selectedref, float top, float bottom y2 = origy2 + bottom; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -211,7 +211,7 @@ void ui_menu_dats_view::custom_render(void *selectedref, float top, float bottom y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, revision.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, revision.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } @@ -244,7 +244,7 @@ void ui_menu_dats_view::get_data() else mame_machine_manager::instance()->datfile().load_data_info(m_driver, buffer, m_items_list[m_actual].option); - int lines = mame_machine_manager::instance()->ui().wrap_text(container, buffer.c_str(), 0.0f, 0.0f, 1.0f - (4.0f * UI_BOX_LR_BORDER), xstart, xend); + int lines = ui().wrap_text(container, buffer.c_str(), 0.0f, 0.0f, 1.0f - (4.0f * UI_BOX_LR_BORDER), xstart, xend); for (int x = 0; x < lines; ++x) { std::string tempbuf(buffer.substr(xstart[x], xend[x] - xstart[x])); @@ -267,7 +267,7 @@ void ui_menu_dats_view::get_data_sw() mame_machine_manager::instance()->datfile().load_software_info(m_swinfo->listname, buffer, m_swinfo->shortname, m_swinfo->parentname); } - int lines = mame_machine_manager::instance()->ui().wrap_text(container, buffer.c_str(), 0.0f, 0.0f, 1.0f - (4.0f * UI_BOX_LR_BORDER), xstart, xend); + int lines = ui().wrap_text(container, buffer.c_str(), 0.0f, 0.0f, 1.0f - (4.0f * UI_BOX_LR_BORDER), xstart, xend); for (int x = 0; x < lines; ++x) { std::string tempbuf(buffer.substr(xstart[x], xend[x] - xstart[x])); diff --git a/src/frontend/mame/ui/datmenu.h b/src/frontend/mame/ui/datmenu.h index 10de3894816..4592bca5b4b 100644 --- a/src/frontend/mame/ui/datmenu.h +++ b/src/frontend/mame/ui/datmenu.h @@ -23,8 +23,8 @@ struct ui_software_info; class ui_menu_dats_view : public ui_menu { public: - ui_menu_dats_view(running_machine &machine, render_container *container, ui_software_info *swinfo, const game_driver *driver = nullptr); - ui_menu_dats_view(running_machine &machine, render_container *container, const game_driver *driver = nullptr); + ui_menu_dats_view(mame_ui_manager &mui, render_container *container, ui_software_info *swinfo, const game_driver *driver = nullptr); + ui_menu_dats_view(mame_ui_manager &mui, render_container *container, const game_driver *driver = nullptr); virtual ~ui_menu_dats_view(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/devctrl.h b/src/frontend/mame/ui/devctrl.h index 44cdb6d8ede..252981da1bd 100644 --- a/src/frontend/mame/ui/devctrl.h +++ b/src/frontend/mame/ui/devctrl.h @@ -27,7 +27,7 @@ template<class _DeviceType> class ui_menu_device_control : public ui_menu { public: - ui_menu_device_control(running_machine &machine, render_container *container, _DeviceType *device); + ui_menu_device_control(mame_ui_manager &mui, render_container *container, _DeviceType *device); protected: _DeviceType *current_device() { return m_device; } @@ -53,10 +53,10 @@ private: //------------------------------------------------- template<class _DeviceType> -ui_menu_device_control<_DeviceType>::ui_menu_device_control(running_machine &machine, render_container *container, _DeviceType *device) - : ui_menu(machine, container) +ui_menu_device_control<_DeviceType>::ui_menu_device_control(mame_ui_manager &mui, render_container *container, _DeviceType *device) + : ui_menu(mui, container) { - iterator iter(machine.root_device()); + iterator iter(mui.machine().root_device()); m_count = iter.count(); m_device = device ? device : iter.first(); } diff --git a/src/frontend/mame/ui/devopt.cpp b/src/frontend/mame/ui/devopt.cpp index de145a41b4a..3ebc5974506 100644 --- a/src/frontend/mame/ui/devopt.cpp +++ b/src/frontend/mame/ui/devopt.cpp @@ -18,7 +18,7 @@ menu -------------------------------------------------*/ -ui_menu_device_config::ui_menu_device_config(running_machine &machine, render_container *container, device_slot_interface *slot, device_slot_option *option) : ui_menu(machine, container) +ui_menu_device_config::ui_menu_device_config(mame_ui_manager &mui, render_container *container, device_slot_interface *slot, device_slot_option *option) : ui_menu(mui, container) { m_option = option; m_owner = slot; diff --git a/src/frontend/mame/ui/devopt.h b/src/frontend/mame/ui/devopt.h index 56916aebb54..57233b4d216 100644 --- a/src/frontend/mame/ui/devopt.h +++ b/src/frontend/mame/ui/devopt.h @@ -15,7 +15,7 @@ class ui_menu_device_config : public ui_menu { public: - ui_menu_device_config(running_machine &machine, render_container *container, device_slot_interface *slot, device_slot_option *option); + ui_menu_device_config(mame_ui_manager &mui, render_container *container, device_slot_interface *slot, device_slot_option *option); virtual ~ui_menu_device_config(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/dirmenu.cpp b/src/frontend/mame/ui/dirmenu.cpp index 9ec3205f134..4391ee440d0 100644 --- a/src/frontend/mame/ui/dirmenu.cpp +++ b/src/frontend/mame/ui/dirmenu.cpp @@ -10,6 +10,7 @@ #include "emu.h" #include "emuopts.h" +#include "mame.h" #include "ui/ui.h" #include "ui/menu.h" #include "ui/dirmenu.h" @@ -67,13 +68,13 @@ static const folders_entry s_folders[] = // ctor / dtor //------------------------------------------------- -ui_menu_directory::ui_menu_directory(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_directory::ui_menu_directory(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } ui_menu_directory::~ui_menu_directory() { - save_ui_options(machine()); + ui().save_ui_options(); ui_globals::reset = true; mame_machine_manager::instance()->datfile().reset_run(); } @@ -88,7 +89,7 @@ void ui_menu_directory::handle() const ui_menu_event *m_event = process(0); if (m_event != nullptr && m_event->itemref != nullptr && m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_display_actual>(machine(), container, selected)); + ui_menu::stack_push(global_alloc_clear<ui_menu_display_actual>(ui(), container, selected)); } //------------------------------------------------- @@ -101,7 +102,7 @@ void ui_menu_directory::populate() item_append(_(elem.name), nullptr, 0, (void *)(FPTR)elem.action); item_append(ui_menu_item_type::SEPARATOR); - customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } //------------------------------------------------- @@ -111,11 +112,10 @@ void ui_menu_directory::populate() void ui_menu_directory::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); // get the size of the text - mui.draw_text_full(container, _("Folders Setup"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, _("Folders Setup"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += (2.0f * UI_BOX_LR_BORDER) + 0.01f; float maxwidth = MAX(width, origx2 - origx1); @@ -126,7 +126,7 @@ void ui_menu_directory::custom_render(void *selectedref, float top, float bottom float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -134,7 +134,7 @@ void ui_menu_directory::custom_render(void *selectedref, float top, float bottom y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, _("Folders Setup"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, _("Folders Setup"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } @@ -145,8 +145,8 @@ void ui_menu_directory::custom_render(void *selectedref, float top, float bottom // ctor / dtor //------------------------------------------------- -ui_menu_display_actual::ui_menu_display_actual(running_machine &machine, render_container *container, int ref) - : ui_menu(machine, container), m_ref(ref) +ui_menu_display_actual::ui_menu_display_actual(mame_ui_manager &mui, render_container *container, int ref) + : ui_menu(mui, container), m_ref(ref) { } @@ -166,11 +166,11 @@ void ui_menu_display_actual::handle() switch ((FPTR)m_event->itemref) { case REMOVE: - ui_menu::stack_push(global_alloc_clear<ui_menu_remove_folder>(machine(), container, m_ref)); + ui_menu::stack_push(global_alloc_clear<ui_menu_remove_folder>(ui(), container, m_ref)); break; case ADD_CHANGE: - ui_menu::stack_push(global_alloc_clear<ui_menu_add_change_folder>(machine(), container, m_ref)); + ui_menu::stack_push(global_alloc_clear<ui_menu_add_change_folder>(ui(), container, m_ref)); break; } } @@ -182,8 +182,8 @@ void ui_menu_display_actual::handle() void ui_menu_display_actual::populate() { m_tempbuf = string_format(_("Current %1$s Folders"), _(s_folders[m_ref].name)); - if (mame_machine_manager::instance()->ui().options().exists(s_folders[m_ref].option)) - m_searchpath.assign(mame_machine_manager::instance()->ui().options().value(s_folders[m_ref].option)); + if (ui().options().exists(s_folders[m_ref].option)) + m_searchpath.assign(ui().options().value(s_folders[m_ref].option)); else m_searchpath.assign(machine().options().value(s_folders[m_ref].option)); @@ -199,7 +199,7 @@ void ui_menu_display_actual::populate() item_append(_("Remove Folder"), nullptr, 0, (void *)REMOVE); item_append(ui_menu_item_type::SEPARATOR); - customtop = (m_folders.size() + 1) * mame_machine_manager::instance()->ui().get_line_height() + 6.0f * UI_BOX_TB_BORDER; + customtop = (m_folders.size() + 1) * ui().get_line_height() + 6.0f * UI_BOX_TB_BORDER; } //------------------------------------------------- @@ -209,18 +209,17 @@ void ui_menu_display_actual::populate() void ui_menu_display_actual::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width, maxwidth = origx2 - origx1; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - float lineh = mui.get_line_height(); + float lineh = ui().get_line_height(); for (auto & elem : m_folders) { - mui.draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += (2.0f * UI_BOX_LR_BORDER) + 0.01f; maxwidth = MAX(maxwidth, width); } // get the size of the text - mui.draw_text_full(container, m_tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, m_tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += (2.0f * UI_BOX_LR_BORDER) + 0.01f; maxwidth = MAX(width, maxwidth); @@ -231,7 +230,7 @@ void ui_menu_display_actual::custom_render(void *selectedref, float top, float b float y2 = y1 + lineh + 2.0f * UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -239,7 +238,7 @@ void ui_menu_display_actual::custom_render(void *selectedref, float top, float b y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, m_tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, m_tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); // compute our bounds @@ -249,7 +248,7 @@ void ui_menu_display_actual::custom_render(void *selectedref, float top, float b y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -259,7 +258,7 @@ void ui_menu_display_actual::custom_render(void *selectedref, float top, float b // draw the text within it for (auto & elem : m_folders) { - mui.draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_LEFT, WRAP_TRUNCATE, + ui().draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); y1 += lineh; } @@ -273,7 +272,7 @@ MENU ADD FOLDER // ctor / dtor //------------------------------------------------- -ui_menu_add_change_folder::ui_menu_add_change_folder(running_machine &machine, render_container *container, int ref) : ui_menu(machine, container) +ui_menu_add_change_folder::ui_menu_add_change_folder(mame_ui_manager &mui, render_container *container, int ref) : ui_menu(mui, container) { m_ref = ref; m_change = (s_folders[ref].action == CHANGE); @@ -283,10 +282,10 @@ ui_menu_add_change_folder::ui_menu_add_change_folder(running_machine &machine, r osd_get_full_path(m_current_path, "."); std::string searchpath; - if (mame_machine_manager::instance()->ui().options().exists(s_folders[m_ref].option)) - searchpath = mame_machine_manager::instance()->ui().options().value(s_folders[m_ref].option); + if (mui.options().exists(s_folders[m_ref].option)) + searchpath = mui.options().value(s_folders[m_ref].option); else - searchpath = machine.options().value(s_folders[m_ref].option); + searchpath = mui.machine().options().value(s_folders[m_ref].option); path_iterator path(searchpath.c_str()); std::string curpath; @@ -365,8 +364,8 @@ void ui_menu_add_change_folder::handle() std::string error_string; if (m_change) { - if (mame_machine_manager::instance()->ui().options().exists(s_folders[m_ref].option)) - mame_machine_manager::instance()->ui().options().set_value(s_folders[m_ref].option, m_current_path.c_str(), OPTION_PRIORITY_CMDLINE, error_string); + if (ui().options().exists(s_folders[m_ref].option)) + ui().options().set_value(s_folders[m_ref].option, m_current_path.c_str(), OPTION_PRIORITY_CMDLINE, error_string); else if (strcmp(machine().options().value(s_folders[m_ref].option), m_current_path.c_str()) != 0) { machine().options().set_value(s_folders[m_ref].option, m_current_path.c_str(), OPTION_PRIORITY_CMDLINE, error_string); @@ -385,8 +384,8 @@ void ui_menu_add_change_folder::handle() tmppath.append(";"); } - if (mame_machine_manager::instance()->ui().options().exists(s_folders[m_ref].option)) - mame_machine_manager::instance()->ui().options().set_value(s_folders[m_ref].option, tmppath.c_str(), OPTION_PRIORITY_CMDLINE, error_string); + if (ui().options().exists(s_folders[m_ref].option)) + ui().options().set_value(s_folders[m_ref].option, tmppath.c_str(), OPTION_PRIORITY_CMDLINE, error_string); else if (strcmp(machine().options().value(s_folders[m_ref].option), tmppath.c_str()) != 0) { machine().options().set_value(s_folders[m_ref].option, tmppath.c_str(), OPTION_PRIORITY_CMDLINE, error_string); @@ -479,8 +478,8 @@ void ui_menu_add_change_folder::populate() item_append(ui_menu_item_type::SEPARATOR); // configure the custom rendering - customtop = 2.0f * mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; - custombottom = 1.0f * mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = 2.0f * ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + custombottom = 1.0f * ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } //------------------------------------------------- @@ -490,7 +489,6 @@ void ui_menu_add_change_folder::populate() void ui_menu_add_change_folder::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width, maxwidth = origx2 - origx1; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); std::string tempbuf[2]; tempbuf[0] = string_format( (m_change) @@ -503,8 +501,8 @@ void ui_menu_add_change_folder::custom_render(void *selectedref, float top, floa // get the size of the text for (auto & elem : tempbuf) { - mui.draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += (2.0f * UI_BOX_LR_BORDER) + 0.01f; maxwidth = MAX(width, maxwidth); } @@ -516,7 +514,7 @@ void ui_menu_add_change_folder::custom_render(void *selectedref, float top, floa float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -526,16 +524,16 @@ void ui_menu_add_change_folder::custom_render(void *selectedref, float top, floa // draw the text within it for (auto & elem : tempbuf) { - mui.draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); - y1 = y1 + mui.get_line_height(); + y1 = y1 + ui().get_line_height(); } // bottom text tempbuf[0] = _("Press TAB to set"); - mui.draw_text_full(container, tempbuf[0].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, tempbuf[0].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(maxwidth, width); @@ -546,7 +544,7 @@ void ui_menu_add_change_folder::custom_render(void *selectedref, float top, floa y2 = origy2 + bottom; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -554,7 +552,7 @@ void ui_menu_add_change_folder::custom_render(void *selectedref, float top, floa y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, tempbuf[0].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, tempbuf[0].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } @@ -566,13 +564,13 @@ void ui_menu_add_change_folder::custom_render(void *selectedref, float top, floa // ctor / dtor //------------------------------------------------- -ui_menu_remove_folder::ui_menu_remove_folder(running_machine &machine, render_container *container, int ref) : ui_menu(machine, container) +ui_menu_remove_folder::ui_menu_remove_folder(mame_ui_manager &mui, render_container *container, int ref) : ui_menu(mui, container) { m_ref = ref; - if (mame_machine_manager::instance()->ui().options().exists(s_folders[m_ref].option)) - m_searchpath.assign(mame_machine_manager::instance()->ui().options().value(s_folders[m_ref].option)); + if (mui.options().exists(s_folders[m_ref].option)) + m_searchpath.assign(mui.options().value(s_folders[m_ref].option)); else - m_searchpath.assign(machine.options().value(s_folders[m_ref].option)); + m_searchpath.assign(mui.machine().options().value(s_folders[m_ref].option)); path_iterator path(m_searchpath.c_str()); std::string curpath; @@ -603,8 +601,8 @@ void ui_menu_remove_folder::handle() tmppath.append(";"); } - if (mame_machine_manager::instance()->ui().options().exists(s_folders[m_ref].option)) - mame_machine_manager::instance()->ui().options().set_value(s_folders[m_ref].option, tmppath.c_str(), OPTION_PRIORITY_CMDLINE, error_string); + if (ui().options().exists(s_folders[m_ref].option)) + ui().options().set_value(s_folders[m_ref].option, tmppath.c_str(), OPTION_PRIORITY_CMDLINE, error_string); else if (strcmp(machine().options().value(s_folders[m_ref].option),tmppath.c_str())!=0) { machine().options().set_value(s_folders[m_ref].option, tmppath.c_str(), OPTION_PRIORITY_CMDLINE, error_string); @@ -627,7 +625,7 @@ void ui_menu_remove_folder::populate() item_append(elem.c_str(), nullptr, 0, (void *)(FPTR)++folders_count); item_append(ui_menu_item_type::SEPARATOR); - customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } //------------------------------------------------- @@ -637,11 +635,10 @@ void ui_menu_remove_folder::populate() void ui_menu_remove_folder::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); std::string tempbuf = string_format(_("Remove %1$s Folder"), _(s_folders[m_ref].name)); // get the size of the text - mui.draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += (2.0f * UI_BOX_LR_BORDER) + 0.01f; float maxwidth = MAX(width, origx2 - origx1); @@ -652,7 +649,7 @@ void ui_menu_remove_folder::custom_render(void *selectedref, float top, float bo float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -660,6 +657,6 @@ void ui_menu_remove_folder::custom_render(void *selectedref, float top, float bo y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, + ui().draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } diff --git a/src/frontend/mame/ui/dirmenu.h b/src/frontend/mame/ui/dirmenu.h index 6b68764b258..223776e44d1 100644 --- a/src/frontend/mame/ui/dirmenu.h +++ b/src/frontend/mame/ui/dirmenu.h @@ -20,7 +20,7 @@ class ui_menu_directory : public ui_menu { public: - ui_menu_directory(running_machine &machine, render_container *container); + ui_menu_directory(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_directory(); virtual void populate() override; virtual void handle() override; @@ -34,7 +34,7 @@ public: class ui_menu_display_actual : public ui_menu { public: - ui_menu_display_actual(running_machine &machine, render_container *container, int selectedref); + ui_menu_display_actual(mame_ui_manager &mui, render_container *container, int selectedref); virtual ~ui_menu_display_actual(); virtual void populate() override; virtual void handle() override; @@ -59,7 +59,7 @@ private: class ui_menu_remove_folder : public ui_menu { public: - ui_menu_remove_folder(running_machine &machine, render_container *container, int ref); + ui_menu_remove_folder(mame_ui_manager &mui, render_container *container, int ref); virtual ~ui_menu_remove_folder(); virtual void populate() override; virtual void handle() override; @@ -78,7 +78,7 @@ private: class ui_menu_add_change_folder : public ui_menu { public: - ui_menu_add_change_folder(running_machine &machine, render_container *container, int ref); + ui_menu_add_change_folder(mame_ui_manager &mui, render_container *container, int ref); virtual ~ui_menu_add_change_folder(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/filemngr.cpp b/src/frontend/mame/ui/filemngr.cpp index a0400e234bb..f1069a17d67 100644 --- a/src/frontend/mame/ui/filemngr.cpp +++ b/src/frontend/mame/ui/filemngr.cpp @@ -30,7 +30,7 @@ // ctor //------------------------------------------------- -ui_menu_file_manager::ui_menu_file_manager(running_machine &machine, render_container *container, const char *warnings) : ui_menu(machine, container), selected_device(nullptr) +ui_menu_file_manager::ui_menu_file_manager(mame_ui_manager &mui, render_container *container, const char *warnings) : ui_menu(mui, container), selected_device(nullptr) { // This warning string is used when accessing from the force_file_manager call, i.e. // when the file manager is loaded top front in the case of mandatory image devices @@ -62,8 +62,7 @@ void ui_menu_file_manager::custom_render(void *selectedref, float top, float bot // access the path path = selected_device ? selected_device->filename() : nullptr; - extra_text_render(container, top, bottom, - origx1, origy1, origx2, origy2, nullptr, path); + extra_text_render(top, bottom, origx1, origy1, origx2, origy2, nullptr, path); } @@ -156,7 +155,7 @@ void ui_menu_file_manager::populate() item_append(ui_menu_item_type::SEPARATOR); item_append("Reset", nullptr, 0, (void *)1); - custombottom = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + custombottom = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } @@ -185,11 +184,11 @@ void ui_menu_file_manager::handle() floppy_image_device *floppy_device = dynamic_cast<floppy_image_device *>(selected_device); if (floppy_device != nullptr) { - ui_menu::stack_push(global_alloc_clear<ui_menu_control_floppy_image>(machine(), container, floppy_device)); + ui_menu::stack_push(global_alloc_clear<ui_menu_control_floppy_image>(ui(), container, floppy_device)); } else { - ui_menu::stack_push(global_alloc_clear<ui_menu_control_device_image>(machine(), container, selected_device)); + ui_menu::stack_push(global_alloc_clear<ui_menu_control_device_image>(ui(), container, selected_device)); } // reset the existing menu reset(UI_MENU_RESET_REMEMBER_POSITION); @@ -199,20 +198,20 @@ void ui_menu_file_manager::handle() } // force file manager menu -void ui_menu_file_manager::force_file_manager(running_machine &machine, render_container *container, const char *warnings) +void ui_menu_file_manager::force_file_manager(mame_ui_manager &mui, render_container *container, const char *warnings) { // reset the menu stack - ui_menu::stack_reset(machine); + ui_menu::stack_reset(mui.machine()); // add the quit entry followed by the game select entry - ui_menu *quit = global_alloc_clear<ui_menu_quit_game>(machine, container); + ui_menu *quit = global_alloc_clear<ui_menu_quit_game>(mui, container); quit->set_special_main_menu(true); ui_menu::stack_push(quit); - ui_menu::stack_push(global_alloc_clear<ui_menu_file_manager>(machine, container, warnings)); + ui_menu::stack_push(global_alloc_clear<ui_menu_file_manager>(mui, container, warnings)); // force the menus on - mame_machine_manager::instance()->ui().show_menu(); + mui.show_menu(); // make sure MAME is paused - machine.pause(); + mui.machine().pause(); } diff --git a/src/frontend/mame/ui/filemngr.h b/src/frontend/mame/ui/filemngr.h index 38c4e068281..74c1c6dcacf 100644 --- a/src/frontend/mame/ui/filemngr.h +++ b/src/frontend/mame/ui/filemngr.h @@ -19,9 +19,9 @@ public: std::string current_file; device_image_interface *selected_device; - static void force_file_manager(running_machine &machine, render_container *container, const char *warnings); + static void force_file_manager(mame_ui_manager &mui, render_container *container, const char *warnings); - ui_menu_file_manager(running_machine &machine, render_container *container, const char *warnings); + ui_menu_file_manager(mame_ui_manager &mui, render_container *container, const char *warnings); virtual ~ui_menu_file_manager(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/filesel.cpp b/src/frontend/mame/ui/filesel.cpp index 24d65757a10..c9c22010d55 100644 --- a/src/frontend/mame/ui/filesel.cpp +++ b/src/frontend/mame/ui/filesel.cpp @@ -65,67 +65,6 @@ static void input_character(char *buffer, size_t buffer_length, unicode_char uni } } -//------------------------------------------------- -// extra_text_draw_box - generically adds header -// or footer text -//------------------------------------------------- - -static void extra_text_draw_box(render_container *container, float origx1, float origx2, float origy, float yspan, const char *text, int direction) -{ - float text_width, text_height; - float width, maxwidth; - float x1, y1, x2, y2, temp; - - // get the size of the text - mame_machine_manager::instance()->ui().draw_text_full(container,text, 0.0f, 0.0f, 1.0f, JUSTIFY_LEFT, WRAP_WORD, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &text_width, &text_height); - width = text_width + (2 * UI_BOX_LR_BORDER); - maxwidth = MAX(width, origx2 - origx1); - - // compute our bounds - x1 = 0.5f - 0.5f * maxwidth; - x2 = x1 + maxwidth; - y1 = origy + (yspan * direction); - y2 = origy + (UI_BOX_TB_BORDER * direction); - - if (y1 > y2) - { - temp = y1; - y1 = y2; - y2 = temp; - } - - // draw a box - mame_machine_manager::instance()->ui().draw_outlined_box(container,x1, y1, x2, y2, UI_BACKGROUND_COLOR); - - // take off the borders - x1 += UI_BOX_LR_BORDER; - y1 += UI_BOX_TB_BORDER; - - // draw the text within it - mame_machine_manager::instance()->ui().draw_text_full(container,text, x1, y1, text_width, JUSTIFY_LEFT, WRAP_WORD, - DRAW_NORMAL, ARGB_WHITE, ARGB_BLACK, nullptr, nullptr); -} - - -//------------------------------------------------- -// extra_text_render - generically adds header -// and footer text -//------------------------------------------------- - -void extra_text_render(render_container *container, float top, float bottom, - float origx1, float origy1, float origx2, float origy2, - const char *header, const char *footer) -{ - header = ((header != nullptr) && (header[0] != '\0')) ? header : nullptr; - footer = ((footer != nullptr) && (footer[0] != '\0')) ? footer : nullptr; - - if (header != nullptr) - extra_text_draw_box(container, origx1, origx2, origy1, top, header, -1); - if (footer != nullptr) - extra_text_draw_box(container, origx1, origx2, origy2, bottom, footer, +1); -} - /*************************************************************************** CONFIRM SAVE AS MENU @@ -135,8 +74,8 @@ void extra_text_render(render_container *container, float top, float bottom, // ctor //------------------------------------------------- -ui_menu_confirm_save_as::ui_menu_confirm_save_as(running_machine &machine, render_container *container, bool *yes) - : ui_menu(machine, container) +ui_menu_confirm_save_as::ui_menu_confirm_save_as(mame_ui_manager &mui, render_container *container, bool *yes) + : ui_menu(mui, container) { m_yes = yes; *m_yes = false; @@ -217,8 +156,8 @@ static int is_valid_filename_char(unicode_char unichar) // ctor //------------------------------------------------- -ui_menu_file_create::ui_menu_file_create(running_machine &machine, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool *ok) - : ui_menu(machine, container), +ui_menu_file_create::ui_menu_file_create(mame_ui_manager &mui, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool *ok) + : ui_menu(mui, container), m_current_directory(current_directory), m_current_file(current_file), m_current_format(nullptr) @@ -246,7 +185,7 @@ ui_menu_file_create::~ui_menu_file_create() void ui_menu_file_create::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { - extra_text_render(container, top, bottom, origx1, origy1, origx2, origy2, + extra_text_render(top, bottom, origx1, origy1, origx2, origy2, m_current_directory.c_str(), nullptr); } @@ -286,7 +225,7 @@ void ui_menu_file_create::populate() item_append(ui_menu_item_type::SEPARATOR); item_append(_("Create"), nullptr, 0, ITEMREF_CREATE); - customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } @@ -315,7 +254,7 @@ void ui_menu_file_create::handle() ui_menu::stack_pop(machine()); } else - mame_machine_manager::instance()->ui().popup_time(1, "%s", _("Please enter a file extension too")); + ui().popup_time(1, "%s", _("Please enter a file extension too")); } break; @@ -345,8 +284,8 @@ void ui_menu_file_create::handle() // ctor //------------------------------------------------- -ui_menu_file_selector::ui_menu_file_selector(running_machine &machine, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, int *result) - : ui_menu(machine, container), +ui_menu_file_selector::ui_menu_file_selector(mame_ui_manager &mui, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, int *result) + : ui_menu(mui, container), m_current_directory(current_directory), m_current_file(current_file), m_entrylist(nullptr) @@ -374,7 +313,7 @@ ui_menu_file_selector::~ui_menu_file_selector() void ui_menu_file_selector::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { - extra_text_render(container, top, bottom, + extra_text_render(top, bottom, origx1, origy1, origx2, origy2, m_current_directory.c_str(), nullptr); @@ -612,7 +551,7 @@ void ui_menu_file_selector::populate() set_selection((void *) selected_entry); // set up custom render proc - customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; if (directory != nullptr) util::zippath_closedir(directory); @@ -664,7 +603,7 @@ void ui_menu_file_selector::handle() if (err != osd_file::error::NONE) { // this path is problematic; present the user with an error and bail - mame_machine_manager::instance()->ui().popup_time(1, "Error accessing %s", entry->fullpath); + ui().popup_time(1, "Error accessing %s", entry->fullpath); break; } m_current_directory.assign(entry->fullpath); @@ -695,7 +634,7 @@ void ui_menu_file_selector::handle() update_selected = TRUE; if (ARRAY_LENGTH(m_filename_buffer) > 0) - mame_machine_manager::instance()->ui().popup_time(ERROR_MESSAGE_TIME, "%s", m_filename_buffer); + ui().popup_time(ERROR_MESSAGE_TIME, "%s", m_filename_buffer); } // if it's any other key and we're not maxed out, update else if (event->unichar >= ' ' && event->unichar < 0x7f) @@ -705,7 +644,7 @@ void ui_menu_file_selector::handle() update_selected = TRUE; if (ARRAY_LENGTH(m_filename_buffer) > 0) - mame_machine_manager::instance()->ui().popup_time(ERROR_MESSAGE_TIME, "%s", m_filename_buffer); + ui().popup_time(ERROR_MESSAGE_TIME, "%s", m_filename_buffer); } if (update_selected) @@ -778,8 +717,8 @@ void ui_menu_file_selector::handle() // ctor //------------------------------------------------- -ui_menu_select_format::ui_menu_select_format(running_machine &machine, render_container *container, floppy_image_format_t **formats, int ext_match, int total_usable, int *result) - : ui_menu(machine, container) +ui_menu_select_format::ui_menu_select_format(mame_ui_manager &mui, render_container *container, floppy_image_format_t **formats, int ext_match, int total_usable, int *result) + : ui_menu(mui, container) { m_formats = formats; m_ext_match = ext_match; @@ -839,9 +778,9 @@ void ui_menu_select_format::handle() // ctor //------------------------------------------------- -ui_menu_select_rw::ui_menu_select_rw(running_machine &machine, render_container *container, +ui_menu_select_rw::ui_menu_select_rw(mame_ui_manager &mui, render_container *container, bool can_in_place, int *result) - : ui_menu(machine, container) + : ui_menu(mui, container) { m_can_in_place = can_in_place; m_result = result; diff --git a/src/frontend/mame/ui/filesel.h b/src/frontend/mame/ui/filesel.h index c7e113e463b..decf940253f 100644 --- a/src/frontend/mame/ui/filesel.h +++ b/src/frontend/mame/ui/filesel.h @@ -18,7 +18,7 @@ class ui_menu_confirm_save_as : public ui_menu { public: - ui_menu_confirm_save_as(running_machine &machine, render_container *container, bool *yes); + ui_menu_confirm_save_as(mame_ui_manager &mui, render_container *container, bool *yes); virtual ~ui_menu_confirm_save_as(); virtual void populate() override; virtual void handle() override; @@ -33,7 +33,7 @@ private: class ui_menu_file_create : public ui_menu { public: - ui_menu_file_create(running_machine &machine, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool *ok); + ui_menu_file_create(mame_ui_manager &mui, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool *ok); virtual ~ui_menu_file_create(); virtual void populate() override; virtual void handle() override; @@ -57,7 +57,7 @@ class ui_menu_file_selector : public ui_menu { public: enum { R_EMPTY, R_SOFTLIST, R_CREATE, R_FILE }; - ui_menu_file_selector(running_machine &machine, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, int *result); + ui_menu_file_selector(mame_ui_manager &mui, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, int *result); virtual ~ui_menu_file_selector(); virtual void populate() override; virtual void handle() override; @@ -107,7 +107,7 @@ private: class ui_menu_select_format : public ui_menu { public: - ui_menu_select_format(running_machine &machine, render_container *container, + ui_menu_select_format(mame_ui_manager &mui, render_container *container, class floppy_image_format_t **formats, int ext_match, int total_usable, int *result); virtual ~ui_menu_select_format(); virtual void populate() override; @@ -128,7 +128,7 @@ class ui_menu_select_rw : public ui_menu { public: enum { READONLY, READWRITE, WRITE_OTHER, WRITE_DIFF }; - ui_menu_select_rw(running_machine &machine, render_container *container, + ui_menu_select_rw(mame_ui_manager &mui, render_container *container, bool can_in_place, int *result); virtual ~ui_menu_select_rw(); virtual void populate() override; @@ -140,9 +140,4 @@ private: int * m_result; }; -// helper -void extra_text_render(render_container *container, float top, float bottom, - float origx1, float origy1, float origx2, float origy2, - const char *header, const char *footer); - #endif /* __UI_FILESEL_H__ */ diff --git a/src/frontend/mame/ui/floppycntrl.cpp b/src/frontend/mame/ui/floppycntrl.cpp index 05a4e03c825..665eaebb50c 100644 --- a/src/frontend/mame/ui/floppycntrl.cpp +++ b/src/frontend/mame/ui/floppycntrl.cpp @@ -17,7 +17,7 @@ IMPLEMENTATION ***************************************************************************/ -ui_menu_control_floppy_image::ui_menu_control_floppy_image(running_machine &machine, render_container *container, device_image_interface *_image) : ui_menu_control_device_image(machine, container, _image) +ui_menu_control_floppy_image::ui_menu_control_floppy_image(mame_ui_manager &mui, render_container *container, device_image_interface *_image) : ui_menu_control_device_image(mui, container, _image) { floppy_image_device *fd = static_cast<floppy_image_device *>(image); const floppy_image_format_t *fif_list = fd->get_formats(); @@ -91,7 +91,7 @@ void ui_menu_control_floppy_image::hook_load(std::string filename, bool softlist can_in_place = false; } submenu_result = -1; - ui_menu::stack_push(global_alloc_clear<ui_menu_select_rw>(machine(), container, can_in_place, &submenu_result)); + ui_menu::stack_push(global_alloc_clear<ui_menu_select_rw>(ui(), container, can_in_place, &submenu_result)); state = SELECT_RW; } @@ -117,7 +117,7 @@ void ui_menu_control_floppy_image::handle() format_array[total_usable++] = i; } submenu_result = -1; - ui_menu::stack_push(global_alloc_clear<ui_menu_select_format>(machine(), container, format_array, ext_match, total_usable, &submenu_result)); + ui_menu::stack_push(global_alloc_clear<ui_menu_select_format>(ui(), container, format_array, ext_match, total_usable, &submenu_result)); state = SELECT_FORMAT; break; @@ -154,7 +154,7 @@ void ui_menu_control_floppy_image::handle() break; case ui_menu_select_rw::WRITE_OTHER: - ui_menu::stack_push(global_alloc_clear<ui_menu_file_create>(machine(), container, image, current_directory, current_file, &create_ok)); + ui_menu::stack_push(global_alloc_clear<ui_menu_file_create>(ui(), container, image, current_directory, current_file, &create_ok)); state = CHECK_CREATE; break; diff --git a/src/frontend/mame/ui/floppycntrl.h b/src/frontend/mame/ui/floppycntrl.h index 08ac1e85d68..2f4f93eeaea 100644 --- a/src/frontend/mame/ui/floppycntrl.h +++ b/src/frontend/mame/ui/floppycntrl.h @@ -16,7 +16,7 @@ class ui_menu_control_floppy_image : public ui_menu_control_device_image { public: - ui_menu_control_floppy_image(running_machine &machine, render_container *container, device_image_interface *image); + ui_menu_control_floppy_image(mame_ui_manager &ui, render_container *container, device_image_interface *image); virtual ~ui_menu_control_floppy_image(); virtual void handle() override; diff --git a/src/frontend/mame/ui/imgcntrl.cpp b/src/frontend/mame/ui/imgcntrl.cpp index c8b46afd23f..bf83c7c21d0 100644 --- a/src/frontend/mame/ui/imgcntrl.cpp +++ b/src/frontend/mame/ui/imgcntrl.cpp @@ -29,8 +29,8 @@ // ctor //------------------------------------------------- -ui_menu_control_device_image::ui_menu_control_device_image(running_machine &machine, render_container *container, device_image_interface *_image) - : ui_menu(machine, container), +ui_menu_control_device_image::ui_menu_control_device_image(mame_ui_manager &mui, render_container *container, device_image_interface *_image) + : ui_menu(mui, container), submenu_result(0), create_ok(false), create_confirmed(false) @@ -38,7 +38,7 @@ ui_menu_control_device_image::ui_menu_control_device_image(running_machine &mach image = _image; if (image->software_list_name()) - sld = software_list_device::find_by_name(machine.config(), image->software_list_name()); + sld = software_list_device::find_by_name(mui.machine().config(), image->software_list_name()); else sld = nullptr; swi = image->software_entry(); @@ -110,7 +110,7 @@ void ui_menu_control_device_image::test_create(bool &can_create, bool &need_conf case ENTTYPE_DIR: /* a directory exists here - we can't save over it */ - mame_machine_manager::instance()->ui().popup_time(5, "%s", _("Cannot save over directory")); + ui().popup_time(5, "%s", _("Cannot save over directory")); can_create = false; need_confirm = false; break; @@ -187,20 +187,20 @@ void ui_menu_control_device_image::handle() util::zippath_closedir(directory); } submenu_result = -1; - ui_menu::stack_push(global_alloc_clear<ui_menu_file_selector>(machine(), container, image, current_directory, current_file, true, image->image_interface()!=nullptr, can_create, &submenu_result)); + ui_menu::stack_push(global_alloc_clear<ui_menu_file_selector>(ui(), container, image, current_directory, current_file, true, image->image_interface()!=nullptr, can_create, &submenu_result)); state = SELECT_FILE; break; } case START_SOFTLIST: sld = nullptr; - ui_menu::stack_push(global_alloc_clear<ui_menu_software>(machine(), container, image->image_interface(), &sld)); + ui_menu::stack_push(global_alloc_clear<ui_menu_software>(ui(), container, image->image_interface(), &sld)); state = SELECT_SOFTLIST; break; case START_OTHER_PART: { submenu_result = -1; - ui_menu::stack_push(global_alloc_clear<ui_menu_software_parts>(machine(), container, swi, swp->interface(), &swp, true, &submenu_result)); + ui_menu::stack_push(global_alloc_clear<ui_menu_software_parts>(ui(), container, swi, swp->interface(), &swp, true, &submenu_result)); state = SELECT_OTHER_PART; break; } @@ -211,7 +211,7 @@ void ui_menu_control_device_image::handle() break; } software_info_name = ""; - ui_menu::stack_push(global_alloc_clear<ui_menu_software_list>(machine(), container, sld, image->image_interface(), software_info_name)); + ui_menu::stack_push(global_alloc_clear<ui_menu_software_list>(ui(), container, sld, image->image_interface(), software_info_name)); state = SELECT_PARTLIST; break; @@ -223,7 +223,7 @@ void ui_menu_control_device_image::handle() { submenu_result = -1; swp = nullptr; - ui_menu::stack_push(global_alloc_clear<ui_menu_software_parts>(machine(), container, swi, image->image_interface(), &swp, false, &submenu_result)); + ui_menu::stack_push(global_alloc_clear<ui_menu_software_parts>(ui(), container, swi, image->image_interface(), &swp, false, &submenu_result)); state = SELECT_ONE_PART; } else @@ -287,7 +287,7 @@ void ui_menu_control_device_image::handle() break; case ui_menu_file_selector::R_CREATE: - ui_menu::stack_push(global_alloc_clear<ui_menu_file_create>(machine(), container, image, current_directory, current_file, &create_ok)); + ui_menu::stack_push(global_alloc_clear<ui_menu_file_create>(ui(), container, image, current_directory, current_file, &create_ok)); state = CHECK_CREATE; break; @@ -307,7 +307,7 @@ void ui_menu_control_device_image::handle() test_create(can_create, need_confirm); if(can_create) { if(need_confirm) { - ui_menu::stack_push(global_alloc_clear<ui_menu_confirm_save_as>(machine(), container, &create_confirmed)); + ui_menu::stack_push(global_alloc_clear<ui_menu_confirm_save_as>(ui(), container, &create_confirmed)); state = CREATE_CONFIRM; } else { state = DO_CREATE; diff --git a/src/frontend/mame/ui/imgcntrl.h b/src/frontend/mame/ui/imgcntrl.h index 669098a4306..9af104a45f6 100644 --- a/src/frontend/mame/ui/imgcntrl.h +++ b/src/frontend/mame/ui/imgcntrl.h @@ -17,7 +17,7 @@ class ui_menu_control_device_image : public ui_menu { public: - ui_menu_control_device_image(running_machine &machine, render_container *container, device_image_interface *image); + ui_menu_control_device_image(mame_ui_manager &mui, render_container *container, device_image_interface *image); virtual ~ui_menu_control_device_image(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/info.cpp b/src/frontend/mame/ui/info.cpp index 966d0ca0a33..f524413fd88 100644 --- a/src/frontend/mame/ui/info.cpp +++ b/src/frontend/mame/ui/info.cpp @@ -19,7 +19,7 @@ menu -------------------------------------------------*/ -ui_menu_game_info::ui_menu_game_info(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_game_info::ui_menu_game_info(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } @@ -30,7 +30,7 @@ ui_menu_game_info::~ui_menu_game_info() void ui_menu_game_info::populate() { std::string tempstring; - item_append(mame_machine_manager::instance()->ui().game_info_astring(tempstring).c_str(), nullptr, MENU_FLAG_MULTILINE, nullptr); + item_append(ui().game_info_astring(tempstring).c_str(), nullptr, MENU_FLAG_MULTILINE, nullptr); } void ui_menu_game_info::handle() @@ -45,7 +45,7 @@ void ui_menu_game_info::handle() menu -------------------------------------------------*/ -ui_menu_image_info::ui_menu_image_info(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_image_info::ui_menu_image_info(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } diff --git a/src/frontend/mame/ui/info.h b/src/frontend/mame/ui/info.h index a9459b25340..2815f839cd4 100644 --- a/src/frontend/mame/ui/info.h +++ b/src/frontend/mame/ui/info.h @@ -15,7 +15,7 @@ class ui_menu_game_info : public ui_menu { public: - ui_menu_game_info(running_machine &machine, render_container *container); + ui_menu_game_info(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_game_info(); virtual void populate() override; virtual void handle() override; @@ -25,7 +25,7 @@ public: class ui_menu_image_info : public ui_menu { public: - ui_menu_image_info(running_machine &machine, render_container *container); + ui_menu_image_info(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_image_info(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/info_pty.cpp b/src/frontend/mame/ui/info_pty.cpp index 267f8b1c5b9..e87776306e1 100644 --- a/src/frontend/mame/ui/info_pty.cpp +++ b/src/frontend/mame/ui/info_pty.cpp @@ -12,8 +12,8 @@ #include "ui/menu.h" #include "ui/info_pty.h" -ui_menu_pty_info::ui_menu_pty_info(running_machine &machine, render_container *container) : - ui_menu(machine, container) +ui_menu_pty_info::ui_menu_pty_info(mame_ui_manager &mui, render_container *container) : + ui_menu(mui, container) { } diff --git a/src/frontend/mame/ui/info_pty.h b/src/frontend/mame/ui/info_pty.h index 584652211a6..d5ccc43054b 100644 --- a/src/frontend/mame/ui/info_pty.h +++ b/src/frontend/mame/ui/info_pty.h @@ -15,7 +15,7 @@ class ui_menu_pty_info : public ui_menu { public: - ui_menu_pty_info(running_machine &machine, render_container *container); + ui_menu_pty_info(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_pty_info(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/inifile.cpp b/src/frontend/mame/ui/inifile.cpp index 5e3871a0137..f176073786d 100644 --- a/src/frontend/mame/ui/inifile.cpp +++ b/src/frontend/mame/ui/inifile.cpp @@ -9,7 +9,7 @@ ***************************************************************************/ #include "emu.h" -#include "ui/ui.h" +#include "ui/moptions.h" #include "ui/inifile.h" #include "softlist.h" #include "drivenum.h" @@ -24,8 +24,8 @@ UINT16 inifile_manager::c_file = 0; // ctor //------------------------------------------------- -inifile_manager::inifile_manager(running_machine &machine) - : m_machine(machine) +inifile_manager::inifile_manager(running_machine &machine, ui_options &moptions) + : m_machine(machine), m_options(moptions) { ini_index.clear(); directory_scan(); @@ -38,7 +38,7 @@ inifile_manager::inifile_manager(running_machine &machine) void inifile_manager::directory_scan() { // open extra INIs folder - file_enumerator path(mame_machine_manager::instance()->ui().options().extraini_path()); + file_enumerator path(m_options.extraini_path()); const osd_directory_entry *dir; // loop into folder's file @@ -151,7 +151,7 @@ bool inifile_manager::parseopen(const char *filename) // MAME core file parsing functions fail in recognizing UNICODE chars in UTF-8 without BOM, // so it's better and faster use standard C fileio functions. - emu_file file(mame_machine_manager::instance()->ui().options().extraini_path(), OPEN_FLAG_READ); + emu_file file(m_options.extraini_path(), OPEN_FLAG_READ); if (file.open(filename) != osd_file::error::NONE) return false; @@ -172,8 +172,8 @@ bool inifile_manager::parseopen(const char *filename) // ctor //------------------------------------------------- -favorite_manager::favorite_manager(running_machine &machine) - : m_machine(machine) +favorite_manager::favorite_manager(running_machine &machine, ui_options &moptions) + : m_machine(machine), m_options(moptions) { m_current = -1; parse_favorite(); @@ -357,7 +357,7 @@ bool favorite_manager::isgame_favorite(ui_software_info &swinfo) void favorite_manager::parse_favorite() { - emu_file file(mame_machine_manager::instance()->ui().options().ui_path(), OPEN_FLAG_READ); + emu_file file(m_options.ui_path(), OPEN_FLAG_READ); if (file.open(favorite_filename) == osd_file::error::NONE) { char readbuf[1024]; @@ -416,7 +416,7 @@ void favorite_manager::parse_favorite() void favorite_manager::save_favorite_games() { // attempt to open the output file - emu_file file(mame_machine_manager::instance()->ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); + emu_file file(m_options.ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); if (file.open(favorite_filename) == osd_file::error::NONE) { if (m_list.empty()) diff --git a/src/frontend/mame/ui/inifile.h b/src/frontend/mame/ui/inifile.h index ecc755290a6..b8ba87addae 100644 --- a/src/frontend/mame/ui/inifile.h +++ b/src/frontend/mame/ui/inifile.h @@ -19,11 +19,13 @@ // INIFILE MANAGER //------------------------------------------------- +class ui_options; + class inifile_manager { public: // construction/destruction - inifile_manager(running_machine &machine); + inifile_manager(running_machine &machine, ui_options &moptions); // getters running_machine &machine() const { return m_machine; } @@ -64,6 +66,7 @@ private: // internal state running_machine &m_machine; // reference to our machine + ui_options &m_options; std::string m_fullpath; FILE *fp = nullptr; }; @@ -76,7 +79,7 @@ class favorite_manager { public: // construction/destruction - favorite_manager(running_machine &machine); + favorite_manager(running_machine &machine, ui_options &moptions); // favorite indices std::vector<ui_software_info> m_list; @@ -112,6 +115,7 @@ private: // internal state running_machine &m_machine; // reference to our machine + ui_options &m_options; }; #endif /* __UI_INIFILE_H__ */ diff --git a/src/frontend/mame/ui/inputmap.cpp b/src/frontend/mame/ui/inputmap.cpp index d43725b8eb6..919b21b4063 100644 --- a/src/frontend/mame/ui/inputmap.cpp +++ b/src/frontend/mame/ui/inputmap.cpp @@ -40,7 +40,7 @@ input groups menu -------------------------------------------------*/ -ui_menu_input_groups::ui_menu_input_groups(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_input_groups::ui_menu_input_groups(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } @@ -73,7 +73,7 @@ void ui_menu_input_groups::handle() /* process the menu */ const ui_menu_event *menu_event = process(0); if (menu_event != nullptr && menu_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_input_general>(machine(), container, int((long long)(menu_event->itemref)-1))); + ui_menu::stack_push(global_alloc_clear<ui_menu_input_general>(ui(), container, int((long long)(menu_event->itemref)-1))); } @@ -83,7 +83,7 @@ void ui_menu_input_groups::handle() input menu -------------------------------------------------*/ -ui_menu_input_general::ui_menu_input_general(running_machine &machine, render_container *container, int _group) : ui_menu_input(machine, container) +ui_menu_input_general::ui_menu_input_general(mame_ui_manager &mui, render_container *container, int _group) : ui_menu_input(mui, container) { group = _group; } @@ -146,7 +146,7 @@ ui_menu_input_general::~ui_menu_input_general() input menu -------------------------------------------------*/ -ui_menu_input_specific::ui_menu_input_specific(running_machine &machine, render_container *container) : ui_menu_input(machine, container) +ui_menu_input_specific::ui_menu_input_specific(mame_ui_manager &mui, render_container *container) : ui_menu_input(mui, container) { } @@ -224,7 +224,7 @@ ui_menu_input_specific::~ui_menu_input_specific() /*------------------------------------------------- menu_input - display a menu for inputs -------------------------------------------------*/ -ui_menu_input::ui_menu_input(running_machine &machine, render_container *container) : ui_menu(machine, container), last_sortorder(0), record_next(false) +ui_menu_input::ui_menu_input(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container), last_sortorder(0), record_next(false) { pollingitem = nullptr; pollingref = nullptr; @@ -447,7 +447,7 @@ void ui_menu_input::populate_and_sort(input_item_data *itemlist) switches menu -------------------------------------------------*/ -ui_menu_settings_dip_switches::ui_menu_settings_dip_switches(running_machine &machine, render_container *container) : ui_menu_settings(machine, container, IPT_DIPSWITCH) +ui_menu_settings_dip_switches::ui_menu_settings_dip_switches(mame_ui_manager &mui, render_container *container) : ui_menu_settings(mui, container, IPT_DIPSWITCH) { } @@ -460,7 +460,7 @@ ui_menu_settings_dip_switches::~ui_menu_settings_dip_switches() driver config menu -------------------------------------------------*/ -ui_menu_settings_driver_config::ui_menu_settings_driver_config(running_machine &machine, render_container *container) : ui_menu_settings(machine, container, IPT_CONFIG) +ui_menu_settings_driver_config::ui_menu_settings_driver_config(mame_ui_manager &mui, render_container *container) : ui_menu_settings(mui, container, IPT_CONFIG) { } @@ -530,7 +530,7 @@ void ui_menu_settings::handle() switches menus -------------------------------------------------*/ -ui_menu_settings::ui_menu_settings(running_machine &machine, render_container *container, UINT32 _type) : ui_menu(machine, container), diplist(nullptr), dipcount(0) +ui_menu_settings::ui_menu_settings(mame_ui_manager &mui, render_container *container, UINT32 _type) : ui_menu(mui, container), diplist(nullptr), dipcount(0) { type = _type; } @@ -642,7 +642,7 @@ void ui_menu_settings_dip_switches::custom_render(void *selectedref, float top, y2 = y1 + bottom; // draw extra menu area - mame_machine_manager::instance()->ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); y1 += (float)DIP_SWITCH_SPACING; // iterate over DIP switches @@ -688,11 +688,11 @@ void ui_menu_settings_dip_switches::custom_render_one(float x1, float y1, float x1 += (x2 - x1 - numtoggles * switch_field_width) / 2; /* draw the dip switch name */ - mame_machine_manager::instance()->ui().draw_text_full( container, + ui().draw_text_full( container, dip->name, 0, y1 + (DIP_SWITCH_HEIGHT - UI_TARGET_FONT_HEIGHT) / 2, - x1 - mame_machine_manager::instance()->ui().get_string_width(" "), + x1 - ui().get_string_width(" "), JUSTIFY_RIGHT, WRAP_NEVER, DRAW_NORMAL, @@ -712,7 +712,7 @@ void ui_menu_settings_dip_switches::custom_render_one(float x1, float y1, float float innerx1; /* first outline the switch */ - mame_machine_manager::instance()->ui().draw_outlined_box(container, x1, y1, x1 + switch_field_width, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x1 + switch_field_width, y2, UI_BACKGROUND_COLOR); /* compute x1/x2 for the inner filled in switch */ innerx1 = x1 + (switch_field_width - switch_width) / 2; @@ -805,7 +805,7 @@ void ui_menu_analog::handle() settings menu -------------------------------------------------*/ -ui_menu_analog::ui_menu_analog(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_analog::ui_menu_analog(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } diff --git a/src/frontend/mame/ui/inputmap.h b/src/frontend/mame/ui/inputmap.h index f49df47b892..508b0a4dd02 100644 --- a/src/frontend/mame/ui/inputmap.h +++ b/src/frontend/mame/ui/inputmap.h @@ -15,7 +15,7 @@ class ui_menu_input_groups : public ui_menu { public: - ui_menu_input_groups(running_machine &machine, render_container *container); + ui_menu_input_groups(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_input_groups(); virtual void populate() override; virtual void handle() override; @@ -23,7 +23,7 @@ public: class ui_menu_input : public ui_menu { public: - ui_menu_input(running_machine &machine, render_container *container); + ui_menu_input(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_input(); virtual void handle() override; @@ -68,7 +68,7 @@ private: class ui_menu_input_general : public ui_menu_input { public: - ui_menu_input_general(running_machine &machine, render_container *container, int group); + ui_menu_input_general(mame_ui_manager &mui, render_container *container, int group); virtual ~ui_menu_input_general(); virtual void populate() override; @@ -79,7 +79,7 @@ protected: class ui_menu_input_specific : public ui_menu_input { public: - ui_menu_input_specific(running_machine &machine, render_container *container); + ui_menu_input_specific(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_input_specific(); virtual void populate() override; @@ -89,7 +89,7 @@ protected: class ui_menu_settings : public ui_menu { public: - ui_menu_settings(running_machine &machine, render_container *container, UINT32 type); + ui_menu_settings(mame_ui_manager &mui, render_container *container, UINT32 type); virtual ~ui_menu_settings(); virtual void populate() override; virtual void handle() override; @@ -110,7 +110,7 @@ protected: class ui_menu_settings_dip_switches : public ui_menu_settings { public: - ui_menu_settings_dip_switches(running_machine &machine, render_container *container); + ui_menu_settings_dip_switches(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_settings_dip_switches(); virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override; @@ -120,13 +120,13 @@ private: class ui_menu_settings_driver_config : public ui_menu_settings { public: - ui_menu_settings_driver_config(running_machine &machine, render_container *container); + ui_menu_settings_driver_config(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_settings_driver_config(); }; class ui_menu_analog : public ui_menu { public: - ui_menu_analog(running_machine &machine, render_container *container); + ui_menu_analog(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_analog(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/mainmenu.cpp b/src/frontend/mame/ui/mainmenu.cpp index acb318b3b41..dc861a96b0b 100644 --- a/src/frontend/mame/ui/mainmenu.cpp +++ b/src/frontend/mame/ui/mainmenu.cpp @@ -11,6 +11,7 @@ #include "emu.h" #include "crsshair.h" #include "emuopts.h" +#include "mame.h" #include "ui/menu.h" #include "ui/filemngr.h" #include "ui/barcode.h" @@ -42,7 +43,7 @@ ui_menu_main constructor - populate the main menu -------------------------------------------------*/ -ui_menu_main::ui_menu_main(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_main::ui_menu_main(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } @@ -127,7 +128,7 @@ void ui_menu_main::populate() item_append(_("Plugin Options"), nullptr, 0, (void *)PLUGINS); // add dats menu - if (mame_machine_manager::instance()->ui().options().enabled_dats() && mame_machine_manager::instance()->datfile().has_data()) + if (ui().options().enabled_dats() && mame_machine_manager::instance()->datfile().has_data()) item_append(_("External DAT View"), nullptr, 0, (void *)EXTERNAL_DATS); item_append(ui_menu_item_type::SEPARATOR); @@ -161,103 +162,103 @@ void ui_menu_main::handle() if (menu_event != nullptr && menu_event->iptkey == IPT_UI_SELECT) { switch((long long)(menu_event->itemref)) { case INPUT_GROUPS: - ui_menu::stack_push(global_alloc_clear<ui_menu_input_groups>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_input_groups>(ui(), container)); break; case INPUT_SPECIFIC: - ui_menu::stack_push(global_alloc_clear<ui_menu_input_specific>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_input_specific>(ui(), container)); break; case SETTINGS_DIP_SWITCHES: - ui_menu::stack_push(global_alloc_clear<ui_menu_settings_dip_switches>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_settings_dip_switches>(ui(), container)); break; case SETTINGS_DRIVER_CONFIG: - ui_menu::stack_push(global_alloc_clear<ui_menu_settings_driver_config>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_settings_driver_config>(ui(), container)); break; case ANALOG: - ui_menu::stack_push(global_alloc_clear<ui_menu_analog>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_analog>(ui(), container)); break; case BOOKKEEPING: - ui_menu::stack_push(global_alloc_clear<ui_menu_bookkeeping>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_bookkeeping>(ui(), container)); break; case GAME_INFO: - ui_menu::stack_push(global_alloc_clear<ui_menu_game_info>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_game_info>(ui(), container)); break; case IMAGE_MENU_IMAGE_INFO: - ui_menu::stack_push(global_alloc_clear<ui_menu_image_info>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_image_info>(ui(), container)); break; case IMAGE_MENU_FILE_MANAGER: - ui_menu::stack_push(global_alloc_clear<ui_menu_file_manager>(machine(), container, nullptr)); + ui_menu::stack_push(global_alloc_clear<ui_menu_file_manager>(ui(), container, nullptr)); break; case TAPE_CONTROL: - ui_menu::stack_push(global_alloc_clear<ui_menu_tape_control>(machine(), container, nullptr)); + ui_menu::stack_push(global_alloc_clear<ui_menu_tape_control>(ui(), container, nullptr)); break; case PTY_INFO: - ui_menu::stack_push(global_alloc_clear<ui_menu_pty_info>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_pty_info>(ui(), container)); break; case SLOT_DEVICES: - ui_menu::stack_push(global_alloc_clear<ui_menu_slot_devices>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_slot_devices>(ui(), container)); break; case NETWORK_DEVICES: - ui_menu::stack_push(global_alloc_clear<ui_menu_network_devices>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_network_devices>(ui(), container)); break; case KEYBOARD_MODE: - ui_menu::stack_push(global_alloc_clear<ui_menu_keyboard_mode>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_keyboard_mode>(ui(), container)); break; case SLIDERS: - ui_menu::stack_push(global_alloc_clear<ui_menu_sliders>(machine(), container, false)); + ui_menu::stack_push(global_alloc_clear<ui_menu_sliders>(ui(), container, false)); break; case VIDEO_TARGETS: - ui_menu::stack_push(global_alloc_clear<ui_menu_video_targets>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_video_targets>(ui(), container)); break; case VIDEO_OPTIONS: - ui_menu::stack_push(global_alloc_clear<ui_menu_video_options>(machine(), container, machine().render().first_target())); + ui_menu::stack_push(global_alloc_clear<ui_menu_video_options>(ui(), container, machine().render().first_target())); break; case CROSSHAIR: - ui_menu::stack_push(global_alloc_clear<ui_menu_crosshair>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_crosshair>(ui(), container)); break; case CHEAT: - ui_menu::stack_push(global_alloc_clear<ui_menu_cheat>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_cheat>(ui(), container)); break; case PLUGINS: - ui_menu::stack_push(global_alloc_clear<ui_menu_plugin>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_plugin>(ui(), container)); break; case SELECT_GAME: if (strcmp(machine().options().ui(),"simple")==0) { - ui_menu::stack_push(global_alloc_clear<ui_simple_menu_select_game>(machine(), container, nullptr)); + ui_menu::stack_push(global_alloc_clear<ui_simple_menu_select_game>(ui(), container, nullptr)); } else { - ui_menu::stack_push(global_alloc_clear<ui_menu_select_game>(machine(), container, nullptr)); + ui_menu::stack_push(global_alloc_clear<ui_menu_select_game>(ui(), container, nullptr)); } break; case BIOS_SELECTION: - ui_menu::stack_push(global_alloc_clear<ui_menu_bios_selection>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_bios_selection>(ui(), container)); break; case BARCODE_READ: - ui_menu::stack_push(global_alloc_clear<ui_menu_barcode_reader>(machine(), container, nullptr)); + ui_menu::stack_push(global_alloc_clear<ui_menu_barcode_reader>(ui(), container, nullptr)); break; case EXTERNAL_DATS: - ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(ui(), container)); break; case ADD_FAVORITE: @@ -272,7 +273,7 @@ void ui_menu_main::handle() case QUIT_GAME: ui_menu::stack_pop(machine()); - mame_machine_manager::instance()->ui().request_quit(); + ui().request_quit(); break; default: diff --git a/src/frontend/mame/ui/mainmenu.h b/src/frontend/mame/ui/mainmenu.h index 4333101e694..dc565f0256e 100644 --- a/src/frontend/mame/ui/mainmenu.h +++ b/src/frontend/mame/ui/mainmenu.h @@ -15,7 +15,7 @@ class ui_menu_main : public ui_menu { public: - ui_menu_main(running_machine &machine, render_container *container); + ui_menu_main(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_main(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/menu.cpp b/src/frontend/mame/ui/menu.cpp index c26d22562aa..e1aae6b98e7 100644 --- a/src/frontend/mame/ui/menu.cpp +++ b/src/frontend/mame/ui/menu.cpp @@ -11,6 +11,7 @@ #include "emu.h" #include "rendutil.h" #include "cheat.h" +#include "mame.h" #include "uiinput.h" #include "ui/ui.h" #include "ui/menu.h" @@ -130,7 +131,7 @@ inline bool ui_menu::exclusive_input_pressed(int key, int repeat) // init - initialize the menu system //------------------------------------------------- -void ui_menu::init(running_machine &machine) +void ui_menu::init(running_machine &machine, ui_options &mopt) { // initialize the menu stack ui_menu::stack_reset(machine); @@ -151,7 +152,7 @@ void ui_menu::init(running_machine &machine) arrow_texture = machine.render().texture_alloc(render_triangle); // initialize ui - init_ui(machine); + init_ui(machine, mopt); // add an exit callback to free memory machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(ui_menu::exit), &machine)); @@ -197,7 +198,7 @@ void ui_menu::exit(running_machine &machine) // ui_menu - menu constructor //------------------------------------------------- -ui_menu::ui_menu(running_machine &machine, render_container *_container) : m_machine(machine) +ui_menu::ui_menu(mame_ui_manager &mui, render_container *_container) : m_ui(mui) { m_special_main_menu = false; container = _container; @@ -489,16 +490,16 @@ void ui_menu::set_selection(void *selected_itemref) void ui_menu::draw(UINT32 flags, float origx0, float origy0) { // first draw the FPS counter - if (mame_machine_manager::instance()->ui().show_fps_counter()) + if (ui().show_fps_counter()) { - mame_machine_manager::instance()->ui().draw_text_full(container, machine().video().speed_text().c_str(), 0.0f, 0.0f, 1.0f, - JUSTIFY_RIGHT, WRAP_WORD, DRAW_OPAQUE, ARGB_WHITE, ARGB_BLACK, nullptr, nullptr); + ui().draw_text_full(container, machine().video().speed_text().c_str(), 0.0f, 0.0f, 1.0f, + JUSTIFY_RIGHT, WRAP_WORD, DRAW_OPAQUE, rgb_t::white, rgb_t::black, nullptr, nullptr); } bool customonly = (flags & UI_MENU_PROCESS_CUSTOM_ONLY); bool noimage = (flags & UI_MENU_PROCESS_NOIMAGE); bool noinput = (flags & UI_MENU_PROCESS_NOINPUT); - float line_height = mame_machine_manager::instance()->ui().get_line_height(); + float line_height = ui().get_line_height(); float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect(); float ud_arrow_width = line_height * machine().render().ui_aspect(); float gutter_width = lr_arrow_width * 1.3f; @@ -508,8 +509,8 @@ void ui_menu::draw(UINT32 flags, float origx0, float origy0) bool mouse_hit, mouse_button; float mouse_x = -1, mouse_y = -1; - if (mame_machine_manager::instance()->ui().options().use_background_image() && &machine().system() == &GAME_NAME(___empty) && bgrnd_bitmap->valid() && !noimage) - container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, ARGB_WHITE, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + if (ui().options().use_background_image() && &machine().system() == &GAME_NAME(___empty) && bgrnd_bitmap->valid() && !noimage) + container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, rgb_t::white, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); // compute the width and height of the full menu float visible_width = 0; @@ -520,11 +521,11 @@ void ui_menu::draw(UINT32 flags, float origx0, float origy0) float total_width; // compute width of left hand side - total_width = gutter_width + mame_machine_manager::instance()->ui().get_string_width(pitem.text) + gutter_width; + total_width = gutter_width + ui().get_string_width(pitem.text) + gutter_width; // add in width of right hand side if (pitem.subtext) - total_width += 2.0f * gutter_width + mame_machine_manager::instance()->ui().get_string_width(pitem.subtext); + total_width += 2.0f * gutter_width + ui().get_string_width(pitem.subtext); // track the maximum if (total_width > visible_width) @@ -598,7 +599,7 @@ void ui_menu::draw(UINT32 flags, float origx0, float origy0) float x2 = visible_left + visible_width + UI_BOX_LR_BORDER; float y2 = visible_top + visible_main_menu_height + UI_BOX_TB_BORDER; if (!customonly) - mame_machine_manager::instance()->ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); if (top_line < 0 || selected == 0) top_line = 0; @@ -718,11 +719,11 @@ void ui_menu::draw(UINT32 flags, float origx0, float origy0) { if (pitem.flags & MENU_FLAG_UI_HEADING) { - float heading_width = mame_machine_manager::instance()->ui().get_string_width(itemtext); + float heading_width = ui().get_string_width(itemtext); container->add_line(visible_left, line_y + 0.5f * line_height, visible_left + ((visible_width - heading_width) / 2) - UI_BOX_LR_BORDER, line_y + 0.5f * line_height, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); container->add_line(visible_left + visible_width - ((visible_width - heading_width) / 2) + UI_BOX_LR_BORDER, line_y + 0.5f * line_height, visible_left + visible_width, line_y + 0.5f * line_height, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); } - mame_machine_manager::instance()->ui().draw_text_full(container, itemtext, effective_left, line_y, effective_width, + ui().draw_text_full(container, itemtext, effective_left, line_y, effective_width, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr); } @@ -734,14 +735,14 @@ void ui_menu::draw(UINT32 flags, float origx0, float origy0) float item_width, subitem_width; // draw the left-side text - mame_machine_manager::instance()->ui().draw_text_full(container, itemtext, effective_left, line_y, effective_width, + ui().draw_text_full(container, itemtext, effective_left, line_y, effective_width, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, &item_width, nullptr); // give 2 spaces worth of padding item_width += 2.0f * gutter_width; // if the subitem doesn't fit here, display dots - if (mame_machine_manager::instance()->ui().get_string_width(subitem_text) > effective_width - item_width) + if (ui().get_string_width(subitem_text) > effective_width - item_width) { subitem_text = "..."; if (itemnum == selected) @@ -759,7 +760,7 @@ void ui_menu::draw(UINT32 flags, float origx0, float origy0) fgcolor2 = rgb_t(0xff,0xff,0xff,0x00); // draw the subitem right-justified - mame_machine_manager::instance()->ui().draw_text_full(container, subitem_text, effective_left + item_width, line_y, effective_width - item_width, + ui().draw_text_full(container, subitem_text, effective_left + item_width, line_y, effective_width - item_width, JUSTIFY_RIGHT, WRAP_TRUNCATE, DRAW_NORMAL, subitem_invert ? fgcolor3 : fgcolor2, bgcolor, &subitem_width, nullptr); // apply arrows @@ -798,8 +799,8 @@ void ui_menu::draw(UINT32 flags, float origx0, float origy0) float target_x, target_y; // compute the multi-line target width/height - mame_machine_manager::instance()->ui().draw_text_full(container, pitem.subtext, 0, 0, visible_width * 0.75f, - JUSTIFY_RIGHT, WRAP_WORD, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &target_width, &target_height); + ui().draw_text_full(container, pitem.subtext, 0, 0, visible_width * 0.75f, + JUSTIFY_RIGHT, WRAP_WORD, DRAW_NONE, rgb_t::white, rgb_t::black, &target_width, &target_height); // determine the target location target_x = visible_left + visible_width - target_width - UI_BOX_LR_BORDER; @@ -808,12 +809,12 @@ void ui_menu::draw(UINT32 flags, float origx0, float origy0) target_y = line_y - target_height - UI_BOX_TB_BORDER; // add a box around that - mame_machine_manager::instance()->ui().draw_outlined_box(container, target_x - UI_BOX_LR_BORDER, + ui().draw_outlined_box(container, target_x - UI_BOX_LR_BORDER, target_y - UI_BOX_TB_BORDER, target_x + target_width + UI_BOX_LR_BORDER, target_y + target_height + UI_BOX_TB_BORDER, subitem_invert ? UI_SELECTED_BG_COLOR : UI_BACKGROUND_COLOR); - mame_machine_manager::instance()->ui().draw_text_full(container, pitem.subtext, target_x, target_y, target_width, + ui().draw_text_full(container, pitem.subtext, target_x, target_y, target_width, JUSTIFY_RIGHT, WRAP_WORD, DRAW_NORMAL, UI_SELECTED_COLOR, UI_SELECTED_BG_COLOR, nullptr, nullptr); } @@ -835,21 +836,21 @@ void ui_menu::draw_text_box() { const char *text = item[0].text; const char *backtext = item[1].text; - float line_height = mame_machine_manager::instance()->ui().get_line_height(); + float line_height = ui().get_line_height(); float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect(); float gutter_width = lr_arrow_width; float target_width, target_height, prior_width; float target_x, target_y; // compute the multi-line target width/height - mame_machine_manager::instance()->ui().draw_text_full(container, text, 0, 0, 1.0f - 2.0f * UI_BOX_LR_BORDER - 2.0f * gutter_width, - JUSTIFY_LEFT, WRAP_WORD, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &target_width, &target_height); + ui().draw_text_full(container, text, 0, 0, 1.0f - 2.0f * UI_BOX_LR_BORDER - 2.0f * gutter_width, + JUSTIFY_LEFT, WRAP_WORD, DRAW_NONE, rgb_t::white, rgb_t::black, &target_width, &target_height); target_height += 2.0f * line_height; if (target_height > 1.0f - 2.0f * UI_BOX_TB_BORDER) target_height = floorf((1.0f - 2.0f * UI_BOX_TB_BORDER) / line_height) * line_height; // maximum against "return to prior menu" text - prior_width = mame_machine_manager::instance()->ui().get_string_width(backtext) + 2.0f * gutter_width; + prior_width = ui().get_string_width(backtext) + 2.0f * gutter_width; target_width = MAX(target_width, prior_width); // determine the target location @@ -867,12 +868,12 @@ void ui_menu::draw_text_box() target_y = 1.0f - UI_BOX_TB_BORDER - target_height; // add a box around that - mame_machine_manager::instance()->ui().draw_outlined_box(container, target_x - UI_BOX_LR_BORDER - gutter_width, + ui().draw_outlined_box(container, target_x - UI_BOX_LR_BORDER - gutter_width, target_y - UI_BOX_TB_BORDER, target_x + target_width + gutter_width + UI_BOX_LR_BORDER, target_y + target_height + UI_BOX_TB_BORDER, (item[0].flags & MENU_FLAG_REDTEXT) ? UI_RED_COLOR : UI_BACKGROUND_COLOR); - mame_machine_manager::instance()->ui().draw_text_full(container, text, target_x, target_y, target_width, + ui().draw_text_full(container, text, target_x, target_y, target_width, JUSTIFY_LEFT, WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); // draw the "return to prior menu" text with a hilight behind it @@ -882,7 +883,7 @@ void ui_menu::draw_text_box() target_x + target_width - 0.5f * UI_LINE_WIDTH, target_y + target_height, UI_SELECTED_BG_COLOR); - mame_machine_manager::instance()->ui().draw_text_full(container, backtext, target_x, target_y + target_height - line_height, target_width, + ui().draw_text_full(container, backtext, target_x, target_y + target_height - line_height, target_width, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_SELECTED_COLOR, UI_SELECTED_BG_COLOR, nullptr, nullptr); // artificially set the hover to the last item so a double-click exits @@ -1261,21 +1262,21 @@ void ui_menu::do_handle() // and calls the menu handler //------------------------------------------------- -UINT32 ui_menu::ui_handler(running_machine &machine, render_container *container, UINT32 state) +UINT32 ui_menu::ui_handler(mame_ui_manager &mui, render_container *container, UINT32 state) { // if we have no menus stacked up, start with the main menu if (menu_stack == nullptr) - stack_push(global_alloc_clear<ui_menu_main>(machine, container)); + stack_push(global_alloc_clear<ui_menu_main>(mui, container)); // update the menu state if (menu_stack != nullptr) menu_stack->do_handle(); // clear up anything pending to be released - clear_free_list(machine); + clear_free_list(mui.machine()); // if the menus are to be hidden, return a cancel here - if (mame_machine_manager::instance()->ui().is_menu_active() && ((machine.ui_input().pressed(IPT_UI_CONFIGURE) && !stack_has_special_main_menu()) || menu_stack == nullptr)) + if (mui.is_menu_active() && ((mui.machine().ui_input().pressed(IPT_UI_CONFIGURE) && !stack_has_special_main_menu()) || menu_stack == nullptr)) return UI_HANDLER_CANCEL; return 0; @@ -1363,7 +1364,7 @@ void ui_menu::draw_arrow(render_container *container, float x0, float y0, float // init - initialize the ui menu system //------------------------------------------------- -void ui_menu::init_ui(running_machine &machine) +void ui_menu::init_ui(running_machine &machine, ui_options &mopt) { render_manager &mrender = machine.render(); // create a texture for hilighting items in main menu @@ -1408,7 +1409,6 @@ void ui_menu::init_ui(running_machine &machine) bgrnd_bitmap = std::make_unique<bitmap_argb32>(0, 0); bgrnd_texture = mrender.texture_alloc(render_texture::hq_scale); - ui_options &mopt = mame_machine_manager::instance()->ui().options(); if (mopt.use_background_image() && &machine.system() == &GAME_NAME(___empty)) { emu_file backgroundfile(".", OPEN_FLAG_READ); @@ -1462,7 +1462,7 @@ void ui_menu::init_ui(running_machine &machine) void ui_menu::draw_select_game(UINT32 flags) { bool noinput = (flags & UI_MENU_PROCESS_NOINPUT); - float line_height = mame_machine_manager::instance()->ui().get_line_height(); + float line_height = ui().get_line_height(); float ud_arrow_width = line_height * machine().render().ui_aspect(); float gutter_width = 0.52f * ud_arrow_width; mouse_x = -1, mouse_y = -1; @@ -1472,11 +1472,10 @@ void ui_menu::draw_select_game(UINT32 flags) float primary_width = visible_width; bool is_swlist = ((item[0].flags & MENU_FLAG_UI_SWLIST) != 0); bool is_favorites = ((item[0].flags & MENU_FLAG_UI_FAVORITE) != 0); - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); // draw background image if available - if (mame_machine_manager::instance()->ui().options().use_background_image() && bgrnd_bitmap->valid()) - container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, ARGB_WHITE, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + if (ui().options().use_background_image() && bgrnd_bitmap->valid()) + container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, rgb_t::white, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); hover = item.size() + 1; visible_items = (is_swlist) ? item.size() - 2 : item.size() - 2 - skip_main_items; @@ -1525,7 +1524,7 @@ void ui_menu::draw_select_game(UINT32 flags) x1 = visible_left - UI_BOX_LR_BORDER; x2 = visible_left + visible_width + UI_BOX_LR_BORDER; float line = visible_top + (float)(visible_lines * line_height); - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); if (visible_items < visible_lines) visible_lines = visible_items; @@ -1566,7 +1565,7 @@ void ui_menu::draw_select_game(UINT32 flags) fgcolor = rgb_t(0xff, 0xff, 0xff, 0x00); bgcolor = rgb_t(0xff, 0xff, 0xff, 0xff); fgcolor3 = rgb_t(0xff, 0xcc, 0xcc, 0x00); - mui.draw_textured_box(container, line_x0 + 0.01f, line_y0, line_x1 - 0.01f, line_y1, bgcolor, rgb_t(255, 43, 43, 43), + ui().draw_textured_box(container, line_x0 + 0.01f, line_y0, line_x1 - 0.01f, line_y1, bgcolor, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); } // else if the mouse is over this item, draw with a different background @@ -1580,7 +1579,7 @@ void ui_menu::draw_select_game(UINT32 flags) { fgcolor = fgcolor3 = UI_MOUSEOVER_COLOR; bgcolor = UI_MOUSEOVER_BG_COLOR; - mui.draw_textured_box(container, line_x0 + 0.01f, line_y0, line_x1 - 0.01f, line_y1, bgcolor, rgb_t(255, 43, 43, 43), + ui().draw_textured_box(container, line_x0 + 0.01f, line_y0, line_x1 - 0.01f, line_y1, bgcolor, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); } @@ -1625,7 +1624,7 @@ void ui_menu::draw_select_game(UINT32 flags) space = ud_arrow_width * 1.5f; } - mui.draw_text_full(container, itemtext, effective_left + space, line_y, effective_width - space, JUSTIFY_LEFT, WRAP_TRUNCATE, + ui().draw_text_full(container, itemtext, effective_left + space, line_y, effective_width - space, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, item_invert ? fgcolor3 : fgcolor, bgcolor, nullptr, nullptr); } else @@ -1635,16 +1634,16 @@ void ui_menu::draw_select_game(UINT32 flags) float item_width, subitem_width; // compute right space for subitem - mui.draw_text_full(container, subitem_text, effective_left, line_y, mame_machine_manager::instance()->ui().get_string_width(pitem.subtext), + ui().draw_text_full(container, subitem_text, effective_left, line_y, ui().get_string_width(pitem.subtext), JUSTIFY_RIGHT, WRAP_NEVER, DRAW_NONE, item_invert ? fgcolor3 : fgcolor, bgcolor, &subitem_width, nullptr); subitem_width += gutter_width; // draw the item left-justified - mui.draw_text_full(container, itemtext, effective_left, line_y, effective_width - subitem_width, + ui().draw_text_full(container, itemtext, effective_left, line_y, effective_width - subitem_width, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, item_invert ? fgcolor3 : fgcolor, bgcolor, &item_width, nullptr); // draw the subitem right-justified - mui.draw_text_full(container, subitem_text, effective_left + item_width, line_y, effective_width - item_width, + ui().draw_text_full(container, subitem_text, effective_left + item_width, line_y, effective_width - item_width, JUSTIFY_RIGHT, WRAP_NEVER, DRAW_NORMAL, item_invert ? fgcolor3 : fgcolor, bgcolor, nullptr, nullptr); } } @@ -1668,7 +1667,7 @@ void ui_menu::draw_select_game(UINT32 flags) { fgcolor = rgb_t(0xff, 0xff, 0xff, 0x00); bgcolor = rgb_t(0xff, 0xff, 0xff, 0xff); - mui.draw_textured_box(container, line_x0 + 0.01f, line_y0, line_x1 - 0.01f, line_y1, bgcolor, rgb_t(255, 43, 43, 43), + ui().draw_textured_box(container, line_x0 + 0.01f, line_y0, line_x1 - 0.01f, line_y1, bgcolor, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); } // else if the mouse is over this item, draw with a different background @@ -1683,7 +1682,7 @@ void ui_menu::draw_select_game(UINT32 flags) container->add_line(visible_left, line + 0.5f * line_height, visible_left + visible_width, line + 0.5f * line_height, UI_LINE_WIDTH, UI_TEXT_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); else - mui.draw_text_full(container, itemtext, effective_left, line, effective_width, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, itemtext, effective_left, line, effective_width, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr); line += line_height; } @@ -1737,7 +1736,7 @@ void ui_menu::get_title_search(std::string &snaptext, std::string &searchstr) else { ui_options moptions; - searchstr = mame_machine_manager::instance()->ui().options().value(arts_info[ui_globals::curimage_view].path); + searchstr = ui().options().value(arts_info[ui_globals::curimage_view].path); addpath = moptions.value(arts_info[ui_globals::curimage_view].path); } @@ -2178,12 +2177,11 @@ void ui_menu::handle_main_events(UINT32 flags) float ui_menu::draw_right_box_title(float x1, float y1, float x2, float y2) { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - float line_height = mui.get_line_height(); + float line_height = ui().get_line_height(); float midl = (x2 - x1) * 0.5f; // add outlined box for options - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); // add separator line container->add_line(x1 + midl, y1, x1 + midl, y1 + line_height, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); @@ -2196,7 +2194,7 @@ float ui_menu::draw_right_box_title(float x1, float y1, float x2, float y2) float text_size = 1.0f; for (auto & elem : buffer) { - float textlen = mui.get_string_width(elem.c_str()) + 0.01f; + float textlen = ui().get_string_width(elem.c_str()) + 0.01f; float tmp_size = (textlen > midl) ? (midl / textlen) : 1.0f; text_size = MIN(text_size, tmp_size); } @@ -2228,14 +2226,14 @@ float ui_menu::draw_right_box_title(float x1, float y1, float x2, float y2) { fgcolor = rgb_t(0xff, 0xff, 0xff, 0x00); bgcolor = rgb_t(0xff, 0xff, 0xff, 0xff); - mui.draw_textured_box(container, x1 + UI_LINE_WIDTH, y1 + UI_LINE_WIDTH, x1 + midl - UI_LINE_WIDTH, y1 + line_height, + ui().draw_textured_box(container, x1 + UI_LINE_WIDTH, y1 + UI_LINE_WIDTH, x1 + midl - UI_LINE_WIDTH, y1 + line_height, bgcolor, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); } else if (bgcolor == UI_MOUSEOVER_BG_COLOR) container->add_rect(x1 + UI_LINE_WIDTH, y1 + UI_LINE_WIDTH, x1 + midl - UI_LINE_WIDTH, y1 + line_height, bgcolor, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); - mui.draw_text_full(container, buffer[cells].c_str(), x1 + UI_LINE_WIDTH, y1, midl - UI_LINE_WIDTH, + ui().draw_text_full(container, buffer[cells].c_str(), x1 + UI_LINE_WIDTH, y1, midl - UI_LINE_WIDTH, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr, text_size); x1 += midl; } @@ -2249,8 +2247,7 @@ float ui_menu::draw_right_box_title(float x1, float y1, float x2, float y2) std::string ui_menu::arts_render_common(float origx1, float origy1, float origx2, float origy2) { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - float line_height = mui.get_line_height(); + float line_height = ui().get_line_height(); std::string snaptext, searchstr; float title_size = 0.0f; float txt_lenght = 0.0f; @@ -2261,8 +2258,8 @@ std::string ui_menu::arts_render_common(float origx1, float origy1, float origx2 // apply title to right panel for (int x = FIRST_VIEW; x < LAST_VIEW; x++) { - mui.draw_text_full(container, _(arts_info[x].title), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, - WRAP_TRUNCATE, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &txt_lenght, nullptr); + ui().draw_text_full(container, _(arts_info[x].title), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, + WRAP_TRUNCATE, DRAW_NONE, rgb_t::white, rgb_t::black, &txt_lenght, nullptr); txt_lenght += 0.01f; title_size = MAX(txt_lenght, title_size); } @@ -2277,10 +2274,10 @@ std::string ui_menu::arts_render_common(float origx1, float origy1, float origx2 title_size *= tmp_size; if (bgcolor != UI_TEXT_BG_COLOR) - mui.draw_textured_box(container, origx1 + ((middle - title_size) * 0.5f), origy1, origx1 + ((middle + title_size) * 0.5f), + ui().draw_textured_box(container, origx1 + ((middle - title_size) * 0.5f), origy1, origx1 + ((middle + title_size) * 0.5f), origy1 + line_height, bgcolor, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); - mui.draw_text_full(container, snaptext.c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, snaptext.c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr, tmp_size); draw_common_arrow(origx1, origy1, origx2, origy2, ui_globals::curimage_view, FIRST_VIEW, LAST_VIEW, title_size); @@ -2294,9 +2291,9 @@ std::string ui_menu::arts_render_common(float origx1, float origy1, float origx2 void ui_menu::draw_star(float x0, float y0) { - float y1 = y0 + mame_machine_manager::instance()->ui().get_line_height(); - float x1 = x0 + mame_machine_manager::instance()->ui().get_line_height() * container->manager().ui_aspect(); - container->add_quad(x0, y0, x1, y1, ARGB_WHITE, star_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_PACKABLE); + float y1 = y0 + ui().get_line_height(); + float x1 = x0 + ui().get_line_height() * container->manager().ui_aspect(); + container->add_quad(x0, y0, x1, y1, rgb_t::white, star_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_PACKABLE); } //------------------------------------------------- @@ -2305,9 +2302,8 @@ void ui_menu::draw_star(float x0, float y0) void ui_menu::draw_toolbar(float x1, float y1, float x2, float y2, bool software) { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); + ui().draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -2340,9 +2336,9 @@ void ui_menu::draw_toolbar(float x1, float y1, float x2, float y2, bool software if (mouse_hit && x1 <= mouse_x && x2 > mouse_x && y1 <= mouse_y && y2 > mouse_y) { hover = HOVER_B_FAV + z; - color = ARGB_WHITE; - float ypos = y2 + mame_machine_manager::instance()->ui().get_line_height() + 2.0f * UI_BOX_TB_BORDER; - mui.draw_text_box(container, _(hover_msg[z]), JUSTIFY_CENTER, 0.5f, ypos, UI_BACKGROUND_COLOR); + color = rgb_t::white; + float ypos = y2 + ui().get_line_height() + 2.0f * UI_BOX_TB_BORDER; + ui().draw_text_box(container, _(hover_msg[z]), JUSTIFY_CENTER, 0.5f, ypos, UI_BACKGROUND_COLOR); } container->add_quad(x1, y1, x2, y2, color, t_texture[z], PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); @@ -2360,7 +2356,7 @@ void ui_menu::draw_toolbar(float x1, float y1, float x2, float y2, bool software void ui_menu::arts_render_images(bitmap_argb32 *tmp_bitmap, float origx1, float origy1, float origx2, float origy2, bool software) { bool no_available = false; - float line_height = mame_machine_manager::instance()->ui().get_line_height(); + float line_height = ui().get_line_height(); // if it fails, use the default image if (!tmp_bitmap->valid()) @@ -2393,7 +2389,7 @@ void ui_menu::arts_render_images(bitmap_argb32 *tmp_bitmap, float origx1, float int dest_yPixel = tmp_bitmap->height(); // force 4:3 ratio min - if (mame_machine_manager::instance()->ui().options().forced_4x3_snapshot() && ratioI < 0.75f && ui_globals::curimage_view == SNAPSHOT_VIEW) + if (ui().options().forced_4x3_snapshot() && ratioI < 0.75f && ui_globals::curimage_view == SNAPSHOT_VIEW) { // smaller ratio will ensure that the image fits in the view dest_yPixel = tmp_bitmap->width() * 0.75f; @@ -2403,7 +2399,7 @@ void ui_menu::arts_render_images(bitmap_argb32 *tmp_bitmap, float origx1, float dest_yPixel *= ratio; } // resize the bitmap if necessary - else if (ratioW < 1 || ratioH < 1 || (mame_machine_manager::instance()->ui().options().enlarge_snaps() && !no_available)) + else if (ratioW < 1 || ratioH < 1 || (ui().options().enlarge_snaps() && !no_available)) { // smaller ratio will ensure that the image fits in the view float ratio = MIN(ratioW, ratioH); @@ -2447,7 +2443,7 @@ void ui_menu::arts_render_images(bitmap_argb32 *tmp_bitmap, float origx1, float void ui_menu::draw_common_arrow(float origx1, float origy1, float origx2, float origy2, int current, int dmin, int dmax, float title_size) { - float line_height = mame_machine_manager::instance()->ui().get_line_height(); + float line_height = ui().get_line_height(); float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect(); float gutter_width = lr_arrow_width * 1.3f; @@ -2468,14 +2464,14 @@ void ui_menu::draw_common_arrow(float origx1, float origy1, float origx2, float // set hover if (mouse_hit && ar_x0 <= mouse_x && ar_x1 > mouse_x && ar_y0 <= mouse_y && ar_y1 > mouse_y && current != dmax) { - mame_machine_manager::instance()->ui().draw_textured_box(container, ar_x0 + 0.01f, ar_y0, ar_x1 - 0.01f, ar_y1, UI_MOUSEOVER_BG_COLOR, rgb_t(255, 43, 43, 43), + ui().draw_textured_box(container, ar_x0 + 0.01f, ar_y0, ar_x1 - 0.01f, ar_y1, UI_MOUSEOVER_BG_COLOR, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); hover = HOVER_UI_RIGHT; fgcolor_right = UI_MOUSEOVER_COLOR; } else if (mouse_hit && al_x0 <= mouse_x && al_x1 > mouse_x && al_y0 <= mouse_y && al_y1 > mouse_y && current != dmin) { - mame_machine_manager::instance()->ui().draw_textured_box(container, al_x0 + 0.01f, al_y0, al_x1 - 0.01f, al_y1, UI_MOUSEOVER_BG_COLOR, rgb_t(255, 43, 43, 43), + ui().draw_textured_box(container, al_x0 + 0.01f, al_y0, al_x1 - 0.01f, al_y1, UI_MOUSEOVER_BG_COLOR, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); hover = HOVER_UI_LEFT; fgcolor_left = UI_MOUSEOVER_COLOR; @@ -2500,8 +2496,8 @@ void ui_menu::draw_common_arrow(float origx1, float origy1, float origx2, float void ui_menu::draw_icon(int linenum, void *selectedref, float x0, float y0) { static const game_driver *olddriver[MAX_ICONS_RENDER] = { nullptr }; - float x1 = x0 + mame_machine_manager::instance()->ui().get_line_height() * container->manager().ui_aspect(container); - float y1 = y0 + mame_machine_manager::instance()->ui().get_line_height(); + float x1 = x0 + ui().get_line_height() * container->manager().ui_aspect(container); + float y1 = y0 + ui().get_line_height(); const game_driver *driver = (const game_driver *)selectedref; if (olddriver[linenum] != driver || ui_globals::redraw_icon) @@ -2518,9 +2514,9 @@ void ui_menu::draw_icon(int linenum, void *selectedref, float x0, float y0) } // get search path - path_iterator path(mame_machine_manager::instance()->ui().options().icons_directory()); + path_iterator path(ui().options().icons_directory()); std::string curpath; - std::string searchstr(mame_machine_manager::instance()->ui().options().icons_directory()); + std::string searchstr(ui().options().icons_directory()); // iterate over path and add path for zipped formats while (path.next(curpath)) @@ -2595,7 +2591,7 @@ void ui_menu::draw_icon(int linenum, void *selectedref, float x0, float y0) } if (icons_bitmap[linenum] != nullptr && icons_bitmap[linenum]->valid()) - container->add_quad(x0, y0, x1, y1, ARGB_WHITE, icons_texture[linenum], PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + container->add_quad(x0, y0, x1, y1, rgb_t::white, icons_texture[linenum], PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); } //------------------------------------------------- @@ -2609,7 +2605,7 @@ void ui_menu::info_arrow(int ub, float origx1, float origx2, float oy1, float li if (mouse_hit && origx1 <= mouse_x && origx2 > mouse_x && oy1 <= mouse_y && oy1 + (line_height * text_size) > mouse_y) { - mame_machine_manager::instance()->ui().draw_textured_box(container, origx1 + 0.01f, oy1, origx2 - 0.01f, oy1 + (line_height * text_size), UI_MOUSEOVER_BG_COLOR, + ui().draw_textured_box(container, origx1 + 0.01f, oy1, origx2 - 0.01f, oy1 + (line_height * text_size), UI_MOUSEOVER_BG_COLOR, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); hover = (!ub) ? HOVER_DAT_UP : HOVER_DAT_DOWN; fgcolor = UI_MOUSEOVER_COLOR; @@ -2625,15 +2621,14 @@ void ui_menu::info_arrow(int ub, float origx1, float origx2, float oy1, float li void ui_menu::draw_palette_menu() { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - float line_height = mui.get_line_height(); + float line_height = ui().get_line_height(); float lr_arrow_width = 0.4f * line_height * machine().render().ui_aspect(); float ud_arrow_width = line_height * machine().render().ui_aspect(); float gutter_width = lr_arrow_width * 1.3f; int itemnum, linenum; - if (mame_machine_manager::instance()->ui().options().use_background_image() && machine().options().system() == nullptr && bgrnd_bitmap->valid()) - container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, ARGB_WHITE, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + if (ui().options().use_background_image() && machine().options().system() == nullptr && bgrnd_bitmap->valid()) + container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, rgb_t::white, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); // compute the width and height of the full menu float visible_width = 0; @@ -2643,11 +2638,11 @@ void ui_menu::draw_palette_menu() const ui_menu_item &pitem = item[itemnum]; // compute width of left hand side - float total_width = gutter_width + mui.get_string_width(pitem.text) + gutter_width; + float total_width = gutter_width + ui().get_string_width(pitem.text) + gutter_width; // add in width of right hand side if (pitem.subtext) - total_width += 2.0f * gutter_width + mui.get_string_width(pitem.subtext); + total_width += 2.0f * gutter_width + ui().get_string_width(pitem.subtext); // track the maximum if (total_width > visible_width) @@ -2687,7 +2682,7 @@ void ui_menu::draw_palette_menu() float y1 = visible_top - UI_BOX_TB_BORDER; float x2 = visible_left + visible_width + UI_BOX_LR_BORDER; float y2 = visible_top + visible_main_menu_height + UI_BOX_TB_BORDER; - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); // determine the first visible line based on the current selection int top_line = selected - visible_lines / 2; @@ -2780,7 +2775,7 @@ void ui_menu::draw_palette_menu() // if we don't have a subitem, just draw the string centered else if (pitem.subtext == nullptr) - mui.draw_text_full(container, itemtext, effective_left, line_y, effective_width, + ui().draw_text_full(container, itemtext, effective_left, line_y, effective_width, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr); // otherwise, draw the item on the left and the subitem text on the right @@ -2790,13 +2785,13 @@ void ui_menu::draw_palette_menu() rgb_t color = rgb_t((UINT32)strtoul(subitem_text, nullptr, 16)); // draw the left-side text - mui.draw_text_full(container, itemtext, effective_left, line_y, effective_width, + ui().draw_text_full(container, itemtext, effective_left, line_y, effective_width, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr); // give 2 spaces worth of padding - float subitem_width = mui.get_string_width("FF00FF00"); + float subitem_width = ui().get_string_width("FF00FF00"); - mui.draw_outlined_box(container, effective_left + effective_width - subitem_width, line_y0, + ui().draw_outlined_box(container, effective_left + effective_width - subitem_width, line_y0, effective_left + effective_width, line_y1, color); } } @@ -2814,17 +2809,16 @@ void ui_menu::draw_palette_menu() void ui_menu::draw_dats_menu() { - float line_height = mame_machine_manager::instance()->ui().get_line_height(); + float line_height = ui().get_line_height(); float ud_arrow_width = line_height * machine().render().ui_aspect(); float gutter_width = 0.52f * line_height * machine().render().ui_aspect(); mouse_x = -1, mouse_y = -1; float visible_width = 1.0f - 2.0f * UI_BOX_LR_BORDER; float visible_left = (1.0f - visible_width) * 0.5f; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); // draw background image if available - if (mame_machine_manager::instance()->ui().options().use_background_image() && bgrnd_bitmap->valid()) - container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, ARGB_WHITE, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + if (ui().options().use_background_image() && bgrnd_bitmap->valid()) + container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, rgb_t::white, bgrnd_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); hover = item.size() + 1; visible_items = item.size() - 2; @@ -2857,7 +2851,7 @@ void ui_menu::draw_dats_menu() float y2 = visible_top + visible_main_menu_height + UI_BOX_TB_BORDER + extra_height; float line = visible_top + (float)(visible_lines * line_height); - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); if (visible_items < visible_lines) visible_lines = visible_items; @@ -2917,7 +2911,7 @@ void ui_menu::draw_dats_menu() // draw dats text else if (pitem.subtext == nullptr) { - mui.draw_text_full(container, itemtext, effective_left, line_y, effective_width, JUSTIFY_LEFT, WRAP_NEVER, + ui().draw_text_full(container, itemtext, effective_left, line_y, effective_width, JUSTIFY_LEFT, WRAP_NEVER, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr); } } @@ -2942,7 +2936,7 @@ void ui_menu::draw_dats_menu() else { highlight(container, line_x0, line_y0, line_x1, line_y1, bgcolor); - mui.draw_text_full(container, itemtext, effective_left, line, effective_width, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, itemtext, effective_left, line, effective_width, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr); } line += line_height; @@ -2960,3 +2954,65 @@ void ui_menu::set_pressed() (m_repeat == 0) ? m_repeat = osd_ticks() + osd_ticks_per_second() / 2 : m_repeat = osd_ticks() + osd_ticks_per_second() / 4; m_pressed = true; } + + +//------------------------------------------------- +// extra_text_draw_box - generically adds header +// or footer text +//------------------------------------------------- + +void ui_menu::extra_text_draw_box(float origx1, float origx2, float origy, float yspan, const char *text, int direction) +{ + float text_width, text_height; + float width, maxwidth; + float x1, y1, x2, y2, temp; + + // get the size of the text + ui().draw_text_full(container,text, 0.0f, 0.0f, 1.0f, JUSTIFY_LEFT, WRAP_WORD, + DRAW_NONE, rgb_t::white, rgb_t::black, &text_width, &text_height); + width = text_width + (2 * UI_BOX_LR_BORDER); + maxwidth = MAX(width, origx2 - origx1); + + // compute our bounds + x1 = 0.5f - 0.5f * maxwidth; + x2 = x1 + maxwidth; + y1 = origy + (yspan * direction); + y2 = origy + (UI_BOX_TB_BORDER * direction); + + if (y1 > y2) + { + temp = y1; + y1 = y2; + y2 = temp; + } + + // draw a box + ui().draw_outlined_box(container,x1, y1, x2, y2, UI_BACKGROUND_COLOR); + + // take off the borders + x1 += UI_BOX_LR_BORDER; + y1 += UI_BOX_TB_BORDER; + + // draw the text within it + ui().draw_text_full(container,text, x1, y1, text_width, JUSTIFY_LEFT, WRAP_WORD, + DRAW_NORMAL, rgb_t::white, rgb_t::black, nullptr, nullptr); +} + + +//------------------------------------------------- +// extra_text_render - generically adds header +// and footer text +//------------------------------------------------- + +void ui_menu::extra_text_render(float top, float bottom, + float origx1, float origy1, float origx2, float origy2, + const char *header, const char *footer) +{ + header = ((header != nullptr) && (header[0] != '\0')) ? header : nullptr; + footer = ((footer != nullptr) && (footer[0] != '\0')) ? footer : nullptr; + + if (header != nullptr) + extra_text_draw_box(origx1, origx2, origy1, top, header, -1); + if (footer != nullptr) + extra_text_draw_box(origx1, origx2, origy2, bottom, footer, +1); +} diff --git a/src/frontend/mame/ui/menu.h b/src/frontend/mame/ui/menu.h index 39458546397..831815295cf 100644 --- a/src/frontend/mame/ui/menu.h +++ b/src/frontend/mame/ui/menu.h @@ -15,7 +15,7 @@ #include "render.h" #include "language.h" -#include "ui/uimain.h" +#include "ui/ui.h" /*************************************************************************** @@ -77,10 +77,11 @@ struct ui_menu_pool class ui_menu { public: - ui_menu(running_machine &machine, render_container *container); + ui_menu(mame_ui_manager &mui, render_container *container); virtual ~ui_menu(); - running_machine &machine() const { return m_machine; } + mame_ui_manager &ui() const { return m_ui; } + running_machine &machine() const { return m_ui.machine(); } render_container *container; // render_container we render to ui_menu_event menu_event; // the UI menu_event that occurred @@ -126,7 +127,7 @@ public: void set_special_main_menu(bool disable); // Global initialization - static void init(running_machine &machine); + static void init(running_machine &machine, ui_options &mopt); static void exit(running_machine &machine); // reset the menus, clearing everything @@ -148,7 +149,7 @@ public: static void draw_arrow(render_container *container, float x0, float y0, float x1, float y1, rgb_t fgcolor, UINT32 orientation); // master handler - static UINT32 ui_handler(running_machine &machine, render_container *container, UINT32 state); + static UINT32 ui_handler(mame_ui_manager &mui, render_container *container, UINT32 state); // Used by sliders void validate_selection(int scandir); @@ -171,7 +172,7 @@ private: static render_texture *hilight_texture, *arrow_texture; bool m_special_main_menu; - running_machine &m_machine; // machine we are attached to + mame_ui_manager &m_ui; // UI we are attached to void draw(UINT32 flags, float x0 = 0.0f, float y0 = 0.0f); void draw_text_box(); @@ -217,7 +218,7 @@ public: void draw_star(float x0, float y0); // Global initialization - static void init_ui(running_machine &machine); + static void init_ui(running_machine &machine, ui_options &mopt); // get arrows status template <typename _T1, typename _T2, typename _T3> @@ -248,6 +249,9 @@ protected: std::string arts_render_common(float origx1, float origy1, float origx2, float origy2); void arts_render_images(bitmap_argb32 *bitmap, float origx1, float origy1, float origx2, float origy2, bool software); + // draw header and footer text + void extra_text_render(float top, float bottom, float origx1, float origy1, float origx2, float origy2, const char *header, const char *footer); + int visible_lines; // main box visible lines int right_visible_lines; // right box lines @@ -292,6 +296,7 @@ private: void handle_main_events(UINT32 flags); void draw_icon(int linenum, void *selectedref, float x1, float y1); + void extra_text_draw_box(float origx1, float origx2, float origy, float yspan, const char *text, int direction); }; #endif // __UI_MENU_H__ diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp index 38a2d944533..7f54d997ebd 100644 --- a/src/frontend/mame/ui/miscmenu.cpp +++ b/src/frontend/mame/ui/miscmenu.cpp @@ -12,6 +12,7 @@ #include "mame.h" #include "osdnet.h" #include "mameopts.h" +#include "pluginopts.h" #include "drivenum.h" #include "uiinput.h" @@ -30,13 +31,13 @@ ui_menu_keyboard_mode - menu that -------------------------------------------------*/ -ui_menu_keyboard_mode::ui_menu_keyboard_mode(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_keyboard_mode::ui_menu_keyboard_mode(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } void ui_menu_keyboard_mode::populate() { - bool natural = mame_machine_manager::instance()->ui().use_natural_keyboard(); + bool natural = ui().use_natural_keyboard(); item_append(_("Keyboard Mode:"), natural ? _("Natural") : _("Emulated"), natural ? MENU_FLAG_LEFT_ARROW : MENU_FLAG_RIGHT_ARROW, nullptr); } @@ -46,7 +47,7 @@ ui_menu_keyboard_mode::~ui_menu_keyboard_mode() void ui_menu_keyboard_mode::handle() { - bool natural = mame_machine_manager::instance()->ui().use_natural_keyboard(); + bool natural = ui().use_natural_keyboard(); /* process the menu */ const ui_menu_event *menu_event = process(0); @@ -55,7 +56,7 @@ void ui_menu_keyboard_mode::handle() { if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT) { - mame_machine_manager::instance()->ui().set_use_natural_keyboard(natural ^ true); + ui().set_use_natural_keyboard(natural ^ true); reset(UI_MENU_RESET_REMEMBER_REF); } } @@ -67,7 +68,7 @@ void ui_menu_keyboard_mode::handle() bios selection menu -------------------------------------------------*/ -ui_menu_bios_selection::ui_menu_bios_selection(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_bios_selection::ui_menu_bios_selection(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } @@ -140,7 +141,7 @@ void ui_menu_bios_selection::handle() -ui_menu_network_devices::ui_menu_network_devices(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_network_devices::ui_menu_network_devices(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } @@ -223,7 +224,7 @@ void ui_menu_bookkeeping::handle() menu_bookkeeping - handle the bookkeeping information menu -------------------------------------------------*/ -ui_menu_bookkeeping::ui_menu_bookkeeping(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_bookkeeping::ui_menu_bookkeeping(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } @@ -372,7 +373,7 @@ void ui_menu_crosshair::handle() crosshair settings menu -------------------------------------------------*/ -ui_menu_crosshair::ui_menu_crosshair(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_crosshair::ui_menu_crosshair(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } @@ -534,7 +535,7 @@ ui_menu_crosshair::~ui_menu_crosshair() quitting the game -------------------------------------------------*/ -ui_menu_quit_game::ui_menu_quit_game(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_quit_game::ui_menu_quit_game(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } @@ -559,8 +560,8 @@ void ui_menu_quit_game::handle() // ctor / dtor //------------------------------------------------- -ui_menu_export::ui_menu_export(running_machine &machine, render_container *container, std::vector<const game_driver *> drvlist) - : ui_menu(machine, container), m_list(drvlist) +ui_menu_export::ui_menu_export(mame_ui_manager &mui, render_container *container, std::vector<const game_driver *> drvlist) + : ui_menu(mui, container), m_list(drvlist) { } @@ -587,7 +588,7 @@ void ui_menu_export::handle() if (m_event->iptkey == IPT_UI_SELECT) { std::string filename("exported"); - emu_file infile(mame_machine_manager::instance()->ui().options().ui_path(), OPEN_FLAG_READ); + emu_file infile(ui().options().ui_path(), OPEN_FLAG_READ); if (infile.open(filename.c_str(), ".xml") == osd_file::error::NONE) for (int seq = 0; ; ++seq) { @@ -600,7 +601,7 @@ void ui_menu_export::handle() } // attempt to open the output file - emu_file file(mame_machine_manager::instance()->ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); + emu_file file(ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); if (file.open(filename.c_str(), ".xml") == osd_file::error::NONE) { FILE *pfile; @@ -627,7 +628,7 @@ void ui_menu_export::handle() if (m_event->iptkey == IPT_UI_SELECT) { std::string filename("exported"); - emu_file infile(mame_machine_manager::instance()->ui().options().ui_path(), OPEN_FLAG_READ); + emu_file infile(ui().options().ui_path(), OPEN_FLAG_READ); if (infile.open(filename.c_str(), ".txt") == osd_file::error::NONE) for (int seq = 0; ; ++seq) { @@ -640,7 +641,7 @@ void ui_menu_export::handle() } // attempt to open the output file - emu_file file(mame_machine_manager::instance()->ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); + emu_file file(ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); if (file.open(filename.c_str(), ".txt") == osd_file::error::NONE) { // print the header @@ -685,10 +686,10 @@ void ui_menu_export::populate() // ctor / dtor //------------------------------------------------- -ui_menu_machine_configure::ui_menu_machine_configure(running_machine &machine, render_container *container, const game_driver *prev, float _x0, float _y0) - : ui_menu(machine, container) +ui_menu_machine_configure::ui_menu_machine_configure(mame_ui_manager &mui, render_container *container, const game_driver *prev, float _x0, float _y0) + : ui_menu(mui, container) , m_drv(prev) - , m_opts(machine.options()) + , m_opts(mui.machine().options()) , x0(_x0) , y0(_y0) , m_curbios(0) @@ -727,7 +728,7 @@ void ui_menu_machine_configure::handle() { std::string inistring = m_opts.output_ini(); file.puts(inistring.c_str()); - mame_machine_manager::instance()->ui().popup_time(2, "%s", _("\n Configuration saved \n\n")); + ui().popup_time(2, "%s", _("\n Configuration saved \n\n")); } break; } @@ -742,15 +743,15 @@ void ui_menu_machine_configure::handle() break; case CONTROLLER: if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_submenu>(machine(), container, control_submenu_options, m_drv, &m_opts)); + ui_menu::stack_push(global_alloc_clear<ui_submenu>(ui(), container, control_submenu_options, m_drv, &m_opts)); break; case VIDEO: if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_submenu>(machine(), container, video_submenu_options, m_drv, &m_opts)); + ui_menu::stack_push(global_alloc_clear<ui_submenu>(ui(), container, video_submenu_options, m_drv, &m_opts)); break; case ADVANCED: if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_submenu>(machine(), container, advanced_submenu_options, m_drv, &m_opts)); + ui_menu::stack_push(global_alloc_clear<ui_submenu>(ui(), container, advanced_submenu_options, m_drv, &m_opts)); break; default: break; @@ -797,7 +798,7 @@ void ui_menu_machine_configure::populate() item_append(ui_menu_item_type::SEPARATOR); item_append(_("Save machine configuration"), nullptr, 0, (void *)(FPTR)SAVE); item_append(ui_menu_item_type::SEPARATOR); - customtop = 2.0f * mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = 2.0f * ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } //------------------------------------------------- @@ -807,7 +808,6 @@ void ui_menu_machine_configure::populate() void ui_menu_machine_configure::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); std::string text[2]; float maxwidth = origx2 - origx1; @@ -816,8 +816,8 @@ void ui_menu_machine_configure::custom_render(void *selectedref, float top, floa for (auto & elem : text) { - mui.draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(maxwidth, width); } @@ -830,7 +830,7 @@ void ui_menu_machine_configure::custom_render(void *selectedref, float top, floa float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -840,9 +840,9 @@ void ui_menu_machine_configure::custom_render(void *selectedref, float top, floa // draw the text within it for (auto & elem : text) { - mui.draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); - y1 += mui.get_line_height(); + y1 += ui().get_line_height(); } } @@ -889,8 +889,8 @@ void ui_menu_machine_configure::setup_bios() // ctor / dtor //------------------------------------------------- -ui_menu_plugins_configure::ui_menu_plugins_configure(running_machine &machine, render_container *container) - : ui_menu(machine, container) +ui_menu_plugins_configure::ui_menu_plugins_configure(mame_ui_manager &mui, render_container *container) + : ui_menu(mui, container) { } @@ -946,7 +946,7 @@ void ui_menu_plugins_configure::populate() } } item_append(ui_menu_item_type::SEPARATOR); - customtop = mame_machine_manager::instance()->ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER); + customtop = ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER); } //------------------------------------------------- @@ -956,10 +956,9 @@ void ui_menu_plugins_configure::populate() void ui_menu_plugins_configure::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - mui.draw_text_full(container, _("Plugins"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, _("Plugins"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; float maxwidth = MAX(origx2 - origx1, width); @@ -970,7 +969,7 @@ void ui_menu_plugins_configure::custom_render(void *selectedref, float top, floa float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -978,6 +977,6 @@ void ui_menu_plugins_configure::custom_render(void *selectedref, float top, floa y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, _("Plugins"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, _("Plugins"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } diff --git a/src/frontend/mame/ui/miscmenu.h b/src/frontend/mame/ui/miscmenu.h index 18f22c49d54..286e5f30912 100644 --- a/src/frontend/mame/ui/miscmenu.h +++ b/src/frontend/mame/ui/miscmenu.h @@ -20,7 +20,7 @@ using s_bios = std::vector<std::pair<std::string, int>>; class ui_menu_keyboard_mode : public ui_menu { public: - ui_menu_keyboard_mode(running_machine &machine, render_container *container); + ui_menu_keyboard_mode(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_keyboard_mode(); virtual void populate() override; virtual void handle() override; @@ -28,7 +28,7 @@ public: class ui_menu_network_devices : public ui_menu { public: - ui_menu_network_devices(running_machine &machine, render_container *container); + ui_menu_network_devices(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_network_devices(); virtual void populate() override; virtual void handle() override; @@ -36,7 +36,7 @@ public: class ui_menu_bookkeeping : public ui_menu { public: - ui_menu_bookkeeping(running_machine &machine, render_container *container); + ui_menu_bookkeeping(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_bookkeeping(); virtual void populate() override; virtual void handle() override; @@ -47,7 +47,7 @@ private: class ui_menu_crosshair : public ui_menu { public: - ui_menu_crosshair(running_machine &machine, render_container *container); + ui_menu_crosshair(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_crosshair(); virtual void populate() override; virtual void handle() override; @@ -73,7 +73,7 @@ private: class ui_menu_quit_game : public ui_menu { public: - ui_menu_quit_game(running_machine &machine, render_container *container); + ui_menu_quit_game(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_quit_game(); virtual void populate() override; virtual void handle() override; @@ -81,7 +81,7 @@ public: class ui_menu_bios_selection : public ui_menu { public: - ui_menu_bios_selection(running_machine &machine, render_container *container); + ui_menu_bios_selection(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_bios_selection(); virtual void populate() override; virtual void handle() override; @@ -95,7 +95,7 @@ public: class ui_menu_export : public ui_menu { public: - ui_menu_export(running_machine &machine, render_container *container, std::vector<const game_driver*> list); + ui_menu_export(mame_ui_manager &mui, render_container *container, std::vector<const game_driver*> list); virtual ~ui_menu_export(); virtual void populate() override; virtual void handle() override; @@ -111,7 +111,7 @@ private: class ui_menu_machine_configure : public ui_menu { public: - ui_menu_machine_configure(running_machine &machine, render_container *container, const game_driver *prev, float x0 = 0.0f, float y0 = 0.0f); + ui_menu_machine_configure(mame_ui_manager &mui, render_container *container, const game_driver *prev, float x0 = 0.0f, float y0 = 0.0f); virtual ~ui_menu_machine_configure(); virtual void populate() override; virtual void handle() override; @@ -144,7 +144,7 @@ private: class ui_menu_plugins_configure : public ui_menu { public: - ui_menu_plugins_configure(running_machine &machine, render_container *container); + ui_menu_plugins_configure(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_plugins_configure(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/optsmenu.cpp b/src/frontend/mame/ui/optsmenu.cpp index 3dbebd3a896..5c9009e7604 100644 --- a/src/frontend/mame/ui/optsmenu.cpp +++ b/src/frontend/mame/ui/optsmenu.cpp @@ -9,6 +9,7 @@ *********************************************************************/ #include "emu.h" +#include "mame.h" #include "mameopts.h" #include "ui/ui.h" #include "ui/menu.h" @@ -27,7 +28,7 @@ // ctor //------------------------------------------------- -ui_menu_game_options::ui_menu_game_options(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_game_options::ui_menu_game_options(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { m_main = main_filters::actual; } @@ -41,7 +42,7 @@ ui_menu_game_options::~ui_menu_game_options() main_filters::actual = m_main; if (ui_menu::menu_stack != nullptr) ui_menu::menu_stack->reset(UI_MENU_RESET_SELECT_FIRST); - save_ui_options(machine()); + ui().save_ui_options(); ui_globals::switch_image = true; } @@ -82,7 +83,7 @@ void ui_menu_game_options::handle() for (int index = 0; index < total; ++index) s_sel[index] = main_filters::text[index]; - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, m_main)); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, s_sel, m_main)); } break; } @@ -107,7 +108,7 @@ void ui_menu_game_options::handle() for (size_t index = 0; index < total; ++index) s_sel[index] = ifile.get_file(index); - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, ifile.cur_file(), SELECTOR_INIFILE)); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, s_sel, ifile.cur_file(), SELECTOR_INIFILE)); } break; } @@ -131,7 +132,7 @@ void ui_menu_game_options::handle() for (int index = 0; index < total; ++index) s_sel[index] = ifile.get_category(index); - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, ifile.cur_cat(), SELECTOR_CATEGORY)); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, s_sel, ifile.cur_cat(), SELECTOR_CATEGORY)); } break; } @@ -142,7 +143,7 @@ void ui_menu_game_options::handle() changed = true; } else if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, c_mnfct::ui, c_mnfct::actual)); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, c_mnfct::ui, c_mnfct::actual)); break; case YEAR_CAT_FILTER: @@ -152,60 +153,60 @@ void ui_menu_game_options::handle() changed = true; } else if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, c_year::ui, c_year::actual)); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, c_year::ui, c_year::actual)); break; case CONF_DIR: if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_directory>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_directory>(ui(), container)); break; case MISC_MENU: if (m_event->iptkey == IPT_UI_SELECT) { - ui_menu::stack_push(global_alloc_clear<ui_submenu>(machine(), container, misc_submenu_options)); + ui_menu::stack_push(global_alloc_clear<ui_submenu>(ui(), container, misc_submenu_options)); ui_globals::reset = true; } break; case SOUND_MENU: if (m_event->iptkey == IPT_UI_SELECT) { - ui_menu::stack_push(global_alloc_clear<ui_menu_sound_options>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_sound_options>(ui(), container)); ui_globals::reset = true; } break; case DISPLAY_MENU: if (m_event->iptkey == IPT_UI_SELECT) { - ui_menu::stack_push(global_alloc_clear<ui_submenu>(machine(), container, video_submenu_options)); + ui_menu::stack_push(global_alloc_clear<ui_submenu>(ui(), container, video_submenu_options)); ui_globals::reset = true; } break; case CUSTOM_MENU: if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_custom_ui>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_custom_ui>(ui(), container)); break; case CONTROLLER_MENU: if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_submenu>(machine(), container, control_submenu_options)); + ui_menu::stack_push(global_alloc_clear<ui_submenu>(ui(), container, control_submenu_options)); break; case CGI_MENU: if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_input_groups>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_input_groups>(ui(), container)); break; case CUSTOM_FILTER: if (m_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_custom_filter>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_custom_filter>(ui(), container)); break; case ADVANCED_MENU: if (m_event->iptkey == IPT_UI_SELECT) { - ui_menu::stack_push(global_alloc_clear<ui_submenu>(machine(), container, advanced_submenu_options)); + ui_menu::stack_push(global_alloc_clear<ui_submenu>(ui(), container, advanced_submenu_options)); ui_globals::reset = true; } break; case SAVE_CONFIG: if (m_event->iptkey == IPT_UI_SELECT) - save_main_option(machine()); + ui().save_main_option(); break; } @@ -282,8 +283,8 @@ void ui_menu_game_options::populate() item_append(ui_menu_item_type::SEPARATOR); item_append(_("Save Configuration"), nullptr, 0, (void *)(FPTR)SAVE_CONFIG); - custombottom = 2.0f * mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; - customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + custombottom = 2.0f * ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } //------------------------------------------------- @@ -293,9 +294,8 @@ void ui_menu_game_options::populate() void ui_menu_game_options::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - mui.draw_text_full(container, _("Settings"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, _("Settings"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; float maxwidth = MAX(origx2 - origx1, width); @@ -306,7 +306,7 @@ void ui_menu_game_options::custom_render(void *selectedref, float top, float bot float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -314,76 +314,6 @@ void ui_menu_game_options::custom_render(void *selectedref, float top, float bot y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, _("Settings"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, _("Settings"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } - -//------------------------------------------------- -// save ui options -//------------------------------------------------- - -void save_ui_options(running_machine &machine) -{ - // attempt to open the output file - emu_file file(machine.options().ini_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); - if (file.open("ui.ini") == osd_file::error::NONE) - { - // generate the updated INI - std::string initext = mame_machine_manager::instance()->ui().options().output_ini(); - file.puts(initext.c_str()); - file.close(); - } - else - machine.popmessage(_("**Error saving ui.ini**")); -} - -//------------------------------------------------- -// save main option -//------------------------------------------------- - -void save_main_option(running_machine &machine) -{ - // parse the file - std::string error; - emu_options options(machine.options()); // This way we make sure that all OSD parts are in - std::string error_string; - - // attempt to open the main ini file - { - emu_file file(machine.options().ini_path(), OPEN_FLAG_READ); - if (file.open(emulator_info::get_configname(), ".ini") == osd_file::error::NONE) - { - bool result = options.parse_ini_file((util::core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_DRIVER_INI, error); - if (!result) - { - osd_printf_error("**Error loading %s.ini**", emulator_info::get_configname()); - return; - } - } - } - - for (emu_options::entry &f_entry : machine.options()) - { - if (f_entry.is_changed()) - { - options.set_value(f_entry.name(), f_entry.value(), OPTION_PRIORITY_CMDLINE, error_string); - } - } - - // attempt to open the output file - { - emu_file file(machine.options().ini_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); - if (file.open(emulator_info::get_configname(), ".ini") == osd_file::error::NONE) - { - // generate the updated INI - std::string initext = options.output_ini(); - file.puts(initext.c_str()); - file.close(); - } - else { - machine.popmessage(_("**Error saving %s.ini**"), emulator_info::get_configname()); - return; - } - } - mame_machine_manager::instance()->ui().popup_time(3, "%s", _("\n Configuration saved \n\n")); -} diff --git a/src/frontend/mame/ui/optsmenu.h b/src/frontend/mame/ui/optsmenu.h index f6b4243afa0..9a87918f8f6 100644 --- a/src/frontend/mame/ui/optsmenu.h +++ b/src/frontend/mame/ui/optsmenu.h @@ -16,7 +16,7 @@ class ui_menu_game_options : public ui_menu { public: - ui_menu_game_options(running_machine &machine, render_container *container); + ui_menu_game_options(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_game_options(); virtual void populate() override; virtual void handle() override; @@ -46,8 +46,4 @@ private: }; }; -// save options to file -void save_ui_options(running_machine &machine); -void save_main_option(running_machine &machine); - #endif /* __UI_OPTSMENU_H__ */ diff --git a/src/frontend/mame/ui/pluginopt.cpp b/src/frontend/mame/ui/pluginopt.cpp index ec6d0a4f25d..a8fd53475a8 100644 --- a/src/frontend/mame/ui/pluginopt.cpp +++ b/src/frontend/mame/ui/pluginopt.cpp @@ -21,12 +21,12 @@ void ui_menu_plugin::handle() if (menu_event != nullptr && menu_event->itemref != nullptr) { if (menu_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_plugin_opt>(machine(), container, (char *)menu_event->itemref)); + ui_menu::stack_push(global_alloc_clear<ui_menu_plugin_opt>(ui(), container, (char *)menu_event->itemref)); } } -ui_menu_plugin::ui_menu_plugin(running_machine &machine, render_container *container) : - ui_menu(machine, container), +ui_menu_plugin::ui_menu_plugin(mame_ui_manager &mui, render_container *container) : + ui_menu(mui, container), m_plugins(mame_machine_manager::instance()->lua()->get_menu()) { } @@ -42,8 +42,8 @@ ui_menu_plugin::~ui_menu_plugin() { } -ui_menu_plugin_opt::ui_menu_plugin_opt(running_machine &machine, render_container *container, char *menu) : - ui_menu(machine, container), +ui_menu_plugin_opt::ui_menu_plugin_opt(mame_ui_manager &mui, render_container *container, char *menu) : + ui_menu(mui, container), m_menu(menu) { } diff --git a/src/frontend/mame/ui/pluginopt.h b/src/frontend/mame/ui/pluginopt.h index 9d529e93749..53f67bad810 100644 --- a/src/frontend/mame/ui/pluginopt.h +++ b/src/frontend/mame/ui/pluginopt.h @@ -18,7 +18,7 @@ class ui_menu_plugin : public ui_menu { public: - ui_menu_plugin(running_machine &machine, render_container *container); + ui_menu_plugin(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_plugin(); virtual void populate() override; virtual void handle() override; @@ -28,7 +28,7 @@ private: class ui_menu_plugin_opt : public ui_menu { public: - ui_menu_plugin_opt(running_machine &machine, render_container *container, char *menu); + ui_menu_plugin_opt(mame_ui_manager &mui, render_container *container, char *menu); virtual ~ui_menu_plugin_opt(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/selector.cpp b/src/frontend/mame/ui/selector.cpp index 4f06bd961f4..34b911f2ddf 100644 --- a/src/frontend/mame/ui/selector.cpp +++ b/src/frontend/mame/ui/selector.cpp @@ -9,6 +9,7 @@ *********************************************************************/ #include "emu.h" +#include "mame.h" #include "ui/ui.h" #include "ui/menu.h" #include "ui/selector.h" @@ -18,8 +19,8 @@ // ctor / dtor //------------------------------------------------- -ui_menu_selector::ui_menu_selector(running_machine &machine, render_container *container, std::vector<std::string> const &s_sel, UINT16 &s_actual, int category, int _hover) - : ui_menu(machine, container) +ui_menu_selector::ui_menu_selector(mame_ui_manager &mui, render_container *container, std::vector<std::string> const &s_sel, UINT16 &s_actual, int category, int _hover) + : ui_menu(mui, container) , m_selector(s_actual) , m_category(category) , m_hover(_hover) @@ -30,8 +31,8 @@ ui_menu_selector::ui_menu_selector(running_machine &machine, render_container *c m_searchlist[0] = nullptr; } -ui_menu_selector::ui_menu_selector(running_machine &machine, render_container *container, std::vector<std::string> &&s_sel, UINT16 &s_actual, int category, int _hover) - : ui_menu(machine, container) +ui_menu_selector::ui_menu_selector(mame_ui_manager &mui, render_container *container, std::vector<std::string> &&s_sel, UINT16 &s_actual, int category, int _hover) + : ui_menu(mui, container) , m_selector(s_actual) , m_category(category) , m_hover(_hover) @@ -150,7 +151,7 @@ void ui_menu_selector::populate() } item_append(ui_menu_item_type::SEPARATOR); - customtop = custombottom = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = custombottom = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; m_first_pass = false; } @@ -161,12 +162,11 @@ void ui_menu_selector::populate() void ui_menu_selector::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); std::string tempbuf = std::string(_("Selection List - Search: ")).append(m_search).append("_"); // get the size of the text - mui.draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += (2.0f * UI_BOX_LR_BORDER) + 0.01f; float maxwidth = MAX(width, origx2 - origx1); @@ -177,7 +177,7 @@ void ui_menu_selector::custom_render(void *selectedref, float top, float bottom, float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -185,7 +185,7 @@ void ui_menu_selector::custom_render(void *selectedref, float top, float bottom, y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); // bottom text @@ -193,8 +193,8 @@ void ui_menu_selector::custom_render(void *selectedref, float top, float bottom, std::string ui_select_text = machine().input().seq_name(machine().ioport().type_seq(IPT_UI_SELECT, 0, SEQ_TYPE_STANDARD)); tempbuf = string_format(_("Double click or press %1$s to select"), ui_select_text); - mui.draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, tempbuf.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(maxwidth, width); @@ -205,7 +205,7 @@ void ui_menu_selector::custom_render(void *selectedref, float top, float bottom, y2 = origy2 + bottom; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -213,7 +213,7 @@ void ui_menu_selector::custom_render(void *selectedref, float top, float bottom, y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, tempbuf.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } diff --git a/src/frontend/mame/ui/selector.h b/src/frontend/mame/ui/selector.h index 6809729396d..28e09b6325a 100644 --- a/src/frontend/mame/ui/selector.h +++ b/src/frontend/mame/ui/selector.h @@ -28,8 +28,8 @@ enum class ui_menu_selector : public ui_menu { public: - ui_menu_selector(running_machine &machine, render_container *container, std::vector<std::string> const &_sel, UINT16 &_actual, int _category = 0, int _hover = 0); - ui_menu_selector(running_machine &machine, render_container *container, std::vector<std::string> &&_sel, UINT16 &_actual, int _category = 0, int _hover = 0); + ui_menu_selector(mame_ui_manager &mui, render_container *container, std::vector<std::string> const &_sel, UINT16 &_actual, int _category = 0, int _hover = 0); + ui_menu_selector(mame_ui_manager &mui, render_container *container, std::vector<std::string> &&_sel, UINT16 &_actual, int _category = 0, int _hover = 0); virtual ~ui_menu_selector(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp index 25411715817..dbce4652514 100644 --- a/src/frontend/mame/ui/selgame.cpp +++ b/src/frontend/mame/ui/selgame.cpp @@ -50,12 +50,12 @@ int ui_menu_select_game::m_isabios = 0; // ctor //------------------------------------------------- -ui_menu_select_game::ui_menu_select_game(running_machine &machine, render_container *container, const char *gamename) : ui_menu(machine, container) +ui_menu_select_game::ui_menu_select_game(mame_ui_manager &mui, render_container *container, const char *gamename) : ui_menu(mui, container) { m_focus = focused_menu::main; highlight = 0; std::string error_string, last_filter, sub_filter; - ui_options &moptions = mame_machine_manager::instance()->ui().options(); + ui_options &moptions = mui.options(); // load drivers cache init_sorted_list(); @@ -122,8 +122,8 @@ ui_menu_select_game::ui_menu_select_game(running_machine &machine, render_contai if (!moptions.remember_last()) reselect_last::reset(); - machine.options().set_value(OPTION_SNAPNAME, "%g/%i", OPTION_PRIORITY_CMDLINE, error_string); - machine.options().set_value(OPTION_SOFTWARENAME, "", OPTION_PRIORITY_CMDLINE, error_string); + mui.machine().options().set_value(OPTION_SNAPNAME, "%g/%i", OPTION_PRIORITY_CMDLINE, error_string); + mui.machine().options().set_value(OPTION_SOFTWARENAME, "", OPTION_PRIORITY_CMDLINE, error_string); ui_globals::curimage_view = FIRST_VIEW; ui_globals::curdats_view = UI_FIRST_LOAD; @@ -142,7 +142,7 @@ ui_menu_select_game::~ui_menu_select_game() std::string error_string, last_driver; const game_driver *driver = nullptr; ui_software_info *swinfo = nullptr; - ui_options &mopt = mame_machine_manager::instance()->ui().options(); + ui_options &mopt = ui().options(); if (isfavorite()) swinfo = (selected >= 0 && selected < item.size()) ? (ui_software_info *)item[selected].ref : nullptr; else @@ -163,7 +163,7 @@ ui_menu_select_game::~ui_menu_select_game() mopt.set_value(OPTION_LAST_USED_FILTER, filter.c_str(), OPTION_PRIORITY_CMDLINE, error_string); mopt.set_value(OPTION_LAST_USED_MACHINE, last_driver.c_str(), OPTION_PRIORITY_CMDLINE, error_string); mopt.set_value(OPTION_HIDE_PANELS, ui_globals::panels_status, OPTION_PRIORITY_CMDLINE, error_string); - save_ui_options(machine()); + ui().save_ui_options(); } //------------------------------------------------- @@ -176,7 +176,7 @@ void ui_menu_select_game::handle() m_prev_selected = item[0].ref; bool check_filter = false; - bool enabled_dats = mame_machine_manager::instance()->ui().options().enabled_dats(); + bool enabled_dats = ui().options().enabled_dats(); // if i have to load datfile, performe an hard reset if (ui_globals::reset) @@ -191,7 +191,7 @@ void ui_menu_select_game::handle() if (reselect_last::get()) { const game_driver *driver = (const game_driver *)item[selected].ref; - ui_menu::stack_push(global_alloc_clear<ui_menu_select_software>(machine(), container, driver)); + ui_menu::stack_push(global_alloc_clear<ui_menu_select_software>(ui(), container, driver)); return; } @@ -231,7 +231,7 @@ void ui_menu_select_game::handle() else if (m_event->iptkey == IPT_CUSTOM) { if (!isfavorite()) - ui_menu::stack_push(global_alloc_clear<ui_menu_machine_configure>(machine(), container, (const game_driver *)m_prev_selected, m_event->mouse.x0, m_event->mouse.y0)); + ui_menu::stack_push(global_alloc_clear<ui_menu_machine_configure>(ui(), container, (const game_driver *)m_prev_selected, m_event->mouse.x0, m_event->mouse.y0)); } // handle UI_LEFT @@ -348,7 +348,7 @@ void ui_menu_select_game::handle() { const game_driver *driver = (const game_driver *)m_event->itemref; if ((FPTR)driver > skip_main_items && mame_machine_manager::instance()->datfile().has_data(driver)) - ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(machine(), container, driver)); + ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(ui(), container, driver)); } else { @@ -358,9 +358,9 @@ void ui_menu_select_game::handle() if ((FPTR)ui_swinfo > skip_main_items) { if (ui_swinfo->startempty == 1 && mdat.has_history(ui_swinfo->driver)) - ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(machine(), container, ui_swinfo->driver)); + ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(ui(), container, ui_swinfo->driver)); else if (mdat.has_software(ui_swinfo->listname, ui_swinfo->shortname, ui_swinfo->parentname) || !ui_swinfo->usage.empty()) - ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(machine(), container, ui_swinfo)); + ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(ui(), container, ui_swinfo)); } } } @@ -373,15 +373,16 @@ void ui_menu_select_game::handle() const game_driver *driver = (const game_driver *)m_event->itemref; if ((FPTR)driver > skip_main_items) { - if (!mame_machine_manager::instance()->favorite().isgame_favorite(driver)) + favorite_manager &mfav = mame_machine_manager::instance()->favorite(); + if (!mfav.isgame_favorite(driver)) { - mame_machine_manager::instance()->favorite().add_favorite_game(driver); + mfav.add_favorite_game(driver); machine().popmessage(_("%s\n added to favorites list."), driver->description); } else { - mame_machine_manager::instance()->favorite().remove_favorite_game(); + mfav.remove_favorite_game(); machine().popmessage(_("%s\n removed from favorites list."), driver->description); } } @@ -404,11 +405,11 @@ void ui_menu_select_game::handle() // handle UI_AUDIT_FAST else if (m_event->iptkey == IPT_UI_AUDIT_FAST && !m_unavailsortedlist.empty()) - ui_menu::stack_push(global_alloc_clear<ui_menu_audit>(machine(), container, m_availsortedlist, m_unavailsortedlist, 1)); + ui_menu::stack_push(global_alloc_clear<ui_menu_audit>(ui(), container, m_availsortedlist, m_unavailsortedlist, 1)); // handle UI_AUDIT_ALL else if (m_event->iptkey == IPT_UI_AUDIT_ALL) - ui_menu::stack_push(global_alloc_clear<ui_menu_audit>(machine(), container, m_availsortedlist, m_unavailsortedlist, 2)); + ui_menu::stack_push(global_alloc_clear<ui_menu_audit>(ui(), container, m_availsortedlist, m_unavailsortedlist, 2)); // typed characters append to the buffer else if (m_event->iptkey == IPT_SPECIAL) @@ -453,7 +454,7 @@ void ui_menu_select_game::handle() // if we're in an error state, overlay an error message if (ui_error) - mame_machine_manager::instance()->ui().draw_text_box(container, _("The selected machine is missing one or more required ROM or CHD images. " + ui().draw_text_box(container, _("The selected machine is missing one or more required ROM or CHD images. " "Please select a different machine.\n\nPress any key to continue."), JUSTIFY_CENTER, 0.5f, 0.5f, UI_RED_COLOR); // handle filters selection from key shortcuts @@ -463,17 +464,17 @@ void ui_menu_select_game::handle() if (l_hover == FILTER_CATEGORY) { main_filters::actual = l_hover; - ui_menu::stack_push(global_alloc_clear<ui_menu_game_options>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_game_options>(ui(), container)); } else if (l_hover == FILTER_CUSTOM) { main_filters::actual = l_hover; - ui_menu::stack_push(global_alloc_clear<ui_menu_custom_filter>(machine(), container, true)); + ui_menu::stack_push(global_alloc_clear<ui_menu_custom_filter>(ui(), container, true)); } else if (l_hover == FILTER_MANUFACTURER) - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, c_mnfct::ui, c_mnfct::actual, SELECTOR_GAME, l_hover)); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, c_mnfct::ui, c_mnfct::actual, SELECTOR_GAME, l_hover)); else if (l_hover == FILTER_YEAR) - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, c_year::ui, c_year::actual, SELECTOR_GAME, l_hover)); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, c_year::ui, c_year::actual, SELECTOR_GAME, l_hover)); else { if (l_hover >= FILTER_ALL) @@ -604,8 +605,8 @@ void ui_menu_select_game::populate() skip_main_items = 0; // configure the custom rendering - customtop = 3.0f * mame_machine_manager::instance()->ui().get_line_height() + 5.0f * UI_BOX_TB_BORDER; - custombottom = 5.0f * mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = 3.0f * ui().get_line_height() + 5.0f * UI_BOX_TB_BORDER; + custombottom = 5.0f * ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; // reselect prior game launched, if any if (old_item_selected != -1) @@ -750,8 +751,8 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott std::string tempbuf[5]; rgb_t color = UI_BACKGROUND_COLOR; bool isstar = false; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - float tbarspace = mui.get_line_height(); + inifile_manager &inifile = mame_machine_manager::instance()->inifile(); + float tbarspace = ui().get_line_height(); float text_size = 1.0f; tempbuf[0] = string_format(_("%1$s %2$s ( %3$d / %4$d machines (%5$d BIOS) )"), @@ -762,12 +763,12 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott m_isabios); std::string filtered; - if (main_filters::actual == FILTER_CATEGORY && mame_machine_manager::instance()->inifile().total() > 0) + if (main_filters::actual == FILTER_CATEGORY && inifile.total() > 0) { filtered = string_format(_("%1$s (%2$s - %3$s) - "), main_filters::text[main_filters::actual], - mame_machine_manager::instance()->inifile().get_file(), - mame_machine_manager::instance()->inifile().get_category()); + inifile.get_file(), + inifile.get_category()); } else if (main_filters::actual == FILTER_MANUFACTURER) { @@ -791,8 +792,8 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott // get the size of the text for (int line = 0; line < 2; ++line) { - mui.draw_text_full(container, tempbuf[line].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, tempbuf[line].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(width, maxwidth); } @@ -810,7 +811,7 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott float y2 = origy1 - 3.0f * UI_BOX_TB_BORDER - tbarspace; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -820,9 +821,9 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott // draw the text within it for (int line = 0; line < 2; ++line) { - mui.draw_text_full(container, tempbuf[line].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, tempbuf[line].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, text_size); - y1 += mui.get_line_height(); + y1 += ui().get_line_height(); } // determine the text to render below @@ -945,8 +946,8 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott for (auto & elem : tempbuf) { - mui.draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(maxwidth, width); } @@ -964,7 +965,7 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott y2 = origy2 + bottom; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, color); + ui().draw_outlined_box(container, x1, y1, x2, y2, color); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -978,9 +979,9 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott // draw all lines for (auto & elem : tempbuf) { - mui.draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, text_size); - y1 += mui.get_line_height(); + y1 += ui().get_line_height(); } } @@ -989,22 +990,22 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott // and inescapable //------------------------------------------------- -void ui_menu_select_game::force_game_select(running_machine &machine, render_container *container) +void ui_menu_select_game::force_game_select(mame_ui_manager &mui, render_container *container) { // reset the menu stack - ui_menu::stack_reset(machine); + ui_menu::stack_reset(mui.machine()); // add the quit entry followed by the game select entry - ui_menu *quit = global_alloc_clear<ui_menu_quit_game>(machine, container); + ui_menu *quit = global_alloc_clear<ui_menu_quit_game>(mui, container); quit->set_special_main_menu(true); ui_menu::stack_push(quit); - ui_menu::stack_push(global_alloc_clear<ui_menu_select_game>(machine, container, nullptr)); + ui_menu::stack_push(global_alloc_clear<ui_menu_select_game>(mui, container, nullptr)); // force the menus on - mame_machine_manager::instance()->ui().show_menu(); + mui.show_menu(); // make sure MAME is paused - machine.pause(); + mui.machine().pause(); } //------------------------------------------------- @@ -1017,13 +1018,13 @@ void ui_menu_select_game::inkey_select(const ui_menu_event *m_event) // special case for configure options if ((FPTR)driver == CONF_OPTS) - ui_menu::stack_push(global_alloc_clear<ui_menu_game_options>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_game_options>(ui(), container)); // special case for configure machine else if ((FPTR)driver == CONF_MACHINE) { if (m_prev_selected != nullptr) - ui_menu::stack_push(global_alloc_clear<ui_menu_machine_configure>(machine(), container, (const game_driver *)m_prev_selected)); + ui_menu::stack_push(global_alloc_clear<ui_menu_machine_configure>(ui(), container, (const game_driver *)m_prev_selected)); else return; } @@ -1031,7 +1032,7 @@ void ui_menu_select_game::inkey_select(const ui_menu_event *m_event) // special case for configure plugins else if ((FPTR)driver == CONF_PLUGINS) { - ui_menu::stack_push(global_alloc_clear<ui_menu_plugins_configure>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_plugins_configure>(ui(), container)); } // anything else is a driver else @@ -1050,14 +1051,14 @@ void ui_menu_select_game::inkey_select(const ui_menu_event *m_event) for (software_list_device &swlistdev : software_list_device_iterator(enumerator.config().root_device())) if (!swlistdev.get_info().empty()) { - ui_menu::stack_push(global_alloc_clear<ui_menu_select_software>(machine(), container, driver)); + ui_menu::stack_push(global_alloc_clear<ui_menu_select_software>(ui(), container, driver)); return; } } s_bios biosname; - if (!mame_machine_manager::instance()->ui().options().skip_bios_menu() && has_multiple_bios(driver, biosname)) - ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(machine(), container, biosname, (void *)driver, false, false)); + if (!ui().options().skip_bios_menu() && has_multiple_bios(driver, biosname)) + ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(ui(), container, biosname, (void *)driver, false, false)); else { reselect_last::driver = driver->name; @@ -1084,11 +1085,11 @@ void ui_menu_select_game::inkey_select(const ui_menu_event *m_event) void ui_menu_select_game::inkey_select_favorite(const ui_menu_event *m_event) { ui_software_info *ui_swinfo = (ui_software_info *)m_event->itemref; - ui_options &mopt = mame_machine_manager::instance()->ui().options(); + ui_options &mopt = ui().options(); // special case for configure options if ((FPTR)ui_swinfo == CONF_OPTS) - ui_menu::stack_push(global_alloc_clear<ui_menu_game_options>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_game_options>(ui(), container)); /* special case for configure machine TODO else if ((FPTR)ui_swinfo == CONF_MACHINE) { @@ -1096,7 +1097,7 @@ void ui_menu_select_game::inkey_select_favorite(const ui_menu_event *m_event) { ui_software_info *swinfo = (ui_software_info *)m_prev_selected; if (swinfo->startempty == 1) - ui_menu::stack_push(global_alloc_clear<ui_menu_machine_configure>(machine(), container, swinfo->driver)); + ui_menu::stack_push(global_alloc_clear<ui_menu_machine_configure>(ui(), container, swinfo->driver)); } else return; @@ -1104,7 +1105,7 @@ void ui_menu_select_game::inkey_select_favorite(const ui_menu_event *m_event) // special case for configure plugins else if ((FPTR)ui_swinfo == CONF_PLUGINS) { - ui_menu::stack_push(global_alloc_clear<ui_menu_plugins_configure>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_plugins_configure>(ui(), container)); } else if (ui_swinfo->startempty == 1) { @@ -1119,7 +1120,7 @@ void ui_menu_select_game::inkey_select_favorite(const ui_menu_event *m_event) { s_bios biosname; if (!mopt.skip_bios_menu() && has_multiple_bios(ui_swinfo->driver, biosname)) - ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(machine(), container, biosname, (void *)ui_swinfo->driver, false, false)); + ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(ui(), container, biosname, (void *)ui_swinfo->driver, false, false)); else { reselect_last::driver = ui_swinfo->driver->name; @@ -1153,7 +1154,7 @@ void ui_menu_select_game::inkey_select_favorite(const ui_menu_event *m_event) s_bios biosname; if (!mopt.skip_bios_menu() && has_multiple_bios(ui_swinfo->driver, biosname)) { - ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(machine(), container, biosname, (void *)ui_swinfo, true, false)); + ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(ui(), container, biosname, (void *)ui_swinfo, true, false)); return; } else if (!mopt.skip_parts_menu() && swinfo->has_multiple_parts(ui_swinfo->interface.c_str())) @@ -1169,7 +1170,7 @@ void ui_menu_select_game::inkey_select_favorite(const ui_menu_event *m_event) parts.emplace(swpart.name(), menu_part_name); } } - ui_menu::stack_push(global_alloc_clear<ui_software_parts>(machine(), container, parts, ui_swinfo)); + ui_menu::stack_push(global_alloc_clear<ui_software_parts>(ui(), container, parts, ui_swinfo)); return; } @@ -1589,7 +1590,7 @@ void ui_menu_select_game::general_info(const game_driver *driver, std::string &b util::stream_format(str, _("Requires CHD: %1$s\n"), found ? _("Yes") : _("No")); // audit the game first to see if we're going to work - if (mame_machine_manager::instance()->ui().options().info_audit()) + if (ui().options().info_audit()) { driver_enumerator enumerator(machine().options(), *driver); enumerator.next(); @@ -1630,7 +1631,7 @@ void ui_menu_select_game::inkey_export() { list = m_displaylist; } - ui_menu::stack_push(global_alloc_clear<ui_menu_export>(machine(), container, list)); + ui_menu::stack_push(global_alloc_clear<ui_menu_export>(ui(), container, list)); } //------------------------------------------------- @@ -1669,7 +1670,7 @@ void ui_menu_select_game::init_sorted_list() bool ui_menu_select_game::load_available_machines() { // try to load available drivers from file - emu_file file(mame_machine_manager::instance()->ui().options().ui_path(), OPEN_FLAG_READ); + emu_file file(ui().options().ui_path(), OPEN_FLAG_READ); if (file.open(emulator_info::get_configname(), "_avail.ini") != osd_file::error::NONE) return false; @@ -1721,7 +1722,7 @@ bool ui_menu_select_game::load_available_machines() void ui_menu_select_game::load_custom_filters() { // attempt to open the output file - emu_file file(mame_machine_manager::instance()->ui().options().ui_path(), OPEN_FLAG_READ); + emu_file file(ui().options().ui_path(), OPEN_FLAG_READ); if (file.open("custom_", emulator_info::get_configname(), "_filter.ini") == osd_file::error::NONE) { char buffer[MAX_CHAR_INFO]; @@ -1780,14 +1781,13 @@ void ui_menu_select_game::load_custom_filters() float ui_menu_select_game::draw_left_panel(float x1, float y1, float x2, float y2) { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - float line_height = mui.get_line_height(); + float line_height = ui().get_line_height(); if (ui_globals::panels_status == SHOW_PANELS || ui_globals::panels_status == HIDE_RIGHT_PANEL) { float origy1 = y1; float origy2 = y2; - float text_size = mame_machine_manager::instance()->ui().options().infos_size(); + float text_size = ui().options().infos_size(); float line_height_max = line_height * text_size; float left_width = 0.0f; int text_lenght = main_filters::length; @@ -1803,13 +1803,13 @@ float ui_menu_select_game::draw_left_panel(float x1, float y1, float x2, float y line_height_max = line_height * text_size; } - float text_sign = mui.get_string_width("_# ", text_size); + float text_sign = ui().get_string_width("_# ", text_size); for (int x = 0; x < text_lenght; ++x) { float total_width; // compute width of left hand side - total_width = mui.get_string_width(text[x], text_size); + total_width = ui().get_string_width(text[x], text_size); total_width += text_sign; // track the maximum @@ -1818,7 +1818,7 @@ float ui_menu_select_game::draw_left_panel(float x1, float y1, float x2, float y } x2 = x1 + left_width + 2.0f * UI_BOX_LR_BORDER; - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -1844,7 +1844,7 @@ float ui_menu_select_game::draw_left_panel(float x1, float y1, float x2, float y { fgcolor = rgb_t(0xff, 0xff, 0xff, 0x00); bgcolor = rgb_t(0xff, 0xff, 0xff, 0xff); - mui.draw_textured_box(container, x1, y1, x2, y1 + line_height_max, bgcolor, rgb_t(255, 43, 43, 43), + ui().draw_textured_box(container, x1, y1, x2, y1 + line_height_max, bgcolor, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); } @@ -1878,7 +1878,7 @@ float ui_menu_select_game::draw_left_panel(float x1, float y1, float x2, float y convert_command_glyph(str); } - mui.draw_text_full(container, str.c_str(), x1t, y1, x2 - x1, JUSTIFY_LEFT, WRAP_NEVER, + ui().draw_text_full(container, str.c_str(), x1t, y1, x2 - x1, JUSTIFY_LEFT, WRAP_NEVER, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr, text_size); y1 += line_height_max; } @@ -1897,7 +1897,7 @@ float ui_menu_select_game::draw_left_panel(float x1, float y1, float x2, float y float ar_x1 = ar_x0 + lr_arrow_width; float ar_y1 = 0.5f * (y2 + y1) + 0.9f * space; - mui.draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); + ui().draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); if (mouse_hit && x1 <= mouse_x && x2 > mouse_x && y1 <= mouse_y && y2 > mouse_y) { @@ -1920,7 +1920,7 @@ float ui_menu_select_game::draw_left_panel(float x1, float y1, float x2, float y float ar_x1 = ar_x0 + lr_arrow_width; float ar_y1 = 0.5f * (y2 + y1) + 0.9f * space; - mui.draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); + ui().draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); if (mouse_hit && x1 <= mouse_x && x2 > mouse_x && y1 <= mouse_y && y2 > mouse_y) { @@ -1939,12 +1939,11 @@ float ui_menu_select_game::draw_left_panel(float x1, float y1, float x2, float y void ui_menu_select_game::infos_render(void *selectedref, float origx1, float origy1, float origx2, float origy2) { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - float line_height = mui.get_line_height(); + float line_height = ui().get_line_height(); static std::string buffer; std::vector<int> xstart; std::vector<int> xend; - float text_size = mame_machine_manager::instance()->ui().options().infos_size(); + float text_size = ui().options().infos_size(); const game_driver *driver = nullptr; ui_software_info *soft = nullptr; bool is_favorites = ((item[0].flags & MENU_FLAG_UI_FAVORITE) != 0); @@ -1988,7 +1987,7 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or for (int x = UI_FIRST_LOAD; x < UI_LAST_LOAD; ++x) { - mui.draw_text_full(container, _(dats_info[x]), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, + ui().draw_text_full(container, _(dats_info[x]), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NONE, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, &txt_length, nullptr); txt_length += 0.01f; title_size = (std::max)(txt_length, title_size); @@ -2010,10 +2009,10 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or title_size *= tmp_size; if (bgcolor != UI_TEXT_BG_COLOR) - mui.draw_textured_box(container, origx1 + ((middle - title_size) * 0.5f), origy1, origx1 + ((middle + title_size) * 0.5f), + ui().draw_textured_box(container, origx1 + ((middle - title_size) * 0.5f), origy1, origx1 + ((middle + title_size) * 0.5f), origy1 + line_height, bgcolor, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); - mui.draw_text_full(container, snaptext.c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, + ui().draw_text_full(container, snaptext.c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr, tmp_size); draw_common_arrow(origx1, origy1, origx2, origy2, ui_globals::curdats_view, UI_FIRST_LOAD, UI_LAST_LOAD, title_size); @@ -2050,14 +2049,14 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or if (buffer.empty()) { - mui.draw_text_full(container, _("No Infos Available"), origx1, (origy2 + origy1) * 0.5f, origx2 - origx1, JUSTIFY_CENTER, + ui().draw_text_full(container, _("No Infos Available"), origx1, (origy2 + origy1) * 0.5f, origx2 - origx1, JUSTIFY_CENTER, WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); return; } else if (ui_globals::curdats_view != UI_STORY_LOAD && ui_globals::curdats_view != UI_COMMAND_LOAD) - totallines = mui.wrap_text(container, buffer.c_str(), origx1, origy1, origx2 - origx1 - (2.0f * gutter_width), xstart, xend, text_size); + totallines = ui().wrap_text(container, buffer.c_str(), origx1, origy1, origx2 - origx1 - (2.0f * gutter_width), xstart, xend, text_size); else - totallines = mui.wrap_text(container, buffer.c_str(), 0.0f, 0.0f, 1.0f - (2.0f * gutter_width), xstart, xend, text_size); + totallines = ui().wrap_text(container, buffer.c_str(), 0.0f, 0.0f, 1.0f - (2.0f * gutter_width), xstart, xend, text_size); int r_visible_lines = floor((origy2 - oy1) / (line_height * text_size)); if (totallines < r_visible_lines) @@ -2083,13 +2082,13 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or else if (ui_globals::curdats_view == UI_STORY_LOAD) { // check size - float textlen = mui.get_string_width(tempbuf.c_str(), text_size); + float textlen = ui().get_string_width(tempbuf.c_str(), text_size); float tmp_size2 = (textlen > sc) ? text_size * (sc / textlen) : text_size; size_t last_underscore = tempbuf.find_last_of("_"); if (last_underscore == std::string::npos) { - mui.draw_text_full(container, tempbuf.c_str(), origx1, oy1, origx2 - origx1, JUSTIFY_CENTER, + ui().draw_text_full(container, tempbuf.c_str(), origx1, oy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, tmp_size2); } else @@ -2100,10 +2099,10 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or std::string first_part(tempbuf.substr(0, tempbuf.find("___"))); float item_width; - mui.draw_text_full(container, first_part.c_str(), effective_left, oy1, effective_width, + ui().draw_text_full(container, first_part.c_str(), effective_left, oy1, effective_width, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, &item_width, nullptr, tmp_size2); - mui.draw_text_full(container, last_part.c_str(), effective_left + item_width, oy1, + ui().draw_text_full(container, last_part.c_str(), effective_left + item_width, oy1, origx2 - origx1 - 2.0f * gutter_width - item_width, JUSTIFY_RIGHT, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, tmp_size2); } @@ -2113,7 +2112,7 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or else if (ui_globals::curdats_view == UI_COMMAND_LOAD || ui_globals::curdats_view == UI_GENERAL_LOAD) { // check size - float textlen = mui.get_string_width(tempbuf.c_str(), text_size); + float textlen = ui().get_string_width(tempbuf.c_str(), text_size); float tmp_size3 = (textlen > sc) ? text_size * (sc / textlen) : text_size; int first_dspace = (ui_globals::curdats_view == UI_COMMAND_LOAD) ? tempbuf.find(" ") : tempbuf.find(":"); @@ -2124,18 +2123,18 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or std::string first_part(tempbuf.substr(0, first_dspace)); std::string last_part(tempbuf.substr(first_dspace + 1)); strtrimspace(last_part); - mui.draw_text_full(container, first_part.c_str(), effective_left, oy1, effective_width, JUSTIFY_LEFT, + ui().draw_text_full(container, first_part.c_str(), effective_left, oy1, effective_width, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, tmp_size3); - mui.draw_text_full(container, last_part.c_str(), effective_left, oy1, origx2 - origx1 - 2.0f * gutter_width, + ui().draw_text_full(container, last_part.c_str(), effective_left, oy1, origx2 - origx1 - 2.0f * gutter_width, JUSTIFY_RIGHT, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, tmp_size3); } else - mui.draw_text_full(container, tempbuf.c_str(), origx1 + gutter_width, oy1, origx2 - origx1, JUSTIFY_LEFT, + ui().draw_text_full(container, tempbuf.c_str(), origx1 + gutter_width, oy1, origx2 - origx1, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, tmp_size3); } else - mui.draw_text_full(container, tempbuf.c_str(), origx1 + gutter_width, oy1, origx2 - origx1, JUSTIFY_LEFT, + ui().draw_text_full(container, tempbuf.c_str(), origx1 + gutter_width, oy1, origx2 - origx1, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, text_size); oy1 += (line_height * text_size); @@ -2153,7 +2152,7 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or // apply title to right panel if (soft->usage.empty()) { - mui.draw_text_full(container, _("History"), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, _("History"), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); ui_globals::cur_sw_dats_view = 0; } @@ -2167,7 +2166,7 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or for (auto & elem: t_text) { - mui.draw_text_full(container, elem.c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, elem.c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NONE, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, &txt_length, nullptr); txt_length += 0.01f; title_size = (std::max)(txt_length, title_size); @@ -2184,10 +2183,10 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or float middle = origx2 - origx1; if (bgcolor != UI_TEXT_BG_COLOR) - mui.draw_textured_box(container, origx1 + ((middle - title_size) * 0.5f), origy1, origx1 + ((middle + title_size) * 0.5f), + ui().draw_textured_box(container, origx1 + ((middle - title_size) * 0.5f), origy1, origx1 + ((middle + title_size) * 0.5f), origy1 + line_height, bgcolor, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); - mui.draw_text_full(container, t_text[ui_globals::cur_sw_dats_view].c_str(), origx1, origy1, origx2 - origx1, + ui().draw_text_full(container, t_text[ui_globals::cur_sw_dats_view].c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr); draw_common_arrow(origx1, origy1, origx2, origy2, ui_globals::cur_sw_dats_view, 0, 1, title_size); @@ -2211,12 +2210,12 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or if (buffer.empty()) { - mui.draw_text_full(container, _("No Infos Available"), origx1, (origy2 + origy1) * 0.5f, origx2 - origx1, JUSTIFY_CENTER, + ui().draw_text_full(container, _("No Infos Available"), origx1, (origy2 + origy1) * 0.5f, origx2 - origx1, JUSTIFY_CENTER, WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); return; } else - totallines = mui.wrap_text(container, buffer.c_str(), origx1, origy1, origx2 - origx1 - (2.0f * gutter_width), xstart, xend, text_size); + totallines = ui().wrap_text(container, buffer.c_str(), origx1, origy1, origx2 - origx1 - (2.0f * gutter_width), xstart, xend, text_size); int r_visible_lines = floor((origy2 - oy1) / (line_height * text_size)); if (totallines < r_visible_lines) @@ -2238,7 +2237,7 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or else if (r == r_visible_lines - 1 && itemline != totallines - 1) info_arrow(1, origx1, origx2, oy1, line_height, text_size, ud_arrow_width); else - mui.draw_text_full(container, tempbuf.c_str(), origx1 + gutter_width, oy1, origx2 - origx1, JUSTIFY_LEFT, + ui().draw_text_full(container, tempbuf.c_str(), origx1 + gutter_width, oy1, origx2 - origx1, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, text_size); oy1 += (line_height * text_size); } @@ -2254,7 +2253,6 @@ void ui_menu_select_game::infos_render(void *selectedref, float origx1, float or void ui_menu_select_game::draw_right_panel(void *selectedref, float origx1, float origy1, float origx2, float origy2) { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); rgb_t fgcolor = UI_TEXT_COLOR; bool hide = (ui_globals::panels_status == HIDE_RIGHT_PANEL || ui_globals::panels_status == HIDE_BOTH); float x2 = (hide) ? origx2 : origx1 + 2.0f * UI_BOX_LR_BORDER; @@ -2267,7 +2265,7 @@ void ui_menu_select_game::draw_right_panel(void *selectedref, float origx1, floa float ar_x1 = ar_x0 + lr_arrow_width; float ar_y1 = 0.5f * (origy2 + origy1) + 0.9f * space; - mui.draw_outlined_box(container, origx1, origy1, origx2, origy2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); + ui().draw_outlined_box(container, origx1, origy1, origx2, origy2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); if (mouse_hit && origx1 <= mouse_x && x2 > mouse_x && origy1 <= mouse_y && origy2 > mouse_y) { @@ -2297,8 +2295,7 @@ void ui_menu_select_game::draw_right_panel(void *selectedref, float origx1, floa void ui_menu_select_game::arts_render(void *selectedref, float origx1, float origy1, float origx2, float origy2) { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - float line_height = mui.get_line_height(); + float line_height = ui().get_line_height(); bool is_favorites = ((item[0].flags & MENU_FLAG_UI_FAVORITE) != 0); static ui_software_info *oldsoft = nullptr; static const game_driver *olddriver = nullptr; @@ -2398,7 +2395,7 @@ void ui_menu_select_game::arts_render(void *selectedref, float origx1, float ori float y2 = origy2 - UI_BOX_TB_BORDER - line_height; // apply texture - container->add_quad( x1, y1, x2, y2, ARGB_WHITE, snapx_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + container->add_quad( x1, y1, x2, y2, rgb_t::white, snapx_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); } } else if (soft != nullptr) @@ -2487,7 +2484,7 @@ void ui_menu_select_game::arts_render(void *selectedref, float origx1, float ori float y2 = origy2 - UI_BOX_TB_BORDER - line_height; // apply texture - container->add_quad(x1, y1, x2, y2, ARGB_WHITE, snapx_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + container->add_quad(x1, y1, x2, y2, rgb_t::white, snapx_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); } } } diff --git a/src/frontend/mame/ui/selgame.h b/src/frontend/mame/ui/selgame.h index 225e9c2cf3a..7ad48e537df 100644 --- a/src/frontend/mame/ui/selgame.h +++ b/src/frontend/mame/ui/selgame.h @@ -18,14 +18,14 @@ class ui_menu_select_game : public ui_menu { public: - ui_menu_select_game(running_machine &machine, render_container *container, const char *gamename); + ui_menu_select_game(mame_ui_manager &mui, render_container *container, const char *gamename); virtual ~ui_menu_select_game(); virtual void populate() override; virtual void handle() override; virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override; // force game select menu - static void force_game_select(running_machine &machine, render_container *container); + static void force_game_select(mame_ui_manager &mui, render_container *container); virtual bool menu_has_search_active() override { return (m_search[0] != 0); } diff --git a/src/frontend/mame/ui/selsoft.cpp b/src/frontend/mame/ui/selsoft.cpp index 1d8a6483c5c..1c0c1460211 100644 --- a/src/frontend/mame/ui/selsoft.cpp +++ b/src/frontend/mame/ui/selsoft.cpp @@ -121,7 +121,7 @@ bool has_multiple_bios(const game_driver *driver, s_bios &biosname) // ctor //------------------------------------------------- -ui_menu_select_software::ui_menu_select_software(running_machine &machine, render_container *container, const game_driver *driver) : ui_menu(machine, container) +ui_menu_select_software::ui_menu_select_software(mame_ui_manager &mui, render_container *container, const game_driver *driver) : ui_menu(mui, container) { if (reselect_last::get()) reselect_last::set(false); @@ -138,7 +138,7 @@ ui_menu_select_software::ui_menu_select_software(running_machine &machine, rende ui_globals::cur_sw_dats_view = UI_FIRST_LOAD; std::string error_string; - machine.options().set_value(OPTION_SOFTWARENAME, "", OPTION_PRIORITY_CMDLINE, error_string); + mui.machine().options().set_value(OPTION_SOFTWARENAME, "", OPTION_PRIORITY_CMDLINE, error_string); } //------------------------------------------------- @@ -243,15 +243,15 @@ void ui_menu_select_software::handle() } // handle UI_DATS - else if (m_event->iptkey == IPT_UI_DATS && mame_machine_manager::instance()->ui().options().enabled_dats()) + else if (m_event->iptkey == IPT_UI_DATS && ui().options().enabled_dats()) { ui_software_info *ui_swinfo = (ui_software_info *)m_event->itemref; datfile_manager &mdat = mame_machine_manager::instance()->datfile(); if (ui_swinfo->startempty == 1 && mdat.has_history(ui_swinfo->driver)) - ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(machine(), container, ui_swinfo->driver)); + ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(ui(), container, ui_swinfo->driver)); else if (mdat.has_software(ui_swinfo->listname, ui_swinfo->shortname, ui_swinfo->parentname) || !ui_swinfo->usage.empty()) - ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(machine(), container, ui_swinfo)); + ui_menu::stack_push(global_alloc_clear<ui_menu_dats_view>(ui(), container, ui_swinfo)); } // handle UI_LEFT_PANEL @@ -276,16 +276,17 @@ void ui_menu_select_software::handle() if ((FPTR)swinfo > 2) { - if (!mame_machine_manager::instance()->favorite().isgame_favorite(*swinfo)) + favorite_manager &mfav = mame_machine_manager::instance()->favorite(); + if (!mfav.isgame_favorite(*swinfo)) { - mame_machine_manager::instance()->favorite().add_favorite_game(*swinfo); + mfav.add_favorite_game(*swinfo); machine().popmessage(_("%s\n added to favorites list."), swinfo->longname.c_str()); } else { machine().popmessage(_("%s\n removed from favorites list."), swinfo->longname.c_str()); - mame_machine_manager::instance()->favorite().remove_favorite_game(); + mfav.remove_favorite_game(); } } } @@ -378,7 +379,7 @@ void ui_menu_select_software::handle() // if we're in an error state, overlay an error message if (ui_error) - mame_machine_manager::instance()->ui().draw_text_box(container, _("The selected software is missing one or more required files. " + ui().draw_text_box(container, _("The selected software is missing one or more required files. " "Please select a different software.\n\nPress any key to continue."), JUSTIFY_CENTER, 0.5f, 0.5f, UI_RED_COLOR); @@ -389,28 +390,28 @@ void ui_menu_select_software::handle() switch (l_sw_hover) { case UI_SW_REGION: - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.region.ui, + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, m_filter.region.ui, m_filter.region.actual, SELECTOR_SOFTWARE, l_sw_hover)); break; case UI_SW_YEARS: - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.year.ui, + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, m_filter.year.ui, m_filter.year.actual, SELECTOR_SOFTWARE, l_sw_hover)); break; case UI_SW_LIST: - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.swlist.description, + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, m_filter.swlist.description, m_filter.swlist.actual, SELECTOR_SOFTWARE, l_sw_hover)); break; case UI_SW_TYPE: - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.type.ui, + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, m_filter.type.ui, m_filter.type.actual, SELECTOR_SOFTWARE, l_sw_hover)); break; case UI_SW_PUBLISHERS: - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, m_filter.publisher.ui, + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, m_filter.publisher.ui, m_filter.publisher.actual, SELECTOR_SOFTWARE, l_sw_hover)); break; case UI_SW_CUSTOM: sw_filters::actual = l_sw_hover; - ui_menu::stack_push(global_alloc_clear<ui_menu_swcustom_filter>(machine(), container, m_driver, m_filter)); + ui_menu::stack_push(global_alloc_clear<ui_menu_swcustom_filter>(ui(), container, m_driver, m_filter)); break; default: sw_filters::actual = l_sw_hover; @@ -506,8 +507,8 @@ void ui_menu_select_software::populate() item_append(MENU_SEPARATOR_ITEM, nullptr, flags_ui, nullptr); // configure the custom rendering - customtop = 4.0f * mame_machine_manager::instance()->ui().get_line_height() + 5.0f * UI_BOX_TB_BORDER; - custombottom = 5.0f * mame_machine_manager::instance()->ui().get_line_height() + 4.0f * UI_BOX_TB_BORDER; + customtop = 4.0f * ui().get_line_height() + 5.0f * UI_BOX_TB_BORDER; + custombottom = 5.0f * ui().get_line_height() + 4.0f * UI_BOX_TB_BORDER; if (old_software != -1) { @@ -668,12 +669,11 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float { ui_software_info *swinfo = (selectedref != nullptr) ? (ui_software_info *)selectedref : ((m_prev_selected != nullptr) ? (ui_software_info *)m_prev_selected : nullptr); const game_driver *driver = nullptr; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); float width; std::string tempbuf[5], filtered; rgb_t color = UI_BACKGROUND_COLOR; bool isstar = false; - float tbarspace = mui.get_line_height(); + float tbarspace = ui().get_line_height(); float text_size = 1.0f; // determine the text for the header @@ -699,8 +699,8 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float for (int line = 0; line < 3; ++line) { - mui.draw_text_full(container, tempbuf[line].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, tempbuf[line].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(width, maxwidth); } @@ -718,7 +718,7 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float float y2 = origy1 - 3.0f * UI_BOX_TB_BORDER - tbarspace; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -728,9 +728,9 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float // draw the text within it for (int line = 0; line < 3; ++line) { - mui.draw_text_full(container, tempbuf[line].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, tempbuf[line].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, text_size); - y1 += mui.get_line_height(); + y1 += ui().get_line_height(); } // determine the text to render below @@ -850,8 +850,8 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float for (auto & elem : tempbuf) { - mui.draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, elem.c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_NEVER, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(maxwidth, width); } @@ -869,7 +869,7 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float y2 = origy2 + bottom; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, color); + ui().draw_outlined_box(container, x1, y1, x2, y2, color); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -883,9 +883,9 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float // draw all lines for (auto & elem : tempbuf) { - mui.draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, elem.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, text_size); - y1 += mame_machine_manager::instance()->ui().get_line_height(); + y1 += ui().get_line_height(); } } @@ -896,13 +896,13 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float void ui_menu_select_software::inkey_select(const ui_menu_event *m_event) { ui_software_info *ui_swinfo = (ui_software_info *)m_event->itemref; - ui_options &mopt = mame_machine_manager::instance()->ui().options(); + ui_options &mopt = ui().options(); if (ui_swinfo->startempty == 1) { s_bios biosname; if (!mopt.skip_bios_menu() && has_multiple_bios(ui_swinfo->driver, biosname)) - ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(machine(), container, biosname, (void *)ui_swinfo->driver, false, true)); + ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(ui(), container, biosname, (void *)ui_swinfo->driver, false, true)); else { reselect_last::driver = ui_swinfo->driver->name; @@ -931,7 +931,7 @@ void ui_menu_select_software::inkey_select(const ui_menu_event *m_event) s_bios biosname; if (!mopt.skip_bios_menu() && has_multiple_bios(ui_swinfo->driver, biosname)) { - ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(machine(), container, biosname, (void *)ui_swinfo, true, false)); + ui_menu::stack_push(global_alloc_clear<ui_bios_selection>(ui(), container, biosname, (void *)ui_swinfo, true, false)); return; } else if (!mopt.skip_parts_menu() && swinfo->has_multiple_parts(ui_swinfo->interface.c_str())) @@ -947,7 +947,7 @@ void ui_menu_select_software::inkey_select(const ui_menu_event *m_event) parts.emplace(swpart.name(), menu_part_name); } } - ui_menu::stack_push(global_alloc_clear<ui_software_parts>(machine(), container, parts, ui_swinfo)); + ui_menu::stack_push(global_alloc_clear<ui_software_parts>(ui(), container, parts, ui_swinfo)); return; } std::string error_string; @@ -1060,7 +1060,7 @@ void ui_menu_select_software::inkey_configure(const ui_menu_event *m_event) void ui_menu_select_software::load_sw_custom_filters() { // attempt to open the output file - emu_file file(mame_machine_manager::instance()->ui().options().ui_path(), OPEN_FLAG_READ); + emu_file file(ui().options().ui_path(), OPEN_FLAG_READ); if (file.open("custom_", m_driver->name, "_filter.ini") == osd_file::error::NONE) { char buffer[MAX_CHAR_INFO]; @@ -1390,14 +1390,12 @@ void ui_menu_select_software::build_custom() float ui_menu_select_software::draw_left_panel(float x1, float y1, float x2, float y2) { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - if (ui_globals::panels_status == SHOW_PANELS || ui_globals::panels_status == HIDE_RIGHT_PANEL) { float origy1 = y1; float origy2 = y2; float text_size = 0.75f; - float l_height = mui.get_line_height(); + float l_height = ui().get_line_height(); float line_height = l_height * text_size; float left_width = 0.0f; int text_lenght = sw_filters::length; @@ -1413,13 +1411,13 @@ float ui_menu_select_software::draw_left_panel(float x1, float y1, float x2, flo line_height = l_height * text_size; } - float text_sign = mui.get_string_width("_# ", text_size); + float text_sign = ui().get_string_width("_# ", text_size); for (int x = 0; x < text_lenght; ++x) { float total_width; // compute width of left hand side - total_width = mui.get_string_width(text[x], text_size); + total_width = ui().get_string_width(text[x], text_size); total_width += text_sign; // track the maximum @@ -1428,7 +1426,7 @@ float ui_menu_select_software::draw_left_panel(float x1, float y1, float x2, flo } x2 = x1 + left_width + 2.0f * UI_BOX_LR_BORDER; - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -1456,7 +1454,7 @@ float ui_menu_select_software::draw_left_panel(float x1, float y1, float x2, flo } if (bgcolor != UI_TEXT_BG_COLOR) - mui.draw_textured_box(container, x1, y1, x2, y1 + line_height, bgcolor, rgb_t(255, 43, 43, 43), + ui().draw_textured_box(container, x1, y1, x2, y1 + line_height, bgcolor, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); float x1t = x1 + text_sign; @@ -1489,7 +1487,7 @@ float ui_menu_select_software::draw_left_panel(float x1, float y1, float x2, flo convert_command_glyph(str); } - mui.draw_text_full(container, str.c_str(), x1t, y1, x2 - x1, JUSTIFY_LEFT, WRAP_NEVER, + ui().draw_text_full(container, str.c_str(), x1t, y1, x2 - x1, JUSTIFY_LEFT, WRAP_NEVER, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr, text_size); y1 += line_height; } @@ -1508,7 +1506,7 @@ float ui_menu_select_software::draw_left_panel(float x1, float y1, float x2, flo float ar_x1 = ar_x0 + lr_arrow_width; float ar_y1 = 0.5f * (y2 + y1) + 0.9f * space; - mui.draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); + ui().draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); if (mouse_hit && x1 <= mouse_x && x2 > mouse_x && y1 <= mouse_y && y2 > mouse_y) { @@ -1531,7 +1529,7 @@ float ui_menu_select_software::draw_left_panel(float x1, float y1, float x2, flo float ar_x1 = ar_x0 + lr_arrow_width; float ar_y1 = 0.5f * (y2 + y1) + 0.9f * space; - mui.draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); + ui().draw_outlined_box(container, x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); if (mouse_hit && x1 <= mouse_x && x2 > mouse_x && y1 <= mouse_y && y2 > mouse_y) { @@ -1550,12 +1548,11 @@ float ui_menu_select_software::draw_left_panel(float x1, float y1, float x2, flo void ui_menu_select_software::infos_render(void *selectedref, float origx1, float origy1, float origx2, float origy2) { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - float line_height = mui.get_line_height(); + float line_height = ui().get_line_height(); static std::string buffer; std::vector<int> xstart; std::vector<int> xend; - float text_size = mame_machine_manager::instance()->ui().options().infos_size(); + float text_size = ui().options().infos_size(); ui_software_info *soft = (selectedref != nullptr) ? (ui_software_info *)selectedref : ((m_prev_selected != nullptr) ? (ui_software_info *)m_prev_selected : nullptr); static ui_software_info *oldsoft = nullptr; static int old_sw_view = -1; @@ -1569,7 +1566,7 @@ void ui_menu_select_software::infos_render(void *selectedref, float origx1, floa { float title_size = 0.0f; - mui.draw_text_full(container, _("History"), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, _("History"), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NONE, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, &title_size, nullptr); title_size += 0.01f; @@ -1584,10 +1581,10 @@ void ui_menu_select_software::infos_render(void *selectedref, float origx1, floa float middle = origx2 - origx1; if (bgcolor != UI_TEXT_BG_COLOR) - mui.draw_textured_box(container, origx1 + ((middle - title_size) * 0.5f), origy1, origx1 + ((middle + title_size) * 0.5f), + ui().draw_textured_box(container, origx1 + ((middle - title_size) * 0.5f), origy1, origx1 + ((middle + title_size) * 0.5f), origy1 + line_height, bgcolor, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); - mui.draw_text_full(container, _("History"), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, _("History"), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr); ui_globals::cur_sw_dats_view = 0; } @@ -1601,7 +1598,7 @@ void ui_menu_select_software::infos_render(void *selectedref, float origx1, floa for (auto & elem : t_text) { - mui.draw_text_full(container, elem.c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, elem.c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NONE, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, &txt_lenght, nullptr); txt_lenght += 0.01f; title_size = MAX(txt_lenght, title_size); @@ -1623,10 +1620,10 @@ void ui_menu_select_software::infos_render(void *selectedref, float origx1, floa title_size *= tmp_size; if (bgcolor != UI_TEXT_BG_COLOR) - mui.draw_textured_box(container, origx1 + ((middle - title_size) * 0.5f), origy1, origx1 + ((middle + title_size) * 0.5f), + ui().draw_textured_box(container, origx1 + ((middle - title_size) * 0.5f), origy1, origx1 + ((middle + title_size) * 0.5f), origy1 + line_height, bgcolor, rgb_t(255, 43, 43, 43), hilight_main_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(TRUE)); - mui.draw_text_full(container, t_text[ui_globals::cur_sw_dats_view].c_str(), origx1, origy1, origx2 - origx1, + ui().draw_text_full(container, t_text[ui_globals::cur_sw_dats_view].c_str(), origx1, origy1, origx2 - origx1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, fgcolor, bgcolor, nullptr, nullptr, tmp_size); draw_common_arrow(origx1, origy1, origx2, origy2, ui_globals::cur_sw_dats_view, 0, 1, title_size); @@ -1650,12 +1647,12 @@ void ui_menu_select_software::infos_render(void *selectedref, float origx1, floa if (buffer.empty()) { - mui.draw_text_full(container, _("No Infos Available"), origx1, (origy2 + origy1) * 0.5f, origx2 - origx1, JUSTIFY_CENTER, + ui().draw_text_full(container, _("No Infos Available"), origx1, (origy2 + origy1) * 0.5f, origx2 - origx1, JUSTIFY_CENTER, WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); return; } else - totallines = mui.wrap_text(container, buffer.c_str(), origx1, origy1, origx2 - origx1 - (2.0f * gutter_width), xstart, xend, text_size); + totallines = ui().wrap_text(container, buffer.c_str(), origx1, origy1, origx2 - origx1 - (2.0f * gutter_width), xstart, xend, text_size); int r_visible_lines = floor((origy2 - oy1) / (line_height * text_size)); if (totallines < r_visible_lines) @@ -1678,7 +1675,7 @@ void ui_menu_select_software::infos_render(void *selectedref, float origx1, floa else if (r == r_visible_lines - 1 && itemline != totallines - 1) info_arrow(1, origx1, origx2, oy1, line_height, text_size, ud_arrow_width); else - mui.draw_text_full(container, tempbuf.c_str(), origx1 + gutter_width, oy1, origx2 - origx1, + ui().draw_text_full(container, tempbuf.c_str(), origx1 + gutter_width, oy1, origx2 - origx1, JUSTIFY_LEFT, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr, text_size); oy1 += (line_height * text_size); @@ -1694,8 +1691,7 @@ void ui_menu_select_software::infos_render(void *selectedref, float origx1, floa void ui_menu_select_software::arts_render(void *selectedref, float origx1, float origy1, float origx2, float origy2) { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - float line_height = mui.get_line_height(); + float line_height = ui().get_line_height(); static ui_software_info *oldsoft = nullptr; static const game_driver *olddriver = nullptr; const game_driver *driver = nullptr; @@ -1785,7 +1781,7 @@ void ui_menu_select_software::arts_render(void *selectedref, float origx1, float float y2 = origy2 - UI_BOX_TB_BORDER - line_height; // apply texture - container->add_quad( x1, y1, x2, y2, ARGB_WHITE, snapx_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + container->add_quad( x1, y1, x2, y2, rgb_t::white, snapx_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); } } else if (soft != nullptr) @@ -1873,14 +1869,13 @@ void ui_menu_select_software::arts_render(void *selectedref, float origx1, float float y2 = origy2 - UI_BOX_TB_BORDER - line_height; // apply texture - container->add_quad(x1, y1, x2, y2, ARGB_WHITE, snapx_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + container->add_quad(x1, y1, x2, y2, rgb_t::white, snapx_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); } } } void ui_menu_select_software::draw_right_panel(void *selectedref, float origx1, float origy1, float origx2, float origy2) { - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); rgb_t fgcolor = UI_TEXT_COLOR; bool hide = (ui_globals::panels_status == HIDE_RIGHT_PANEL || ui_globals::panels_status == HIDE_BOTH); float x2 = (hide) ? origx2 : origx1 + 2.0f * UI_BOX_LR_BORDER; @@ -1893,7 +1888,7 @@ void ui_menu_select_software::draw_right_panel(void *selectedref, float origx1, float ar_x1 = ar_x0 + lr_arrow_width; float ar_y1 = 0.5f * (origy2 + origy1) + 0.9f * space; - mui.draw_outlined_box(container, origx1, origy1, origx2, origy2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); + ui().draw_outlined_box(container, origx1, origy1, origx2, origy2, rgb_t(0xEF, 0x12, 0x47, 0x7B)); if (mouse_hit && origx1 <= mouse_x && x2 > mouse_x && origy1 <= mouse_y && origy2 > mouse_y) { @@ -1921,7 +1916,7 @@ void ui_menu_select_software::draw_right_panel(void *selectedref, float origx1, // ctor //------------------------------------------------- -ui_software_parts::ui_software_parts(running_machine &machine, render_container *container, s_parts parts, ui_software_info *ui_info) : ui_menu(machine, container) +ui_software_parts::ui_software_parts(mame_ui_manager &mui, render_container *container, s_parts parts, ui_software_info *ui_info) : ui_menu(mui, container) { m_parts = parts; m_uiinfo = ui_info; @@ -1945,7 +1940,7 @@ void ui_software_parts::populate() item_append(elem.first.c_str(), elem.second.c_str(), 0, (void *)&elem); item_append(ui_menu_item_type::SEPARATOR); - customtop = mame_machine_manager::instance()->ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER); + customtop = ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER); } //------------------------------------------------- @@ -1985,9 +1980,8 @@ void ui_software_parts::handle() void ui_software_parts::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - mui.draw_text_full(container, _("Software part selection:"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, _("Software part selection:"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; float maxwidth = MAX(origx2 - origx1, width); @@ -1998,7 +1992,7 @@ void ui_software_parts::custom_render(void *selectedref, float top, float bottom float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -2006,7 +2000,7 @@ void ui_software_parts::custom_render(void *selectedref, float top, float bottom y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, _("Software part selection:"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, _("Software part selection:"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } @@ -2014,7 +2008,7 @@ void ui_software_parts::custom_render(void *selectedref, float top, float bottom // ctor //------------------------------------------------- -ui_bios_selection::ui_bios_selection(running_machine &machine, render_container *container, s_bios biosname, void *_driver, bool _software, bool _inlist) : ui_menu(machine, container) +ui_bios_selection::ui_bios_selection(mame_ui_manager &mui, render_container *container, s_bios biosname, void *_driver, bool _software, bool _inlist) : ui_menu(mui, container) { m_bios = biosname; m_driver = _driver; @@ -2040,7 +2034,7 @@ void ui_bios_selection::populate() item_append(elem.first.c_str(), nullptr, 0, (void *)&elem.first); item_append(ui_menu_item_type::SEPARATOR); - customtop = mame_machine_manager::instance()->ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER); + customtop = ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER); } //------------------------------------------------- @@ -2084,7 +2078,7 @@ void ui_bios_selection::handle() drivlist.next(); software_list_device *swlist = software_list_device::find_by_name(drivlist.config(), ui_swinfo->listname.c_str()); software_info *swinfo = swlist->find(ui_swinfo->shortname.c_str()); - if (!mame_machine_manager::instance()->ui().options().skip_parts_menu() && swinfo->has_multiple_parts(ui_swinfo->interface.c_str())) + if (!ui().options().skip_parts_menu() && swinfo->has_multiple_parts(ui_swinfo->interface.c_str())) { s_parts parts; for (const software_part &swpart : swinfo->parts()) @@ -2097,7 +2091,7 @@ void ui_bios_selection::handle() parts.emplace(swpart.name(), menu_part_name); } } - ui_menu::stack_push(global_alloc_clear<ui_software_parts>(machine(), container, parts, ui_swinfo)); + ui_menu::stack_push(global_alloc_clear<ui_software_parts>(ui(), container, parts, ui_swinfo)); return; } std::string error_string; @@ -2123,9 +2117,8 @@ void ui_bios_selection::handle() void ui_bios_selection::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - mui.draw_text_full(container, _("Bios selection:"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, _("Bios selection:"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; float maxwidth = MAX(origx2 - origx1, width); @@ -2136,7 +2129,7 @@ void ui_bios_selection::custom_render(void *selectedref, float top, float bottom float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -2144,6 +2137,6 @@ void ui_bios_selection::custom_render(void *selectedref, float top, float bottom y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, _("Bios selection:"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, _("Bios selection:"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } diff --git a/src/frontend/mame/ui/selsoft.h b/src/frontend/mame/ui/selsoft.h index 64ce0ac4cdb..e65adc277d9 100644 --- a/src/frontend/mame/ui/selsoft.h +++ b/src/frontend/mame/ui/selsoft.h @@ -21,7 +21,7 @@ using s_parts = std::unordered_map<std::string, std::string>; class ui_menu_select_software : public ui_menu { public: - ui_menu_select_software(running_machine &machine, render_container *container, const game_driver *driver); + ui_menu_select_software(mame_ui_manager &mui, render_container *container, const game_driver *driver); virtual ~ui_menu_select_software(); virtual void populate() override; virtual void handle() override; @@ -65,7 +65,7 @@ private: class ui_software_parts : public ui_menu { public: - ui_software_parts(running_machine &machine, render_container *container, s_parts parts, ui_software_info *ui_info); + ui_software_parts(mame_ui_manager &mui, render_container *container, s_parts parts, ui_software_info *ui_info); virtual ~ui_software_parts(); virtual void populate() override; virtual void handle() override; @@ -79,7 +79,7 @@ private: class ui_bios_selection : public ui_menu { public: - ui_bios_selection(running_machine &machine, render_container *container, s_bios biosname, void *driver, bool software, bool inlist); + ui_bios_selection(mame_ui_manager &mui, render_container *container, s_bios biosname, void *driver, bool software, bool inlist); virtual ~ui_bios_selection(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/simpleselgame.cpp b/src/frontend/mame/ui/simpleselgame.cpp index dce3a395712..6225d1e8467 100644 --- a/src/frontend/mame/ui/simpleselgame.cpp +++ b/src/frontend/mame/ui/simpleselgame.cpp @@ -26,7 +26,7 @@ // ctor //------------------------------------------------- -ui_simple_menu_select_game::ui_simple_menu_select_game(running_machine &machine, render_container *container, const char *gamename) : ui_menu(machine, container), m_driverlist(driver_list::total() + 1) +ui_simple_menu_select_game::ui_simple_menu_select_game(mame_ui_manager &mui, render_container *container, const char *gamename) : ui_menu(mui, container), m_driverlist(driver_list::total() + 1) { build_driver_list(); if(gamename) @@ -129,7 +129,7 @@ void ui_simple_menu_select_game::handle() // if we're in an error state, overlay an error message if (m_error) - mame_machine_manager::instance()->ui().draw_text_box(container, + ui().draw_text_box(container, "The selected game is missing one or more required ROM or CHD images. " "Please select a different game.\n\nPress any key to continue.", JUSTIFY_CENTER, 0.5f, 0.5f, UI_RED_COLOR); @@ -146,7 +146,7 @@ void ui_simple_menu_select_game::inkey_select(const ui_menu_event *menu_event) // special case for configure inputs if ((FPTR)driver == 1) - ui_menu::stack_push(global_alloc_clear<ui_menu_game_options>(machine(), container)); + ui_menu::stack_push(global_alloc_clear<ui_menu_game_options>(ui(), container)); // anything else is a driver else { @@ -268,8 +268,8 @@ void ui_simple_menu_select_game::populate() } // configure the custom rendering - customtop = mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; - custombottom = 4.0f * mame_machine_manager::instance()->ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + customtop = ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; + custombottom = 4.0f * ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER; } @@ -293,8 +293,8 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo tempbuf[0] = _("Type name or select: (random)"); // get the size of the text - mame_machine_manager::instance()->ui().draw_text_full(container, tempbuf[0].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, tempbuf[0].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(width, origx2 - origx1); @@ -305,7 +305,7 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mame_machine_manager::instance()->ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -313,7 +313,7 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo y1 += UI_BOX_TB_BORDER; // draw the text within it - mame_machine_manager::instance()->ui().draw_text_full(container, tempbuf[0].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, tempbuf[0].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); // determine the text to render below @@ -383,8 +383,8 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo maxwidth = origx2 - origx1; for (line = 0; line < 4; line++) { - mame_machine_manager::instance()->ui().draw_text_full(container, tempbuf[line].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, tempbuf[line].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(maxwidth, width); } @@ -403,7 +403,7 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo color = UI_YELLOW_COLOR; if (driver != nullptr && (driver->flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION)) != 0) color = UI_RED_COLOR; - mame_machine_manager::instance()->ui().draw_outlined_box(container, x1, y1, x2, y2, color); + ui().draw_outlined_box(container, x1, y1, x2, y2, color); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -413,9 +413,9 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo // draw all lines for (line = 0; line < 4; line++) { - mame_machine_manager::instance()->ui().draw_text_full(container, tempbuf[line].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, tempbuf[line].c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); - y1 += mame_machine_manager::instance()->ui().get_line_height(); + y1 += ui().get_line_height(); } } @@ -425,22 +425,22 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo // select menu to be visible and inescapable //------------------------------------------------- -void ui_simple_menu_select_game::force_game_select(running_machine &machine, render_container *container) +void ui_simple_menu_select_game::force_game_select(mame_ui_manager &mui, render_container *container) { - char *gamename = (char *)machine.options().system_name(); + char *gamename = (char *)mui.machine().options().system_name(); // reset the menu stack - ui_menu::stack_reset(machine); + ui_menu::stack_reset(mui.machine()); // add the quit entry followed by the game select entry - ui_menu *quit = global_alloc_clear<ui_menu_quit_game>(machine, container); + ui_menu *quit = global_alloc_clear<ui_menu_quit_game>(mui, container); quit->set_special_main_menu(true); ui_menu::stack_push(quit); - ui_menu::stack_push(global_alloc_clear<ui_simple_menu_select_game>(machine, container, gamename)); + ui_menu::stack_push(global_alloc_clear<ui_simple_menu_select_game>(mui, container, gamename)); // force the menus on - mame_machine_manager::instance()->ui().show_menu(); + mui.show_menu(); // make sure MAME is paused - machine.pause(); + mui.machine().pause(); } diff --git a/src/frontend/mame/ui/simpleselgame.h b/src/frontend/mame/ui/simpleselgame.h index 2106fc54638..7ab68394e95 100644 --- a/src/frontend/mame/ui/simpleselgame.h +++ b/src/frontend/mame/ui/simpleselgame.h @@ -19,14 +19,14 @@ class driver_enumerator; class ui_simple_menu_select_game : public ui_menu { public: - ui_simple_menu_select_game(running_machine &machine, render_container *container, const char *gamename); + ui_simple_menu_select_game(mame_ui_manager &mui, render_container *container, const char *gamename); virtual ~ui_simple_menu_select_game(); virtual void populate() override; virtual void handle() override; virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override; // force game select menu - static void force_game_select(running_machine &machine, render_container *container); + static void force_game_select(mame_ui_manager &mui, render_container *container); virtual bool menu_has_search_active() override { return (m_search[0] != 0); } private: diff --git a/src/frontend/mame/ui/sliders.cpp b/src/frontend/mame/ui/sliders.cpp index 75d40c2ace3..c742a13c8e9 100644 --- a/src/frontend/mame/ui/sliders.cpp +++ b/src/frontend/mame/ui/sliders.cpp @@ -16,7 +16,7 @@ #include "ui/sliders.h" -ui_menu_sliders::ui_menu_sliders(running_machine &machine, render_container *container, bool menuless_mode) : ui_menu(machine, container) +ui_menu_sliders::ui_menu_sliders(mame_ui_manager &mui, render_container *container, bool menuless_mode) : ui_menu(mui, container) { m_menuless_mode = m_hidden = menuless_mode; } @@ -139,7 +139,7 @@ void ui_menu_sliders::populate() std::string tempstring; /* add UI sliders */ - std::vector<ui_menu_item> ui_sliders = mame_machine_manager::instance()->ui().get_slider_list(); + std::vector<ui_menu_item> ui_sliders = ui().get_slider_list(); for (ui_menu_item item : ui_sliders) { if (item.type == ui_menu_item_type::SLIDER) @@ -182,7 +182,7 @@ void ui_menu_sliders::populate() } } - custombottom = 2.0f * mame_machine_manager::instance()->ui().get_line_height() + 2.0f * UI_BOX_TB_BORDER; + custombottom = 2.0f * ui().get_line_height() + 2.0f * UI_BOX_TB_BORDER; } /*------------------------------------------------- @@ -196,7 +196,7 @@ void ui_menu_sliders::custom_render(void *selectedref, float top, float bottom, if (curslider != nullptr) { float bar_left, bar_area_top, bar_width, bar_area_height, bar_top, bar_bottom, default_x, current_x; - float line_height = mame_machine_manager::instance()->ui().get_line_height(); + float line_height = ui().get_line_height(); float percentage, default_percentage; std::string tempstring; float text_height; @@ -219,12 +219,12 @@ void ui_menu_sliders::custom_render(void *selectedref, float top, float bottom, x2 = 1.0f - UI_BOX_LR_BORDER; /* draw extra menu area */ - mame_machine_manager::instance()->ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); y1 += UI_BOX_TB_BORDER; /* determine the text height */ - mame_machine_manager::instance()->ui().draw_text_full(container, tempstring.c_str(), 0, 0, x2 - x1 - 2.0f * UI_BOX_LR_BORDER, - JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NONE, ARGB_WHITE, ARGB_BLACK, nullptr, &text_height); + ui().draw_text_full(container, tempstring.c_str(), 0, 0, x2 - x1 - 2.0f * UI_BOX_LR_BORDER, + JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NONE, rgb_t::white, rgb_t::black, nullptr, &text_height); /* draw the thermometer */ bar_left = x1 + UI_BOX_LR_BORDER; @@ -250,7 +250,7 @@ void ui_menu_sliders::custom_render(void *selectedref, float top, float bottom, container->add_line(default_x, bar_bottom, default_x, bar_area_top + bar_area_height, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); /* draw the actual text */ - mame_machine_manager::instance()->ui().draw_text_full(container, tempstring.c_str(), x1 + UI_BOX_LR_BORDER, y1 + line_height, x2 - x1 - 2.0f * UI_BOX_LR_BORDER, + ui().draw_text_full(container, tempstring.c_str(), x1 + UI_BOX_LR_BORDER, y1 + line_height, x2 - x1 - 2.0f * UI_BOX_LR_BORDER, JUSTIFY_CENTER, WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, &text_height); } } @@ -262,20 +262,20 @@ void ui_menu_sliders::custom_render(void *selectedref, float top, float bottom, standard menu handler -------------------------------------------------*/ -UINT32 ui_menu_sliders::ui_handler(running_machine &machine, render_container *container, UINT32 state) +UINT32 ui_menu_sliders::ui_handler(mame_ui_manager &mui, render_container *container, UINT32 state) { UINT32 result; /* if this is the first call, push the sliders menu */ if (state) - ui_menu::stack_push(global_alloc_clear<ui_menu_sliders>(machine, container, true)); + ui_menu::stack_push(global_alloc_clear<ui_menu_sliders>(mui, container, true)); /* handle standard menus */ - result = ui_menu::ui_handler(machine, container, state); + result = ui_menu::ui_handler(mui, container, state); /* if we are cancelled, pop the sliders menu */ if (result == UI_HANDLER_CANCEL) - ui_menu::stack_pop(machine); + ui_menu::stack_pop(mui.machine()); ui_menu_sliders *uim = dynamic_cast<ui_menu_sliders *>(menu_stack); return uim && uim->m_menuless_mode ? 0 : UI_HANDLER_CANCEL; diff --git a/src/frontend/mame/ui/sliders.h b/src/frontend/mame/ui/sliders.h index f420b094cbe..eea36538384 100644 --- a/src/frontend/mame/ui/sliders.h +++ b/src/frontend/mame/ui/sliders.h @@ -17,14 +17,14 @@ class ui_menu_sliders : public ui_menu { public: - ui_menu_sliders(running_machine &machine, render_container *container, bool menuless_mode = false); + ui_menu_sliders(mame_ui_manager &mui, render_container *container, bool menuless_mode = false); virtual ~ui_menu_sliders(); virtual void populate() override; virtual void handle() override; virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override; - static UINT32 ui_handler(running_machine &machine, render_container *container, UINT32 state); + static UINT32 ui_handler(mame_ui_manager &mui, render_container *container, UINT32 state); private: enum { diff --git a/src/frontend/mame/ui/slotopt.cpp b/src/frontend/mame/ui/slotopt.cpp index 9b6afa92132..5908ffb4fa6 100644 --- a/src/frontend/mame/ui/slotopt.cpp +++ b/src/frontend/mame/ui/slotopt.cpp @@ -145,7 +145,7 @@ void ui_menu_slot_devices::set_slot_device(device_slot_interface &slot, const ch slot device menu -------------------------------------------------*/ -ui_menu_slot_devices::ui_menu_slot_devices(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_slot_devices::ui_menu_slot_devices(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } @@ -204,7 +204,7 @@ void ui_menu_slot_devices::handle() device_slot_interface *slot = (device_slot_interface *)menu_event->itemref; device_slot_option *option = slot_get_current_option(*slot); if (option) - ui_menu::stack_push(global_alloc_clear<ui_menu_device_config>(machine(), container, slot, option)); + ui_menu::stack_push(global_alloc_clear<ui_menu_device_config>(ui(), container, slot, option)); } } } diff --git a/src/frontend/mame/ui/slotopt.h b/src/frontend/mame/ui/slotopt.h index b297a5c7e9b..190d310a49c 100644 --- a/src/frontend/mame/ui/slotopt.h +++ b/src/frontend/mame/ui/slotopt.h @@ -15,7 +15,7 @@ class ui_menu_slot_devices : public ui_menu { public: - ui_menu_slot_devices(running_machine &machine, render_container *container); + ui_menu_slot_devices(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_slot_devices(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/sndmenu.cpp b/src/frontend/mame/ui/sndmenu.cpp index 58362585dc2..79a654b29cf 100644 --- a/src/frontend/mame/ui/sndmenu.cpp +++ b/src/frontend/mame/ui/sndmenu.cpp @@ -21,13 +21,13 @@ const int ui_menu_sound_options::m_sound_rate[] = { 11025, 22050, 44100, 48000 } // ctor //------------------------------------------------- -ui_menu_sound_options::ui_menu_sound_options(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_sound_options::ui_menu_sound_options(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { - osd_options &options = downcast<osd_options &>(machine.options()); + osd_options &options = downcast<osd_options &>(mui.machine().options()); - m_sample_rate = machine.options().sample_rate(); + m_sample_rate = mui.machine().options().sample_rate(); m_sound = (strcmp(options.sound(), OSDOPTVAL_NONE) && strcmp(options.sound(), "0")); - m_samples = machine.options().samples(); + m_samples = mui.machine().options().samples(); int total = ARRAY_LENGTH(m_sound_rate); @@ -101,7 +101,7 @@ void ui_menu_sound_options::handle() for (int index = 0; index < total; index++) s_sel[index] = std::to_string(m_sound_rate[index]); - ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(machine(), container, s_sel, m_cur_rates)); + ui_menu::stack_push(global_alloc_clear<ui_menu_selector>(ui(), container, s_sel, m_cur_rates)); } break; @@ -135,7 +135,7 @@ void ui_menu_sound_options::populate() item_append(_("Use External Samples"), m_samples ? _("On") : _("Off"), m_samples ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)ENABLE_SAMPLES); item_append(ui_menu_item_type::SEPARATOR); - customtop = mame_machine_manager::instance()->ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER); + customtop = ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER); } //------------------------------------------------- @@ -145,9 +145,8 @@ void ui_menu_sound_options::populate() void ui_menu_sound_options::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - mui.draw_text_full(container, _("Sound Options"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, _("Sound Options"), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; float maxwidth = MAX(origx2 - origx1, width); @@ -158,7 +157,7 @@ void ui_menu_sound_options::custom_render(void *selectedref, float top, float bo float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -166,6 +165,6 @@ void ui_menu_sound_options::custom_render(void *selectedref, float top, float bo y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, _("Sound Options"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, _("Sound Options"), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } diff --git a/src/frontend/mame/ui/sndmenu.h b/src/frontend/mame/ui/sndmenu.h index 24bb0a79277..8c6a2aef1eb 100644 --- a/src/frontend/mame/ui/sndmenu.h +++ b/src/frontend/mame/ui/sndmenu.h @@ -19,7 +19,7 @@ class ui_menu_sound_options : public ui_menu { public: - ui_menu_sound_options(running_machine &machine, render_container *container); + ui_menu_sound_options(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_sound_options(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/submenu.cpp b/src/frontend/mame/ui/submenu.cpp index 2d5984606eb..2537ef55a2d 100644 --- a/src/frontend/mame/ui/submenu.cpp +++ b/src/frontend/mame/ui/submenu.cpp @@ -18,14 +18,14 @@ // ctor / dtor //------------------------------------------------- -ui_submenu::ui_submenu(running_machine &machine, render_container *container, std::vector<ui_submenu::option> &suboptions, const game_driver *drv, emu_options *options) - : ui_menu(machine, container) +ui_submenu::ui_submenu(mame_ui_manager &mui, render_container *container, std::vector<ui_submenu::option> &suboptions, const game_driver *drv, emu_options *options) + : ui_menu(mui, container) , m_options(suboptions) , m_driver(drv) { core_options *opts = nullptr; if (m_driver == nullptr) - opts = dynamic_cast<core_options*>(&machine.options()); + opts = dynamic_cast<core_options*>(&mui.machine().options()); else opts = dynamic_cast<core_options*>(options); @@ -84,8 +84,8 @@ ui_submenu::ui_submenu(running_machine &machine, render_container *container, st } break; case ui_submenu::UI: - sm_option.entry = mame_machine_manager::instance()->ui().options().get_entry(sm_option.name); - sm_option.options = dynamic_cast<core_options*>(&mame_machine_manager::instance()->ui().options()); + sm_option.entry = mui.options().get_entry(sm_option.name); + sm_option.options = dynamic_cast<core_options*>(&mui.options()); break; default: break; @@ -298,7 +298,7 @@ void ui_submenu::populate() } item_append(ui_menu_item_type::SEPARATOR); - custombottom = customtop = mame_machine_manager::instance()->ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER); + custombottom = customtop = ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER); } //------------------------------------------------- @@ -308,10 +308,9 @@ void ui_submenu::populate() void ui_submenu::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { float width; - mame_ui_manager &mui = mame_machine_manager::instance()->ui(); - mui.draw_text_full(container, _(m_options[0].description), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, _(m_options[0].description), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; float maxwidth = MAX(origx2 - origx1, width); @@ -322,7 +321,7 @@ void ui_submenu::custom_render(void *selectedref, float top, float bottom, float float y2 = origy1 - UI_BOX_TB_BORDER; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_GREEN_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -330,7 +329,7 @@ void ui_submenu::custom_render(void *selectedref, float top, float bottom, float y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, _(m_options[0].description), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, + ui().draw_text_full(container, _(m_options[0].description), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); if (selectedref != nullptr) @@ -338,8 +337,8 @@ void ui_submenu::custom_render(void *selectedref, float top, float bottom, float ui_submenu::option *selected_sm_option = (ui_submenu::option *)selectedref; if (selected_sm_option->entry != nullptr) { - mui.draw_text_full(container, selected_sm_option->entry->description(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, - DRAW_NONE, ARGB_WHITE, ARGB_BLACK, &width, nullptr); + ui().draw_text_full(container, selected_sm_option->entry->description(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, + DRAW_NONE, rgb_t::white, rgb_t::black, &width, nullptr); width += 2 * UI_BOX_LR_BORDER; maxwidth = MAX(origx2 - origx1, width); @@ -351,7 +350,7 @@ void ui_submenu::custom_render(void *selectedref, float top, float bottom, float y2 = origy2 + bottom; // draw a box - mui.draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR); + ui().draw_outlined_box(container, x1, y1, x2, y2, UI_RED_COLOR); // take off the borders x1 += UI_BOX_LR_BORDER; @@ -359,7 +358,7 @@ void ui_submenu::custom_render(void *selectedref, float top, float bottom, float y1 += UI_BOX_TB_BORDER; // draw the text within it - mui.draw_text_full(container, selected_sm_option->entry->description(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, + ui().draw_text_full(container, selected_sm_option->entry->description(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_NEVER, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr); } } diff --git a/src/frontend/mame/ui/submenu.h b/src/frontend/mame/ui/submenu.h index 8168ab4bb7a..7cedeea6110 100644 --- a/src/frontend/mame/ui/submenu.h +++ b/src/frontend/mame/ui/submenu.h @@ -46,7 +46,7 @@ public: std::vector<std::string> value; }; - ui_submenu(running_machine &machine, render_container *container, std::vector<ui_submenu::option> &suboptions, const game_driver *drv = nullptr, emu_options *options = nullptr); + ui_submenu(mame_ui_manager &mui, render_container *container, std::vector<ui_submenu::option> &suboptions, const game_driver *drv = nullptr, emu_options *options = nullptr); virtual ~ui_submenu(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/swlist.cpp b/src/frontend/mame/ui/swlist.cpp index 915c11239b9..b6dfc318a28 100644 --- a/src/frontend/mame/ui/swlist.cpp +++ b/src/frontend/mame/ui/swlist.cpp @@ -31,8 +31,8 @@ // ctor //------------------------------------------------- -ui_menu_software_parts::ui_menu_software_parts(running_machine &machine, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, int *result) - : ui_menu(machine, container) +ui_menu_software_parts::ui_menu_software_parts(mame_ui_manager &mui, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, int *result) + : ui_menu(mui, container) { m_info = info; m_interface = interface; @@ -121,8 +121,8 @@ void ui_menu_software_parts::handle() // ctor //------------------------------------------------- -ui_menu_software_list::ui_menu_software_list(running_machine &machine, render_container *container, software_list_device *swlist, const char *interface, std::string &result) - : ui_menu(machine, container), m_result(result) +ui_menu_software_list::ui_menu_software_list(mame_ui_manager &mui, render_container *container, software_list_device *swlist, const char *interface, std::string &result) + : ui_menu(mui, container), m_result(result) { m_swlist = swlist; m_interface = interface; @@ -286,7 +286,7 @@ void ui_menu_software_list::handle() update_selected = true; if (ARRAY_LENGTH(m_filename_buffer) > 0) - mame_machine_manager::instance()->ui().popup_time(ERROR_MESSAGE_TIME, "%s", m_filename_buffer); + ui().popup_time(ERROR_MESSAGE_TIME, "%s", m_filename_buffer); } // if it's any other key and we're not maxed out, update else if (event->unichar >= ' ' && event->unichar < 0x7f) @@ -296,7 +296,7 @@ void ui_menu_software_list::handle() update_selected = true; if (ARRAY_LENGTH(m_filename_buffer) > 0) - mame_machine_manager::instance()->ui().popup_time(ERROR_MESSAGE_TIME, "%s", m_filename_buffer); + ui().popup_time(ERROR_MESSAGE_TIME, "%s", m_filename_buffer); } if (update_selected) @@ -382,8 +382,8 @@ void ui_menu_software_list::handle() // ctor //------------------------------------------------- -ui_menu_software::ui_menu_software(running_machine &machine, render_container *container, const char *interface, software_list_device **result) - : ui_menu(machine, container) +ui_menu_software::ui_menu_software(mame_ui_manager &mui, render_container *container, const char *interface, software_list_device **result) + : ui_menu(mui, container) { m_interface = interface; m_result = result; @@ -451,7 +451,7 @@ void ui_menu_software::handle() const ui_menu_event *event = process(0); if (event != nullptr && event->iptkey == IPT_UI_SELECT) { - // ui_menu::stack_push(global_alloc_clear<ui_menu_software_list>(machine(), container, (software_list_config *)event->itemref, image)); + // ui_menu::stack_push(global_alloc_clear<ui_menu_software_list>(ui(), container, (software_list_config *)event->itemref, image)); *m_result = (software_list_device *)event->itemref; ui_menu::stack_pop(machine()); } diff --git a/src/frontend/mame/ui/swlist.h b/src/frontend/mame/ui/swlist.h index 253eeb6e7c8..bf8b650ea15 100644 --- a/src/frontend/mame/ui/swlist.h +++ b/src/frontend/mame/ui/swlist.h @@ -16,7 +16,7 @@ class ui_menu_software_parts : public ui_menu { public: enum { T_EMPTY, T_FMGR, T_SWLIST, T_ENTRY }; - ui_menu_software_parts(running_machine &machine, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, int *result); + ui_menu_software_parts(mame_ui_manager &mui, render_container *container, const software_info *info, const char *interface, const software_part **part, bool other_opt, int *result); virtual ~ui_menu_software_parts(); virtual void populate() override; virtual void handle() override; @@ -40,7 +40,7 @@ private: class ui_menu_software_list : public ui_menu { public: - ui_menu_software_list(running_machine &machine, render_container *container, software_list_device *swlist, const char *interface, std::string &result); + ui_menu_software_list(mame_ui_manager &mui, render_container *container, software_list_device *swlist, const char *interface, std::string &result); virtual ~ui_menu_software_list(); virtual void populate() override; virtual void handle() override; @@ -71,7 +71,7 @@ private: class ui_menu_software : public ui_menu { public: - ui_menu_software(running_machine &machine, render_container *container, const char *interface, software_list_device **result); + ui_menu_software(mame_ui_manager &mui, render_container *container, const char *interface, software_list_device **result); virtual ~ui_menu_software(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/tapectrl.cpp b/src/frontend/mame/ui/tapectrl.cpp index 510d0eb3fb3..4159b2d88f4 100644 --- a/src/frontend/mame/ui/tapectrl.cpp +++ b/src/frontend/mame/ui/tapectrl.cpp @@ -34,8 +34,8 @@ // ctor //------------------------------------------------- -ui_menu_tape_control::ui_menu_tape_control(running_machine &machine, render_container *container, cassette_image_device *device) - : ui_menu_device_control<cassette_image_device>(machine, container, device) +ui_menu_tape_control::ui_menu_tape_control(mame_ui_manager &mui, render_container *container, cassette_image_device *device) + : ui_menu_device_control<cassette_image_device>(mui, container, device) { } diff --git a/src/frontend/mame/ui/tapectrl.h b/src/frontend/mame/ui/tapectrl.h index 9cfa1316a99..816b2ad2b4d 100644 --- a/src/frontend/mame/ui/tapectrl.h +++ b/src/frontend/mame/ui/tapectrl.h @@ -18,7 +18,7 @@ class ui_menu_tape_control : public ui_menu_device_control<cassette_image_device> { public: - ui_menu_tape_control(running_machine &machine, render_container *container, cassette_image_device *device); + ui_menu_tape_control(mame_ui_manager &mui, render_container *container, cassette_image_device *device); virtual ~ui_menu_tape_control(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp index c075c884d1b..7a702f78546 100644 --- a/src/frontend/mame/ui/ui.cpp +++ b/src/frontend/mame/ui/ui.cpp @@ -163,24 +163,6 @@ static INT32 slider_crossoffset(running_machine &machine, void *arg, int id, std ***************************************************************************/ //------------------------------------------------- -// load ui options -//------------------------------------------------- - -static void load_ui_options(running_machine &machine) -{ - // parse the file - std::string error; - // attempt to open the output file - emu_file file(machine.options().ini_path(), OPEN_FLAG_READ); - if (file.open("ui.ini") == osd_file::error::NONE) - { - bool result = mame_machine_manager::instance()->ui().options().parse_ini_file((util::core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_DRIVER_INI, error); - if (!result) - osd_printf_error("**Error loading ui.ini**"); - } -} - -//------------------------------------------------- // is_breakable_char - is a given unicode // character a possible line break? //------------------------------------------------- @@ -284,9 +266,9 @@ mame_ui_manager::mame_ui_manager(running_machine &machine) void mame_ui_manager::init() { - load_ui_options(machine()); + load_ui_options(); // initialize the other UI bits - ui_menu::init(machine()); + ui_menu::init(machine(), options()); ui_gfx_init(machine()); get_font_rows(&machine()); @@ -415,7 +397,7 @@ void mame_ui_manager::display_startup_screens(bool first_time) { std::string warning; warning.assign(_("This driver requires images to be loaded in the following device(s): ")).append(messagebox_text.substr(0, messagebox_text.length() - 2)); - ui_menu_file_manager::force_file_manager(machine(), &machine().render().ui_container(), warning.c_str()); + ui_menu_file_manager::force_file_manager(*this, &machine().render().ui_container(), warning.c_str()); } break; } @@ -490,12 +472,12 @@ void mame_ui_manager::update_and_render(render_container *container) if (machine().phase() >= MACHINE_PHASE_RESET) { mame_machine_manager::instance()->lua()->on_frame_done(); - mame_machine_manager::instance()->cheat().render_text(*container); + mame_machine_manager::instance()->cheat().render_text(*this, *container); } // call the current UI handler assert(m_handler_callback != nullptr); - m_handler_param = (*m_handler_callback)(machine(), container, m_handler_param); + m_handler_param = (*m_handler_callback)(*this, container, m_handler_param); // display any popup messages if (osd_ticks() < m_popup_text_end) @@ -515,7 +497,7 @@ void mame_ui_manager::update_and_render(render_container *container) float mouse_y=-1,mouse_x=-1; if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, *container, mouse_x, mouse_y)) { - const float cursor_size = 0.6 * mame_machine_manager::instance()->ui().get_line_height(); + const float cursor_size = 0.6 * get_line_height(); container->add_quad(mouse_x, mouse_y, mouse_x + cursor_size*container->manager().ui_aspect(container), mouse_y + cursor_size, UI_TEXT_COLOR, m_mouse_arrow_texture, PRIMFLAG_ANTIALIAS(1) | PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); } } @@ -1285,9 +1267,9 @@ std::string &mame_ui_manager::game_info_astring(std::string &str) // messagebox_text string but handles no input //------------------------------------------------- -UINT32 mame_ui_manager::handler_messagebox(running_machine &machine, render_container *container, UINT32 state) +UINT32 mame_ui_manager::handler_messagebox(mame_ui_manager &mui, render_container *container, UINT32 state) { - mame_machine_manager::instance()->ui().draw_text_box(container, messagebox_text.c_str(), JUSTIFY_LEFT, 0.5f, 0.5f, messagebox_backcolor); + mui.draw_text_box(container, messagebox_text.c_str(), JUSTIFY_LEFT, 0.5f, 0.5f, messagebox_backcolor); return 0; } @@ -1298,20 +1280,20 @@ UINT32 mame_ui_manager::handler_messagebox(running_machine &machine, render_cont // any keypress //------------------------------------------------- -UINT32 mame_ui_manager::handler_messagebox_anykey(running_machine &machine, render_container *container, UINT32 state) +UINT32 mame_ui_manager::handler_messagebox_anykey(mame_ui_manager &mui, render_container *container, UINT32 state) { // draw a standard message window - mame_machine_manager::instance()->ui().draw_text_box(container, messagebox_text.c_str(), JUSTIFY_LEFT, 0.5f, 0.5f, messagebox_backcolor); + mui.draw_text_box(container, messagebox_text.c_str(), JUSTIFY_LEFT, 0.5f, 0.5f, messagebox_backcolor); // if the user cancels, exit out completely - if (machine.ui_input().pressed(IPT_UI_CANCEL)) + if (mui.machine().ui_input().pressed(IPT_UI_CANCEL)) { - machine.schedule_exit(); + mui.machine().schedule_exit(); state = UI_HANDLER_CANCEL; } // if any key is pressed, just exit - else if (machine.input().poll_switches() != INPUT_CODE_INVALID) + else if (mui.machine().input().poll_switches() != INPUT_CODE_INVALID) state = UI_HANDLER_CANCEL; return state; @@ -1384,7 +1366,7 @@ void mame_ui_manager::increase_frameskip() machine().video().set_frameskip(newframeskip); // display the FPS counter for 2 seconds - mame_machine_manager::instance()->ui().show_fps_temp(2.0); + show_fps_temp(2.0); } @@ -1401,7 +1383,7 @@ void mame_ui_manager::decrease_frameskip() machine().video().set_frameskip(newframeskip); // display the FPS counter for 2 seconds - mame_machine_manager::instance()->ui().show_fps_temp(2.0); + show_fps_temp(2.0); } @@ -1512,61 +1494,62 @@ void mame_ui_manager::image_display(const device_type &type, device_image_interf // of the standard keypresses //------------------------------------------------- -UINT32 mame_ui_manager::handler_ingame(running_machine &machine, render_container *container, UINT32 state) +UINT32 mame_ui_manager::handler_ingame(mame_ui_manager &mui, render_container *container, UINT32 state) { - bool is_paused = machine.paused(); + bool is_paused = mui.machine().paused(); // first draw the FPS counter - if (mame_machine_manager::instance()->ui().show_fps_counter()) + if (mui.show_fps_counter()) { - mame_machine_manager::instance()->ui().draw_text_full(container, machine.video().speed_text().c_str(), 0.0f, 0.0f, 1.0f, - JUSTIFY_RIGHT, WRAP_WORD, DRAW_OPAQUE, ARGB_WHITE, ARGB_BLACK, nullptr, nullptr); + mui.draw_text_full(container, mui.machine().video().speed_text().c_str(), 0.0f, 0.0f, 1.0f, + JUSTIFY_RIGHT, WRAP_WORD, DRAW_OPAQUE, rgb_t::white, rgb_t::black, nullptr, nullptr); } // Show the duration of current part (intro or gameplay or extra) - if (mame_machine_manager::instance()->ui().show_timecode_counter()) { + if (mui.show_timecode_counter()) { std::string tempstring; - mame_machine_manager::instance()->ui().draw_text_full(container, machine.video().timecode_text(tempstring).c_str(), 0.0f, 0.0f, 1.0f, - JUSTIFY_RIGHT, WRAP_WORD, DRAW_OPAQUE, rgb_t(0xf0,0xf0,0x10,0x10), ARGB_BLACK, nullptr, nullptr); + mui.draw_text_full(container, mui.machine().video().timecode_text(tempstring).c_str(), 0.0f, 0.0f, 1.0f, + JUSTIFY_RIGHT, WRAP_WORD, DRAW_OPAQUE, rgb_t(0xf0,0xf0,0x10,0x10), rgb_t::black, nullptr, nullptr); } // Show the total time elapsed for the video preview (all parts intro, gameplay, extras) - if (mame_machine_manager::instance()->ui().show_timecode_total()) { + if (mui.show_timecode_total()) { std::string tempstring; - mame_machine_manager::instance()->ui().draw_text_full(container, machine.video().timecode_total_text(tempstring).c_str(), 0.0f, 0.0f, 1.0f, - JUSTIFY_LEFT, WRAP_WORD, DRAW_OPAQUE, rgb_t(0xf0,0x10,0xf0,0x10), ARGB_BLACK, nullptr, nullptr); + mui.draw_text_full(container, mui.machine().video().timecode_total_text(tempstring).c_str(), 0.0f, 0.0f, 1.0f, + JUSTIFY_LEFT, WRAP_WORD, DRAW_OPAQUE, rgb_t(0xf0,0x10,0xf0,0x10), rgb_t::black, nullptr, nullptr); } // draw the profiler if visible - if (mame_machine_manager::instance()->ui().show_profiler()) + if (mui.show_profiler()) { - const char *text = g_profiler.text(machine); - mame_machine_manager::instance()->ui().draw_text_full(container, text, 0.0f, 0.0f, 1.0f, JUSTIFY_LEFT, WRAP_WORD, DRAW_OPAQUE, ARGB_WHITE, ARGB_BLACK, nullptr, nullptr); + const char *text = g_profiler.text(mui.machine()); + mui.draw_text_full(container, text, 0.0f, 0.0f, 1.0f, JUSTIFY_LEFT, WRAP_WORD, DRAW_OPAQUE, rgb_t::white, rgb_t::black, nullptr, nullptr); } // if we're single-stepping, pause now - if (mame_machine_manager::instance()->ui().single_step()) + if (mui.single_step()) { - machine.pause(); - mame_machine_manager::instance()->ui().set_single_step(false); + mui.machine().pause(); + mui.set_single_step(false); } // determine if we should disable the rest of the UI - bool ui_disabled = (machine.ioport().has_keyboard() && !machine.ui_active()); + bool has_keyboard = mui.machine().ioport().has_keyboard(); + bool ui_disabled = (has_keyboard && !mui.machine().ui_active()); // is ScrLk UI toggling applicable here? - if (machine.ioport().has_keyboard()) + if (has_keyboard) { // are we toggling the UI with ScrLk? - if (machine.ui_input().pressed(IPT_UI_TOGGLE_UI)) + if (mui.machine().ui_input().pressed(IPT_UI_TOGGLE_UI)) { // toggle the UI - machine.set_ui_active(!machine.ui_active()); + mui.machine().set_ui_active(!mui.machine().ui_active()); // display a popup indicating the new status - if (machine.ui_active()) + if (mui.machine().ui_active()) { - mame_machine_manager::instance()->ui().popup_time(2, "%s\n%s\n%s\n%s\n%s\n%s\n", + mui.popup_time(2, "%s\n%s\n%s\n%s\n%s\n%s\n", _("Keyboard Emulation Status"), "-------------------------", _("Mode: PARTIAL Emulation"), @@ -1576,7 +1559,7 @@ UINT32 mame_ui_manager::handler_ingame(running_machine &machine, render_containe } else { - mame_machine_manager::instance()->ui().popup_time(2, "%s\n%s\n%s\n%s\n%s\n%s\n", + mui.popup_time(2, "%s\n%s\n%s\n%s\n%s\n%s\n", _("Keyboard Emulation Status"), "-------------------------", _("Mode: FULL Emulation"), @@ -1588,64 +1571,64 @@ UINT32 mame_ui_manager::handler_ingame(running_machine &machine, render_containe } // is the natural keyboard enabled? - if (mame_machine_manager::instance()->ui().use_natural_keyboard() && (machine.phase() == MACHINE_PHASE_RUNNING)) - mame_machine_manager::instance()->ui().process_natural_keyboard(); + if (mui.use_natural_keyboard() && (mui.machine().phase() == MACHINE_PHASE_RUNNING)) + mui.process_natural_keyboard(); if (!ui_disabled) { // paste command - if (machine.ui_input().pressed(IPT_UI_PASTE)) - mame_machine_manager::instance()->ui().paste(); + if (mui.machine().ui_input().pressed(IPT_UI_PASTE)) + mui.paste(); } - mame_machine_manager::instance()->ui().image_handler_ingame(); + mui.image_handler_ingame(); // handle a save input timecode request - if (machine.ui_input().pressed(IPT_UI_TIMECODE)) - machine.video().save_input_timecode(); + if (mui.machine().ui_input().pressed(IPT_UI_TIMECODE)) + mui.machine().video().save_input_timecode(); if (ui_disabled) return ui_disabled; - if (machine.ui_input().pressed(IPT_UI_CANCEL)) + if (mui.machine().ui_input().pressed(IPT_UI_CANCEL)) { - mame_machine_manager::instance()->ui().request_quit(); + mui.request_quit(); return 0; } // turn on menus if requested - if (machine.ui_input().pressed(IPT_UI_CONFIGURE)) - return mame_machine_manager::instance()->ui().set_handler(ui_menu::ui_handler, 0); + if (mui.machine().ui_input().pressed(IPT_UI_CONFIGURE)) + return mui.set_handler(ui_menu::ui_handler, 0); // if the on-screen display isn't up and the user has toggled it, turn it on - if ((machine.debug_flags & DEBUG_FLAG_ENABLED) == 0 && machine.ui_input().pressed(IPT_UI_ON_SCREEN_DISPLAY)) - return mame_machine_manager::instance()->ui().set_handler(ui_menu_sliders::ui_handler, 1); + if ((mui.machine().debug_flags & DEBUG_FLAG_ENABLED) == 0 && mui.machine().ui_input().pressed(IPT_UI_ON_SCREEN_DISPLAY)) + return mui.set_handler(ui_menu_sliders::ui_handler, 1); // handle a reset request - if (machine.ui_input().pressed(IPT_UI_RESET_MACHINE)) - machine.schedule_hard_reset(); - if (machine.ui_input().pressed(IPT_UI_SOFT_RESET)) - machine.schedule_soft_reset(); + if (mui.machine().ui_input().pressed(IPT_UI_RESET_MACHINE)) + mui.machine().schedule_hard_reset(); + if (mui.machine().ui_input().pressed(IPT_UI_SOFT_RESET)) + mui.machine().schedule_soft_reset(); // handle a request to display graphics/palette - if (machine.ui_input().pressed(IPT_UI_SHOW_GFX)) + if (mui.machine().ui_input().pressed(IPT_UI_SHOW_GFX)) { if (!is_paused) - machine.pause(); - return mame_machine_manager::instance()->ui().set_handler(ui_gfx_ui_handler, is_paused); + mui.machine().pause(); + return mui.set_handler(ui_gfx_ui_handler, is_paused); } // handle a tape control key - if (machine.ui_input().pressed(IPT_UI_TAPE_START)) + if (mui.machine().ui_input().pressed(IPT_UI_TAPE_START)) { - for (cassette_image_device &cass : cassette_device_iterator(machine.root_device())) + for (cassette_image_device &cass : cassette_device_iterator(mui.machine().root_device())) { cass.change_state(CASSETTE_PLAY, CASSETTE_MASK_UISTATE); return 0; } } - if (machine.ui_input().pressed(IPT_UI_TAPE_STOP)) + if (mui.machine().ui_input().pressed(IPT_UI_TAPE_STOP)) { - for (cassette_image_device &cass : cassette_device_iterator(machine.root_device())) + for (cassette_image_device &cass : cassette_device_iterator(mui.machine().root_device())) { cass.change_state(CASSETTE_STOPPED, CASSETTE_MASK_UISTATE); return 0; @@ -1653,87 +1636,87 @@ UINT32 mame_ui_manager::handler_ingame(running_machine &machine, render_containe } // handle a save state request - if (machine.ui_input().pressed(IPT_UI_SAVE_STATE)) + if (mui.machine().ui_input().pressed(IPT_UI_SAVE_STATE)) { - machine.pause(); - mame_machine_manager::instance()->ui().m_load_save_hold = true; - return mame_machine_manager::instance()->ui().set_handler(handler_load_save, LOADSAVE_SAVE); + mui.machine().pause(); + mui.m_load_save_hold = true; + return mui.set_handler(handler_load_save, LOADSAVE_SAVE); } // handle a load state request - if (machine.ui_input().pressed(IPT_UI_LOAD_STATE)) + if (mui.machine().ui_input().pressed(IPT_UI_LOAD_STATE)) { - machine.pause(); - mame_machine_manager::instance()->ui().m_load_save_hold = true; - return mame_machine_manager::instance()->ui().set_handler(handler_load_save, LOADSAVE_LOAD); + mui.machine().pause(); + mui.m_load_save_hold = true; + return mui.set_handler(handler_load_save, LOADSAVE_LOAD); } // handle a save snapshot request - if (machine.ui_input().pressed(IPT_UI_SNAPSHOT)) - machine.video().save_active_screen_snapshots(); + if (mui.machine().ui_input().pressed(IPT_UI_SNAPSHOT)) + mui.machine().video().save_active_screen_snapshots(); // toggle pause - if (machine.ui_input().pressed(IPT_UI_PAUSE)) - machine.toggle_pause(); + if (mui.machine().ui_input().pressed(IPT_UI_PAUSE)) + mui.machine().toggle_pause(); // pause single step - if (machine.ui_input().pressed(IPT_UI_PAUSE_SINGLE)) + if (mui.machine().ui_input().pressed(IPT_UI_PAUSE_SINGLE)) { - mame_machine_manager::instance()->ui().set_single_step(true); - machine.resume(); + mui.set_single_step(true); + mui.machine().resume(); } // handle a toggle cheats request - if (machine.ui_input().pressed(IPT_UI_TOGGLE_CHEAT)) + if (mui.machine().ui_input().pressed(IPT_UI_TOGGLE_CHEAT)) mame_machine_manager::instance()->cheat().set_enable(!mame_machine_manager::instance()->cheat().enabled()); // toggle movie recording - if (machine.ui_input().pressed(IPT_UI_RECORD_MOVIE)) - machine.video().toggle_record_movie(); + if (mui.machine().ui_input().pressed(IPT_UI_RECORD_MOVIE)) + mui.machine().video().toggle_record_movie(); // toggle profiler display - if (machine.ui_input().pressed(IPT_UI_SHOW_PROFILER)) - mame_machine_manager::instance()->ui().set_show_profiler(!mame_machine_manager::instance()->ui().show_profiler()); + if (mui.machine().ui_input().pressed(IPT_UI_SHOW_PROFILER)) + mui.set_show_profiler(!mui.show_profiler()); // toggle FPS display - if (machine.ui_input().pressed(IPT_UI_SHOW_FPS)) - mame_machine_manager::instance()->ui().set_show_fps(!mame_machine_manager::instance()->ui().show_fps()); + if (mui.machine().ui_input().pressed(IPT_UI_SHOW_FPS)) + mui.set_show_fps(!mui.show_fps()); // increment frameskip? - if (machine.ui_input().pressed(IPT_UI_FRAMESKIP_INC)) - mame_machine_manager::instance()->ui().increase_frameskip(); + if (mui.machine().ui_input().pressed(IPT_UI_FRAMESKIP_INC)) + mui.increase_frameskip(); // decrement frameskip? - if (machine.ui_input().pressed(IPT_UI_FRAMESKIP_DEC)) - mame_machine_manager::instance()->ui().decrease_frameskip(); + if (mui.machine().ui_input().pressed(IPT_UI_FRAMESKIP_DEC)) + mui.decrease_frameskip(); // toggle throttle? - if (machine.ui_input().pressed(IPT_UI_THROTTLE)) - machine.video().toggle_throttle(); + if (mui.machine().ui_input().pressed(IPT_UI_THROTTLE)) + mui.machine().video().toggle_throttle(); // toggle autofire - if (machine.ui_input().pressed(IPT_UI_TOGGLE_AUTOFIRE)) + if (mui.machine().ui_input().pressed(IPT_UI_TOGGLE_AUTOFIRE)) { - if (!machine.options().cheat()) + if (!mui.machine().options().cheat()) { - machine.popmessage(_("Autofire can't be enabled")); + mui.machine().popmessage(_("Autofire can't be enabled")); } else { - bool autofire_toggle = machine.ioport().get_autofire_toggle(); - machine.ioport().set_autofire_toggle(!autofire_toggle); - machine.popmessage("Autofire %s", autofire_toggle ? _("Enabled") : _("Disabled")); + bool autofire_toggle = mui.machine().ioport().get_autofire_toggle(); + mui.machine().ioport().set_autofire_toggle(!autofire_toggle); + mui.machine().popmessage("Autofire %s", autofire_toggle ? _("Enabled") : _("Disabled")); } } // check for fast forward - if (machine.ioport().type_pressed(IPT_UI_FAST_FORWARD)) + if (mui.machine().ioport().type_pressed(IPT_UI_FAST_FORWARD)) { - machine.video().set_fastforward(true); - mame_machine_manager::instance()->ui().show_fps_temp(0.5); + mui.machine().video().set_fastforward(true); + mui.show_fps_temp(0.5); } else - machine.video().set_fastforward(false); + mui.machine().video().set_fastforward(false); return 0; } @@ -1744,7 +1727,7 @@ UINT32 mame_ui_manager::handler_ingame(running_machine &machine, render_containe // specifying a game to save or load //------------------------------------------------- -UINT32 mame_ui_manager::handler_load_save(running_machine &machine, render_container *container, UINT32 state) +UINT32 mame_ui_manager::handler_load_save(mame_ui_manager &mui, render_container *container, UINT32 state) { char filename[20]; char file = 0; @@ -1755,52 +1738,52 @@ UINT32 mame_ui_manager::handler_load_save(running_machine &machine, render_conta // okay, we're waiting for a key to select a slot; display a message if (state == LOADSAVE_SAVE) - mame_machine_manager::instance()->ui().draw_message_window(container, _("Select position to save to")); + mui.draw_message_window(container, _("Select position to save to")); else - mame_machine_manager::instance()->ui().draw_message_window(container, _("Select position to load from")); + mui.draw_message_window(container, _("Select position to load from")); // if load/save state sequence is still being pressed, do not read the filename yet - if (mame_machine_manager::instance()->ui().m_load_save_hold) { + if (mui.m_load_save_hold) { bool seq_in_progress = false; const input_seq &load_save_seq = state == LOADSAVE_SAVE ? - machine.ioport().type_seq(IPT_UI_SAVE_STATE) : - machine.ioport().type_seq(IPT_UI_LOAD_STATE); + mui.machine().ioport().type_seq(IPT_UI_SAVE_STATE) : + mui.machine().ioport().type_seq(IPT_UI_LOAD_STATE); for (int i = 0; i < load_save_seq.length(); i++) - if (machine.input().code_pressed_once(load_save_seq[i])) + if (mui.machine().input().code_pressed_once(load_save_seq[i])) seq_in_progress = true; if (seq_in_progress) return state; else - mame_machine_manager::instance()->ui().m_load_save_hold = false; + mui.m_load_save_hold = false; } // check for cancel key - if (machine.ui_input().pressed(IPT_UI_CANCEL)) + if (mui.machine().ui_input().pressed(IPT_UI_CANCEL)) { // display a popup indicating things were cancelled if (state == LOADSAVE_SAVE) - machine.popmessage(_("Save cancelled")); + mui.machine().popmessage(_("Save cancelled")); else - machine.popmessage(_("Load cancelled")); + mui.machine().popmessage(_("Load cancelled")); // reset the state - machine.resume(); + mui.machine().resume(); return UI_HANDLER_CANCEL; } // check for A-Z or 0-9 for (input_item_id id = ITEM_ID_A; id <= ITEM_ID_Z; ++id) - if (machine.input().code_pressed_once(input_code(DEVICE_CLASS_KEYBOARD, 0, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id))) + if (mui.machine().input().code_pressed_once(input_code(DEVICE_CLASS_KEYBOARD, 0, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id))) file = id - ITEM_ID_A + 'a'; if (file == 0) for (input_item_id id = ITEM_ID_0; id <= ITEM_ID_9; ++id) - if (machine.input().code_pressed_once(input_code(DEVICE_CLASS_KEYBOARD, 0, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id))) + if (mui.machine().input().code_pressed_once(input_code(DEVICE_CLASS_KEYBOARD, 0, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id))) file = id - ITEM_ID_0 + '0'; if (file == 0) for (input_item_id id = ITEM_ID_0_PAD; id <= ITEM_ID_9_PAD; ++id) - if (machine.input().code_pressed_once(input_code(DEVICE_CLASS_KEYBOARD, 0, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id))) + if (mui.machine().input().code_pressed_once(input_code(DEVICE_CLASS_KEYBOARD, 0, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id))) file = id - ITEM_ID_0_PAD + '0'; if (file == 0) { @@ -1808,7 +1791,7 @@ UINT32 mame_ui_manager::handler_load_save(running_machine &machine, render_conta for (int joy_index = 0; joy_index <= MAX_SAVED_STATE_JOYSTICK; joy_index++) for (input_item_id id = ITEM_ID_BUTTON1; id <= ITEM_ID_BUTTON32; ++id) - if (machine.input().code_pressed_once(input_code(DEVICE_CLASS_JOYSTICK, joy_index, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id))) + if (mui.machine().input().code_pressed_once(input_code(DEVICE_CLASS_JOYSTICK, joy_index, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, id))) { snprintf(filename, sizeof(filename), "joy%i-%i", joy_index, id - ITEM_ID_BUTTON1 + 1); found = true; @@ -1826,20 +1809,20 @@ UINT32 mame_ui_manager::handler_load_save(running_machine &machine, render_conta // display a popup indicating that the save will proceed if (state == LOADSAVE_SAVE) { - machine.popmessage(_("Save to position %s"), filename); - machine.schedule_save(filename); + mui.machine().popmessage(_("Save to position %s"), filename); + mui.machine().schedule_save(filename); } else { - machine.popmessage(_("Load from position %s"), filename); - machine.schedule_load(filename); + mui.machine().popmessage(_("Load from position %s"), filename); + mui.machine().schedule_load(filename); } // avoid handling the name of the save state slot as a seperate input - machine.ui_input().mark_all_as_pressed(); + mui.machine().ui_input().mark_all_as_pressed(); // remove the pause and reset the state - machine.resume(); + mui.machine().resume(); return UI_HANDLER_CANCEL; } @@ -1862,13 +1845,13 @@ void mame_ui_manager::request_quit() // confirming quit emulation //------------------------------------------------- -UINT32 mame_ui_manager::handler_confirm_quit(running_machine &machine, render_container *container, UINT32 state) +UINT32 mame_ui_manager::handler_confirm_quit(mame_ui_manager &mui, render_container *container, UINT32 state) { // get the text for 'UI Select' - std::string ui_select_text = machine.input().seq_name(machine.ioport().type_seq(IPT_UI_SELECT, 0, SEQ_TYPE_STANDARD)); + std::string ui_select_text = mui.machine().input().seq_name(mui.machine().ioport().type_seq(IPT_UI_SELECT, 0, SEQ_TYPE_STANDARD)); // get the text for 'UI Cancel' - std::string ui_cancel_text = machine.input().seq_name(machine.ioport().type_seq(IPT_UI_CANCEL, 0, SEQ_TYPE_STANDARD)); + std::string ui_cancel_text = mui.machine().input().seq_name(mui.machine().ioport().type_seq(IPT_UI_CANCEL, 0, SEQ_TYPE_STANDARD)); // assemble the quit message std::string quit_message = string_format(_("Are you sure you want to quit?\n\n" @@ -1877,17 +1860,17 @@ UINT32 mame_ui_manager::handler_confirm_quit(running_machine &machine, render_co ui_select_text, ui_cancel_text); - mame_machine_manager::instance()->ui().draw_text_box(container, quit_message.c_str(), JUSTIFY_CENTER, 0.5f, 0.5f, UI_RED_COLOR); - machine.pause(); + mui.draw_text_box(container, quit_message.c_str(), JUSTIFY_CENTER, 0.5f, 0.5f, UI_RED_COLOR); + mui.machine().pause(); // if the user press ENTER, quit the game - if (machine.ui_input().pressed(IPT_UI_SELECT)) - machine.schedule_exit(); + if (mui.machine().ui_input().pressed(IPT_UI_SELECT)) + mui.machine().schedule_exit(); // if the user press ESC, just continue - else if (machine.ui_input().pressed(IPT_UI_CANCEL)) + else if (mui.machine().ui_input().pressed(IPT_UI_CANCEL)) { - machine.resume(); + mui.machine().resume(); state = UI_HANDLER_CANCEL; } @@ -2736,3 +2719,96 @@ void mame_ui_manager::popup_time_string(int seconds, std::string message) // set a timer m_popup_text_end = osd_ticks() + osd_ticks_per_second() * seconds; } + + +/*************************************************************************** + LOADING AND SAVING OPTIONS +***************************************************************************/ + +//------------------------------------------------- +// load ui options +//------------------------------------------------- + +void mame_ui_manager::load_ui_options() +{ + // parse the file + std::string error; + // attempt to open the output file + emu_file file(machine().options().ini_path(), OPEN_FLAG_READ); + if (file.open("ui.ini") == osd_file::error::NONE) + { + bool result = options().parse_ini_file((util::core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_DRIVER_INI, error); + if (!result) + osd_printf_error("**Error loading ui.ini**"); + } +} + +//------------------------------------------------- +// save ui options +//------------------------------------------------- + +void mame_ui_manager::save_ui_options() +{ + // attempt to open the output file + emu_file file(machine().options().ini_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); + if (file.open("ui.ini") == osd_file::error::NONE) + { + // generate the updated INI + std::string initext = options().output_ini(); + file.puts(initext.c_str()); + file.close(); + } + else + machine().popmessage(_("**Error saving ui.ini**")); +} + +//------------------------------------------------- +// save main option +//------------------------------------------------- + +void mame_ui_manager::save_main_option() +{ + // parse the file + std::string error; + emu_options options(machine().options()); // This way we make sure that all OSD parts are in + std::string error_string; + + // attempt to open the main ini file + { + emu_file file(machine().options().ini_path(), OPEN_FLAG_READ); + if (file.open(emulator_info::get_configname(), ".ini") == osd_file::error::NONE) + { + bool result = options.parse_ini_file((util::core_file&)file, OPTION_PRIORITY_MAME_INI, OPTION_PRIORITY_DRIVER_INI, error); + if (!result) + { + osd_printf_error("**Error loading %s.ini**", emulator_info::get_configname()); + return; + } + } + } + + for (emu_options::entry &f_entry : machine().options()) + { + if (f_entry.is_changed()) + { + options.set_value(f_entry.name(), f_entry.value(), OPTION_PRIORITY_CMDLINE, error_string); + } + } + + // attempt to open the output file + { + emu_file file(machine().options().ini_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); + if (file.open(emulator_info::get_configname(), ".ini") == osd_file::error::NONE) + { + // generate the updated INI + std::string initext = options.output_ini(); + file.puts(initext.c_str()); + file.close(); + } + else { + machine().popmessage(_("**Error saving %s.ini**"), emulator_info::get_configname()); + return; + } + } + popup_time(3, "%s", _("\n Configuration saved \n\n")); +} diff --git a/src/frontend/mame/ui/ui.h b/src/frontend/mame/ui/ui.h index b45d20c6e63..bb218cb6266 100644 --- a/src/frontend/mame/ui/ui.h +++ b/src/frontend/mame/ui/ui.h @@ -17,7 +17,6 @@ #include "render.h" #include "moptions.h" -#include "mame.h" #include "language.h" #include "ui/uimain.h" @@ -41,8 +40,6 @@ class ui_menu_item; #define UI_BOX_TB_BORDER (UI_TARGET_FONT_HEIGHT * 0.25f) /* handy colors */ -#define ARGB_WHITE rgb_t(0xff,0xff,0xff,0xff) -#define ARGB_BLACK rgb_t(0xff,0x00,0x00,0x00) #define UI_GREEN_COLOR rgb_t(0xef,0x10,0x60,0x10) #define UI_YELLOW_COLOR rgb_t(0xef,0x60,0x60,0x10) #define UI_RED_COLOR rgb_t(0xf0,0x60,0x10,0x10) @@ -95,7 +92,8 @@ enum TYPE DEFINITIONS ***************************************************************************/ -typedef UINT32 (*ui_callback)(running_machine &, render_container *, UINT32); +class mame_ui_manager; +typedef UINT32 (*ui_callback)(mame_ui_manager &, render_container *, UINT32); // ======================> mame_ui_manager @@ -133,6 +131,11 @@ public: void draw_text_box(render_container *container, const char *text, int justify, float xpos, float ypos, rgb_t backcolor); void draw_message_window(render_container *container, const char *text); + // load/save options to file + void load_ui_options(); + void save_ui_options(); + void save_main_option(); + template <typename Format, typename... Params> void popup_time(int seconds, Format &&fmt, Params &&... args); void show_fps_temp(double seconds); void set_show_fps(bool show); @@ -196,11 +199,11 @@ private: std::string &warnings_string(std::string &buffer); // UI handlers - static UINT32 handler_messagebox(running_machine &machine, render_container *container, UINT32 state); - static UINT32 handler_messagebox_anykey(running_machine &machine, render_container *container, UINT32 state); - static UINT32 handler_ingame(running_machine &machine, render_container *container, UINT32 state); - static UINT32 handler_load_save(running_machine &machine, render_container *container, UINT32 state); - static UINT32 handler_confirm_quit(running_machine &machine, render_container *container, UINT32 state); + static UINT32 handler_messagebox(mame_ui_manager &mui, render_container *container, UINT32 state); + static UINT32 handler_messagebox_anykey(mame_ui_manager &mui, render_container *container, UINT32 state); + static UINT32 handler_ingame(mame_ui_manager &mui, render_container *container, UINT32 state); + static UINT32 handler_load_save(mame_ui_manager &mui, render_container *container, UINT32 state); + static UINT32 handler_confirm_quit(mame_ui_manager &mui, render_container *container, UINT32 state); // private methods void exit(); diff --git a/src/frontend/mame/ui/videoopt.cpp b/src/frontend/mame/ui/videoopt.cpp index f0f54a20702..a88fef2343c 100644 --- a/src/frontend/mame/ui/videoopt.cpp +++ b/src/frontend/mame/ui/videoopt.cpp @@ -24,7 +24,7 @@ void ui_menu_video_targets::handle() /* process the menu */ const ui_menu_event *menu_event = process(0); if (menu_event != nullptr && menu_event->iptkey == IPT_UI_SELECT) - ui_menu::stack_push(global_alloc_clear<ui_menu_video_options>(machine(), container, static_cast<render_target *>(menu_event->itemref))); + ui_menu::stack_push(global_alloc_clear<ui_menu_video_options>(ui(), container, static_cast<render_target *>(menu_event->itemref))); } @@ -33,7 +33,7 @@ void ui_menu_video_targets::handle() video targets menu -------------------------------------------------*/ -ui_menu_video_targets::ui_menu_video_targets(running_machine &machine, render_container *container) : ui_menu(machine, container) +ui_menu_video_targets::ui_menu_video_targets(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) { } @@ -164,7 +164,7 @@ void ui_menu_video_options::handle() video options menu -------------------------------------------------*/ -ui_menu_video_options::ui_menu_video_options(running_machine &machine, render_container *container, render_target *_target) : ui_menu(machine, container) +ui_menu_video_options::ui_menu_video_options(mame_ui_manager &mui, render_container *container, render_target *_target) : ui_menu(mui, container) { target = _target; } diff --git a/src/frontend/mame/ui/videoopt.h b/src/frontend/mame/ui/videoopt.h index 802f1295c08..02db8e61838 100644 --- a/src/frontend/mame/ui/videoopt.h +++ b/src/frontend/mame/ui/videoopt.h @@ -16,7 +16,7 @@ class ui_menu_video_targets : public ui_menu { public: - ui_menu_video_targets(running_machine &machine, render_container *container); + ui_menu_video_targets(mame_ui_manager &mui, render_container *container); virtual ~ui_menu_video_targets(); virtual void populate() override; virtual void handle() override; @@ -24,7 +24,7 @@ public: class ui_menu_video_options : public ui_menu { public: - ui_menu_video_options(running_machine &machine, render_container *container, render_target *target); + ui_menu_video_options(mame_ui_manager &mui, render_container *container, render_target *target); virtual ~ui_menu_video_options(); virtual void populate() override; virtual void handle() override; diff --git a/src/frontend/mame/ui/viewgfx.cpp b/src/frontend/mame/ui/viewgfx.cpp index 94949210dfc..67cc2990ab5 100644 --- a/src/frontend/mame/ui/viewgfx.cpp +++ b/src/frontend/mame/ui/viewgfx.cpp @@ -111,18 +111,18 @@ static void ui_gfx_exit(running_machine &machine); // palette handling static void palette_set_device(running_machine &machine, ui_gfx_state &state); static void palette_handle_keys(running_machine &machine, ui_gfx_state &state); -static void palette_handler(running_machine &machine, render_container *container, ui_gfx_state &state); +static void palette_handler(mame_ui_manager &mui, render_container *container, ui_gfx_state &state); // graphics set handling static void gfxset_handle_keys(running_machine &machine, ui_gfx_state &state, int xcells, int ycells); static void gfxset_draw_item(running_machine &machine, gfx_element &gfx, int index, bitmap_rgb32 &bitmap, int dstx, int dsty, int color, int rotate); static void gfxset_update_bitmap(running_machine &machine, ui_gfx_state &state, int xcells, int ycells, gfx_element &gfx); -static void gfxset_handler(running_machine &machine, render_container *container, ui_gfx_state &state); +static void gfxset_handler(mame_ui_manager &mui, render_container *container, ui_gfx_state &state); // tilemap handling static void tilemap_handle_keys(running_machine &machine, ui_gfx_state &state, int viswidth, int visheight); static void tilemap_update_bitmap(running_machine &machine, ui_gfx_state &state, int width, int height); -static void tilemap_handler(running_machine &machine, render_container *container, ui_gfx_state &state); +static void tilemap_handler(mame_ui_manager &mui, render_container *container, ui_gfx_state &state); @@ -240,16 +240,16 @@ bool ui_gfx_is_relevant(running_machine &machine) // ui_gfx_ui_handler - primary UI handler //------------------------------------------------- -UINT32 ui_gfx_ui_handler(running_machine &machine, render_container *container, UINT32 uistate) +UINT32 ui_gfx_ui_handler(mame_ui_manager &mui, render_container *container, UINT32 uistate) { ui_gfx_state &state = ui_gfx; // if we have nothing, implicitly cancel - if (!ui_gfx_is_relevant(machine)) + if (!ui_gfx_is_relevant(mui.machine())) goto cancel; // if we're not paused, mark the bitmap dirty - if (!machine.paused()) + if (!mui.machine().paused()) state.bitmap_dirty = true; // switch off the state to display something @@ -260,7 +260,7 @@ again: // if we have a palette, display it if (state.palette.devcount > 0) { - palette_handler(machine, container, state); + palette_handler(mui, container, state); break; } @@ -271,7 +271,7 @@ again: // if we have graphics sets, display them if (state.gfxset.devcount > 0) { - gfxset_handler(machine, container, state); + gfxset_handler(mui, container, state); break; } @@ -280,9 +280,9 @@ again: case UI_GFX_TILEMAP: // if we have tilemaps, display them - if (machine.tilemap().count() > 0) + if (mui.machine().tilemap().count() > 0) { - tilemap_handler(machine, container, state); + tilemap_handler(mui, container, state); break; } @@ -291,28 +291,28 @@ again: } // handle keys - if (machine.ui_input().pressed(IPT_UI_SELECT)) + if (mui.machine().ui_input().pressed(IPT_UI_SELECT)) { state.mode = (state.mode + 1) % 3; state.bitmap_dirty = true; } - if (machine.ui_input().pressed(IPT_UI_PAUSE)) + if (mui.machine().ui_input().pressed(IPT_UI_PAUSE)) { - if (machine.paused()) - machine.resume(); + if (mui.machine().paused()) + mui.machine().resume(); else - machine.pause(); + mui.machine().pause(); } - if (machine.ui_input().pressed(IPT_UI_CANCEL) || machine.ui_input().pressed(IPT_UI_SHOW_GFX)) + if (mui.machine().ui_input().pressed(IPT_UI_CANCEL) || mui.machine().ui_input().pressed(IPT_UI_SHOW_GFX)) goto cancel; return uistate; cancel: if (!uistate) - machine.resume(); + mui.machine().resume(); state.bitmap_dirty = true; return UI_HANDLER_CANCEL; } @@ -340,13 +340,13 @@ static void palette_set_device(running_machine &machine, ui_gfx_state &state) // viewer //------------------------------------------------- -static void palette_handler(running_machine &machine, render_container *container, ui_gfx_state &state) +static void palette_handler(mame_ui_manager &mui, render_container *container, ui_gfx_state &state) { palette_device *palette = state.palette.device; int total = state.palette.which ? palette->indirect_entries() : palette->entries(); const rgb_t *raw_color = palette->palette()->entry_list_raw(); - render_font *ui_font = mame_machine_manager::instance()->ui().get_font(); + render_font *ui_font = mui.get_font(); float cellwidth, cellheight; float chwidth, chheight; float titlewidth; @@ -357,8 +357,8 @@ static void palette_handler(running_machine &machine, render_container *containe char title[100]; // add a half character padding for the box - chheight = mame_machine_manager::instance()->ui().get_line_height(); - chwidth = ui_font->char_width(chheight, machine.render().ui_aspect(), '0'); + chheight = mui.get_line_height(); + chwidth = ui_font->char_width(chheight, mui.machine().render().ui_aspect(), '0'); boxbounds.x0 = 0.0f + 0.5f * chwidth; boxbounds.x1 = 1.0f - 0.5f * chwidth; boxbounds.y0 = 0.0f + 0.5f * chheight; @@ -380,21 +380,21 @@ static void palette_handler(running_machine &machine, render_container *containe // figure out the title and expand the outer box to fit const char *suffix = palette->indirect_entries() == 0 ? "" : state.palette.which ? _(" COLORS") : _(" PENS"); sprintf(title, "'%s'%s", palette->tag(), suffix); - titlewidth = ui_font->string_width(chheight, machine.render().ui_aspect(), title); + titlewidth = ui_font->string_width(chheight, mui.machine().render().ui_aspect(), title); x0 = 0.0f; if (boxbounds.x1 - boxbounds.x0 < titlewidth + chwidth) x0 = boxbounds.x0 - (0.5f - 0.5f * (titlewidth + chwidth)); // go ahead and draw the outer box now - mame_machine_manager::instance()->ui().draw_outlined_box(container, boxbounds.x0 - x0, boxbounds.y0, boxbounds.x1 + x0, boxbounds.y1, UI_GFXVIEWER_BG_COLOR); + mui.draw_outlined_box(container, boxbounds.x0 - x0, boxbounds.y0, boxbounds.x1 + x0, boxbounds.y1, UI_GFXVIEWER_BG_COLOR); // draw the title x0 = 0.5f - 0.5f * titlewidth; y0 = boxbounds.y0 + 0.5f * chheight; for (x = 0; title[x] != 0; x++) { - container->add_char(x0, y0, chheight, machine.render().ui_aspect(), ARGB_WHITE, *ui_font, title[x]); - x0 += ui_font->char_width(chheight, machine.render().ui_aspect(), title[x]); + container->add_char(x0, y0, chheight, mui.machine().render().ui_aspect(), rgb_t::white, *ui_font, title[x]); + x0 += ui_font->char_width(chheight, mui.machine().render().ui_aspect(), title[x]); } // compute the cell size @@ -407,12 +407,12 @@ static void palette_handler(running_machine &machine, render_container *containe { x0 = boxbounds.x0 + 6.0f * chwidth + (float)x * cellwidth; y0 = boxbounds.y0 + 2.0f * chheight; - container->add_char(x0 + 0.5f * (cellwidth - chwidth), y0, chheight, machine.render().ui_aspect(), ARGB_WHITE, *ui_font, "0123456789ABCDEF"[x & 0xf]); + container->add_char(x0 + 0.5f * (cellwidth - chwidth), y0, chheight, mui.machine().render().ui_aspect(), rgb_t::white, *ui_font, "0123456789ABCDEF"[x & 0xf]); // if we're skipping, draw a point between the character and the box to indicate which // one it's referring to if (skip != 0) - container->add_point(x0 + 0.5f * cellwidth, 0.5f * (y0 + chheight + cellboxbounds.y0), UI_LINE_WIDTH, ARGB_WHITE, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + container->add_point(x0 + 0.5f * cellwidth, 0.5f * (y0 + chheight + cellboxbounds.y0), UI_LINE_WIDTH, rgb_t::white, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); } // draw the side column headers @@ -429,14 +429,14 @@ static void palette_handler(running_machine &machine, render_container *containe x0 = boxbounds.x0 + 5.5f * chwidth; y0 = boxbounds.y0 + 3.5f * chheight + (float)y * cellheight; if (skip != 0) - container->add_point(0.5f * (x0 + cellboxbounds.x0), y0 + 0.5f * cellheight, UI_LINE_WIDTH, ARGB_WHITE, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + container->add_point(0.5f * (x0 + cellboxbounds.x0), y0 + 0.5f * cellheight, UI_LINE_WIDTH, rgb_t::white, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); // draw the row header sprintf(buffer, "%5X", state.palette.offset + y * state.palette.columns); for (x = 4; x >= 0; x--) { - x0 -= ui_font->char_width(chheight, machine.render().ui_aspect(), buffer[x]); - container->add_char(x0, y0 + 0.5f * (cellheight - chheight), chheight, machine.render().ui_aspect(), ARGB_WHITE, *ui_font, buffer[x]); + x0 -= ui_font->char_width(chheight, mui.machine().render().ui_aspect(), buffer[x]); + container->add_char(x0, y0 + 0.5f * (cellheight - chheight), chheight, mui.machine().render().ui_aspect(), rgb_t::white, *ui_font, buffer[x]); } } @@ -455,7 +455,7 @@ static void palette_handler(running_machine &machine, render_container *containe } // handle keys - palette_handle_keys(machine, state); + palette_handle_keys(mui.machine(), state); } @@ -547,9 +547,9 @@ static void palette_handle_keys(running_machine &machine, ui_gfx_state &state) // viewer //------------------------------------------------- -static void gfxset_handler(running_machine &machine, render_container *container, ui_gfx_state &state) +static void gfxset_handler(mame_ui_manager &mui, render_container *container, ui_gfx_state &state) { - render_font *ui_font = mame_machine_manager::instance()->ui().get_font(); + render_font *ui_font = mui.get_font(); int dev = state.gfxset.devindex; int set = state.gfxset.set; ui_gfx_info &info = state.gfxdev[dev]; @@ -564,8 +564,8 @@ static void gfxset_handler(running_machine &machine, render_container *container render_bounds cellboxbounds; render_bounds boxbounds; int cellboxwidth, cellboxheight; - int targwidth = machine.render().ui_target().width(); - int targheight = machine.render().ui_target().height(); + int targwidth = mui.machine().render().ui_target().width(); + int targheight = mui.machine().render().ui_target().height(); int cellxpix, cellypix; int xcells, ycells; int pixelscale = 0; @@ -573,8 +573,8 @@ static void gfxset_handler(running_machine &machine, render_container *container char title[100]; // add a half character padding for the box - chheight = mame_machine_manager::instance()->ui().get_line_height(); - chwidth = ui_font->char_width(chheight, machine.render().ui_aspect(), '0'); + chheight = mui.get_line_height(); + chwidth = ui_font->char_width(chheight, mui.machine().render().ui_aspect(), '0'); boxbounds.x0 = 0.0f + 0.5f * chwidth; boxbounds.x1 = 1.0f - 0.5f * chwidth; boxbounds.y0 = 0.0f + 0.5f * chheight; @@ -643,21 +643,21 @@ static void gfxset_handler(running_machine &machine, render_container *container set, info.setcount - 1, gfx.width(), gfx.height(), info.color[set]); - titlewidth = ui_font->string_width(chheight, machine.render().ui_aspect(), title); + titlewidth = ui_font->string_width(chheight, mui.machine().render().ui_aspect(), title); x0 = 0.0f; if (boxbounds.x1 - boxbounds.x0 < titlewidth + chwidth) x0 = boxbounds.x0 - (0.5f - 0.5f * (titlewidth + chwidth)); // go ahead and draw the outer box now - mame_machine_manager::instance()->ui().draw_outlined_box(container, boxbounds.x0 - x0, boxbounds.y0, boxbounds.x1 + x0, boxbounds.y1, UI_GFXVIEWER_BG_COLOR); + mui.draw_outlined_box(container, boxbounds.x0 - x0, boxbounds.y0, boxbounds.x1 + x0, boxbounds.y1, UI_GFXVIEWER_BG_COLOR); // draw the title x0 = 0.5f - 0.5f * titlewidth; y0 = boxbounds.y0 + 0.5f * chheight; for (x = 0; title[x] != 0; x++) { - container->add_char(x0, y0, chheight, machine.render().ui_aspect(), ARGB_WHITE, *ui_font, title[x]); - x0 += ui_font->char_width(chheight, machine.render().ui_aspect(), title[x]); + container->add_char(x0, y0, chheight, mui.machine().render().ui_aspect(), rgb_t::white, *ui_font, title[x]); + x0 += ui_font->char_width(chheight, mui.machine().render().ui_aspect(), title[x]); } // draw the top column headers @@ -666,12 +666,12 @@ static void gfxset_handler(running_machine &machine, render_container *container { x0 = boxbounds.x0 + 6.0f * chwidth + (float)x * cellwidth; y0 = boxbounds.y0 + 2.0f * chheight; - container->add_char(x0 + 0.5f * (cellwidth - chwidth), y0, chheight, machine.render().ui_aspect(), ARGB_WHITE, *ui_font, "0123456789ABCDEF"[x & 0xf]); + container->add_char(x0 + 0.5f * (cellwidth - chwidth), y0, chheight, mui.machine().render().ui_aspect(), rgb_t::white, *ui_font, "0123456789ABCDEF"[x & 0xf]); // if we're skipping, draw a point between the character and the box to indicate which // one it's referring to if (skip != 0) - container->add_point(x0 + 0.5f * cellwidth, 0.5f * (y0 + chheight + boxbounds.y0 + 3.5f * chheight), UI_LINE_WIDTH, ARGB_WHITE, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + container->add_point(x0 + 0.5f * cellwidth, 0.5f * (y0 + chheight + boxbounds.y0 + 3.5f * chheight), UI_LINE_WIDTH, rgb_t::white, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); } // draw the side column headers @@ -688,28 +688,28 @@ static void gfxset_handler(running_machine &machine, render_container *container x0 = boxbounds.x0 + 5.5f * chwidth; y0 = boxbounds.y0 + 3.5f * chheight + (float)y * cellheight; if (skip != 0) - container->add_point(0.5f * (x0 + boxbounds.x0 + 6.0f * chwidth), y0 + 0.5f * cellheight, UI_LINE_WIDTH, ARGB_WHITE, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + container->add_point(0.5f * (x0 + boxbounds.x0 + 6.0f * chwidth), y0 + 0.5f * cellheight, UI_LINE_WIDTH, rgb_t::white, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); // draw the row header sprintf(buffer, "%5X", info.offset[set] + y * xcells); for (x = 4; x >= 0; x--) { - x0 -= ui_font->char_width(chheight, machine.render().ui_aspect(), buffer[x]); - container->add_char(x0, y0 + 0.5f * (cellheight - chheight), chheight, machine.render().ui_aspect(), ARGB_WHITE, *ui_font, buffer[x]); + x0 -= ui_font->char_width(chheight, mui.machine().render().ui_aspect(), buffer[x]); + container->add_char(x0, y0 + 0.5f * (cellheight - chheight), chheight, mui.machine().render().ui_aspect(), rgb_t::white, *ui_font, buffer[x]); } } // update the bitmap - gfxset_update_bitmap(machine, state, xcells, ycells, gfx); + gfxset_update_bitmap(mui.machine(), state, xcells, ycells, gfx); // add the final quad container->add_quad(boxbounds.x0 + 6.0f * chwidth, boxbounds.y0 + 3.5f * chheight, boxbounds.x0 + 6.0f * chwidth + (float)cellboxwidth / (float)targwidth, boxbounds.y0 + 3.5f * chheight + (float)cellboxheight / (float)targheight, - ARGB_WHITE, state.texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + rgb_t::white, state.texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); // handle keyboard navigation before drawing - gfxset_handle_keys(machine, state, xcells, ycells); + gfxset_handle_keys(mui.machine(), state, xcells, ycells); } @@ -947,14 +947,14 @@ static void gfxset_draw_item(running_machine &machine, gfx_element &gfx, int ind // viewer //------------------------------------------------- -static void tilemap_handler(running_machine &machine, render_container *container, ui_gfx_state &state) +static void tilemap_handler(mame_ui_manager &mui, render_container *container, ui_gfx_state &state) { - render_font *ui_font = mame_machine_manager::instance()->ui().get_font(); + render_font *ui_font = mui.get_font(); float chwidth, chheight; render_bounds mapboxbounds; render_bounds boxbounds; - int targwidth = machine.render().ui_target().width(); - int targheight = machine.render().ui_target().height(); + int targwidth = mui.machine().render().ui_target().width(); + int targheight = mui.machine().render().ui_target().height(); float titlewidth; float x0, y0; int mapboxwidth, mapboxheight; @@ -964,15 +964,15 @@ static void tilemap_handler(running_machine &machine, render_container *containe char title[100]; // get the size of the tilemap itself - tilemap_t *tilemap = machine.tilemap().find(state.tilemap.which); + tilemap_t *tilemap = mui.machine().tilemap().find(state.tilemap.which); mapwidth = tilemap->width(); mapheight = tilemap->height(); if (state.tilemap.rotate & ORIENTATION_SWAP_XY) { UINT32 temp = mapwidth; mapwidth = mapheight; mapheight = temp; } // add a half character padding for the box - chheight = mame_machine_manager::instance()->ui().get_line_height(); - chwidth = ui_font->char_width(chheight, machine.render().ui_aspect(), '0'); + chheight = mui.get_line_height(); + chwidth = ui_font->char_width(chheight, mui.machine().render().ui_aspect(), '0'); boxbounds.x0 = 0.0f + 0.5f * chwidth; boxbounds.x1 = 1.0f - 0.5f * chwidth; boxbounds.y0 = 0.0f + 0.5f * chheight; @@ -1018,8 +1018,8 @@ static void tilemap_handler(running_machine &machine, render_container *containe boxbounds.y1 = mapboxbounds.y1 + 0.5f * chheight; // figure out the title and expand the outer box to fit - sprintf(title, "TILEMAP %d/%d %dx%d OFFS %d,%d", state.tilemap.which, machine.tilemap().count() - 1, mapwidth, mapheight, state.tilemap.xoffs, state.tilemap.yoffs); - titlewidth = ui_font->string_width(chheight, machine.render().ui_aspect(), title); + sprintf(title, "TILEMAP %d/%d %dx%d OFFS %d,%d", state.tilemap.which, mui.machine().tilemap().count() - 1, mapwidth, mapheight, state.tilemap.xoffs, state.tilemap.yoffs); + titlewidth = ui_font->string_width(chheight, mui.machine().render().ui_aspect(), title); if (boxbounds.x1 - boxbounds.x0 < titlewidth + chwidth) { boxbounds.x0 = 0.5f - 0.5f * (titlewidth + chwidth); @@ -1027,28 +1027,28 @@ static void tilemap_handler(running_machine &machine, render_container *containe } // go ahead and draw the outer box now - mame_machine_manager::instance()->ui().draw_outlined_box(container, boxbounds.x0, boxbounds.y0, boxbounds.x1, boxbounds.y1, UI_GFXVIEWER_BG_COLOR); + mui.draw_outlined_box(container, boxbounds.x0, boxbounds.y0, boxbounds.x1, boxbounds.y1, UI_GFXVIEWER_BG_COLOR); // draw the title x0 = 0.5f - 0.5f * titlewidth; y0 = boxbounds.y0 + 0.5f * chheight; for (x = 0; title[x] != 0; x++) { - container->add_char(x0, y0, chheight, machine.render().ui_aspect(), ARGB_WHITE, *ui_font, title[x]); - x0 += ui_font->char_width(chheight, machine.render().ui_aspect(), title[x]); + container->add_char(x0, y0, chheight, mui.machine().render().ui_aspect(), rgb_t::white, *ui_font, title[x]); + x0 += ui_font->char_width(chheight, mui.machine().render().ui_aspect(), title[x]); } // update the bitmap - tilemap_update_bitmap(machine, state, mapboxwidth / pixelscale, mapboxheight / pixelscale); + tilemap_update_bitmap(mui.machine(), state, mapboxwidth / pixelscale, mapboxheight / pixelscale); // add the final quad container->add_quad(mapboxbounds.x0, mapboxbounds.y0, mapboxbounds.x1, mapboxbounds.y1, - ARGB_WHITE, state.texture, + rgb_t::white, state.texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXORIENT(state.tilemap.rotate)); // handle keyboard input - tilemap_handle_keys(machine, state, mapboxwidth, mapboxheight); + tilemap_handle_keys(mui.machine(), state, mapboxwidth, mapboxheight); } diff --git a/src/frontend/mame/ui/viewgfx.h b/src/frontend/mame/ui/viewgfx.h index 16c257476f0..88906163d88 100644 --- a/src/frontend/mame/ui/viewgfx.h +++ b/src/frontend/mame/ui/viewgfx.h @@ -26,7 +26,7 @@ void ui_gfx_init(running_machine &machine); bool ui_gfx_is_relevant(running_machine &machine); // master handler -UINT32 ui_gfx_ui_handler(running_machine &machine, render_container *container, UINT32 state); +UINT32 ui_gfx_ui_handler(mame_ui_manager &mui, render_container *container, UINT32 state); #endif /* __UI_VIEWGFX_H__ */ diff --git a/src/osd/modules/debugger/debugint.cpp b/src/osd/modules/debugger/debugint.cpp index b894f84f1a0..57041498681 100644 --- a/src/osd/modules/debugger/debugint.cpp +++ b/src/osd/modules/debugger/debugint.cpp @@ -9,6 +9,7 @@ *********************************************************************/ #include "emu.h" +#include "mame.h" #include "ui/ui.h" #include "ui/menu.h" #include "rendfont.h" @@ -1310,7 +1311,7 @@ static void render_editor(DView_edit *editor) class ui_menu_debug : public ui_menu { public: - ui_menu_debug(running_machine &machine, render_container *container) : ui_menu(machine, container) {} + ui_menu_debug(mame_ui_manager &mui, render_container *container) : ui_menu(mui, container) {} virtual ~ui_menu_debug() {} virtual void populate() override {} virtual void handle() override {} @@ -1327,7 +1328,7 @@ static void CreateMainMenu(running_machine &machine) menu_sel = menu->get_selection(); global_free( menu); } - menu = global_alloc_clear<ui_menu_debug>(machine, &machine.render().ui_container()); + menu = global_alloc_clear<ui_menu_debug>(mame_machine_manager::instance()->ui(), &machine.render().ui_container()); switch (focus_view->type) { |