mirror of
https://github.com/libretro/RetroArch
synced 2025-02-22 12:40:09 +00:00
(Lakka) Use theme font + responsive font size
This commit is contained in:
parent
7c81cabe83
commit
82e67e7605
2
driver.h
2
driver.h
@ -370,7 +370,7 @@ typedef struct video_poke_interface
|
|||||||
void (*set_texture_enable)(void *data, bool enable, bool full_screen);
|
void (*set_texture_enable)(void *data, bool enable, bool full_screen);
|
||||||
#endif
|
#endif
|
||||||
void (*set_osd_msg)(void *data, const char *msg,
|
void (*set_osd_msg)(void *data, const char *msg,
|
||||||
const struct font_params *params);
|
const struct font_params *params, void *font);
|
||||||
|
|
||||||
void (*show_mouse)(void *data, bool state);
|
void (*show_mouse)(void *data, bool state);
|
||||||
void (*grab_mouse_toggle)(void *data);
|
void (*grab_mouse_toggle)(void *data);
|
||||||
|
4
gfx/gl.c
4
gfx/gl.c
@ -3021,7 +3021,7 @@ static void gl_apply_state_changes(void *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void gl_set_osd_msg(void *data, const char *msg,
|
static void gl_set_osd_msg(void *data, const char *msg,
|
||||||
const struct font_params *params)
|
const struct font_params *params, void *font)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
gl_t *gl = (gl_t*)data;
|
||||||
if (!gl)
|
if (!gl)
|
||||||
@ -3030,7 +3030,7 @@ static void gl_set_osd_msg(void *data, const char *msg,
|
|||||||
if (gl->font_driver && gl->font_handle)
|
if (gl->font_driver && gl->font_handle)
|
||||||
{
|
{
|
||||||
context_bind_hw_render(gl, false);
|
context_bind_hw_render(gl, false);
|
||||||
gl->font_driver->render_msg(gl->font_handle, msg, params);
|
gl->font_driver->render_msg(font ? font : gl->font_handle, msg, params);
|
||||||
context_bind_hw_render(gl, true);
|
context_bind_hw_render(gl, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -671,7 +671,7 @@ void sdl2_poke_texture_enable(void *data, bool enable, bool full_screen)
|
|||||||
vid->menu.active = enable;
|
vid->menu.active = enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sdl2_poke_set_osd_msg(void *data, const char *msg, const struct font_params *params)
|
void sdl2_poke_set_osd_msg(void *data, const char *msg, const struct font_params *params, void *font)
|
||||||
{
|
{
|
||||||
sdl2_video_t *vid = (sdl2_video_t*)data;
|
sdl2_video_t *vid = (sdl2_video_t*)data;
|
||||||
sdl2_render_msg(vid, msg);
|
sdl2_render_msg(vid, msg);
|
||||||
|
@ -262,10 +262,22 @@ static void thread_loop(void *data)
|
|||||||
if (thr->poke && thr->poke->set_osd_msg)
|
if (thr->poke && thr->poke->set_osd_msg)
|
||||||
thr->poke->set_osd_msg(thr->driver_data,
|
thr->poke->set_osd_msg(thr->driver_data,
|
||||||
thr->cmd_data.osd_message.msg,
|
thr->cmd_data.osd_message.msg,
|
||||||
&thr->cmd_data.osd_message.params);
|
&thr->cmd_data.osd_message.params, NULL);
|
||||||
thread_reply(thr, CMD_POKE_SET_OSD_MSG);
|
thread_reply(thr, CMD_POKE_SET_OSD_MSG);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CMD_FONT_INIT:
|
||||||
|
if (thr->cmd_data.font_init.method)
|
||||||
|
thr->cmd_data.font_init.return_value =
|
||||||
|
thr->cmd_data.font_init.method
|
||||||
|
(thr->cmd_data.font_init.font_driver,
|
||||||
|
thr->cmd_data.font_init.font_handle,
|
||||||
|
thr->cmd_data.font_init.video_data,
|
||||||
|
thr->cmd_data.font_init.font_path,
|
||||||
|
thr->cmd_data.font_init.font_size);
|
||||||
|
thread_reply(thr, CMD_FONT_INIT);
|
||||||
|
break;
|
||||||
|
|
||||||
case CMD_CUSTOM_COMMAND:
|
case CMD_CUSTOM_COMMAND:
|
||||||
if (thr->cmd_data.custom_command.method)
|
if (thr->cmd_data.custom_command.method)
|
||||||
thr->cmd_data.custom_command.return_value =
|
thr->cmd_data.custom_command.return_value =
|
||||||
@ -724,7 +736,8 @@ static void thread_set_texture_enable(void *data, bool state, bool full_screen)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void thread_set_osd_msg(void *data, const char *msg, const struct font_params *params)
|
static void thread_set_osd_msg(void *data, const char *msg,
|
||||||
|
const struct font_params *params, void *font)
|
||||||
{
|
{
|
||||||
thread_video_t *thr = (thread_video_t*)data;
|
thread_video_t *thr = (thread_video_t*)data;
|
||||||
|
|
||||||
@ -735,7 +748,7 @@ static void thread_set_osd_msg(void *data, const char *msg, const struct font_pa
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if (thr->poke && thr->poke->set_osd_msg)
|
if (thr->poke && thr->poke->set_osd_msg)
|
||||||
thr->poke->set_osd_msg(thr->driver_data, msg, params);
|
thr->poke->set_osd_msg(thr->driver_data, msg, params, font);
|
||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
else
|
else
|
||||||
|
@ -55,6 +55,7 @@ enum thread_cmd
|
|||||||
#endif
|
#endif
|
||||||
CMD_POKE_SET_ASPECT_RATIO,
|
CMD_POKE_SET_ASPECT_RATIO,
|
||||||
CMD_POKE_SET_OSD_MSG,
|
CMD_POKE_SET_OSD_MSG,
|
||||||
|
CMD_FONT_INIT,
|
||||||
CMD_CUSTOM_COMMAND,
|
CMD_CUSTOM_COMMAND,
|
||||||
|
|
||||||
CMD_DUMMY = INT_MAX
|
CMD_DUMMY = INT_MAX
|
||||||
@ -158,6 +159,16 @@ typedef struct thread_video
|
|||||||
int return_value;
|
int return_value;
|
||||||
} custom_command;
|
} custom_command;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
bool (*method)(void*, void*, void*, const char*, float);
|
||||||
|
void *font_driver;
|
||||||
|
void *font_handle;
|
||||||
|
void *video_data;
|
||||||
|
const char *font_path;
|
||||||
|
float font_size;
|
||||||
|
bool return_value;
|
||||||
|
} font_init;
|
||||||
|
|
||||||
} cmd_data;
|
} cmd_data;
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ static void glui_blit_line(float x, float y, const char *message, bool green)
|
|||||||
if (driver.video_data && driver.video_poke
|
if (driver.video_data && driver.video_poke
|
||||||
&& driver.video_poke->set_osd_msg)
|
&& driver.video_poke->set_osd_msg)
|
||||||
driver.video_poke->set_osd_msg(driver.video_data,
|
driver.video_poke->set_osd_msg(driver.video_data,
|
||||||
message, ¶ms);
|
message, ¶ms, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void glui_render_background(bool force_transparency)
|
static void glui_render_background(bool force_transparency)
|
||||||
|
@ -123,7 +123,7 @@ static void lakka_draw_text(lakka_handle_t *lakka,
|
|||||||
if (driver.video_data && driver.video_poke
|
if (driver.video_data && driver.video_poke
|
||||||
&& driver.video_poke->set_osd_msg)
|
&& driver.video_poke->set_osd_msg)
|
||||||
driver.video_poke->set_osd_msg(driver.video_data,
|
driver.video_poke->set_osd_msg(driver.video_data,
|
||||||
str, ¶ms);
|
str, ¶ms, lakka->font);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lakka_draw_background(bool force_transparency)
|
static void lakka_draw_background(bool force_transparency)
|
||||||
@ -654,12 +654,35 @@ static GLuint lakka_png_texture_load(const char* file_name)
|
|||||||
thr->wait_reply_func(thr, CMD_CUSTOM_COMMAND);
|
thr->wait_reply_func(thr, CMD_CUSTOM_COMMAND);
|
||||||
|
|
||||||
return thr->cmd_data.custom_command.return_value;
|
return thr->cmd_data.custom_command.return_value;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return lakka_png_texture_load_(file_name);
|
return lakka_png_texture_load_(file_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool lakka_font_init_first(const gl_font_renderer_t **font_driver,
|
||||||
|
void **font_handle, void *video_data, const char *font_path,
|
||||||
|
float font_size)
|
||||||
|
{
|
||||||
|
if (g_settings.video.threaded
|
||||||
|
&& !g_extern.system.hw_render_callback.context_type)
|
||||||
|
{
|
||||||
|
thread_video_t *thr = (thread_video_t*)driver.video_data;
|
||||||
|
thr->cmd_data.font_init.method = gl_font_init_first;
|
||||||
|
thr->cmd_data.font_init.font_driver = font_driver;
|
||||||
|
thr->cmd_data.font_init.font_handle = font_handle;
|
||||||
|
thr->cmd_data.font_init.video_data = video_data;
|
||||||
|
thr->cmd_data.font_init.font_path = font_path;
|
||||||
|
thr->cmd_data.font_init.font_size = font_size;
|
||||||
|
thr->send_cmd_func(thr, CMD_FONT_INIT);
|
||||||
|
thr->wait_reply_func(thr, CMD_FONT_INIT);
|
||||||
|
|
||||||
|
return thr->cmd_data.font_init.return_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return gl_font_init_first(font_driver, font_handle, video_data,
|
||||||
|
font_path, font_size);
|
||||||
|
}
|
||||||
|
|
||||||
static void lakka_context_destroy(void *data)
|
static void lakka_context_destroy(void *data)
|
||||||
{
|
{
|
||||||
int i, j, k;
|
int i, j, k;
|
||||||
@ -861,9 +884,10 @@ static void lakka_settings_context_reset(void)
|
|||||||
static void lakka_context_reset(void *data)
|
static void lakka_context_reset(void *data)
|
||||||
{
|
{
|
||||||
int i, j, k;
|
int i, j, k;
|
||||||
char mediapath[PATH_MAX], themepath[PATH_MAX], iconpath[PATH_MAX];
|
char mediapath[PATH_MAX], themepath[PATH_MAX], iconpath[PATH_MAX], font_path[PATH_MAX];
|
||||||
lakka_handle_t *lakka = NULL;
|
lakka_handle_t *lakka = NULL;
|
||||||
menu_handle_t *menu = (menu_handle_t*)data;
|
menu_handle_t *menu = (menu_handle_t*)data;
|
||||||
|
gl_t *gl = NULL;
|
||||||
|
|
||||||
if (!menu)
|
if (!menu)
|
||||||
return;
|
return;
|
||||||
@ -873,6 +897,11 @@ static void lakka_context_reset(void *data)
|
|||||||
if (!lakka)
|
if (!lakka)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
gl = (gl_t*)driver_video_resolve(NULL);
|
||||||
|
|
||||||
|
if (!gl)
|
||||||
|
return;
|
||||||
|
|
||||||
#if defined(HAVE_FBO) && defined(LAKKA_EFFECTS)
|
#if defined(HAVE_FBO) && defined(LAKKA_EFFECTS)
|
||||||
lakka_fbo_reset(lakka);
|
lakka_fbo_reset(lakka);
|
||||||
#endif
|
#endif
|
||||||
@ -885,6 +914,11 @@ static void lakka_context_reset(void *data)
|
|||||||
fill_pathname_join(iconpath, themepath, lakka->icon_dir, sizeof(iconpath));
|
fill_pathname_join(iconpath, themepath, lakka->icon_dir, sizeof(iconpath));
|
||||||
fill_pathname_slash(iconpath, sizeof(iconpath));
|
fill_pathname_slash(iconpath, sizeof(iconpath));
|
||||||
|
|
||||||
|
fill_pathname_join(font_path, themepath, "font.ttf", sizeof(font_path));
|
||||||
|
|
||||||
|
lakka_font_init_first(&gl->font_driver, &lakka->font, gl, font_path, lakka->font_size);
|
||||||
|
//gl_font_init_first(&gl->font_driver, &lakka->font, gl, font_path, lakka->font_size);
|
||||||
|
|
||||||
fill_pathname_join(lakka->textures[TEXTURE_BG].path, iconpath,
|
fill_pathname_join(lakka->textures[TEXTURE_BG].path, iconpath,
|
||||||
"bg.png", sizeof(lakka->textures[TEXTURE_BG].path));
|
"bg.png", sizeof(lakka->textures[TEXTURE_BG].path));
|
||||||
fill_pathname_join(lakka->textures[TEXTURE_SETTINGS].path, iconpath,
|
fill_pathname_join(lakka->textures[TEXTURE_SETTINGS].path, iconpath,
|
||||||
@ -1204,14 +1238,15 @@ static void *lakka_init(void)
|
|||||||
strlcpy(lakka->icon_dir, "256", sizeof(lakka->icon_dir));
|
strlcpy(lakka->icon_dir, "256", sizeof(lakka->icon_dir));
|
||||||
|
|
||||||
lakka->icon_size = 128.0 * lakka->scale_factor;
|
lakka->icon_size = 128.0 * lakka->scale_factor;
|
||||||
|
lakka->font_size = 32.0 * lakka->scale_factor;
|
||||||
lakka->hspacing = 200.0 * lakka->scale_factor;
|
lakka->hspacing = 200.0 * lakka->scale_factor;
|
||||||
lakka->vspacing = 64.0 * lakka->scale_factor;
|
lakka->vspacing = 64.0 * lakka->scale_factor;
|
||||||
lakka->margin_left = 336.0 * lakka->scale_factor;
|
lakka->margin_left = 336.0 * lakka->scale_factor;
|
||||||
lakka->margin_top = (256+32) * lakka->scale_factor;
|
lakka->margin_top = (256+32) * lakka->scale_factor;
|
||||||
lakka->title_margin_left = 60 * lakka->scale_factor;
|
lakka->title_margin_left = 60 * lakka->scale_factor;
|
||||||
lakka->title_margin_top = 60 * lakka->scale_factor + g_settings.video.font_size/3;
|
lakka->title_margin_top = 60 * lakka->scale_factor + lakka->font_size/3;
|
||||||
lakka->label_margin_left = 85.0 * lakka->scale_factor;
|
lakka->label_margin_left = 85.0 * lakka->scale_factor;
|
||||||
lakka->label_margin_top = g_settings.video.font_size/3.0;
|
lakka->label_margin_top = lakka->font_size/3.0;
|
||||||
lakka->setting_margin_left = 600.0 * lakka->scale_factor;
|
lakka->setting_margin_left = 600.0 * lakka->scale_factor;
|
||||||
|
|
||||||
lakka->depth = 0;
|
lakka->depth = 0;
|
||||||
|
@ -127,6 +127,8 @@ typedef struct lakka_handle
|
|||||||
GLuint fbo;
|
GLuint fbo;
|
||||||
GLuint fbo_color;
|
GLuint fbo_color;
|
||||||
GLuint fbo_depth;
|
GLuint fbo_depth;
|
||||||
|
void *font;
|
||||||
|
int font_size;
|
||||||
} lakka_handle_t;
|
} lakka_handle_t;
|
||||||
|
|
||||||
#endif /* MENU_DISP_LAKKA_H */
|
#endif /* MENU_DISP_LAKKA_H */
|
||||||
|
@ -222,7 +222,7 @@ static void xmb_draw_text(const char *str, float x,
|
|||||||
if (driver.video_data && driver.video_poke
|
if (driver.video_data && driver.video_poke
|
||||||
&& driver.video_poke->set_osd_msg)
|
&& driver.video_poke->set_osd_msg)
|
||||||
driver.video_poke->set_osd_msg(driver.video_data,
|
driver.video_poke->set_osd_msg(driver.video_data,
|
||||||
str, ¶ms);
|
str, ¶ms, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void xmb_render_background(bool force_transparency)
|
static void xmb_render_background(bool force_transparency)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user