summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rwxr-xr-x[-rw-r--r--]scripts/build/complay.py0
-rwxr-xr-xscripts/build/file2lines.py96
-rw-r--r--scripts/src/emu.lua4
-rw-r--r--scripts/src/mame/frontend.lua8
-rw-r--r--src/frontend/mame/ui/about.cpp57
-rw-r--r--src/frontend/mame/ui/about.h4
6 files changed, 118 insertions, 51 deletions
diff --git a/scripts/build/complay.py b/scripts/build/complay.py
index ce760185015..ce760185015 100644..100755
--- a/scripts/build/complay.py
+++ b/scripts/build/complay.py
diff --git a/scripts/build/file2lines.py b/scripts/build/file2lines.py
new file mode 100755
index 00000000000..1a8cf897656
--- /dev/null
+++ b/scripts/build/file2lines.py
@@ -0,0 +1,96 @@
+#!/usr/bin/python
+##
+## license:BSD-3-Clause
+## copyright-holders:Vas Crabb
+
+import io
+import os
+import os.path
+import re
+import sys
+
+
+def write_output(text):
+ try:
+ dst.write(text)
+ except IOError:
+ if dstfile is not None:
+ sys.stderr.write('Error writing to output file \'%s\'\n' % dstfile)
+ dst.close()
+ os.remove(dstfile)
+ else:
+ sys.stderr.write('Error writing to output\n')
+ sys.exit(3)
+
+
+if __name__ == '__main__':
+ if (len(sys.argv) > 4) or (len(sys.argv) < 2):
+ print('Usage:')
+ print(' file2lines <source.txt> [<output.h> [<varname>]]')
+ sys.exit(0 if len(sys.argv) <= 1 else 1)
+
+ srcfile = sys.argv[1]
+ dstfile = sys.argv[2] if len(sys.argv) >= 3 else None
+ if len(sys.argv) >= 4:
+ varname = sys.argv[3]
+ else:
+ varname = os.path.basename(srcfile)
+ base, ext = os.path.splitext(varname)
+ if ext.lower() == '.txt':
+ varname = base
+ varname = 'lines_' + re.sub('[^0-9A-Za-z_]', '_', varname)
+
+ dst = None
+ try:
+ with io.open(srcfile, 'r', encoding='utf-8') as src:
+ if dstfile is not None:
+ try:
+ dst = io.open(dstfile, 'w', encoding='utf-8')
+ except IOError:
+ sys.stderr.write('Unable to open output file \'%s\'\n' % dstfile)
+ sys.exit(3)
+ else:
+ dst = sys.stdout
+ write_output(u'char const *const %s[] = {\n' % varname)
+ for line in src:
+ if line[-1] == u'\n':
+ line = line[:-1]
+ write_output(u'\t\t"')
+ i = 0
+ while i < len(line):
+ for j in range(i, len(line) + 1):
+ if j < len(line):
+ ch = line[j]
+ if (ch < u' ') or (ch > u'~') or (ch in u'\"\\'):
+ break
+ if j > i:
+ write_output(line[i:j])
+ if j < len(line):
+ ch = line[j]
+ if ch == u'\a':
+ write_output(u'\\a')
+ elif ch == u'\f':
+ write_output(u'\\f')
+ elif ch == u'\t':
+ write_output(u'\\t')
+ elif ch == u'\v':
+ write_output(u'\\v')
+ elif ch in u'\"\\':
+ write_output(u'\\' + ch)
+ else:
+ ch = ord(ch)
+ if ch < 0x20:
+ write_output(u'\\{0:03o}'.format(ch))
+ elif ch < 0x10000:
+ write_output(u'\\u{0:04X}'.format(ch))
+ else:
+ write_output(u'\\U{0:08X}'.format(ch))
+ i = j + 1
+ write_output(u'",\n')
+ write_output(u'\t\tnullptr };\n')
+ except IOError:
+ sys.stderr.write('Error reading input file \'%s\'\n' % srcfile)
+ if (dstfile is not None) and (dst is not None):
+ dst.close()
+ os.remove(dstfile)
+ sys.exit(2)
diff --git a/scripts/src/emu.lua b/scripts/src/emu.lua
index 1561bb1b691..b8b08385e68 100644
--- a/scripts/src/emu.lua
+++ b/scripts/src/emu.lua
@@ -283,11 +283,11 @@ dependency {
}
custombuildtask {
- { MAME_DIR .. "scripts/font/NotoSans-Bold.bdc", GEN_DIR .. "emu/uismall.fh", { MAME_DIR .. "scripts/build/file2str.py" }, {"@echo Converting NotoSans-Bold.bdc...", PYTHON .. " $(1) $(<) $(@) font_uismall uint8_t" }},
+ { MAME_DIR .. "scripts/font/NotoSans-Bold.bdc", GEN_DIR .. "emu/uismall.fh", { MAME_DIR .. "scripts/build/file2str.py" }, { "@echo Converting NotoSans-Bold.bdc...", PYTHON .. " $(1) $(<) $(@) font_uismall uint8_t" } },
}
custombuildtask {
- { MAME_DIR .. "src/frontend/mame/ui/uicmd14.png" , GEN_DIR .. "emu/ui/uicmd14.fh", { MAME_DIR.. "scripts/build/png2bdc.py", MAME_DIR .. "scripts/build/file2str.py" }, {"@echo Converting uicmd14.png...", PYTHON .. " $(1) $(<) temp_cmd.bdc", PYTHON .. " $(2) temp_cmd.bdc $(@) font_uicmd14 uint8_t" }},
+ { MAME_DIR .. "src/frontend/mame/ui/uicmd14.png", GEN_DIR .. "emu/ui/uicmd14.fh", { MAME_DIR.. "scripts/build/png2bdc.py", MAME_DIR .. "scripts/build/file2str.py" }, { "@echo Converting uicmd14.png...", PYTHON .. " $(1) $(<) temp_cmd.bdc", PYTHON .. " $(2) temp_cmd.bdc $(@) font_uicmd14 uint8_t" } },
layoutbuildtask("emu/layout", "dualhovu"),
layoutbuildtask("emu/layout", "dualhsxs"),
diff --git a/scripts/src/mame/frontend.lua b/scripts/src/mame/frontend.lua
index cddda85c481..8253bf439b5 100644
--- a/scripts/src/mame/frontend.lua
+++ b/scripts/src/mame/frontend.lua
@@ -176,3 +176,11 @@ files {
}
pchsource(MAME_DIR .. "src/frontend/mame/audit.cpp")
+
+dependency {
+ { MAME_DIR .. "src/frontend/mame/ui/about.cpp", GEN_DIR .. "emu/copying.ipp" },
+}
+
+custombuildtask {
+ { MAME_DIR .. "COPYING", GEN_DIR .. "emu/copying.ipp", { MAME_DIR .. "scripts/build/file2lines.py" }, { "@echo Converting COPYING...", PYTHON .. " $(1) $(<) $(@) copying_text" } },
+}
diff --git a/src/frontend/mame/ui/about.cpp b/src/frontend/mame/ui/about.cpp
index 4b62d82e9aa..dbe303f6b4f 100644
--- a/src/frontend/mame/ui/about.cpp
+++ b/src/frontend/mame/ui/about.cpp
@@ -17,6 +17,12 @@
namespace ui {
+namespace {
+
+#include "copying.ipp"
+
+} // anonymous namespace
+
/**************************************************
ABOUT MODAL
@@ -33,48 +39,6 @@ menu_about::menu_about(mame_ui_manager &mui, render_container &container)
, m_pause_checked(false)
, m_was_paused(false)
{
- std::vector<char> text;
- osd_file::ptr file;
- uint64_t filesize = 0;
-
- osd_file::error error = osd_file::open("COPYING", OPEN_FLAG_READ, file, filesize);
- if (error != osd_file::error::NONE)
- {
- stack_pop();
- osd_printf_debug("Unable to open COPYING file\n");
- return;
- }
-
- uint32_t actual = 0;
- text.reserve(filesize);
- file->read(&text[0], 0, (uint32_t)filesize, actual);
-
- if (actual != (uint32_t)filesize)
- {
- stack_pop();
- osd_printf_debug("Unable to fully load COPYING file\n");
- return;
- }
-
- m_lines.clear();
-
- uint32_t i = 0;
- uint32_t line_index = 0;
- std::string curr_line;
- while (i < (uint32_t)filesize)
- {
- if (text[i] == 0x0a)
- {
- curr_line += '\n';
- m_lines.push_back(curr_line);
- curr_line = "";
- line_index++;
- i++;
- continue;
- }
- curr_line += text[i];
- i++;
- }
}
@@ -106,10 +70,9 @@ void menu_about::populate(float &customtop, float &custombottom)
m_pause_checked = true;
}
- for (std::string line : m_lines)
- {
- item_append(line.c_str(), "", 0, nullptr);
- }
+ for (char const *const *line = copying_text; *line; ++line)
+ item_append(*line, "", 0, nullptr);
+
item_append(menu_item_type::SEPARATOR);
}
@@ -130,4 +93,4 @@ void menu_about::handle()
}
}
-}; \ No newline at end of file
+};
diff --git a/src/frontend/mame/ui/about.h b/src/frontend/mame/ui/about.h
index e270c0e0228..d9eef659c2d 100644
--- a/src/frontend/mame/ui/about.h
+++ b/src/frontend/mame/ui/about.h
@@ -7,16 +7,17 @@
"About" modal
***************************************************************************/
-
#ifndef MAME_FRONTEND_UI_ABOUT_H
#define MAME_FRONTEND_UI_ABOUT_H
#pragma once
#include "ui/menu.h"
+
#include <vector>
namespace ui {
+
class menu_about : public menu
{
public:
@@ -29,7 +30,6 @@ private:
bool m_pause_checked;
bool m_was_paused;
- std::vector<std::string> m_lines;
};
} // namespace ui