Pass video_info to font driver functions

This commit is contained in:
twinaphex 2017-11-13 10:42:40 +01:00
parent 87c82797fd
commit 5879e551a5
13 changed files with 46 additions and 59 deletions

View File

@ -129,12 +129,6 @@ static void caca_render_msg(video_frame_info_t *video_info,
caca_refresh_display(*font->caca->caca_display); caca_refresh_display(*font->caca->caca_display);
} }
static void caca_font_flush_block(unsigned width, unsigned height,
void* data)
{
(void)data;
}
static void caca_font_bind_block(void* data, void* userdata) static void caca_font_bind_block(void* data, void* userdata)
{ {
(void)data; (void)data;
@ -147,6 +141,6 @@ font_renderer_t caca_font = {
"caca font", "caca font",
caca_font_get_glyph, /* get_glyph */ caca_font_get_glyph, /* get_glyph */
caca_font_bind_block, /* bind_block */ caca_font_bind_block, /* bind_block */
caca_font_flush_block, /* flush */ NULL, /* flush */
caca_get_message_width /* get_message_width */ caca_get_message_width /* get_message_width */
}; };

View File

@ -441,11 +441,6 @@ static const struct font_glyph* ctr_font_get_glyph(
return font->font_driver->get_glyph((void*)font->font_driver, code); return font->font_driver->get_glyph((void*)font->font_driver, code);
} }
static void ctr_font_flush_block(unsigned width, unsigned height, void* data)
{
(void)data;
}
static void ctr_font_bind_block(void* data, void* userdata) static void ctr_font_bind_block(void* data, void* userdata)
{ {
(void)data; (void)data;
@ -460,6 +455,6 @@ font_renderer_t ctr_font =
"ctrfont", "ctrfont",
ctr_font_get_glyph, ctr_font_get_glyph,
ctr_font_bind_block, ctr_font_bind_block,
ctr_font_flush_block, NULL, /* flush_block */
ctr_font_get_message_width, ctr_font_get_message_width,
}; };

View File

@ -140,7 +140,8 @@ static void gdi_render_msg(
SelectObject(font->gdi->memDC, font->gdi->bmp_old); SelectObject(font->gdi->memDC, font->gdi->bmp_old);
} }
static void gdi_font_flush_block(unsigned width, unsigned height, void* data) static void gdi_font_flush_block(unsigned width, unsigned height, void* data,
video_frame_info_t *video_info)
{ {
(void)data; (void)data;
} }

View File

@ -244,9 +244,9 @@ static int gl_get_message_width(void *data, const char *msg,
return delta_x * scale; return delta_x * scale;
} }
static void gl_raster_font_draw_vertices(gl_raster_t *font, const video_coords_t *coords) static void gl_raster_font_draw_vertices(gl_raster_t *font, const video_coords_t *coords,
video_frame_info_t *video_info)
{ {
video_shader_ctx_mvp_t mvp;
video_shader_ctx_coords_t coords_data; video_shader_ctx_coords_t coords_data;
if (font->atlas->dirty) if (font->atlas->dirty)
@ -260,10 +260,8 @@ static void gl_raster_font_draw_vertices(gl_raster_t *font, const video_coords_t
video_shader_driver_set_coords(coords_data); video_shader_driver_set_coords(coords_data);
mvp.data = font->gl; video_info->cb_shader_set_mvp(font->gl,
mvp.matrix = &font->gl->mvp_no_rot; video_info->shader_data, &font->gl->mvp_no_rot);
video_shader_driver_set_mvp(mvp);
glDrawArrays(GL_TRIANGLES, 0, coords->vertices); glDrawArrays(GL_TRIANGLES, 0, coords->vertices);
} }
@ -271,7 +269,8 @@ static void gl_raster_font_draw_vertices(gl_raster_t *font, const video_coords_t
static void gl_raster_font_render_line( static void gl_raster_font_render_line(
gl_raster_t *font, const char *msg, unsigned msg_len, gl_raster_t *font, const char *msg, unsigned msg_len,
GLfloat scale, const GLfloat color[4], GLfloat pos_x, GLfloat scale, const GLfloat color[4], GLfloat pos_x,
GLfloat pos_y, unsigned text_align) GLfloat pos_y, unsigned text_align,
video_frame_info_t *video_info)
{ {
unsigned i; unsigned i;
struct video_coords coords; struct video_coords coords;
@ -346,14 +345,15 @@ static void gl_raster_font_render_line(
if (font->block) if (font->block)
video_coord_array_append(&font->block->carr, &coords, coords.vertices); video_coord_array_append(&font->block->carr, &coords, coords.vertices);
else else
gl_raster_font_draw_vertices(font, &coords); gl_raster_font_draw_vertices(font, &coords, video_info);
} }
} }
static void gl_raster_font_render_message( static void gl_raster_font_render_message(
gl_raster_t *font, const char *msg, GLfloat scale, gl_raster_t *font, const char *msg, GLfloat scale,
const GLfloat color[4], GLfloat pos_x, GLfloat pos_y, const GLfloat color[4], GLfloat pos_x, GLfloat pos_y,
unsigned text_align) unsigned text_align,
video_frame_info_t *video_info)
{ {
float line_height; float line_height;
int lines = 0; int lines = 0;
@ -363,7 +363,8 @@ static void gl_raster_font_render_message(
{ {
gl_raster_font_render_line(font, gl_raster_font_render_line(font,
msg, (unsigned)strlen(msg), scale, color, pos_x, msg, (unsigned)strlen(msg), scale, color, pos_x,
pos_y, text_align); pos_y, text_align,
video_info);
return; return;
} }
@ -379,7 +380,8 @@ static void gl_raster_font_render_message(
/* Draw the line */ /* Draw the line */
gl_raster_font_render_line(font, gl_raster_font_render_line(font,
msg, msg_len, scale, color, pos_x, msg, msg_len, scale, color, pos_x,
pos_y - (float)lines*line_height, text_align); pos_y - (float)lines*line_height, text_align,
video_info);
if (!delim) if (!delim)
break; break;
@ -487,11 +489,13 @@ static void gl_raster_font_render_msg(
if (font->gl) if (font->gl)
gl_raster_font_render_message(font, msg, scale, color_dark, gl_raster_font_render_message(font, msg, scale, color_dark,
x + scale * drop_x / font->gl->vp.width, y + x + scale * drop_x / font->gl->vp.width, y +
scale * drop_y / font->gl->vp.height, text_align); scale * drop_y / font->gl->vp.height, text_align,
video_info);
} }
if (font->gl) if (font->gl)
gl_raster_font_render_message(font, msg, scale, color, x, y, text_align); gl_raster_font_render_message(font, msg, scale, color,
x, y, text_align, video_info);
} }
if (!font->block && font->gl) if (!font->block && font->gl)
@ -517,7 +521,7 @@ static const struct font_glyph *gl_raster_font_get_glyph(
} }
static void gl_raster_font_flush_block(unsigned width, unsigned height, static void gl_raster_font_flush_block(unsigned width, unsigned height,
void *data) void *data, video_frame_info_t *video_info)
{ {
gl_raster_t *font = (gl_raster_t*)data; gl_raster_t *font = (gl_raster_t*)data;
video_font_raster_block_t *block = font ? font->block : NULL; video_font_raster_block_t *block = font ? font->block : NULL;
@ -526,7 +530,8 @@ static void gl_raster_font_flush_block(unsigned width, unsigned height,
return; return;
gl_raster_font_setup_viewport(width, height, font, block->fullscreen); gl_raster_font_setup_viewport(width, height, font, block->fullscreen);
gl_raster_font_draw_vertices(font, (video_coords_t*)&block->carr.coords); gl_raster_font_draw_vertices(font, (video_coords_t*)&block->carr.coords,
video_info);
if (font->gl) if (font->gl)
{ {

View File

@ -129,12 +129,6 @@ static void vga_render_msg(video_frame_info_t *video_info,
} }
} }
static void vga_font_flush_block(unsigned width, unsigned height,
void* data)
{
(void)data;
}
static void vga_font_bind_block(void* data, void* userdata) static void vga_font_bind_block(void* data, void* userdata)
{ {
(void)data; (void)data;
@ -147,6 +141,6 @@ font_renderer_t vga_font = {
"vga font", "vga font",
vga_font_get_glyph, /* get_glyph */ vga_font_get_glyph, /* get_glyph */
vga_font_bind_block, /* bind_block */ vga_font_bind_block, /* bind_block */
vga_font_flush_block, /* flush */ NULL, /* flush */
vga_get_message_width /* get_message_width */ vga_get_message_width /* get_message_width */
}; };

View File

@ -346,12 +346,6 @@ static const struct font_glyph *vita2d_font_get_glyph(
return font->font_driver->get_glyph((void*)font->font_driver, code); return font->font_driver->get_glyph((void*)font->font_driver, code);
} }
static void vita2d_font_flush_block(unsigned width, unsigned height,
void *data)
{
(void)data;
}
static void vita2d_font_bind_block(void *data, void *userdata) static void vita2d_font_bind_block(void *data, void *userdata)
{ {
(void)data; (void)data;
@ -364,6 +358,6 @@ font_renderer_t vita2d_vita_font = {
"vita2dfont", "vita2dfont",
vita2d_font_get_glyph, vita2d_font_get_glyph,
vita2d_font_bind_block, vita2d_font_bind_block,
vita2d_font_flush_block, NULL, /* flush */
vita2d_font_get_message_width, vita2d_font_get_message_width,
}; };

View File

@ -436,7 +436,7 @@ static const struct font_glyph *vulkan_raster_font_get_glyph(
} }
static void vulkan_raster_font_flush_block(unsigned width, unsigned height, static void vulkan_raster_font_flush_block(unsigned width, unsigned height,
void *data) void *data, video_frame_info_t *video_info)
{ {
(void)data; (void)data;
} }

View File

@ -401,11 +401,6 @@ static const struct font_glyph* wiiu_font_get_glyph(
return font->font_driver->get_glyph((void*)font->font_driver, code); return font->font_driver->get_glyph((void*)font->font_driver, code);
} }
static void wiiu_font_flush_block(unsigned width, unsigned height, void* data)
{
(void)data;
}
static void wiiu_font_bind_block(void* data, void* userdata) static void wiiu_font_bind_block(void* data, void* userdata)
{ {
(void)data; (void)data;
@ -420,6 +415,6 @@ font_renderer_t wiiu_font =
"wiiufont", "wiiufont",
wiiu_font_get_glyph, wiiu_font_get_glyph,
wiiu_font_bind_block, wiiu_font_bind_block,
wiiu_font_flush_block, NULL, /* flush */
wiiu_font_get_message_width, wiiu_font_get_message_width,
}; };

View File

@ -452,13 +452,15 @@ void font_driver_bind_block(void *font_data, void *block)
font->renderer->bind_block(font->renderer_data, block); font->renderer->bind_block(font->renderer_data, block);
} }
void font_driver_flush(unsigned width, unsigned height, void *font_data) void font_driver_flush(unsigned width, unsigned height, void *font_data,
video_frame_info_t *video_info)
{ {
font_data_t *font = (font_data_t*)(font_data ? font_data : video_font_driver); font_data_t *font = (font_data_t*)(font_data ? font_data : video_font_driver);
if (font && font->renderer && font->renderer->flush) if (font && font->renderer && font->renderer->flush)
font->renderer->flush(width, height, font->renderer_data); font->renderer->flush(width, height, font->renderer_data, video_info);
} }
int font_driver_get_message_width(void *font_data, int font_driver_get_message_width(void *font_data,
const char *msg, unsigned len, float scale) const char *msg, unsigned len, float scale)
{ {

View File

@ -113,7 +113,8 @@ typedef struct font_renderer
const struct font_glyph *(*get_glyph)(void *data, uint32_t code); const struct font_glyph *(*get_glyph)(void *data, uint32_t code);
void (*bind_block)(void *data, void *block); void (*bind_block)(void *data, void *block);
void (*flush)(unsigned width, unsigned height, void *data); void (*flush)(unsigned width, unsigned height, void *data,
video_frame_info_t *video_info);
int (*get_message_width)(void *data, const char *msg, unsigned msg_len_full, float scale); int (*get_message_width)(void *data, const char *msg, unsigned msg_len_full, float scale);
} font_renderer_t; } font_renderer_t;
@ -154,7 +155,8 @@ void font_driver_bind_block(void *font_data, void *block);
int font_driver_get_message_width(void *font_data, const char *msg, unsigned len, float scale); int font_driver_get_message_width(void *font_data, const char *msg, unsigned len, float scale);
void font_driver_flush(unsigned width, unsigned height, void *font_data); void font_driver_flush(unsigned width, unsigned height, void *font_data,
video_frame_info_t *video_info);
void font_driver_free(void *font_data); void font_driver_free(void *font_data);

View File

@ -1502,10 +1502,12 @@ static void mui_frame(void *data, video_frame_info_t *video_info)
sublabel_color sublabel_color
); );
font_driver_flush(video_info->width, video_info->height, mui->font); font_driver_flush(video_info->width, video_info->height, mui->font,
video_info);
font_driver_bind_block(mui->font, NULL); font_driver_bind_block(mui->font, NULL);
font_driver_flush(video_info->width, video_info->height, mui->font2); font_driver_flush(video_info->width, video_info->height, mui->font2,
video_info);
font_driver_bind_block(mui->font2, NULL); font_driver_bind_block(mui->font2, NULL);
menu_animation_ctl(MENU_ANIMATION_CTL_SET_ACTIVE, NULL); menu_animation_ctl(MENU_ANIMATION_CTL_SET_ACTIVE, NULL);

View File

@ -3130,10 +3130,12 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
width, width,
height); height);
font_driver_flush(video_info->width, video_info->height, xmb->font); font_driver_flush(video_info->width, video_info->height, xmb->font,
video_info);
font_driver_bind_block(xmb->font, NULL); font_driver_bind_block(xmb->font, NULL);
font_driver_flush(video_info->width, video_info->height, xmb->font2); font_driver_flush(video_info->width, video_info->height, xmb->font2,
video_info);
font_driver_bind_block(xmb->font2, NULL); font_driver_bind_block(xmb->font2, NULL);
if (menu_input_dialog_get_display_kb()) if (menu_input_dialog_get_display_kb())

View File

@ -993,7 +993,8 @@ static void zarch_frame(void *data, video_frame_info_t *video_info)
zui->rendering = false; zui->rendering = false;
font_driver_flush(video_info->width, video_info->height, zui->font); font_driver_flush(video_info->width, video_info->height, zui->font,
video_info);
font_driver_bind_block(zui->font, NULL); font_driver_bind_block(zui->font, NULL);
menu_display_unset_viewport(video_info->width, video_info->height); menu_display_unset_viewport(video_info->width, video_info->height);