summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend/mame/ui/textbox.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/mame/ui/textbox.h')
-rw-r--r--src/frontend/mame/ui/textbox.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/frontend/mame/ui/textbox.h b/src/frontend/mame/ui/textbox.h
new file mode 100644
index 00000000000..bdbb63f934a
--- /dev/null
+++ b/src/frontend/mame/ui/textbox.h
@@ -0,0 +1,49 @@
+// license:BSD-3-Clause
+// copyright-holders:Vas Crabb
+/***************************************************************************
+
+ ui/textbox.h
+
+ Menu that displays a non-interactive text box
+
+***************************************************************************/
+#ifndef MAME_FRONTEND_UI_TEXTBOX_H
+#define MAME_FRONTEND_UI_TEXTBOX_H
+
+#include "ui/menu.h"
+#include "ui/text.h"
+
+#include <optional>
+
+
+namespace ui {
+
+class menu_textbox : public menu
+{
+public:
+ virtual ~menu_textbox() override;
+
+protected:
+ menu_textbox(mame_ui_manager &mui, render_container &container);
+
+ void reset_layout();
+ void handle_key(int key);
+
+ virtual void populate_text(std::optional<text_layout> &layout, float &width, int &lines) = 0;
+
+ virtual bool custom_mouse_scroll(int lines) override;
+
+private:
+ virtual void draw(uint32_t flags) override;
+
+ std::optional<text_layout> m_layout;
+ float m_layout_width;
+ float m_desired_width;
+ int m_desired_lines;
+ int m_window_lines;
+ int m_top_line;
+};
+
+} // namespace ui
+
+#endif // MAME_FRONTEND_UI_TEXTBOX_H