summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/render.cpp
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2020-09-07 01:40:41 +1000
committer Vas Crabb <vas@vastheman.com>2020-09-07 01:40:41 +1000
commit67ec5e5b43738128a696aea19b299ee0ed8a17a0 (patch)
tree13ace47db8c58d5cd8931e23fce9c01763bbd9fd /src/emu/render.cpp
parent7fe5f1858d8ec9b687ac3874ecf232ca29365694 (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.cpp49
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;