From 321ee784f75abbbec2fc6cce52ed56fb578da24c Mon Sep 17 00:00:00 2001 From: Takamichi Horikawa Date: Sun, 24 Sep 2017 19:45:47 +0900 Subject: add win32 common font.rom loader --- common/fmplayer_fontrom_win.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 common/fmplayer_fontrom_win.c diff --git a/common/fmplayer_fontrom_win.c b/common/fmplayer_fontrom_win.c new file mode 100644 index 0000000..8ba8300 --- /dev/null +++ b/common/fmplayer_fontrom_win.c @@ -0,0 +1,40 @@ +#include "fmplayer_fontrom.h" +#include "fmdsp/font.h" +#include +#include +#include +#include "common/winfont.h" +#define WIN32_LEAN_AND_MEAN +#include +#include + +static struct { + uint8_t fontrombuf[FONT_ROM_FILESIZE]; + bool font_rom_loaded; +} g; + +void fmplayer_font_rom_load(struct fmdsp_font *font) { + const wchar_t *path = L"font.rom"; + wchar_t exepath[MAX_PATH]; + if (GetModuleFileNameW(0, exepath, MAX_PATH)) { + PathRemoveFileSpecW(exepath); + if ((wcslen(exepath) + wcslen(path) + 1 + 1) < MAX_PATH) { + wcscat(exepath, L"\\"); + wcscat(exepath, path); + path = exepath; + } + } + HANDLE file = CreateFileW(path, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); + if (file == INVALID_HANDLE_VALUE) goto err; + DWORD filesize = GetFileSize(file, 0); + if (filesize != FONT_ROM_FILESIZE) goto err; + DWORD readbytes; + if (!ReadFile(file, g.fontrombuf, FONT_ROM_FILESIZE, &readbytes, 0) || readbytes != FONT_ROM_FILESIZE) goto err; + CloseHandle(file); + fmdsp_font_from_font_rom(font, g.fontrombuf); + g.font_rom_loaded = true; + return; +err: + if (file != INVALID_HANDLE_VALUE) CloseHandle(file); + fmdsp_font_win(font); +} -- cgit v1.2.3