summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend
diff options
context:
space:
mode:
author npwoods <npwoods@mess.org>2019-06-28 17:30:09 -0400
committer R. Belmont <rb6502@users.noreply.github.com>2019-06-28 17:30:09 -0400
commit697ff7bd7149d635a838543b65409dd42d739087 (patch)
tree23d49d81fd2b87ed565fac5c758b73b678fa7ad2 /src/frontend
parentcec557538d0d55b11780e83ac60e0fef68b37e0d (diff)
Changed the various usages of UI_*COLOR to be calls to src/frontend/mame/ui/moptions.h (#5282)
* Changed the various usages of UI_*COLOR to be calls to src/frontend/mame/ui/moptions.h The various UI_*COLOR macros were implemented as calls to decode_ui_color, which cached the values for the various options in a static array, which was obviously a gross hack. This refactoring is strategic because I am trying to confine awareness of mame_ui_manager to code in src/frontend/mame/ui, and the implementation of decode_ui_color() relied on the ability to access mame_ui_manager as a singleton from outside this code. * Created a ui_colors object, so that queries for UI RGB values would not always require parsing strings * Converted a few more options().zyx_color() to colors().zyx_color() * A few more misses from earlier
Diffstat (limited to 'src/frontend')
-rw-r--r--src/frontend/mame/luaengine.cpp2
-rw-r--r--src/frontend/mame/ui/auditmenu.cpp2
-rw-r--r--src/frontend/mame/ui/custui.cpp19
-rw-r--r--src/frontend/mame/ui/datmenu.cpp32
-rw-r--r--src/frontend/mame/ui/dirmenu.cpp12
-rw-r--r--src/frontend/mame/ui/filesel.cpp6
-rw-r--r--src/frontend/mame/ui/info.cpp17
-rw-r--r--src/frontend/mame/ui/info.h8
-rw-r--r--src/frontend/mame/ui/inputmap.cpp10
-rw-r--r--src/frontend/mame/ui/menu.cpp40
-rw-r--r--src/frontend/mame/ui/menu.h2
-rw-r--r--src/frontend/mame/ui/miscmenu.cpp4
-rw-r--r--src/frontend/mame/ui/moptions.cpp19
-rw-r--r--src/frontend/mame/ui/moptions.h35
-rw-r--r--src/frontend/mame/ui/optsmenu.cpp2
-rw-r--r--src/frontend/mame/ui/selector.cpp4
-rw-r--r--src/frontend/mame/ui/selmenu.cpp122
-rw-r--r--src/frontend/mame/ui/simpleselgame.cpp8
-rw-r--r--src/frontend/mame/ui/sliders.cpp14
-rw-r--r--src/frontend/mame/ui/slotopt.cpp2
-rw-r--r--src/frontend/mame/ui/sndmenu.cpp2
-rw-r--r--src/frontend/mame/ui/submenu.cpp4
-rw-r--r--src/frontend/mame/ui/ui.cpp80
-rw-r--r--src/frontend/mame/ui/ui.h62
-rw-r--r--src/frontend/mame/ui/utils.cpp4
-rw-r--r--src/frontend/mame/ui/viewgfx.cpp6
26 files changed, 276 insertions, 242 deletions
diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp
index 06bda8b713c..3024e9cc20b 100644
--- a/src/frontend/mame/luaengine.cpp
+++ b/src/frontend/mame/luaengine.cpp
@@ -2067,7 +2067,7 @@ void lua_engine::initialize()
luaL_error(m_lua_state, "Error in param 1 to draw_text");
return;
}
- rgb_t textcolor = UI_TEXT_COLOR;
+ rgb_t textcolor = mame_machine_manager::instance()->ui().colors().text_color();
rgb_t bgcolor = 0;
if(color.is<uint32_t>())
textcolor = rgb_t(color.as<uint32_t>());
diff --git a/src/frontend/mame/ui/auditmenu.cpp b/src/frontend/mame/ui/auditmenu.cpp
index 7d5cbfd7305..547fa298b21 100644
--- a/src/frontend/mame/ui/auditmenu.cpp
+++ b/src/frontend/mame/ui/auditmenu.cpp
@@ -117,7 +117,7 @@ void menu_audit::custom_render(void *selectedref, float top, float bottom, float
std::begin(m_prompt), std::end(m_prompt),
x, x2, y - top, y - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::NEVER, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
break;
case phase::AUDIT:
diff --git a/src/frontend/mame/ui/custui.cpp b/src/frontend/mame/ui/custui.cpp
index 186a5bc1c2d..cfd786dd6e3 100644
--- a/src/frontend/mame/ui/custui.cpp
+++ b/src/frontend/mame/ui/custui.cpp
@@ -175,7 +175,7 @@ void menu_custom_ui::custom_render(void *selectedref, float top, float bottom, f
std::begin(text), std::end(text),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
}
//-------------------------------------------------
@@ -364,7 +364,7 @@ void menu_font_ui::custom_render(void *selectedref, float top, float bottom, flo
std::begin(toptext), std::end(toptext),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
if (uintptr_t(selectedref) == INFOS_SIZE)
{
@@ -373,14 +373,14 @@ void menu_font_ui::custom_render(void *selectedref, float top, float bottom, flo
std::begin(bottomtext), std::end(bottomtext),
origx1, origx2, origy2 + UI_BOX_TB_BORDER, origy2 + bottom,
ui::text_layout::LEFT, ui::text_layout::NEVER, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, m_info_size);
+ ui().colors().text_color(), UI_GREEN_COLOR, m_info_size);
}
}
//-------------------------------------------------
// ctor
//-------------------------------------------------
-#define SET_COLOR_UI(var, opt) var[M##opt].color = opt; var[M##opt].option = OPTION_##opt
+#define SET_COLOR_UI(var, opt) var[M##opt].color = mui.options().rgb_value(OPTION_##opt); var[M##opt].option = OPTION_##opt
menu_colors_ui::menu_colors_ui(mame_ui_manager &mui, render_container &container) : menu(mui, container)
{
@@ -414,6 +414,9 @@ menu_colors_ui::~menu_colors_ui()
dec_color = string_format("%x", (uint32_t)m_color_table[index].color);
ui().options().set_value(m_color_table[index].option, dec_color.c_str(), OPTION_PRIORITY_CMDLINE);
}
+
+ // refresh our cached colors
+ ui().colors().refresh(ui().options());
}
//-------------------------------------------------
@@ -483,7 +486,7 @@ void menu_colors_ui::custom_render(void *selectedref, float top, float bottom, f
std::begin(toptext), std::end(toptext),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
// bottom text
// get the text for 'UI Select'
@@ -492,7 +495,7 @@ void menu_colors_ui::custom_render(void *selectedref, float top, float bottom, f
std::begin(bottomtext), std::end(bottomtext),
origx1, origx2, origy2 + UI_BOX_TB_BORDER, origy2 + bottom,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_RED_COLOR, 1.0f);
+ ui().colors().text_color(), UI_RED_COLOR, 1.0f);
// compute maxwidth
char const *const topbuf = _("Menu Preview");
@@ -535,7 +538,7 @@ void menu_colors_ui::custom_render(void *selectedref, float top, float bottom, f
// draw the text within it
ui().draw_text_full(container(), topbuf, x1, y1, x2 - x1, ui::text_layout::CENTER, ui::text_layout::NEVER,
- mame_ui_manager::NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ mame_ui_manager::NORMAL, ui().colors().text_color(), ui().colors().text_bg_color(), nullptr, nullptr);
// compute our bounds for menu preview
float line_height = ui().get_line_height();
@@ -808,7 +811,7 @@ void menu_rgb_ui::custom_render(void *selectedref, float top, float bottom, floa
// draw the text within it
ui().draw_text_full(container(), m_title.c_str(), x1, y1, x2 - x1, ui::text_layout::CENTER, ui::text_layout::NEVER,
- mame_ui_manager::NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR);
+ mame_ui_manager::NORMAL, ui().colors().text_color(), ui().colors().text_bg_color());
std::string sampletxt(_("Color preview ="));
ui().draw_text_full(container(), sampletxt.c_str(), 0.0f, 0.0f, 1.0f, ui::text_layout::CENTER, ui::text_layout::NEVER,
diff --git a/src/frontend/mame/ui/datmenu.cpp b/src/frontend/mame/ui/datmenu.cpp
index 52e7416a43e..0dc5600a068 100644
--- a/src/frontend/mame/ui/datmenu.cpp
+++ b/src/frontend/mame/ui/datmenu.cpp
@@ -180,7 +180,7 @@ void menu_dats_view::draw(uint32_t flags)
float y2 = visible_top + visible_main_menu_height + UI_BOX_TB_BORDER + extra_height;
float line = visible_top + float(m_visible_lines) * line_height;
- ui().draw_outlined_box(container(), x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ ui().draw_outlined_box(container(), x1, y1, x2, y2, ui().colors().background_color());
m_visible_lines = (std::min)(visible_items, m_visible_lines);
top_line = (std::max)(0, top_line);
@@ -200,16 +200,16 @@ void menu_dats_view::draw(uint32_t flags)
float const line_x1 = x2 - 0.5f * UI_LINE_WIDTH;
float const line_y1 = line_y + line_height;
- rgb_t fgcolor = UI_TEXT_COLOR;
- rgb_t bgcolor = UI_TEXT_BG_COLOR;
+ rgb_t fgcolor = ui().colors().text_color();
+ rgb_t bgcolor = ui().colors().text_bg_color();
if (!linenum && top_line)
{
// if we're on the top line, display the up arrow
if (mouse_in_rect(line_x0, line_y0, line_x1, line_y1))
{
- fgcolor = UI_MOUSEOVER_COLOR;
- bgcolor = UI_MOUSEOVER_BG_COLOR;
+ fgcolor = ui().colors().mouseover_color();
+ bgcolor = ui().colors().mouseover_bg_color();
highlight(line_x0, line_y0, line_x1, line_y1, bgcolor);
set_hover(HOVER_ARROW_UP);
}
@@ -223,8 +223,8 @@ void menu_dats_view::draw(uint32_t flags)
// if we're on the bottom line, display the down arrow
if (mouse_in_rect(line_x0, line_y0, line_x1, line_y1))
{
- fgcolor = UI_MOUSEOVER_COLOR;
- bgcolor = UI_MOUSEOVER_BG_COLOR;
+ fgcolor = ui().colors().mouseover_color();
+ bgcolor = ui().colors().mouseover_bg_color();
highlight(line_x0, line_y0, line_x1, line_y1, bgcolor);
set_hover(HOVER_ARROW_DOWN);
}
@@ -253,8 +253,8 @@ void menu_dats_view::draw(uint32_t flags)
float const line_y0 = line;
float const line_x1 = x2 - 0.5f * UI_LINE_WIDTH;
float const line_y1 = line + line_height;
- rgb_t const fgcolor = UI_SELECTED_COLOR;
- rgb_t const bgcolor = UI_SELECTED_BG_COLOR;
+ rgb_t const fgcolor = ui().colors().selected_color();
+ rgb_t const bgcolor = ui().colors().selected_bg_color();
if (mouse_in_rect(line_x0, line_y0, line_x1, line_y1) && is_selectable(pitem))
set_hover(count);
@@ -263,7 +263,7 @@ void menu_dats_view::draw(uint32_t 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));
+ UI_LINE_WIDTH, ui().colors().text_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
}
else
{
@@ -315,7 +315,7 @@ void menu_dats_view::custom_render(void *selectedref, float top, float bottom, f
y1 += UI_BOX_TB_BORDER;
ui().draw_text_full(container(), driver.c_str(), x1, y1, x2 - x1, ui::text_layout::CENTER, ui::text_layout::NEVER,
- mame_ui_manager::NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ mame_ui_manager::NORMAL, ui().colors().text_color(), ui().colors().text_bg_color(), nullptr, nullptr);
maxwidth = 0;
for (auto & elem : m_items_list)
@@ -334,7 +334,7 @@ void menu_dats_view::custom_render(void *selectedref, float top, float bottom, f
y2 += ui().get_line_height() + 2.0f * UI_BOX_TB_BORDER;
// draw a box
- ui().draw_outlined_box(container(), x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ ui().draw_outlined_box(container(), x1, y1, x2, y2, ui().colors().background_color());
// take off the borders
y1 += UI_BOX_TB_BORDER;
@@ -344,11 +344,11 @@ void menu_dats_view::custom_render(void *selectedref, float top, float bottom, f
for (auto & elem : m_items_list)
{
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;
+ rgb_t fcolor = (m_actual == x) ? rgb_t(0xff, 0xff, 0xff, 0x00) : ui().colors().text_color();
+ rgb_t bcolor = (m_actual == x) ? rgb_t(0xff, 0xff, 0xff, 0xff) : ui().colors().text_bg_color();
ui().draw_text_full(container(), elem.label.c_str(), x1, y1, 1.0f, ui::text_layout::LEFT, ui::text_layout::NEVER, mame_ui_manager::NONE, fcolor, bcolor, &width, nullptr);
- if (bcolor != UI_TEXT_BG_COLOR)
+ if (bcolor != ui().colors().text_bg_color())
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(1));
@@ -380,7 +380,7 @@ void menu_dats_view::custom_render(void *selectedref, float top, float bottom, f
// draw the text within it
ui().draw_text_full(container(), revision.c_str(), x1, y1, x2 - x1, ui::text_layout::CENTER, ui::text_layout::TRUNCATE,
- mame_ui_manager::NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ mame_ui_manager::NORMAL, ui().colors().text_color(), ui().colors().text_bg_color(), nullptr, nullptr);
}
//-------------------------------------------------
diff --git a/src/frontend/mame/ui/dirmenu.cpp b/src/frontend/mame/ui/dirmenu.cpp
index 77e64b8463d..8584edc359d 100644
--- a/src/frontend/mame/ui/dirmenu.cpp
+++ b/src/frontend/mame/ui/dirmenu.cpp
@@ -118,7 +118,7 @@ void menu_directory::custom_render(void *selectedref, float top, float bottom, f
std::begin(toptext), std::end(toptext),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
}
/**************************************************
@@ -196,12 +196,12 @@ void menu_display_actual::custom_render(void *selectedref, float top, float bott
std::begin(m_folders), std::end(m_folders),
origx1, origx2, origy1 - (3.0f * UI_BOX_TB_BORDER) - (m_folders.size() * lineheight), origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_BACKGROUND_COLOR, 1.0f));
+ ui().colors().text_color(), ui().colors().background_color(), 1.0f));
draw_text_box(
std::begin(m_heading), std::end(m_heading),
0.5f * (1.0f - maxwidth), 0.5f * (1.0f + maxwidth), origy1 - top, origy1 - top + lineheight + (2.0f * UI_BOX_TB_BORDER),
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
}
/**************************************************
@@ -423,7 +423,7 @@ void menu_add_change_folder::custom_render(void *selectedref, float top, float b
std::begin(toptext), std::end(toptext),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::NEVER, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
// bottom text
char const *const bottomtext[] = { _("Press TAB to set") };
@@ -431,7 +431,7 @@ void menu_add_change_folder::custom_render(void *selectedref, float top, float b
std::begin(bottomtext), std::end(bottomtext),
origx1, origx2, origy2 + UI_BOX_TB_BORDER, origy2 + bottom,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_RED_COLOR, 1.0f);
+ ui().colors().text_color(), UI_RED_COLOR, 1.0f);
}
/**************************************************
@@ -515,7 +515,7 @@ void menu_remove_folder::custom_render(void *selectedref, float top, float botto
std::begin(toptext), std::end(toptext),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
}
} // namespace ui
diff --git a/src/frontend/mame/ui/filesel.cpp b/src/frontend/mame/ui/filesel.cpp
index 3907f007517..d9a6755bf74 100644
--- a/src/frontend/mame/ui/filesel.cpp
+++ b/src/frontend/mame/ui/filesel.cpp
@@ -83,7 +83,7 @@ void menu_file_selector::custom_render(void *selectedref, float top, float botto
extra_text_position(origx1, origx2, origy1, top, layout, -1, x1, y1, x2, y2);
// draw a box
- ui().draw_outlined_box(container(), x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ ui().draw_outlined_box(container(), x1, y1, x2, y2, ui().colors().background_color());
// take off the borders
x1 += UI_BOX_LR_BORDER;
@@ -100,8 +100,8 @@ void menu_file_selector::custom_render(void *selectedref, float top, float botto
m_hover_directory = m_current_directory.substr(0, target_dir_end + strlen(PATH_SEPARATOR));
// highlight the text in question
- rgb_t fgcolor = UI_MOUSEOVER_COLOR;
- rgb_t bgcolor = UI_MOUSEOVER_BG_COLOR;
+ rgb_t fgcolor = ui().colors().mouseover_color();
+ rgb_t bgcolor = ui().colors().mouseover_bg_color();
layout.restyle(target_dir_start, target_dir_end - target_dir_start, &fgcolor, &bgcolor);
}
else
diff --git a/src/frontend/mame/ui/info.cpp b/src/frontend/mame/ui/info.cpp
index e7235b89111..46d092722d2 100644
--- a/src/frontend/mame/ui/info.cpp
+++ b/src/frontend/mame/ui/info.cpp
@@ -58,18 +58,19 @@ constexpr std::pair<device_t::feature_type, char const *> FEATURE_NAMES[] = {
// machine_static_info - constructors
//-------------------------------------------------
-machine_static_info::machine_static_info(machine_config const &config)
- : machine_static_info(config, nullptr)
+machine_static_info::machine_static_info(const ui_options &options, machine_config const &config)
+ : machine_static_info(options, config, nullptr)
{
}
-machine_static_info::machine_static_info(machine_config const &config, ioport_list const &ports)
- : machine_static_info(config, &ports)
+machine_static_info::machine_static_info(const ui_options &options, machine_config const &config, ioport_list const &ports)
+ : machine_static_info(options, config, &ports)
{
}
-machine_static_info::machine_static_info(machine_config const &config, ioport_list const *ports)
- : m_flags(config.gamedrv().flags)
+machine_static_info::machine_static_info(const ui_options &options, machine_config const &config, ioport_list const *ports)
+ : m_options(options)
+ , m_flags(config.gamedrv().flags)
, m_unemulated_features(config.gamedrv().type.unemulated_features())
, m_imperfect_features(config.gamedrv().type.imperfect_features())
, m_has_bioses(false)
@@ -154,7 +155,7 @@ rgb_t machine_static_info::warnings_color() const
else if ((machine_flags() & MACHINE_WARNINGS) || unemulated_features() || imperfect_features())
return UI_YELLOW_COLOR;
else
- return UI_BACKGROUND_COLOR;
+ return m_options.background_color();
}
@@ -164,7 +165,7 @@ rgb_t machine_static_info::warnings_color() const
//-------------------------------------------------
machine_info::machine_info(running_machine &machine)
- : machine_static_info(machine.config(), machine.ioport().ports())
+ : machine_static_info(dynamic_cast<mame_ui_manager *>(&machine.ui())->options(), machine.config(), machine.ioport().ports())
, m_machine(machine)
{
}
diff --git a/src/frontend/mame/ui/info.h b/src/frontend/mame/ui/info.h
index c5733b8073f..cd97d16eae8 100644
--- a/src/frontend/mame/ui/info.h
+++ b/src/frontend/mame/ui/info.h
@@ -21,7 +21,7 @@ class machine_static_info
{
public:
// construction
- machine_static_info(machine_config const &config);
+ machine_static_info(const ui_options &options, machine_config const &config);
// overall emulation status
::machine_flags::type machine_flags() const { return m_flags; }
@@ -43,10 +43,12 @@ public:
rgb_t warnings_color() const;
protected:
- machine_static_info(machine_config const &config, ioport_list const &ports);
+ machine_static_info(const ui_options &options, machine_config const &config, ioport_list const &ports);
private:
- machine_static_info(machine_config const &config, ioport_list const *ports);
+ machine_static_info(const ui_options &options, machine_config const &config, ioport_list const *ports);
+
+ const ui_options & m_options;
// overall feature status
::machine_flags::type m_flags;
diff --git a/src/frontend/mame/ui/inputmap.cpp b/src/frontend/mame/ui/inputmap.cpp
index 0aa0dc8dcd2..0170dc1d09d 100644
--- a/src/frontend/mame/ui/inputmap.cpp
+++ b/src/frontend/mame/ui/inputmap.cpp
@@ -644,7 +644,7 @@ void menu_settings_dip_switches::custom_render(void *selectedref, float top, flo
y2 = y1 + bottom;
// draw extra menu area
- ui().draw_outlined_box(container(), x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ ui().draw_outlined_box(container(), x1, y1, x2, y2, ui().colors().background_color());
y1 += (float)DIP_SWITCH_SPACING;
// iterate over DIP switches
@@ -698,7 +698,7 @@ void menu_settings_dip_switches::custom_render_one(float x1, float y1, float x2,
ui::text_layout::RIGHT,
ui::text_layout::NEVER,
mame_ui_manager::NORMAL,
- UI_TEXT_COLOR,
+ ui().colors().text_color(),
PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA),
nullptr ,
nullptr);
@@ -714,7 +714,7 @@ void menu_settings_dip_switches::custom_render_one(float x1, float y1, float x2,
float innerx1;
/* first outline the switch */
- 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().colors().background_color());
/* compute x1/x2 for the inner filled in switch */
innerx1 = x1 + (switch_field_width - switch_width) / 2;
@@ -724,13 +724,13 @@ void menu_settings_dip_switches::custom_render_one(float x1, float y1, float x2,
{
float innery1 = (dip->state & (1 << toggle)) ? y1_on : y1_off;
container().add_rect(innerx1, innery1, innerx1 + switch_width, innery1 + SINGLE_TOGGLE_SWITCH_HEIGHT,
- (selectedmask & (1 << toggle)) ? UI_DIPSW_COLOR : UI_TEXT_COLOR,
+ (selectedmask & (1 << toggle)) ? ui().colors().dipsw_color() : ui().colors().text_color(),
PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
}
else
{
container().add_rect(innerx1, y1_off, innerx1 + switch_width, y1_on + SINGLE_TOGGLE_SWITCH_HEIGHT,
- UI_UNAVAILABLE_COLOR,
+ ui().colors().unavailable_color(),
PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
}
diff --git a/src/frontend/mame/ui/menu.cpp b/src/frontend/mame/ui/menu.cpp
index d8f6725c922..f270712c73a 100644
--- a/src/frontend/mame/ui/menu.cpp
+++ b/src/frontend/mame/ui/menu.cpp
@@ -614,7 +614,7 @@ void menu::draw(uint32_t flags)
float const x2 = visible_left + visible_width + UI_BOX_LR_BORDER;
float const y2 = visible_top + visible_main_menu_height + UI_BOX_TB_BORDER;
if (!customonly)
- ui().draw_outlined_box(container(), x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ ui().draw_outlined_box(container(), x1, y1, x2, y2, ui().colors().background_color());
if (top_line < 0 || is_first_selected())
top_line = 0;
@@ -652,10 +652,10 @@ void menu::draw(uint32_t flags)
auto const itemnum = top_line + linenum;
menu_item const &pitem = m_items[itemnum];
char const *const itemtext = pitem.text.c_str();
- rgb_t fgcolor = UI_TEXT_COLOR;
- rgb_t bgcolor = UI_TEXT_BG_COLOR;
- rgb_t fgcolor2 = UI_SUBITEM_COLOR;
- rgb_t fgcolor3 = UI_CLONE_COLOR;
+ rgb_t fgcolor = ui().colors().text_color();
+ rgb_t bgcolor = ui().colors().text_bg_color();
+ rgb_t fgcolor2 = ui().colors().subitem_color();
+ rgb_t fgcolor3 = ui().colors().clone_color();
float const line_y0 = visible_top + (float)linenum * line_height;
float const line_y1 = line_y0 + line_height;
@@ -666,19 +666,19 @@ void menu::draw(uint32_t flags)
// if we're selected, draw with a different background
if (is_selected(itemnum))
{
- fgcolor = fgcolor2 = fgcolor3 = UI_SELECTED_COLOR;
- bgcolor = UI_SELECTED_BG_COLOR;
+ fgcolor = fgcolor2 = fgcolor3 = ui().colors().selected_color();
+ bgcolor = ui().colors().selected_bg_color();
}
// else if the mouse is over this item, draw with a different background
else if (itemnum == m_hover)
{
- fgcolor = fgcolor2 = fgcolor3 = UI_MOUSEOVER_COLOR;
- bgcolor = UI_MOUSEOVER_BG_COLOR;
+ fgcolor = fgcolor2 = fgcolor3 = ui().colors().mouseover_color();
+ bgcolor = ui().colors().mouseover_bg_color();
}
// if we have some background hilighting to do, add a quad behind everything else
- if (bgcolor != UI_TEXT_BG_COLOR)
+ if (bgcolor != ui().colors().text_bg_color())
highlight(line_x0, line_y0, line_x1, line_y1, bgcolor);
if (linenum == 0 && show_top_arrow)
@@ -710,7 +710,7 @@ void menu::draw(uint32_t flags)
else if (pitem.type == menu_item_type::SEPARATOR)
{
// if we're just a divider, draw a line
- container().add_line(visible_left, line_y0 + 0.5f * line_height, visible_left + visible_width, line_y0 + 0.5f * line_height, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ container().add_line(visible_left, line_y0 + 0.5f * line_height, visible_left + visible_width, line_y0 + 0.5f * line_height, UI_LINE_WIDTH, ui().colors().border_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
}
else if (pitem.subtext.empty())
{
@@ -718,8 +718,8 @@ void menu::draw(uint32_t flags)
if (pitem.flags & FLAG_UI_HEADING)
{
float heading_width = ui().get_string_width(itemtext);
- container().add_line(visible_left, line_y0 + 0.5f * line_height, visible_left + ((visible_width - heading_width) / 2) - UI_BOX_LR_BORDER, line_y0 + 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_y0 + 0.5f * line_height, visible_left + visible_width, line_y0 + 0.5f * line_height, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ container().add_line(visible_left, line_y0 + 0.5f * line_height, visible_left + ((visible_width - heading_width) / 2) - UI_BOX_LR_BORDER, line_y0 + 0.5f * line_height, UI_LINE_WIDTH, ui().colors().border_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ container().add_line(visible_left + visible_width - ((visible_width - heading_width) / 2) + UI_BOX_LR_BORDER, line_y0 + 0.5f * line_height, visible_left + visible_width, line_y0 + 0.5f * line_height, UI_LINE_WIDTH, ui().colors().border_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
}
ui().draw_text_full(container(), itemtext, effective_left, line_y0, effective_width,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, mame_ui_manager::NORMAL, fgcolor, bgcolor, nullptr, nullptr);
@@ -822,10 +822,10 @@ void menu::draw(uint32_t flags)
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);
+ subitem_invert ? ui().colors().selected_bg_color() : ui().colors().background_color());
ui().draw_text_full(container(), pitem.subtext.c_str(), target_x, target_y, target_width,
- ui::text_layout::RIGHT, ui::text_layout::WORD, mame_ui_manager::NORMAL, UI_SELECTED_COLOR, UI_SELECTED_BG_COLOR, nullptr, nullptr);
+ ui::text_layout::RIGHT, ui::text_layout::WORD, mame_ui_manager::NORMAL, ui().colors().selected_color(), ui().colors().selected_bg_color(), nullptr, nullptr);
}
// if there is something special to add, do it by calling the virtual method
@@ -882,9 +882,9 @@ void menu::draw_text_box()
target_y - UI_BOX_TB_BORDER,
target_x + target_width + gutter_width + UI_BOX_LR_BORDER,
target_y + target_height + UI_BOX_TB_BORDER,
- (m_items[0].flags & FLAG_REDTEXT) ? UI_RED_COLOR : UI_BACKGROUND_COLOR);
+ (m_items[0].flags & FLAG_REDTEXT) ? UI_RED_COLOR : ui().colors().background_color());
ui().draw_text_full(container(), text, target_x, target_y, target_width,
- ui::text_layout::LEFT, ui::text_layout::WORD, mame_ui_manager::NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ ui::text_layout::LEFT, ui::text_layout::WORD, mame_ui_manager::NORMAL, ui().colors().text_color(), ui().colors().text_bg_color(), nullptr, nullptr);
// draw the "return to prior menu" text with a hilight behind it
highlight(
@@ -892,9 +892,9 @@ void menu::draw_text_box()
target_y + target_height - line_height,
target_x + target_width - 0.5f * UI_LINE_WIDTH,
target_y + target_height,
- UI_SELECTED_BG_COLOR);
+ ui().colors().selected_bg_color());
ui().draw_text_full(container(), backtext, target_x, target_y + target_height - line_height, target_width,
- ui::text_layout::CENTER, ui::text_layout::TRUNCATE, mame_ui_manager::NORMAL, UI_SELECTED_COLOR, UI_SELECTED_BG_COLOR, nullptr, nullptr);
+ ui::text_layout::CENTER, ui::text_layout::TRUNCATE, mame_ui_manager::NORMAL, ui().colors().selected_color(), ui().colors().selected_bg_color(), nullptr, nullptr);
// artificially set the hover to the last item so a double-click exits
m_hover = m_items.size() - 1;
@@ -1334,7 +1334,7 @@ void menu::extra_text_draw_box(float origx1, float origx2, float origy, float ys
extra_text_position(origx1, origx2, origy, yspan, layout, direction, x1, y1, x2, y2);
// draw a box
- ui().draw_outlined_box(container(), x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ ui().draw_outlined_box(container(), x1, y1, x2, y2, ui().colors().background_color());
// take off the borders
x1 += UI_BOX_LR_BORDER;
diff --git a/src/frontend/mame/ui/menu.h b/src/frontend/mame/ui/menu.h
index fa3249899c1..bacb4e88721 100644
--- a/src/frontend/mame/ui/menu.h
+++ b/src/frontend/mame/ui/menu.h
@@ -246,7 +246,7 @@ protected:
ui().draw_text_full(
container(), get_c_str(*it),
x1, y1, x2 - x1, justify, wrap,
- mame_ui_manager::NORMAL, fgcolor, UI_TEXT_BG_COLOR,
+ mame_ui_manager::NORMAL, fgcolor, ui().colors().text_bg_color(),
nullptr, nullptr, text_size);
y1 += ui().get_line_height();
}
diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp
index e2f1f0615fc..2d5c18ced42 100644
--- a/src/frontend/mame/ui/miscmenu.cpp
+++ b/src/frontend/mame/ui/miscmenu.cpp
@@ -804,7 +804,7 @@ void menu_machine_configure::custom_render(void *selectedref, float top, float b
std::begin(text), std::end(text),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
}
void menu_machine_configure::setup_bios()
@@ -920,7 +920,7 @@ void menu_plugins_configure::custom_render(void *selectedref, float top, float b
std::begin(toptext), std::end(toptext),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
}
} // namespace ui
diff --git a/src/frontend/mame/ui/moptions.cpp b/src/frontend/mame/ui/moptions.cpp
index 9b070962932..1b4779ddaf0 100644
--- a/src/frontend/mame/ui/moptions.cpp
+++ b/src/frontend/mame/ui/moptions.cpp
@@ -88,3 +88,22 @@ ui_options::ui_options() : core_options()
{
add_entries(ui_options::s_option_entries);
}
+
+//-------------------------------------------------
+// rgb_value - decode an RGB option
+//-------------------------------------------------
+
+rgb_t ui_options::rgb_value(const char *option) const
+{
+ // find the entry
+ core_options::entry::shared_ptr entry = get_entry(option);
+
+ // look up the value, and sanity check the result
+ const char *value = entry->value();
+ int len = strlen(value);
+ if (len != 8)
+ value = entry->default_value().c_str();
+
+ // convert to an rgb_t
+ return rgb_t((uint32_t)strtoul(value, nullptr, 16));
+}
diff --git a/src/frontend/mame/ui/moptions.h b/src/frontend/mame/ui/moptions.h
index 5630cdf40e7..ddfa3971c3b 100644
--- a/src/frontend/mame/ui/moptions.h
+++ b/src/frontend/mame/ui/moptions.h
@@ -119,22 +119,25 @@ public:
int font_rows() const { return int_value(OPTION_FONT_ROWS); }
int hide_panels() const { return int_value(OPTION_HIDE_PANELS); }
- const char *ui_border_color() const { return value(OPTION_UI_BORDER_COLOR); }
- const char *ui_bg_color() const { return value(OPTION_UI_BACKGROUND_COLOR); }
- const char *ui_gfx_bg_color() const { return value(OPTION_UI_GFXVIEWER_BG_COLOR); }
- const char *ui_unavail_color() const { return value(OPTION_UI_UNAVAILABLE_COLOR); }
- const char *ui_text_color() const { return value(OPTION_UI_TEXT_COLOR); }
- const char *ui_text_bg_color() const { return value(OPTION_UI_TEXT_BG_COLOR); }
- const char *ui_subitem_color() const { return value(OPTION_UI_SUBITEM_COLOR); }
- const char *ui_clone_color() const { return value(OPTION_UI_CLONE_COLOR); }
- const char *ui_selected_color() const { return value(OPTION_UI_SELECTED_COLOR); }
- const char *ui_selected_bg_color() const { return value(OPTION_UI_SELECTED_BG_COLOR); }
- const char *ui_mouseover_color() const { return value(OPTION_UI_MOUSEOVER_COLOR); }
- const char *ui_mouseover_bg_color() const { return value(OPTION_UI_MOUSEOVER_BG_COLOR); }
- const char *ui_mousedown_color() const { return value(OPTION_UI_MOUSEDOWN_COLOR); }
- const char *ui_mousedown_bg_color() const { return value(OPTION_UI_MOUSEDOWN_BG_COLOR); }
- const char *ui_dipsw_color() const { return value(OPTION_UI_DIPSW_COLOR); }
- const char *ui_slider_color() const { return value(OPTION_UI_SLIDER_COLOR); }
+ rgb_t border_color() const { return rgb_value(OPTION_UI_BORDER_COLOR); }
+ rgb_t background_color() const { return rgb_value(OPTION_UI_BACKGROUND_COLOR); }
+ rgb_t gfxviewer_bg_color() const { return rgb_value(OPTION_UI_GFXVIEWER_BG_COLOR); }
+ rgb_t unavailable_color() const { return rgb_value(OPTION_UI_UNAVAILABLE_COLOR); }
+ rgb_t text_color() const { return rgb_value(OPTION_UI_TEXT_COLOR); }
+ rgb_t text_bg_color() const { return rgb_value(OPTION_UI_TEXT_BG_COLOR); }
+ rgb_t subitem_color() const { return rgb_value(OPTION_UI_SUBITEM_COLOR); }
+ rgb_t clone_color() const { return rgb_value(OPTION_UI_CLONE_COLOR); }
+ rgb_t selected_color() const { return rgb_value(OPTION_UI_SELECTED_COLOR); }
+ rgb_t selected_bg_color() const { return rgb_value(OPTION_UI_SELECTED_BG_COLOR); }
+ rgb_t mouseover_color() const { return rgb_value(OPTION_UI_MOUSEOVER_COLOR); }
+ rgb_t mouseover_bg_color() const { return rgb_value(OPTION_UI_MOUSEOVER_BG_COLOR); }
+ rgb_t mousedown_color() const { return rgb_value(OPTION_UI_MOUSEDOWN_COLOR); }
+ rgb_t mousedown_bg_color() const { return rgb_value(OPTION_UI_MOUSEDOWN_BG_COLOR); }
+ rgb_t dipsw_color() const { return rgb_value(OPTION_UI_DIPSW_COLOR); }
+ rgb_t slider_color() const { return rgb_value(OPTION_UI_SLIDER_COLOR); }
+
+ rgb_t rgb_value(const char *option) const;
+
private:
static const options_entry s_option_entries[];
};
diff --git a/src/frontend/mame/ui/optsmenu.cpp b/src/frontend/mame/ui/optsmenu.cpp
index 4452fae9bce..c3da06bd297 100644
--- a/src/frontend/mame/ui/optsmenu.cpp
+++ b/src/frontend/mame/ui/optsmenu.cpp
@@ -143,7 +143,7 @@ void menu_simple_game_options::custom_render(void *selectedref, float top, float
std::begin(toptext), std::end(toptext),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
}
diff --git a/src/frontend/mame/ui/selector.cpp b/src/frontend/mame/ui/selector.cpp
index 3ad8aef995a..c6a87e8d672 100644
--- a/src/frontend/mame/ui/selector.cpp
+++ b/src/frontend/mame/ui/selector.cpp
@@ -117,7 +117,7 @@ void menu_selector::custom_render(void *selectedref, float top, float bottom, fl
std::begin(tempbuf), std::end(tempbuf),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
// get the text for 'UI Select'
tempbuf[0] = string_format(_("Double click or press %1$s to select"), machine().input().seq_name(machine().ioport().type_seq(IPT_UI_SELECT, 0, SEQ_TYPE_STANDARD)));
@@ -125,7 +125,7 @@ void menu_selector::custom_render(void *selectedref, float top, float bottom, fl
std::begin(tempbuf), std::end(tempbuf),
origx1, origx2, origy2 + UI_BOX_TB_BORDER, origy2 + bottom,
ui::text_layout::CENTER, ui::text_layout::NEVER, false,
- UI_TEXT_COLOR, UI_RED_COLOR, 1.0f);
+ ui().colors().text_color(), UI_RED_COLOR, 1.0f);
}
//-------------------------------------------------
diff --git a/src/frontend/mame/ui/selmenu.cpp b/src/frontend/mame/ui/selmenu.cpp
index 40f83946262..21568a4f34e 100644
--- a/src/frontend/mame/ui/selmenu.cpp
+++ b/src/frontend/mame/ui/selmenu.cpp
@@ -263,7 +263,7 @@ void menu_select_launch::software_parts::custom_render(void *selectedref, float
std::begin(text), std::end(text),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
}
@@ -369,7 +369,7 @@ void menu_select_launch::bios_selection::custom_render(void *selectedref, float
std::begin(text), std::end(text),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
}
@@ -540,7 +540,7 @@ menu_select_launch::system_flags const &menu_select_launch::get_system_flags(gam
// aggregate flags
emu_options clean_options;
machine_config const mconfig(driver, clean_options);
- return m_flags.emplace(&driver, machine_static_info(mconfig)).first->second;
+ return m_flags.emplace(&driver, machine_static_info(ui().options(), mconfig)).first->second;
}
@@ -595,7 +595,7 @@ void menu_select_launch::custom_render(void *selectedref, float top, float botto
tempbuf, tempbuf + 3,
origx1, origx2, origy1 - top, y1,
ui::text_layout::CENTER, ui::text_layout::NEVER, true,
- UI_TEXT_COLOR, UI_BACKGROUND_COLOR, 1.0f);
+ ui().colors().text_color(), ui().colors().background_color(), 1.0f);
// draw toolbar
draw_toolbar(origx1, y1, origx2, origy1 - UI_BOX_TB_BORDER);
@@ -606,7 +606,7 @@ void menu_select_launch::custom_render(void *selectedref, float top, float botto
get_selection(swinfo, driver);
bool isstar = false;
- rgb_t color = UI_BACKGROUND_COLOR;
+ rgb_t color = ui().colors().background_color();
if (swinfo && ((swinfo->startempty != 1) || !driver))
{
isstar = mame_machine_manager::instance()->favorite().is_favorite_system_software(*swinfo);
@@ -706,7 +706,7 @@ void menu_select_launch::custom_render(void *selectedref, float top, float botto
std::begin(tempbuf), std::end(tempbuf),
origx1, origx2, origy2 + UI_BOX_TB_BORDER, origy2 + bottom,
ui::text_layout::CENTER, ui::text_layout::NEVER, true,
- UI_TEXT_COLOR, color, 1.0f);
+ ui().colors().text_color(), color, 1.0f);
// is favorite? draw the star
if (isstar)
@@ -808,22 +808,22 @@ void menu_select_launch::draw_common_arrow(float origx1, float origy1, float ori
float const al_y1 = origy1 + 0.9f * line_height;
rgb_t fgcolor_right, fgcolor_left;
- fgcolor_right = fgcolor_left = UI_TEXT_COLOR;
+ fgcolor_right = fgcolor_left = ui().colors().text_color();
// set hover
if (mouse_in_rect(ar_x0, ar_y0, ar_x1, ar_y1) && current != dmax)
{
- ui().draw_textured_box(container(), ar_x0 + 0.01f, ar_y0, ar_x1 - 0.01f, ar_y1, UI_MOUSEOVER_BG_COLOR, rgb_t(43, 43, 43),
+ ui().draw_textured_box(container(), ar_x0 + 0.01f, ar_y0, ar_x1 - 0.01f, ar_y1, ui().colors().mouseover_bg_color(), rgb_t(43, 43, 43),
hilight_main_texture(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(1));
set_hover(HOVER_UI_RIGHT);
- fgcolor_right = UI_MOUSEOVER_COLOR;
+ fgcolor_right = ui().colors().mouseover_color();
}
else if (mouse_in_rect(al_x0, al_y0, al_x1, al_y1) && current != dmin)
{
- ui().draw_textured_box(container(), al_x0 + 0.01f, al_y0, al_x1 - 0.01f, al_y1, UI_MOUSEOVER_BG_COLOR, rgb_t(43, 43, 43),
+ ui().draw_textured_box(container(), al_x0 + 0.01f, al_y0, al_x1 - 0.01f, al_y1, ui().colors().mouseover_bg_color(), rgb_t(43, 43, 43),
hilight_main_texture(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(1));
set_hover(HOVER_UI_LEFT);
- fgcolor_left = UI_MOUSEOVER_COLOR;
+ fgcolor_left = ui().colors().mouseover_color();
}
// apply arrow
@@ -847,15 +847,15 @@ void menu_select_launch::draw_common_arrow(float origx1, float origy1, float ori
void menu_select_launch::draw_info_arrow(int ub, float origx1, float origx2, float oy1, float line_height, float text_size, float ud_arrow_width)
{
- rgb_t fgcolor = UI_TEXT_COLOR;
+ rgb_t fgcolor = ui().colors().text_color();
uint32_t orientation = (!ub) ? ROT0 : ROT0 ^ ORIENTATION_FLIP_Y;
if (mouse_in_rect(origx1, oy1, origx2, oy1 + (line_height * text_size)))
{
- 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().colors().mouseover_bg_color(),
rgb_t(43, 43, 43), hilight_main_texture(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(1));
set_hover((!ub) ? HOVER_DAT_UP : HOVER_DAT_DOWN);
- fgcolor = UI_MOUSEOVER_COLOR;
+ fgcolor = ui().colors().mouseover_color();
}
draw_arrow(0.5f * (origx1 + origx2) - 0.5f * (ud_arrow_width * text_size), oy1 + 0.25f * (line_height * text_size),
@@ -905,7 +905,7 @@ float menu_select_launch::draw_left_panel(
float const origy1(y1);
float const origy2(y2);
x2 = x1 + left_width + 2.0f * UI_BOX_LR_BORDER;
- ui().draw_outlined_box(container(), x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ ui().draw_outlined_box(container(), x1, y1, x2, y2, ui().colors().background_color());
x1 += UI_BOX_LR_BORDER;
x2 -= UI_BOX_LR_BORDER;
y1 += UI_BOX_TB_BORDER;
@@ -931,12 +931,12 @@ float menu_select_launch::draw_left_panel(
}
// handle mouse hover in passing
- rgb_t bgcolor = UI_TEXT_BG_COLOR;
- rgb_t fgcolor = UI_TEXT_COLOR;
+ rgb_t bgcolor = ui().colors().text_bg_color();
+ rgb_t fgcolor = ui().colors().text_color();
if (mouse_in_rect(x1, y1, x2, y1 + line_height_max))
{
- bgcolor = UI_MOUSEOVER_BG_COLOR;
- fgcolor = UI_MOUSEOVER_COLOR;
+ bgcolor = ui().colors().mouseover_bg_color();
+ fgcolor = ui().colors().mouseover_color();
set_hover(HOVER_FILTER_FIRST + filter);
highlight(x1, y1, x2, y1 + line_height_max, bgcolor);
}
@@ -979,10 +979,10 @@ float menu_select_launch::draw_left_panel(
ui().draw_outlined_box(container(), x1, y1, x2, y2, rgb_t(0xef, 0x12, 0x47, 0x7b));
- rgb_t fgcolor = UI_TEXT_COLOR;
+ rgb_t fgcolor = ui().colors().text_color();
if (mouse_in_rect(x1, y1, x2, y2))
{
- fgcolor = UI_MOUSEOVER_COLOR;
+ fgcolor = ui().colors().mouseover_color();
set_hover(HOVER_LPANEL_ARROW);
}
@@ -1206,7 +1206,7 @@ void menu_select_launch::draw_toolbar(float x1, float y1, float x2, float y2)
set_hover(HOVER_B_FAV + z);
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]), ui::text_layout::CENTER, 0.5f, ypos, UI_BACKGROUND_COLOR);
+ ui().draw_text_box(container(), _(hover_msg[z]), ui::text_layout::CENTER, 0.5f, ypos, ui().colors().background_color());
}
container().add_quad(x1, y1, x2, y2, color, t_texture[z].get(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
@@ -1800,7 +1800,7 @@ void menu_select_launch::draw(uint32_t flags)
x1 = visible_left - UI_BOX_LR_BORDER;
x2 = visible_left + visible_width + UI_BOX_LR_BORDER;
float line = visible_top + (float(m_visible_lines) * line_height);
- ui().draw_outlined_box(container(), x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ ui().draw_outlined_box(container(), x1, y1, x2, y2, ui().colors().background_color());
if (visible_items < m_visible_lines)
m_visible_lines = visible_items;
@@ -1823,9 +1823,9 @@ void menu_select_launch::draw(uint32_t flags)
int itemnum = top_line + linenum;
const menu_item &pitem = item(itemnum);
const char *itemtext = pitem.text.c_str();
- rgb_t fgcolor = UI_TEXT_COLOR;
- rgb_t bgcolor = UI_TEXT_BG_COLOR;
- rgb_t fgcolor3 = UI_CLONE_COLOR;
+ rgb_t fgcolor = ui().colors().text_color();
+ rgb_t bgcolor = ui().colors().text_bg_color();
+ rgb_t fgcolor3 = ui().colors().clone_color();
float line_x0 = x1 + 0.5f * UI_LINE_WIDTH;
float line_y0 = line_y;
float line_x1 = x2 - 0.5f * UI_LINE_WIDTH;
@@ -1850,14 +1850,14 @@ void menu_select_launch::draw(uint32_t flags)
else if (itemnum == hover())
{
// else if the mouse is over this item, draw with a different background
- fgcolor = fgcolor3 = UI_MOUSEOVER_COLOR;
- bgcolor = UI_MOUSEOVER_BG_COLOR;
+ fgcolor = fgcolor3 = ui().options().mouseover_color();
+ bgcolor = ui().colors().mouseover_bg_color();
highlight(line_x0, line_y0, line_x1, line_y1, bgcolor);
}
else if (pitem.ref == m_prev_selected)
{
- fgcolor = fgcolor3 = UI_MOUSEOVER_COLOR;
- bgcolor = UI_MOUSEOVER_BG_COLOR;
+ fgcolor = fgcolor3 = ui().options().mouseover_color();
+ bgcolor = ui().colors().mouseover_bg_color();
ui().draw_textured_box(container(), line_x0 + 0.01f, line_y0, line_x1 - 0.01f, line_y1, bgcolor, rgb_t(43, 43, 43),
hilight_main_texture(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(1));
}
@@ -1884,7 +1884,7 @@ void menu_select_launch::draw(uint32_t flags)
{
// if we're just a divider, draw a line
container().add_line(visible_left, line_y + 0.5f * line_height, visible_left + visible_width, line_y + 0.5f * line_height,
- UI_LINE_WIDTH, UI_TEXT_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ UI_LINE_WIDTH, ui().colors().text_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
}
else if (pitem.subtext.empty())
{
@@ -1946,8 +1946,8 @@ void menu_select_launch::draw(uint32_t flags)
float line_y0 = line;
float line_x1 = x2 - 0.5f * UI_LINE_WIDTH;
float line_y1 = line + line_height;
- rgb_t fgcolor = UI_TEXT_COLOR;
- rgb_t bgcolor = UI_TEXT_BG_COLOR;
+ rgb_t fgcolor = ui().colors().text_color();
+ rgb_t bgcolor = ui().colors().text_bg_color();
if (mouse_in_rect(line_x0, line_y0, line_x1, line_y1) && is_selectable(pitem))
set_hover(count);
@@ -1963,15 +1963,15 @@ void menu_select_launch::draw(uint32_t flags)
// else if the mouse is over this item, draw with a different background
else if (count == hover())
{
- fgcolor = UI_MOUSEOVER_COLOR;
- bgcolor = UI_MOUSEOVER_BG_COLOR;
+ fgcolor = ui().options().mouseover_color();
+ bgcolor = ui().colors().mouseover_bg_color();
highlight(line_x0, line_y0, line_x1, line_y1, bgcolor);
}
if (pitem.type == menu_item_type::SEPARATOR)
{
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));
+ UI_LINE_WIDTH, ui().colors().text_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
}
else
{
@@ -2026,10 +2026,10 @@ void menu_select_launch::draw_right_panel(float origx1, float origy1, float orig
ui().draw_outlined_box(container(), origx1, origy1, origx2, origy2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
- rgb_t fgcolor(UI_TEXT_COLOR);
+ rgb_t fgcolor(ui().colors().text_color());
if (mouse_in_rect(origx1, origy1, x2, origy2))
{
- fgcolor = UI_MOUSEOVER_COLOR;
+ fgcolor = ui().options().mouseover_color();
set_hover(HOVER_RPANEL_ARROW);
}
@@ -2059,10 +2059,10 @@ float menu_select_launch::draw_right_box_title(float x1, float y1, float x2, flo
float const midl = (x2 - x1) * 0.5f;
// add outlined box for options
- ui().draw_outlined_box(container(), x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ ui().draw_outlined_box(container(), x1, y1, x2, y2, ui().colors().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));
+ container().add_line(x1 + midl, y1, x1 + midl, y1 + line_height, UI_LINE_WIDTH, ui().colors().border_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
std::string buffer[RP_LAST + 1];
buffer[RP_IMAGES] = _("Images");
@@ -2079,15 +2079,15 @@ float menu_select_launch::draw_right_box_title(float x1, float y1, float x2, flo
for (int cells = RP_FIRST; cells <= RP_LAST; ++cells)
{
- rgb_t bgcolor = UI_TEXT_BG_COLOR;
- rgb_t fgcolor = UI_TEXT_COLOR;
+ rgb_t bgcolor = ui().colors().text_bg_color();
+ rgb_t fgcolor = ui().colors().text_color();
if (mouse_in_rect(x1, y1, x1 + midl, y1 + line_height))
{
if (ui_globals::rpanel != cells)
{
- bgcolor = UI_MOUSEOVER_BG_COLOR;
- fgcolor = UI_MOUSEOVER_COLOR;
+ bgcolor = ui().colors().mouseover_bg_color();
+ fgcolor = ui().options().mouseover_color();
set_hover(HOVER_RP_FIRST + cells);
}
}
@@ -2095,9 +2095,9 @@ float menu_select_launch::draw_right_box_title(float x1, float y1, float x2, flo
if (ui_globals::rpanel != cells)
{
container().add_line(x1, y1 + line_height, x1 + midl, y1 + line_height, UI_LINE_WIDTH,
- UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
- if (fgcolor != UI_MOUSEOVER_COLOR)
- fgcolor = UI_CLONE_COLOR;
+ ui().colors().border_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ if (fgcolor != ui().colors().mouseover_color())
+ fgcolor = ui().colors().clone_color();
}
if (m_focus == focused_menu::RIGHTTOP && ui_globals::rpanel == cells)
@@ -2107,7 +2107,7 @@ float menu_select_launch::draw_right_box_title(float x1, float y1, float x2, flo
ui().draw_textured_box(container(), x1 + UI_LINE_WIDTH, y1 + UI_LINE_WIDTH, x1 + midl - UI_LINE_WIDTH, y1 + line_height,
bgcolor, rgb_t(43, 43, 43), hilight_main_texture(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXWRAP(1));
}
- else if (bgcolor == UI_MOUSEOVER_BG_COLOR)
+ else if (bgcolor == ui().colors().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(1));
@@ -2292,8 +2292,8 @@ std::string menu_select_launch::arts_render_common(float origx1, float origy1, f
title_size = (std::max)(text_length + 0.01f, title_size);
}
- rgb_t const fgcolor = (m_focus == focused_menu::RIGHTBOTTOM) ? rgb_t(0xff, 0xff, 0x00) : UI_TEXT_COLOR;
- rgb_t const bgcolor = (m_focus == focused_menu::RIGHTBOTTOM) ? rgb_t(0xff, 0xff, 0xff) : UI_TEXT_BG_COLOR;
+ rgb_t const fgcolor = (m_focus == focused_menu::RIGHTBOTTOM) ? rgb_t(0xff, 0xff, 0x00) : ui().colors().text_color();
+ rgb_t const bgcolor = (m_focus == focused_menu::RIGHTBOTTOM) ? rgb_t(0xff, 0xff, 0xff) : ui().colors().text_bg_color();
float const middle = origx2 - origx1;
// check size
@@ -2301,7 +2301,7 @@ std::string menu_select_launch::arts_render_common(float origx1, float origy1, f
float const tmp_size = (sc > middle) ? ((middle - 2.0f * gutter_width) / sc) : 1.0f;
title_size *= tmp_size;
- if (bgcolor != UI_TEXT_BG_COLOR)
+ if (bgcolor != ui().colors().text_bg_color())
{
ui().draw_textured_box(
container(),
@@ -2499,10 +2499,10 @@ float menu_select_launch::draw_collapsed_left_panel(float x1, float y1, float x2
ui().draw_outlined_box(container(), x1, y1, x2, y2, rgb_t(0xef, 0x12, 0x47, 0x7b)); // FIXME: magic numbers in colour?
- rgb_t fgcolor = UI_TEXT_COLOR;
+ rgb_t fgcolor = ui().colors().text_color();
if (mouse_in_rect(x1, y1, x2, y2))
{
- fgcolor = UI_MOUSEOVER_COLOR;
+ fgcolor = ui().options().mouseover_color();
set_hover(HOVER_LPANEL_ARROW);
}
@@ -2618,14 +2618,14 @@ void menu_select_launch::infos_render(float origx1, float origy1, float origx2,
container(), name,
origx1, origy1, origx2 - origx1,
ui::text_layout::CENTER, ui::text_layout::NEVER,
- mame_ui_manager::NONE, UI_TEXT_COLOR, UI_TEXT_BG_COLOR,
+ mame_ui_manager::NONE, ui().colors().text_color(), ui().colors().text_bg_color(),
&txt_length, nullptr);
txt_length += 0.01f;
title_size = (std::max)(txt_length, title_size);
}
- rgb_t fgcolor = UI_TEXT_COLOR;
- rgb_t bgcolor = UI_TEXT_BG_COLOR;
+ rgb_t fgcolor = ui().colors().text_color();
+ rgb_t bgcolor = ui().colors().text_bg_color();
if (get_focus() == focused_menu::RIGHTBOTTOM)
{
fgcolor = rgb_t(0xff, 0xff, 0xff, 0x00);
@@ -2639,7 +2639,7 @@ void menu_select_launch::infos_render(float origx1, float origy1, float origx2,
float tmp_size = (sc > middle) ? ((middle - 2.0f * gutter_width) / sc) : 1.0f;
title_size *= tmp_size;
- if (bgcolor != UI_TEXT_BG_COLOR)
+ if (bgcolor != ui().colors().text_bg_color())
{
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(1));
@@ -2718,14 +2718,14 @@ void menu_select_launch::infos_render(float origx1, float origy1, float origx2,
container(), leftcol.c_str(),
origx1 + gutter_width, oy1, sc,
ui::text_layout::LEFT, ui::text_layout::TRUNCATE,
- mame_ui_manager::NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR,
+ mame_ui_manager::NORMAL, ui().colors().text_color(), ui().colors().text_bg_color(),
nullptr, nullptr,
tmp_size3);
ui().draw_text_full(
container(), rightcol.c_str(),
origx1 + gutter_width, oy1, sc,
ui::text_layout::RIGHT, ui::text_layout::TRUNCATE,
- mame_ui_manager::NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR,
+ mame_ui_manager::NORMAL, ui().colors().text_color(), ui().colors().text_bg_color(),
nullptr, nullptr,
tmp_size3);
}
@@ -2738,7 +2738,7 @@ void menu_select_launch::infos_render(float origx1, float origy1, float origx2,
container(), tempbuf.c_str(),
origx1 + gutter_width, oy1, origx2 - origx1,
ui::text_layout::LEFT, ui::text_layout::TRUNCATE,
- mame_ui_manager::NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR,
+ mame_ui_manager::NORMAL, ui().colors().text_color(), ui().colors().text_bg_color(),
nullptr, nullptr,
tmp_size3);
}
@@ -2748,7 +2748,7 @@ void menu_select_launch::infos_render(float origx1, float origy1, float origx2,
container(), tempbuf.c_str(),
origx1 + gutter_width, oy1, origx2 - origx1,
ui::text_layout::LEFT, ui::text_layout::TRUNCATE,
- mame_ui_manager::NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR,
+ mame_ui_manager::NORMAL, ui().colors().text_color(), ui().colors().text_bg_color(),
nullptr, nullptr,
text_size);
}
diff --git a/src/frontend/mame/ui/simpleselgame.cpp b/src/frontend/mame/ui/simpleselgame.cpp
index e22e61b6a2b..ae132679f65 100644
--- a/src/frontend/mame/ui/simpleselgame.cpp
+++ b/src/frontend/mame/ui/simpleselgame.cpp
@@ -42,7 +42,7 @@ simple_menu_select_game::simple_menu_select_game(mame_ui_manager &mui, render_co
, m_cached_driver(nullptr)
, m_cached_flags(machine_flags::NOT_WORKING)
, m_cached_unemulated(device_t::feature::NONE), m_cached_imperfect(device_t::feature::NONE)
- , m_cached_color(UI_BACKGROUND_COLOR)
+ , m_cached_color(ui().colors().background_color())
{
build_driver_list();
if (gamename)
@@ -304,7 +304,7 @@ void simple_menu_select_game::custom_render(void *selectedref, float top, float
tempbuf, tempbuf + 1,
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_BACKGROUND_COLOR, 1.0f);
+ ui().colors().text_color(), ui().colors().background_color(), 1.0f);
// determine the text to render below
driver = ((uintptr_t)selectedref > skip_main_items) ? (const game_driver *)selectedref : nullptr;
@@ -323,7 +323,7 @@ void simple_menu_select_game::custom_render(void *selectedref, float top, float
if (driver != m_cached_driver)
{
emu_options clean_options;
- machine_static_info const info(machine_config(*driver, clean_options));
+ machine_static_info const info(ui().options(), machine_config(*driver, clean_options));
m_cached_driver = driver;
m_cached_flags = info.machine_flags();
m_cached_unemulated = info.unemulated_features();
@@ -386,7 +386,7 @@ void simple_menu_select_game::custom_render(void *selectedref, float top, float
tempbuf, tempbuf + 4,
origx1, origx2, origy2 + UI_BOX_TB_BORDER, origy2 + bottom,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, true,
- UI_TEXT_COLOR, driver ? m_cached_color : UI_BACKGROUND_COLOR, 1.0f);
+ ui().colors().text_color(), driver ? m_cached_color : ui().colors().background_color(), 1.0f);
}
diff --git a/src/frontend/mame/ui/sliders.cpp b/src/frontend/mame/ui/sliders.cpp
index 579a0cbc640..560dd1096a5 100644
--- a/src/frontend/mame/ui/sliders.cpp
+++ b/src/frontend/mame/ui/sliders.cpp
@@ -230,7 +230,7 @@ void menu_sliders::custom_render(void *selectedref, float top, float bottom, flo
x2 = 1.0f - UI_BOX_LR_BORDER;
// draw extra menu area
- ui().draw_outlined_box(container(), x1, y1, x2, y2, UI_BACKGROUND_COLOR);
+ ui().draw_outlined_box(container(), x1, y1, x2, y2, ui().colors().background_color());
y1 += UI_BOX_TB_BORDER;
// determine the text height
@@ -250,19 +250,19 @@ void menu_sliders::custom_render(void *selectedref, float top, float bottom, flo
current_x = bar_left + bar_width * percentage;
// fill in the percentage
- container().add_rect(bar_left, bar_top, current_x, bar_bottom, UI_SLIDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ container().add_rect(bar_left, bar_top, current_x, bar_bottom, ui().colors().slider_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
// draw the top and bottom lines
- container().add_line(bar_left, bar_top, bar_left + bar_width, bar_top, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
- container().add_line(bar_left, bar_bottom, bar_left + bar_width, bar_bottom, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ container().add_line(bar_left, bar_top, bar_left + bar_width, bar_top, UI_LINE_WIDTH, ui().colors().border_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ container().add_line(bar_left, bar_bottom, bar_left + bar_width, bar_bottom, UI_LINE_WIDTH, ui().colors().border_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
// draw default marker
- container().add_line(default_x, bar_area_top, default_x, bar_top, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
- 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));
+ container().add_line(default_x, bar_area_top, default_x, bar_top, UI_LINE_WIDTH, ui().colors().border_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ container().add_line(default_x, bar_bottom, default_x, bar_area_top + bar_area_height, UI_LINE_WIDTH, ui().colors().border_color(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
// draw the actual text
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::text_layout::CENTER, ui::text_layout::WORD, mame_ui_manager::NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, &text_height);
+ ui::text_layout::CENTER, ui::text_layout::WORD, mame_ui_manager::NORMAL, ui().colors().text_color(), ui().colors().text_bg_color(), nullptr, &text_height);
}
}
diff --git a/src/frontend/mame/ui/slotopt.cpp b/src/frontend/mame/ui/slotopt.cpp
index b41e7f4c935..36fed77ae3c 100644
--- a/src/frontend/mame/ui/slotopt.cpp
+++ b/src/frontend/mame/ui/slotopt.cpp
@@ -222,7 +222,7 @@ void menu_slot_devices::custom_render(void *selectedref, float top, float bottom
std::begin(text), std::end(text),
origx1, origx2, origy2 + UI_BOX_TB_BORDER, origy2 + bottom,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_BACKGROUND_COLOR, 1.0f);
+ ui().colors().text_color(), ui().colors().background_color(), 1.0f);
}
}
diff --git a/src/frontend/mame/ui/sndmenu.cpp b/src/frontend/mame/ui/sndmenu.cpp
index 501e8ffea1e..4763bfe7226 100644
--- a/src/frontend/mame/ui/sndmenu.cpp
+++ b/src/frontend/mame/ui/sndmenu.cpp
@@ -151,7 +151,7 @@ void menu_sound_options::custom_render(void *selectedref, float top, float botto
std::begin(toptext), std::end(toptext),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
}
} // namespace ui
diff --git a/src/frontend/mame/ui/submenu.cpp b/src/frontend/mame/ui/submenu.cpp
index fd0dcc14f7b..4a6690cd443 100644
--- a/src/frontend/mame/ui/submenu.cpp
+++ b/src/frontend/mame/ui/submenu.cpp
@@ -429,7 +429,7 @@ void submenu::custom_render(void *selectedref, float top, float bottom, float or
std::begin(toptext), std::end(toptext),
origx1, origx2, origy1 - top, origy1 - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
if (selectedref)
{
@@ -441,7 +441,7 @@ void submenu::custom_render(void *selectedref, float top, float bottom, float or
std::begin(bottomtext), std::end(bottomtext),
origx1, origx2, origy2 + UI_BOX_TB_BORDER, origy2 + bottom,
ui::text_layout::CENTER, ui::text_layout::TRUNCATE, false,
- UI_TEXT_COLOR, UI_RED_COLOR, 1.0f);
+ ui().colors().text_color(), UI_RED_COLOR, 1.0f);
}
}
}
diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp
index 812d5c23502..0062df95ac1 100644
--- a/src/frontend/mame/ui/ui.cpp
+++ b/src/frontend/mame/ui/ui.cpp
@@ -92,25 +92,6 @@ static input_item_id const non_char_keys[] =
ITEM_ID_CANCEL
};
-static char const *const s_color_list[] = {
- OPTION_UI_BORDER_COLOR,
- OPTION_UI_BACKGROUND_COLOR,
- OPTION_UI_GFXVIEWER_BG_COLOR,
- OPTION_UI_UNAVAILABLE_COLOR,
- OPTION_UI_TEXT_COLOR,
- OPTION_UI_TEXT_BG_COLOR,
- OPTION_UI_SUBITEM_COLOR,
- OPTION_UI_CLONE_COLOR,
- OPTION_UI_SELECTED_COLOR,
- OPTION_UI_SELECTED_BG_COLOR,
- OPTION_UI_MOUSEOVER_COLOR,
- OPTION_UI_MOUSEOVER_BG_COLOR,
- OPTION_UI_MOUSEDOWN_COLOR,
- OPTION_UI_MOUSEDOWN_BG_COLOR,
- OPTION_UI_DIPSW_COLOR,
- OPTION_UI_SLIDER_COLOR
-};
-
/***************************************************************************
GLOBAL VARIABLES
***************************************************************************/
@@ -197,7 +178,7 @@ void mame_ui_manager::init()
ui_gfx_init(machine());
get_font_rows(&machine());
- decode_ui_color(0, &machine());
+ m_ui_colors.refresh(options());
// more initialization
using namespace std::placeholders;
@@ -306,7 +287,7 @@ void mame_ui_manager::display_startup_screens(bool first_time)
for (int state = 0; state < maxstate && !machine().scheduled_event_pending() && !ui::menu::stack_has_special_main_menu(machine()); state++)
{
// default to standard colors
- messagebox_backcolor = UI_BACKGROUND_COLOR;
+ messagebox_backcolor = colors().background_color();
messagebox_text.clear();
// pick the next state
@@ -373,7 +354,7 @@ void mame_ui_manager::set_startup_text(const char *text, bool force)
// copy in the new text
messagebox_text.assign(text);
- messagebox_backcolor = UI_BACKGROUND_COLOR;
+ messagebox_backcolor = colors().background_color();
// don't update more than 4 times/second
if (force || (curtime - lastupdatetime) > osd_ticks_per_second() / 4)
@@ -432,7 +413,7 @@ void mame_ui_manager::update_and_render(render_container &container)
if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, container, mouse_x, mouse_y))
{
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));
+ container.add_quad(mouse_x, mouse_y, mouse_x + cursor_size * container.manager().ui_aspect(&container), mouse_y + cursor_size, colors().text_color(), m_mouse_arrow_texture, PRIMFLAG_ANTIALIAS(1) | PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
}
}
}
@@ -534,7 +515,7 @@ float mame_ui_manager::get_string_width(const char *s, float text_size)
void mame_ui_manager::draw_outlined_box(render_container &container, float x0, float y0, float x1, float y1, rgb_t backcolor)
{
- draw_outlined_box(container, x0, y0, x1, y1, UI_BORDER_COLOR, backcolor);
+ draw_outlined_box(container, x0, y0, x1, y1, colors().border_color(), backcolor);
}
@@ -560,7 +541,7 @@ void mame_ui_manager::draw_outlined_box(render_container &container, float x0, f
void mame_ui_manager::draw_text(render_container &container, const char *buf, float x, float y)
{
- draw_text_full(container, buf, x, y, 1.0f - x, ui::text_layout::LEFT, ui::text_layout::WORD, mame_ui_manager::NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
+ draw_text_full(container, buf, x, y, 1.0f - x, ui::text_layout::LEFT, ui::text_layout::WORD, mame_ui_manager::NORMAL, colors().text_color(), colors().text_bg_color(), nullptr, nullptr);
}
@@ -648,7 +629,7 @@ void mame_ui_manager::draw_text_box(render_container &container, ui::text_layout
void mame_ui_manager::draw_message_window(render_container &container, const char *text)
{
- draw_text_box(container, text, ui::text_layout::text_justify::LEFT, 0.5f, 0.5f, UI_BACKGROUND_COLOR);
+ draw_text_box(container, text, ui::text_layout::text_justify::LEFT, 0.5f, 0.5f, colors().background_color());
}
@@ -1027,7 +1008,7 @@ void mame_ui_manager::image_handler_ingame()
{
float x = 0.2f;
float y = 0.5f * get_line_height() + 2.0f * UI_BOX_TB_BORDER;
- draw_text_box(machine().render().ui_container(), layout, x, y, UI_BACKGROUND_COLOR);
+ draw_text_box(machine().render().ui_container(), layout, x, y, colors().background_color());
}
}
}
@@ -2078,29 +2059,6 @@ void mame_ui_manager::draw_textured_box(render_container &container, float x0, f
}
//-------------------------------------------------
-// decode UI color options
-//-------------------------------------------------
-
-rgb_t decode_ui_color(int id, running_machine *machine)
-{
- static rgb_t color[ARRAY_LENGTH(s_color_list)];
-
- if (machine != nullptr) {
- ui_options option;
- for (int x = 0; x < ARRAY_LENGTH(s_color_list); ++x) {
- const char *o_default = option.value(s_color_list[x]);
- const char *s_option = mame_machine_manager::instance()->ui().options().value(s_color_list[x]);
- int len = strlen(s_option);
- if (len != 8)
- color[x] = rgb_t((uint32_t)strtoul(o_default, nullptr, 16));
- else
- color[x] = rgb_t((uint32_t)strtoul(s_option, nullptr, 16));
- }
- }
- return color[id];
-}
-
-//-------------------------------------------------
// get font rows from options
//-------------------------------------------------
@@ -2115,7 +2073,7 @@ void mame_ui_manager::popup_time_string(int seconds, std::string message)
{
// extract the text
messagebox_poptext = message;
- messagebox_backcolor = UI_BACKGROUND_COLOR;
+ messagebox_backcolor = colors().background_color();
// set a timer
m_popup_text_end = osd_ticks() + osd_ticks_per_second() * seconds;
@@ -2234,3 +2192,23 @@ void mame_ui_manager::menu_reset()
{
ui::menu::stack_reset(machine());
}
+
+void ui_colors::refresh(const ui_options &options)
+{
+ m_border_color = options.border_color();
+ m_background_color = options.background_color();
+ m_gfxviewer_bg_color = options.gfxviewer_bg_color();
+ m_unavailable_color = options.unavailable_color();
+ m_text_color = options.text_color();
+ m_text_bg_color = options.text_bg_color();
+ m_subitem_color = options.subitem_color();
+ m_clone_color = options.clone_color();
+ m_selected_color = options.selected_color();
+ m_selected_bg_color = options.selected_bg_color();
+ m_mouseover_color = options.mouseover_color();
+ m_mouseover_bg_color = options.mouseover_bg_color();
+ m_mousedown_color = options.mousedown_color();
+ m_mousedown_bg_color = options.mousedown_bg_color();
+ m_dipsw_color = options.dipsw_color();
+ m_slider_color = options.slider_color();
+}
diff --git a/src/frontend/mame/ui/ui.h b/src/frontend/mame/ui/ui.h
index b124b471d9c..46c5c2220a7 100644
--- a/src/frontend/mame/ui/ui.h
+++ b/src/frontend/mame/ui/ui.h
@@ -50,22 +50,6 @@ class machine_info;
#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)
-#define UI_BORDER_COLOR decode_ui_color(0)
-#define UI_BACKGROUND_COLOR decode_ui_color(1)
-#define UI_GFXVIEWER_BG_COLOR decode_ui_color(2)
-#define UI_UNAVAILABLE_COLOR decode_ui_color(3)
-#define UI_TEXT_COLOR decode_ui_color(4)
-#define UI_TEXT_BG_COLOR decode_ui_color(5)
-#define UI_SUBITEM_COLOR decode_ui_color(6)
-#define UI_CLONE_COLOR decode_ui_color(7)
-#define UI_SELECTED_COLOR decode_ui_color(8)
-#define UI_SELECTED_BG_COLOR decode_ui_color(9)
-#define UI_MOUSEOVER_COLOR decode_ui_color(10)
-#define UI_MOUSEOVER_BG_COLOR decode_ui_color(11)
-#define UI_MOUSEDOWN_COLOR decode_ui_color(12)
-#define UI_MOUSEDOWN_BG_COLOR decode_ui_color(13)
-#define UI_DIPSW_COLOR decode_ui_color(14)
-#define UI_SLIDER_COLOR decode_ui_color(15)
/* cancel return value for a UI handler */
#define UI_HANDLER_CANCEL ((uint32_t)~0)
@@ -139,6 +123,49 @@ enum class ui_callback_type
VIEWER
};
+// ======================> ui_colors
+
+class ui_colors
+{
+public:
+ rgb_t border_color() const { return m_border_color; }
+ rgb_t background_color() const { return m_background_color; }
+ rgb_t gfxviewer_bg_color() const { return m_gfxviewer_bg_color; }
+ rgb_t unavailable_color() const { return m_unavailable_color; }
+ rgb_t text_color() const { return m_text_color; }
+ rgb_t text_bg_color() const { return m_text_bg_color; }
+ rgb_t subitem_color() const { return m_subitem_color; }
+ rgb_t clone_color() const { return m_clone_color; }
+ rgb_t selected_color() const { return m_selected_color; }
+ rgb_t selected_bg_color() const { return m_selected_bg_color; }
+ rgb_t mouseover_color() const { return m_mouseover_color; }
+ rgb_t mouseover_bg_color() const { return m_mouseover_bg_color; }
+ rgb_t mousedown_color() const { return m_mousedown_color; }
+ rgb_t mousedown_bg_color() const { return m_mousedown_bg_color; }
+ rgb_t dipsw_color() const { return m_dipsw_color; }
+ rgb_t slider_color() const { return m_slider_color; }
+
+ void refresh(const ui_options &options);
+
+private:
+ rgb_t m_border_color;
+ rgb_t m_background_color;
+ rgb_t m_gfxviewer_bg_color;
+ rgb_t m_unavailable_color;
+ rgb_t m_text_color;
+ rgb_t m_text_bg_color;
+ rgb_t m_subitem_color;
+ rgb_t m_clone_color;
+ rgb_t m_selected_color;
+ rgb_t m_selected_bg_color;
+ rgb_t m_mouseover_color;
+ rgb_t m_mouseover_bg_color;
+ rgb_t m_mousedown_color;
+ rgb_t m_mousedown_bg_color;
+ rgb_t m_dipsw_color;
+ rgb_t m_slider_color;
+};
+
// ======================> mame_ui_manager
class mame_ui_manager : public ui_manager, public slider_changed_notifier
@@ -161,6 +188,7 @@ public:
running_machine &machine() const { return m_machine; }
bool single_step() const { return m_single_step; }
ui_options &options() { return m_ui_options; }
+ ui_colors &colors() { return m_ui_colors; }
ui::machine_info &machine_info() const { assert(m_machine_info); return *m_machine_info; }
// setters
@@ -247,6 +275,7 @@ private:
render_texture * m_mouse_arrow_texture;
bool m_mouse_show;
ui_options m_ui_options;
+ ui_colors m_ui_colors;
std::unique_ptr<ui::machine_info> m_machine_info;
@@ -305,7 +334,6 @@ private:
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
-rgb_t decode_ui_color(int id, running_machine *machine = nullptr);
int get_font_rows(running_machine *machine = nullptr);
template <typename Format, typename... Params>
diff --git a/src/frontend/mame/ui/utils.cpp b/src/frontend/mame/ui/utils.cpp
index 7511a219bf8..0cf7c613b60 100644
--- a/src/frontend/mame/ui/utils.cpp
+++ b/src/frontend/mame/ui/utils.cpp
@@ -358,7 +358,7 @@ private:
std::begin(text), std::end(text),
x, x2, y - top, y - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::NEVER, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
}
private:
@@ -968,7 +968,7 @@ private:
std::begin(text), std::end(text),
x, x2, y - top, y - UI_BOX_TB_BORDER,
ui::text_layout::CENTER, ui::text_layout::NEVER, false,
- UI_TEXT_COLOR, UI_GREEN_COLOR, 1.0f);
+ ui().colors().text_color(), UI_GREEN_COLOR, 1.0f);
}
private:
diff --git a/src/frontend/mame/ui/viewgfx.cpp b/src/frontend/mame/ui/viewgfx.cpp
index ff9ebd08016..1dd210fa88a 100644
--- a/src/frontend/mame/ui/viewgfx.cpp
+++ b/src/frontend/mame/ui/viewgfx.cpp
@@ -437,7 +437,7 @@ static void palette_handler(mame_ui_manager &mui, render_container &container, u
x0 = boxbounds.x0 - (0.5f - 0.5f * (titlewidth + chwidth));
// go ahead and draw the outer box now
- mui.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, mui.colors().gfxviewer_bg_color());
// draw the title
x0 = 0.5f - 0.5f * titlewidth;
@@ -731,7 +731,7 @@ static void gfxset_handler(mame_ui_manager &mui, render_container &container, ui
x0 = boxbounds.x0 - (0.5f - 0.5f * (titlewidth + chwidth));
// go ahead and draw the outer box now
- mui.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, mui.colors().gfxviewer_bg_color());
// draw the title
x0 = 0.5f - 0.5f * titlewidth;
@@ -1140,7 +1140,7 @@ static void tilemap_handler(mame_ui_manager &mui, render_container &container, u
}
// go ahead and draw the outer box now
- mui.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, mui.colors().gfxviewer_bg_color());
// draw the title
x0 = 0.5f - 0.5f * titlewidth;