summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend/mame/ui/utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/mame/ui/utils.h')
-rw-r--r--src/frontend/mame/ui/utils.h256
1 files changed, 256 insertions, 0 deletions
diff --git a/src/frontend/mame/ui/utils.h b/src/frontend/mame/ui/utils.h
new file mode 100644
index 00000000000..d31b3746e77
--- /dev/null
+++ b/src/frontend/mame/ui/utils.h
@@ -0,0 +1,256 @@
+// license:BSD-3-Clause
+// copyright-holders:Maurizio Petrarota
+/***************************************************************************
+
+ ui/utils.h
+
+ Internal UI user interface.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_UTILS_H__
+#define __UI_UTILS_H__
+
+#define MAX_CHAR_INFO 256
+#define MAX_CUST_FILTER 8
+
+// GLOBAL ENUMERATORS
+enum
+{
+ FILTER_FIRST = 0,
+ FILTER_ALL = FILTER_FIRST,
+ FILTER_AVAILABLE,
+ FILTER_UNAVAILABLE,
+ FILTER_WORKING,
+ FILTER_NOT_WORKING,
+ FILTER_MECHANICAL,
+ FILTER_NOT_MECHANICAL,
+ FILTER_CATEGORY,
+ FILTER_FAVORITE,
+ FILTER_BIOS,
+ FILTER_PARENT,
+ FILTER_CLONES,
+ FILTER_MANUFACTURER,
+ FILTER_YEAR,
+ FILTER_SAVE,
+ FILTER_NOSAVE,
+ FILTER_CHD,
+ FILTER_NOCHD,
+ FILTER_VERTICAL,
+ FILTER_HORIZONTAL,
+ FILTER_CUSTOM,
+ FILTER_LAST = FILTER_CUSTOM
+};
+
+enum
+{
+ FIRST_VIEW = 0,
+ SNAPSHOT_VIEW = FIRST_VIEW,
+ CABINETS_VIEW,
+ CPANELS_VIEW,
+ PCBS_VIEW,
+ FLYERS_VIEW,
+ TITLES_VIEW,
+ ENDS_VIEW,
+ ARTPREV_VIEW,
+ BOSSES_VIEW,
+ LOGOS_VIEW,
+ VERSUS_VIEW,
+ GAMEOVER_VIEW,
+ HOWTO_VIEW,
+ SCORES_VIEW,
+ SELECT_VIEW,
+ MARQUEES_VIEW,
+ LAST_VIEW = MARQUEES_VIEW
+};
+
+enum
+{
+ RP_FIRST = 0,
+ RP_IMAGES = RP_FIRST,
+ RP_INFOS,
+ RP_LAST = RP_INFOS
+};
+
+enum
+{
+ SHOW_PANELS = 0,
+ HIDE_LEFT_PANEL,
+ HIDE_RIGHT_PANEL,
+ HIDE_BOTH
+};
+
+enum
+{
+ UI_FIRST_LOAD = 0,
+ UI_GENERAL_LOAD = UI_FIRST_LOAD,
+ UI_HISTORY_LOAD,
+ UI_MAMEINFO_LOAD,
+ UI_SYSINFO_LOAD,
+ UI_MESSINFO_LOAD,
+ UI_COMMAND_LOAD,
+ UI_GINIT_LOAD,
+ UI_STORY_LOAD,
+ UI_LAST_LOAD = UI_STORY_LOAD
+};
+
+enum
+{
+ UI_SW_FIRST = 0,
+ UI_SW_ALL = UI_SW_FIRST,
+ UI_SW_AVAILABLE,
+ UI_SW_UNAVAILABLE,
+ UI_SW_PARENTS,
+ UI_SW_CLONES,
+ UI_SW_YEARS,
+ UI_SW_PUBLISHERS,
+ UI_SW_SUPPORTED,
+ UI_SW_PARTIAL_SUPPORTED,
+ UI_SW_UNSUPPORTED,
+ UI_SW_REGION,
+ UI_SW_TYPE,
+ UI_SW_LIST,
+ UI_SW_CUSTOM,
+ UI_SW_LAST = UI_SW_CUSTOM
+};
+
+enum
+{
+ HOVER_DAT_UP = -1000,
+ HOVER_DAT_DOWN,
+ HOVER_UI_LEFT,
+ HOVER_UI_RIGHT,
+ HOVER_ARROW_UP,
+ HOVER_ARROW_DOWN,
+ HOVER_B_FAV,
+ HOVER_B_EXPORT,
+ HOVER_B_DATS,
+ HOVER_RPANEL_ARROW,
+ HOVER_LPANEL_ARROW,
+ HOVER_FILTER_FIRST,
+ HOVER_FILTER_LAST = (HOVER_FILTER_FIRST) + 1 + FILTER_LAST,
+ HOVER_SW_FILTER_FIRST,
+ HOVER_SW_FILTER_LAST = (HOVER_SW_FILTER_FIRST) + 1 + UI_SW_LAST,
+ HOVER_RP_FIRST,
+ HOVER_RP_LAST = (HOVER_RP_FIRST) + 1 + RP_LAST
+};
+
+// GLOBAL STRUCTURES
+struct ui_software_info
+{
+ ui_software_info() {}
+ ui_software_info(std::string sname, std::string lname, std::string pname, std::string y, std::string pub,
+ UINT8 s, std::string pa, const game_driver *d, std::string li, std::string i, std::string is, UINT8 em,
+ std::string plong, std::string u, std::string de, bool av)
+ {
+ shortname = sname; longname = lname; parentname = pname; year = y; publisher = pub;
+ supported = s; part = pa; driver = d; listname = li; interface = i; instance = is; startempty = em;
+ parentlongname = plong; usage = u; devicetype = de; available = av;
+ }
+ std::string shortname;
+ std::string longname;
+ std::string parentname;
+ std::string year;
+ std::string publisher;
+ UINT8 supported = 0;
+ std::string part;
+ const game_driver *driver = nullptr;
+ std::string listname;
+ std::string interface;
+ std::string instance;
+ UINT8 startempty = 0;
+ std::string parentlongname;
+ std::string usage;
+ std::string devicetype;
+ bool available = false;
+
+ bool operator==(const ui_software_info& r)
+ {
+ if (shortname == r.shortname && longname == r.longname && parentname == r.parentname
+ && year == r.year && publisher == r.publisher && supported == r.supported
+ && part == r.part && driver == r.driver && listname == r.listname
+ && interface == r.interface && instance == r.instance && startempty == r.startempty
+ && parentlongname == r.parentlongname && usage == r.usage && devicetype == r.devicetype)
+ return true;
+
+ return false;
+ }
+};
+
+// Manufacturers
+struct c_mnfct
+{
+ static void set(const char *str);
+ static std::string getname(const char *str);
+ static std::vector<std::string> ui;
+ static UINT16 actual;
+};
+
+// Years
+struct c_year
+{
+ static void set(const char *str);
+ static std::vector<std::string> ui;
+ static UINT16 actual;
+};
+
+// GLOBAL CLASS
+struct ui_globals
+{
+ static UINT8 curimage_view, curdats_view, cur_sw_dats_view, rpanel;
+ static bool switch_image, redraw_icon, default_image, reset;
+ static int visible_main_lines, visible_sw_lines;
+ static UINT16 panels_status;
+ static bool has_icons;
+};
+
+#define main_struct(name) \
+struct name##_filters \
+{ \
+ static UINT16 actual; \
+ static const char *text[]; \
+ static size_t length; \
+};
+
+main_struct(main);
+main_struct(sw);
+
+// Custom filter
+struct custfltr
+{
+ static UINT16 main;
+ static UINT16 numother;
+ static UINT16 other[MAX_CUST_FILTER];
+ static UINT16 mnfct[MAX_CUST_FILTER];
+ static UINT16 screen[MAX_CUST_FILTER];
+ static UINT16 year[MAX_CUST_FILTER];
+};
+
+// Software custom filter
+struct sw_custfltr
+{
+ static UINT16 main;
+ static UINT16 numother;
+ static UINT16 other[MAX_CUST_FILTER];
+ static UINT16 mnfct[MAX_CUST_FILTER];
+ static UINT16 year[MAX_CUST_FILTER];
+ static UINT16 region[MAX_CUST_FILTER];
+ static UINT16 type[MAX_CUST_FILTER];
+ static UINT16 list[MAX_CUST_FILTER];
+};
+
+// GLOBAL FUNCTIONS
+
+// advanced search function
+int fuzzy_substring(std::string needle, std::string haystack);
+
+// trim carriage return
+char* chartrimcarriage(char str[]);
+
+const char* strensure(const char* s);
+
+int getprecisionchr(const char* s);
+
+#endif /* __UI_UTILS_H__ */