summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2021-11-18 10:34:38 +1100
committer Vas Crabb <vas@vastheman.com>2021-11-18 10:34:38 +1100
commit5afce6cfab6320ee062da5f7b7438294672f9af1 (patch)
tree5902ddf0b74f27e3d43bc0556dcfd29198e86efd /src/frontend
parentded9ecfc1cf7864f206b92480eaebf32092ef8f2 (diff)
emu/render.cpp, emu/rendlay.cpp: Added scroll support for all elements.
Diffstat (limited to 'src/frontend')
-rw-r--r--src/frontend/mame/luaengine_render.cpp72
1 files changed, 55 insertions, 17 deletions
diff --git a/src/frontend/mame/luaengine_render.cpp b/src/frontend/mame/luaengine_render.cpp
index ea40a34c02a..21a68dc65cb 100644
--- a/src/frontend/mame/luaengine_render.cpp
+++ b/src/frontend/mame/luaengine_render.cpp
@@ -39,7 +39,7 @@ struct layout_view_items
layout_view_items(layout_view &v) : view(v) { }
layout_view::item_list &items() { return view.items(); }
- static layout_view::item &unwrap(layout_view::item_list::iterator const &it) { return *it; }
+ static layout_view_item &unwrap(layout_view::item_list::iterator const &it) { return *it; }
static int push_key(lua_State *L, layout_view::item_list::iterator const &it, std::size_t ix) { return sol::stack::push(L, ix + 1); }
layout_view &view;
@@ -97,7 +97,7 @@ public:
{
layout_view_items &self(get_self(L));
char const *const id(stack::unqualified_get<char const *>(L));
- layout_view::item *const item(self.view.get_item(id));
+ layout_view_item *const item(self.view.get_item(id));
if (item)
return stack::push_reference(L, *item);
else
@@ -279,48 +279,86 @@ void lua_engine::initialize_render(sol::table &emu)
layout_view_type["has_art"] = sol::property(&layout_view::has_art);
- auto layout_view_item_type = sol().registry().new_usertype<layout_view::item>("layout_item", sol::no_constructor);
- layout_view_item_type["set_state"] = &layout_view::item::set_state;
+ auto layout_view_item_type = sol().registry().new_usertype<layout_view_item>("layout_item", sol::no_constructor);
+ layout_view_item_type["set_state"] = &layout_view_item::set_state;
layout_view_item_type["set_element_state_callback"] =
make_simple_callback_setter<int>(
- &layout_view::item::set_element_state_callback,
+ &layout_view_item::set_element_state_callback,
[] () { return 0; },
"set_element_state_callback",
"element state");
layout_view_item_type["set_animation_state_callback"] =
make_simple_callback_setter<int>(
- &layout_view::item::set_animation_state_callback,
+ &layout_view_item::set_animation_state_callback,
[] () { return 0; },
"set_animation_state_callback",
"animation state");
layout_view_item_type["set_bounds_callback"] =
make_simple_callback_setter<render_bounds>(
- &layout_view::item::set_bounds_callback,
+ &layout_view_item::set_bounds_callback,
[] () { return render_bounds{ 0.0f, 0.0f, 1.0f, 1.0f }; },
"set_bounds_callback",
"bounds");
layout_view_item_type["set_color_callback"] =
make_simple_callback_setter<render_color>(
- &layout_view::item::set_color_callback,
+ &layout_view_item::set_color_callback,
[] () { return render_color{ 1.0f, 1.0f, 1.0f, 1.0f }; },
"set_color_callback",
"color");
+ layout_view_item_type["set_scroll_size_x_callback"] =
+ make_simple_callback_setter<float>(
+ &layout_view_item::set_scroll_size_x_callback,
+ [] () { return 1.0f; },
+ "set_scroll_size_x_callback",
+ "horizontal scroll window size");
+ layout_view_item_type["set_scroll_size_y_callback"] =
+ make_simple_callback_setter<float>(
+ &layout_view_item::set_scroll_size_y_callback,
+ [] () { return 1.0f; },
+ "set_scroll_size_y_callback",
+ "vertical scroll window size");
+ layout_view_item_type["set_scroll_pos_x_callback"] =
+ make_simple_callback_setter<float>(
+ &layout_view_item::set_scroll_pos_x_callback,
+ [] () { return 1.0f; },
+ "set_scroll_pos_x_callback",
+ "horizontal scroll position");
+ layout_view_item_type["set_scroll_pos_y_callback"] =
+ make_simple_callback_setter<float>(
+ &layout_view_item::set_scroll_pos_y_callback,
+ [] () { return 1.0f; },
+ "set_scroll_pos_y_callback",
+ "vertical scroll position");
layout_view_item_type["id"] = sol::property(
- [] (layout_view::item &i, sol::this_state s) -> sol::object
+ [] (layout_view_item &i, sol::this_state s) -> sol::object
{
if (i.id().empty())
return sol::lua_nil;
else
return sol::make_object(s, i.id());
});
- layout_view_item_type["bounds_animated"] = sol::property(&layout_view::item::bounds_animated);
- layout_view_item_type["color_animated"] = sol::property(&layout_view::item::color_animated);
- layout_view_item_type["bounds"] = sol::property(&layout_view::item::bounds);
- layout_view_item_type["color"] = sol::property(&layout_view::item::color);
- layout_view_item_type["blend_mode"] = sol::property(&layout_view::item::blend_mode);
- layout_view_item_type["orientation"] = sol::property(&layout_view::item::orientation);
- layout_view_item_type["element_state"] = sol::property(&layout_view::item::element_state);
- layout_view_item_type["animation_state"] = sol::property(&layout_view::item::animation_state);
+ layout_view_item_type["bounds_animated"] = sol::property(&layout_view_item::bounds_animated);
+ layout_view_item_type["color_animated"] = sol::property(&layout_view_item::color_animated);
+ layout_view_item_type["bounds"] = sol::property(&layout_view_item::bounds);
+ layout_view_item_type["color"] = sol::property(&layout_view_item::color);
+ layout_view_item_type["scroll_wrap_x"] = sol::property(&layout_view_item::scroll_wrap_x);
+ layout_view_item_type["scroll_wrap_y"] = sol::property(&layout_view_item::scroll_wrap_y);
+ layout_view_item_type["scroll_size_x"] = sol::property(
+ &layout_view_item::scroll_size_x,
+ &layout_view_item::set_scroll_size_x);
+ layout_view_item_type["scroll_size_y"] = sol::property(
+ &layout_view_item::scroll_size_y,
+ &layout_view_item::set_scroll_size_y);
+ layout_view_item_type["scroll_pos_x"] = sol::property(
+ &layout_view_item::scroll_pos_x,
+ &layout_view_item::set_scroll_pos_y);
+ layout_view_item_type["scroll_pos_y"] = sol::property(
+ &layout_view_item::scroll_pos_y,
+ &layout_view_item::set_scroll_pos_y);
+ layout_view_item_type["blend_mode"] = sol::property(&layout_view_item::blend_mode);
+ layout_view_item_type["orientation"] = sol::property(&layout_view_item::orientation);
+ layout_view_item_type["element_state"] = sol::property(&layout_view_item::element_state);
+ layout_view_item_type["animation_state"] = sol::property(&layout_view_item::animation_state);
auto layout_file_type = sol().registry().new_usertype<layout_file>("layout_file", sol::no_constructor);