diff options
Diffstat (limited to 'src/frontend/mame/ui/ui.h')
-rw-r--r-- | src/frontend/mame/ui/ui.h | 93 |
1 files changed, 34 insertions, 59 deletions
diff --git a/src/frontend/mame/ui/ui.h b/src/frontend/mame/ui/ui.h index 77c33c4119b..0c45dd08405 100644 --- a/src/frontend/mame/ui/ui.h +++ b/src/frontend/mame/ui/ui.h @@ -8,12 +8,10 @@ ***************************************************************************/ -#pragma once - -#ifndef __USRINTRF_H__ -#define __USRINTRF_H__ +#ifndef MAME_FRONTEND_UI_UI_H +#define MAME_FRONTEND_UI_UI_H -#include <vector> +#pragma once #include "render.h" #include "moptions.h" @@ -23,6 +21,9 @@ #include "ui/slider.h" #include "ui/text.h" +#include <functional> +#include <vector> + namespace ui { class menu_item; @@ -128,13 +129,13 @@ enum ***************************************************************************/ class mame_ui_manager; -typedef UINT32 (*ui_callback)(mame_ui_manager &, render_container *, UINT32); +typedef UINT32 (*ui_callback)(mame_ui_manager &, render_container &, UINT32); -enum ui_callback_type +enum class ui_callback_type { - UI_CALLBACK_TYPE_GENERAL, - UI_CALLBACK_TYPE_MODAL, - UI_CALLBACK_TYPE_MENU + GENERAL, + MODAL, + MENU }; // ======================> mame_ui_manager @@ -166,48 +167,22 @@ public: void initialize(running_machine &machine); std::vector<ui::menu_item> slider_init(running_machine &machine); - void set_handler(ui_callback_type callback_type, const std::function<UINT32 (render_container *)> callback); - - template<typename T, typename... Params> - void set_handler(ui_callback_type callback_type, T &obj, UINT32(T::*callback)(render_container *, Params...), Params ...args) - { - auto lambda = [=, &obj](render_container *container) - { - return ((obj).*(callback))(container, args...); - }; - set_handler(callback_type, lambda); - } - - template<typename... Params> - void set_handler(ui_callback_type callback_type, UINT32(mame_ui_manager::*callback)(render_container *, Params...), Params ...args) - { - set_handler(callback_type, *this, callback, args...); - } - - template<typename... Params> - void set_handler(ui_callback_type callback_type, UINT32(*callback)(render_container *, Params...), Params ...args) - { - auto lambda = [&, callback](render_container *container) - { - return callback(container, args...); - }; - set_handler(callback_type, lambda); - } + void set_handler(ui_callback_type callback_type, const std::function<UINT32 (render_container &)> &&callback); void display_startup_screens(bool first_time); virtual void set_startup_text(const char *text, bool force) override; - void update_and_render(render_container *container); + void update_and_render(render_container &container); render_font *get_font(); float get_line_height(); float get_char_width(unicode_char ch); float get_string_width(const char *s, float text_size = 1.0f); - void draw_outlined_box(render_container *container, float x0, float y0, float x1, float y1, rgb_t backcolor); - void draw_outlined_box(render_container *container, float x0, float y0, float x1, float y1, rgb_t fgcolor, rgb_t bgcolor); - void draw_text(render_container *container, const char *buf, float x, float y); - void draw_text_full(render_container *container, const char *origs, float x, float y, float origwrapwidth, ui::text_layout::text_justify justify, ui::text_layout::word_wrapping wrap, draw_mode draw, rgb_t fgcolor, rgb_t bgcolor, float *totalwidth = nullptr, float *totalheight = nullptr, float text_size = 1.0f); - void draw_text_box(render_container *container, const char *text, ui::text_layout::text_justify justify, float xpos, float ypos, rgb_t backcolor); - void draw_text_box(render_container *container, ui::text_layout &layout, float xpos, float ypos, rgb_t backcolor); - void draw_message_window(render_container *container, const char *text); + void draw_outlined_box(render_container &container, float x0, float y0, float x1, float y1, rgb_t backcolor); + void draw_outlined_box(render_container &container, float x0, float y0, float x1, float y1, rgb_t fgcolor, rgb_t bgcolor); + void draw_text(render_container &container, const char *buf, float x, float y); + void draw_text_full(render_container &container, const char *origs, float x, float y, float origwrapwidth, ui::text_layout::text_justify justify, ui::text_layout::word_wrapping wrap, draw_mode draw, rgb_t fgcolor, rgb_t bgcolor, float *totalwidth = nullptr, float *totalheight = nullptr, float text_size = 1.0f); + void draw_text_box(render_container &container, const char *text, ui::text_layout::text_justify justify, float xpos, float ypos, rgb_t backcolor); + void draw_text_box(render_container &container, ui::text_layout &layout, float xpos, float ypos, rgb_t backcolor); + void draw_message_window(render_container &container, const char *text); // load/save options to file void load_ui_options(); @@ -231,10 +206,10 @@ public: void increase_frameskip(); void decrease_frameskip(); void request_quit(); - void draw_fps_counter(render_container *container); - void draw_timecode_counter(render_container *container); - void draw_timecode_total(render_container *container); - void draw_profiler(render_container *container); + void draw_fps_counter(render_container &container); + void draw_timecode_counter(render_container &container); + void draw_timecode_total(render_container &container); + void draw_profiler(render_container &container); void start_save_state(); void start_load_state(); @@ -246,13 +221,13 @@ public: // other void process_natural_keyboard(); - ui::text_layout create_layout(render_container *container, float width = 1.0, ui::text_layout::text_justify justify = ui::text_layout::LEFT, ui::text_layout::word_wrapping wrap = ui::text_layout::WORD); + ui::text_layout create_layout(render_container &container, float width = 1.0, ui::text_layout::text_justify justify = ui::text_layout::LEFT, ui::text_layout::word_wrapping wrap = ui::text_layout::WORD); // word wrap - int wrap_text(render_container *container, const char *origs, float x, float y, float origwrapwidth, std::vector<int> &xstart, std::vector<int> &xend, float text_size = 1.0f); + int wrap_text(render_container &container, const char *origs, float x, float y, float origwrapwidth, std::vector<int> &xstart, std::vector<int> &xend, float text_size = 1.0f); // draw an outlined box with given line color and filled with a texture - void draw_textured_box(render_container *container, float x0, float y0, float x1, float y1, rgb_t backcolor, rgb_t linecolor, render_texture *texture = nullptr, UINT32 flags = PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + void draw_textured_box(render_container &container, float x0, float y0, float x1, float y1, rgb_t backcolor, rgb_t linecolor, render_texture *texture = nullptr, UINT32 flags = PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); virtual void popup_time_string(int seconds, std::string message) override; virtual void menu_reset() override; @@ -260,7 +235,7 @@ public: private: // instance variables render_font * m_font; - std::function<UINT32 (render_container *)> m_handler_callback; + std::function<UINT32 (render_container &)> m_handler_callback; ui_callback_type m_handler_callback_type; UINT32 m_handler_param; bool m_single_step; @@ -286,11 +261,11 @@ private: std::string &warnings_string(std::string &buffer); // UI handlers - UINT32 handler_messagebox(render_container *container); - UINT32 handler_messagebox_anykey(render_container *container); - UINT32 handler_ingame(render_container *container); - UINT32 handler_load_save(render_container *container, UINT32 state); - UINT32 handler_confirm_quit(render_container *container); + UINT32 handler_messagebox(render_container &container); + UINT32 handler_messagebox_anykey(render_container &container); + UINT32 handler_ingame(render_container &container); + UINT32 handler_load_save(render_container &container, UINT32 state); + UINT32 handler_confirm_quit(render_container &container); // private methods void exit(); @@ -340,4 +315,4 @@ inline void mame_ui_manager::popup_time(int seconds, Format &&fmt, Params &&... popup_time_string(seconds, string_format(std::forward<Format>(fmt), std::forward<Params>(args)...)); } -#endif /* __USRINTRF_H__ */ +#endif /* MAME_FRONTEND_UI_UI_H */ |