diff options
author | 2020-09-07 01:40:41 +1000 | |
---|---|---|
committer | 2020-09-07 01:40:41 +1000 | |
commit | 67ec5e5b43738128a696aea19b299ee0ed8a17a0 (patch) | |
tree | 13ace47db8c58d5cd8931e23fce9c01763bbd9fd /src/emu/render.cpp | |
parent | 7fe5f1858d8ec9b687ac3874ecf232ca29365694 (diff) |
Finished adding new mechanism for allowing parts of views to be hidden.
Changed name of element to "collection" and initial visibility attribute
to "visible", and added them to documentation. Also added them to
complay.py.
Fixed issue with collection inside group, and improved initial view
selection behaviour.
Updated some internal layouts to demonstrate new features, including
et3400, irrmaze, ltcasino, mekd3/mekd4, seawolf and vgmplay.
Removed all uses of cpanel, marquee and overlay from internal layouts
and removed them from complay.py to actively discourage use. Also
cleaned up view names in layouts that were using them in place of
spaces, and removed some superfluous name attributes on elements that
won't do anything useful with an output value anyway.
Made vgmplay cycle visualiser modes when visualiser screen is clicked.
Fixed a copy/paste error in bus/rs232/hlemouse.cpp while I'm at it.
Diffstat (limited to 'src/emu/render.cpp')
-rw-r--r-- | src/emu/render.cpp | 49 |
1 files changed, 21 insertions, 28 deletions
diff --git a/src/emu/render.cpp b/src/emu/render.cpp index 4d621508a20..3bc0e8ef5db 100644 --- a/src/emu/render.cpp +++ b/src/emu/render.cpp @@ -1067,7 +1067,7 @@ unsigned render_target::configured_view(const char *viewname, int targetindex, i if (strcmp(viewname, "auto") != 0) { // scan for a matching view name - size_t viewlen = strlen(viewname); + size_t const viewlen = strlen(viewname); for (unsigned i = 0; !view && (m_views.size() > i); ++i) if (!core_strnicmp(m_views[i].first.get().name().c_str(), viewname, viewlen)) view = &m_views[i].first.get(); @@ -1082,21 +1082,22 @@ unsigned render_target::configured_view(const char *viewname, int targetindex, i // if we have enough targets to be one per screen, assign in order if (numtargets >= screens.size()) { - int const ourindex = index() % screens.size(); - screen_device &screen = screens[ourindex]; - // find the first view with this screen and this screen only - unsigned viewindex; - for (view = view_by_index(viewindex = 0); view != nullptr; view = view_by_index(++viewindex)) + screen_device const &screen = screens[index() % screens.size()]; + for (unsigned i = 0; !view && (m_views.size() > i); ++i) { - auto const &viewscreens = view->screens(); - if (viewscreens.empty()) + for (screen_device const &viewscreen : m_views[i].first.get().screens()) { - view = nullptr; - break; + if (&viewscreen == &screen) + { + view = &m_views[i].first.get(); + } + else + { + view = nullptr; + break; + } } - else if (std::find_if(viewscreens.begin(), viewscreens.end(), [&screen] (auto const &scr) { return &scr.get() != &screen; }) == viewscreens.end()) - break; } } @@ -1105,18 +1106,10 @@ unsigned render_target::configured_view(const char *viewname, int targetindex, i { for (unsigned i = 0; !view && (m_views.size() > i); ++i) { - view = &m_views[i].first.get(); - if (view->screen_count() >= screens.size()) - { - for (screen_device &screen : screens) - { - if (!view->has_screen(screen)) - { - view = nullptr; - break; - } - } - } + layout_view &curview = m_views[i].first; + if (curview.screen_count() >= screens.size()) + if (std::find_if(screens.begin(), screens.end(), [&curview] (screen_device &screen) { return !curview.has_screen(screen); }) == screens.end()) + view = &curview; } } } @@ -2631,7 +2624,7 @@ void render_target::config_load(util::xml::data_node const &targetnode) if (m_views.end() == view) continue; - for (util::xml::data_node const *vistogglenode = viewnode->get_child("vistoggle"); vistogglenode; vistogglenode = vistogglenode->get_next_sibling("vistoggle")) + for (util::xml::data_node const *vistogglenode = viewnode->get_child("collection"); vistogglenode; vistogglenode = vistogglenode->get_next_sibling("collection")) { char const *const vistogglename = vistogglenode->get_attribute_string("name", nullptr); if (!vistogglename) @@ -2642,7 +2635,7 @@ void render_target::config_load(util::xml::data_node const &targetnode) if (vistoggles.end() == vistoggle) continue; - int const enable = vistogglenode->get_attribute_int("enabled", -1); + int const enable = vistogglenode->get_attribute_int("visible", -1); if (0 <= enable) { if (enable) @@ -2716,9 +2709,9 @@ bool render_target::config_save(util::xml::data_node &targetnode) viewnode = targetnode.add_child("view", nullptr); viewnode->set_attribute("name", view.first.get().name().c_str()); } - util::xml::data_node *const vistogglenode = viewnode->add_child("vistoggle", nullptr); + util::xml::data_node *const vistogglenode = viewnode->add_child("collection", nullptr); vistogglenode->set_attribute("name", toggle.name().c_str()); - vistogglenode->set_attribute_int("enabled", BIT(view.second, i)); + vistogglenode->set_attribute_int("visible", BIT(view.second, i)); changed = true; } ++i; |