summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/render.h
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2020-12-05 21:04:22 +1100
committer Vas Crabb <vas@vastheman.com>2020-12-05 21:04:22 +1100
commitcac83ba5b1fec32513704e5cb1919efc35d15e0e (patch)
treee12482d7bc59320c5a0225bb17444735eab250e3 /src/emu/render.h
parente4ed0ebf242daeca43d85fa3281978d9e6d1b4c6 (diff)
Expose enough of the layout system to Lua to allow position and colour to be animated.
Diffstat (limited to 'src/emu/render.h')
-rw-r--r--src/emu/render.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/emu/render.h b/src/emu/render.h
index e24893033c6..a94a23a0c97 100644
--- a/src/emu/render.h
+++ b/src/emu/render.h
@@ -724,6 +724,9 @@ public:
using element_map = std::unordered_map<std::string, layout_element>;
using group_map = std::unordered_map<std::string, layout_group>;
using screen_ref_vector = std::vector<std::reference_wrapper<screen_device> >;
+ using prepare_items_delegate = delegate<void ()>;
+ using preload_delegate = delegate<void ()>;
+ using recomputed_delegate = delegate<void ()>;
/// \brief A single item in a view
///
@@ -930,7 +933,13 @@ public:
u32 default_visibility_mask() const { return m_defvismask; }
bool has_art() const { return m_has_art; }
+ // set handlers
+ void set_prepare_items_callback(prepare_items_delegate &&handler);
+ void set_preload_callback(preload_delegate &&handler);
+ void set_recomputed_callback(recomputed_delegate &&handler);
+
// operations
+ void prepare_items() { if (!m_prepare_items.isnull()) m_prepare_items(); }
void recompute(u32 visibility_mask, bool zoom_to_screens);
void preload();
@@ -973,6 +982,11 @@ private:
edge_vector m_interactive_edges_y;
screen_ref_vector m_screens; // list screens visible in current configuration
+ // handlers
+ prepare_items_delegate m_prepare_items; // prepare items for adding to render container
+ preload_delegate m_preload; // additional actions when visible items change
+ recomputed_delegate m_recomputed; // additional actions on resizing/visibility change
+
// cold items
std::string m_name; // display name for the view
std::string m_unqualified_name; // the name exactly as specified in the layout file