mirror of
https://github.com/libretro/RetroArch
synced 2025-01-30 12:32:52 +00:00
Get rid of more function invocations of video_driver_get_size
This commit is contained in:
parent
586654846a
commit
a42748f90f
@ -150,33 +150,31 @@ static int ctr_font_get_message_width(void* data, const char* msg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void ctr_font_render_line(
|
static void ctr_font_render_line(
|
||||||
ctr_font_t* font, const char* msg, unsigned msg_len,
|
video_frame_info_t *video_info,
|
||||||
float scale, const unsigned int color, float pos_x,
|
ctr_font_t* font, const char* msg, unsigned msg_len,
|
||||||
float pos_y, unsigned text_align)
|
float scale, const unsigned int color, float pos_x,
|
||||||
|
float pos_y, unsigned text_align)
|
||||||
{
|
{
|
||||||
int x, y, delta_x, delta_y;
|
|
||||||
unsigned width, height;
|
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
|
ctr_vertex_t* v = NULL;
|
||||||
ctr_video_t* ctr = (ctr_video_t*)video_driver_get_ptr(false);
|
ctr_video_t* ctr = (ctr_video_t*)video_driver_get_ptr(false);
|
||||||
ctr_vertex_t* v;
|
unsigned width = video_info->width;
|
||||||
video_driver_get_size(&width, &height);
|
unsigned height = video_info->height;
|
||||||
|
int x = roundf(pos_x * width);
|
||||||
x = roundf(pos_x * width);
|
int y = roundf((1.0f - pos_y) * height);
|
||||||
y = roundf((1.0f - pos_y) * height);
|
int delta_x = 0;
|
||||||
delta_x = 0;
|
int delta_y = 0;
|
||||||
delta_y = 0;
|
|
||||||
|
|
||||||
|
|
||||||
switch (text_align)
|
switch (text_align)
|
||||||
{
|
{
|
||||||
case TEXT_ALIGN_RIGHT:
|
case TEXT_ALIGN_RIGHT:
|
||||||
x -= ctr_font_get_message_width(font, msg, msg_len, scale);
|
x -= ctr_font_get_message_width(font, msg, msg_len, scale);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TEXT_ALIGN_CENTER:
|
case TEXT_ALIGN_CENTER:
|
||||||
x -= ctr_font_get_message_width(font, msg, msg_len, scale) / 2;
|
x -= ctr_font_get_message_width(font, msg, msg_len, scale) / 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ctr->vertex_cache.size - (ctr->vertex_cache.current - ctr->vertex_cache.buffer)) < msg_len)
|
if ((ctr->vertex_cache.size - (ctr->vertex_cache.current - ctr->vertex_cache.buffer)) < msg_len)
|
||||||
@ -305,9 +303,10 @@ static void ctr_font_render_line(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void ctr_font_render_message(
|
static void ctr_font_render_message(
|
||||||
ctr_font_t* font, const char* msg, float scale,
|
video_frame_info_t *video_info,
|
||||||
const unsigned int color, float pos_x, float pos_y,
|
ctr_font_t* font, const char* msg, float scale,
|
||||||
unsigned text_align)
|
const unsigned int color, float pos_x, float pos_y,
|
||||||
|
unsigned text_align)
|
||||||
{
|
{
|
||||||
int lines = 0;
|
int lines = 0;
|
||||||
float line_height;
|
float line_height;
|
||||||
@ -318,7 +317,7 @@ static void ctr_font_render_message(
|
|||||||
/* If the font height is not supported just draw as usual */
|
/* If the font height is not supported just draw as usual */
|
||||||
if (!font->font_driver->get_line_height)
|
if (!font->font_driver->get_line_height)
|
||||||
{
|
{
|
||||||
ctr_font_render_line(font, msg, strlen(msg),
|
ctr_font_render_line(video_info, font, msg, strlen(msg),
|
||||||
scale, color, pos_x, pos_y, text_align);
|
scale, color, pos_x, pos_y, text_align);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -333,7 +332,7 @@ static void ctr_font_render_message(
|
|||||||
if (delim)
|
if (delim)
|
||||||
{
|
{
|
||||||
unsigned msg_len = delim - msg;
|
unsigned msg_len = delim - msg;
|
||||||
ctr_font_render_line(font, msg, msg_len,
|
ctr_font_render_line(video_info, font, msg, msg_len,
|
||||||
scale, color, pos_x, pos_y - (float)lines * line_height,
|
scale, color, pos_x, pos_y - (float)lines * line_height,
|
||||||
text_align);
|
text_align);
|
||||||
msg += msg_len + 1;
|
msg += msg_len + 1;
|
||||||
@ -342,7 +341,7 @@ static void ctr_font_render_message(
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
unsigned msg_len = strlen(msg);
|
unsigned msg_len = strlen(msg);
|
||||||
ctr_font_render_line(font, msg, msg_len,
|
ctr_font_render_line(video_info, font, msg, msg_len,
|
||||||
scale, color, pos_x, pos_y - (float)lines * line_height,
|
scale, color, pos_x, pos_y - (float)lines * line_height,
|
||||||
text_align);
|
text_align);
|
||||||
break;
|
break;
|
||||||
@ -416,12 +415,12 @@ static void ctr_font_render_msg(
|
|||||||
alpha_dark = alpha * drop_alpha;
|
alpha_dark = alpha * drop_alpha;
|
||||||
color_dark = COLOR_ABGR(r_dark, g_dark, b_dark, alpha_dark);
|
color_dark = COLOR_ABGR(r_dark, g_dark, b_dark, alpha_dark);
|
||||||
|
|
||||||
ctr_font_render_message(font, msg, scale, color_dark,
|
ctr_font_render_message(video_info, font, msg, scale, color_dark,
|
||||||
x + scale * drop_x / width, y +
|
x + scale * drop_x / width, y +
|
||||||
scale * drop_y / height, text_align);
|
scale * drop_y / height, text_align);
|
||||||
}
|
}
|
||||||
|
|
||||||
ctr_font_render_message(font, msg, scale,
|
ctr_font_render_message(video_info, font, msg, scale,
|
||||||
color, x, y, text_align);
|
color, x, y, text_align);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -388,13 +388,11 @@ static void gl_raster_font_render_message(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gl_raster_font_setup_viewport(gl_raster_t *font, bool full_screen)
|
static void gl_raster_font_setup_viewport(unsigned width, unsigned height,
|
||||||
|
gl_raster_t *font, bool full_screen)
|
||||||
{
|
{
|
||||||
unsigned width, height;
|
|
||||||
video_shader_ctx_info_t shader_info;
|
video_shader_ctx_info_t shader_info;
|
||||||
|
|
||||||
video_driver_get_size(&width, &height);
|
|
||||||
|
|
||||||
video_driver_set_viewport(width, height, full_screen, false);
|
video_driver_set_viewport(width, height, full_screen, false);
|
||||||
|
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
@ -410,12 +408,9 @@ static void gl_raster_font_setup_viewport(gl_raster_t *font, bool full_screen)
|
|||||||
video_shader_driver_use(shader_info);
|
video_shader_driver_use(shader_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gl_raster_font_restore_viewport(gl_t *gl, bool full_screen)
|
static void gl_raster_font_restore_viewport(unsigned width, unsigned height,
|
||||||
|
gl_t *gl, bool full_screen)
|
||||||
{
|
{
|
||||||
unsigned width, height;
|
|
||||||
|
|
||||||
video_driver_get_size(&width, &height);
|
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]);
|
glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]);
|
||||||
|
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
@ -434,6 +429,8 @@ static void gl_raster_font_render_msg(
|
|||||||
bool full_screen = false ;
|
bool full_screen = false ;
|
||||||
gl_t *gl = NULL;
|
gl_t *gl = NULL;
|
||||||
gl_raster_t *font = (gl_raster_t*)data;
|
gl_raster_t *font = (gl_raster_t*)data;
|
||||||
|
unsigned width = video_info->width;
|
||||||
|
unsigned height = video_info->height;
|
||||||
const struct font_params *params = (const struct font_params*)userdata;
|
const struct font_params *params = (const struct font_params*)userdata;
|
||||||
|
|
||||||
if (!font || string_is_empty(msg))
|
if (!font || string_is_empty(msg))
|
||||||
@ -487,7 +484,7 @@ static void gl_raster_font_render_msg(
|
|||||||
if (font && font->block)
|
if (font && font->block)
|
||||||
font->block->fullscreen = full_screen;
|
font->block->fullscreen = full_screen;
|
||||||
else
|
else
|
||||||
gl_raster_font_setup_viewport(font, full_screen);
|
gl_raster_font_setup_viewport(width, height, font, full_screen);
|
||||||
|
|
||||||
if (drop_x || drop_y)
|
if (drop_x || drop_y)
|
||||||
{
|
{
|
||||||
@ -506,7 +503,7 @@ static void gl_raster_font_render_msg(
|
|||||||
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);
|
||||||
|
|
||||||
if (!font->block)
|
if (!font->block)
|
||||||
gl_raster_font_restore_viewport(gl, false);
|
gl_raster_font_restore_viewport(width, height, gl, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct font_glyph *gl_raster_font_get_glyph(
|
static const struct font_glyph *gl_raster_font_get_glyph(
|
||||||
@ -523,15 +520,18 @@ static const struct font_glyph *gl_raster_font_get_glyph(
|
|||||||
|
|
||||||
static void gl_raster_font_flush_block(void *data)
|
static void gl_raster_font_flush_block(void *data)
|
||||||
{
|
{
|
||||||
|
unsigned width, height;
|
||||||
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;
|
||||||
|
|
||||||
if (!font || !block || !block->carr.coords.vertices)
|
if (!font || !block || !block->carr.coords.vertices)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gl_raster_font_setup_viewport(font, block->fullscreen);
|
video_driver_get_size(&width, &height);
|
||||||
|
|
||||||
|
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);
|
||||||
gl_raster_font_restore_viewport(font->gl, block->fullscreen);
|
gl_raster_font_restore_viewport(width, height, font->gl, block->fullscreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gl_raster_font_bind_block(void *data, void *userdata)
|
static void gl_raster_font_bind_block(void *data, void *userdata)
|
||||||
|
@ -139,20 +139,18 @@ static int vita2d_font_get_message_width(void *data, const char *msg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void vita2d_font_render_line(
|
static void vita2d_font_render_line(
|
||||||
|
video_frame_info_t *video_info,
|
||||||
vita_font_t *font, const char *msg, unsigned msg_len,
|
vita_font_t *font, const char *msg, unsigned msg_len,
|
||||||
float scale, const unsigned int color, float pos_x,
|
float scale, const unsigned int color, float pos_x,
|
||||||
float pos_y, unsigned text_align)
|
float pos_y, unsigned text_align)
|
||||||
{
|
{
|
||||||
int x, y, delta_x, delta_y;
|
|
||||||
unsigned width, height;
|
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
unsigned width = video_info->width;
|
||||||
video_driver_get_size(&width, &height);
|
unsigned height = video_info->height;
|
||||||
|
int x = roundf(pos_x * width);
|
||||||
x = roundf(pos_x * width);
|
int y = roundf((1.0f - pos_y) * height);
|
||||||
y = roundf((1.0f - pos_y) * height);
|
int delta_x = 0;
|
||||||
delta_x = 0;
|
int delta_y = 0;
|
||||||
delta_y = 0;
|
|
||||||
|
|
||||||
switch (text_align)
|
switch (text_align)
|
||||||
{
|
{
|
||||||
@ -221,6 +219,7 @@ static void vita2d_font_render_line(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void vita2d_font_render_message(
|
static void vita2d_font_render_message(
|
||||||
|
video_frame_info_t *video_info,
|
||||||
vita_font_t *font, const char *msg, float scale,
|
vita_font_t *font, const char *msg, float scale,
|
||||||
const unsigned int color, float pos_x, float pos_y,
|
const unsigned int color, float pos_x, float pos_y,
|
||||||
unsigned text_align)
|
unsigned text_align)
|
||||||
@ -234,7 +233,7 @@ static void vita2d_font_render_message(
|
|||||||
/* If the font height is not supported just draw as usual */
|
/* If the font height is not supported just draw as usual */
|
||||||
if (!font->font_driver->get_line_height)
|
if (!font->font_driver->get_line_height)
|
||||||
{
|
{
|
||||||
vita2d_font_render_line(font, msg, strlen(msg),
|
vita2d_font_render_line(video_info, font, msg, strlen(msg),
|
||||||
scale, color, pos_x, pos_y, text_align);
|
scale, color, pos_x, pos_y, text_align);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -247,7 +246,7 @@ static void vita2d_font_render_message(
|
|||||||
const char *delim = strchr(msg, '\n');
|
const char *delim = strchr(msg, '\n');
|
||||||
unsigned msg_len = (delim) ? (delim - msg) : strlen(msg);
|
unsigned msg_len = (delim) ? (delim - msg) : strlen(msg);
|
||||||
|
|
||||||
vita2d_font_render_line(font, msg, msg_len,
|
vita2d_font_render_line(video_info, font, msg, msg_len,
|
||||||
scale, color, pos_x, pos_y - (float)lines * line_height,
|
scale, color, pos_x, pos_y - (float)lines * line_height,
|
||||||
text_align);
|
text_align);
|
||||||
|
|
||||||
@ -326,12 +325,12 @@ static void vita2d_font_render_msg(
|
|||||||
alpha_dark = alpha * drop_alpha;
|
alpha_dark = alpha * drop_alpha;
|
||||||
color_dark = RGBA8(r_dark,g_dark,b_dark,alpha_dark);
|
color_dark = RGBA8(r_dark,g_dark,b_dark,alpha_dark);
|
||||||
|
|
||||||
vita2d_font_render_message(font, msg, scale, color_dark,
|
vita2d_font_render_message(video_info, font, msg, scale, color_dark,
|
||||||
x + scale * drop_x / width, y +
|
x + scale * drop_x / width, y +
|
||||||
scale * drop_y / height, text_align);
|
scale * drop_y / height, text_align);
|
||||||
}
|
}
|
||||||
|
|
||||||
vita2d_font_render_message(font, msg, scale,
|
vita2d_font_render_message(video_info, font, msg, scale,
|
||||||
color, x, y, text_align);
|
color, x, y, text_align);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,10 +234,9 @@ static void vulkan_raster_font_render_message(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void vulkan_raster_font_setup_viewport(
|
static void vulkan_raster_font_setup_viewport(
|
||||||
|
unsigned width, unsigned height,
|
||||||
vulkan_raster_t *font, bool full_screen)
|
vulkan_raster_t *font, bool full_screen)
|
||||||
{
|
{
|
||||||
unsigned width, height;
|
|
||||||
video_driver_get_size(&width, &height);
|
|
||||||
video_driver_set_viewport(width, height, full_screen, false);
|
video_driver_set_viewport(width, height, full_screen, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,6 +268,8 @@ static void vulkan_raster_font_render_msg(
|
|||||||
float x, y, scale, drop_mod, drop_alpha;
|
float x, y, scale, drop_mod, drop_alpha;
|
||||||
vk_t *vk = NULL;
|
vk_t *vk = NULL;
|
||||||
vulkan_raster_t *font = (vulkan_raster_t*)data;
|
vulkan_raster_t *font = (vulkan_raster_t*)data;
|
||||||
|
unsigned width = video_info->width;
|
||||||
|
unsigned height = video_info->height;
|
||||||
const struct font_params *params = (const struct font_params*)userdata;
|
const struct font_params *params = (const struct font_params*)userdata;
|
||||||
|
|
||||||
if (!font || !msg || !*msg)
|
if (!font || !msg || !*msg)
|
||||||
@ -316,7 +317,7 @@ static void vulkan_raster_font_render_msg(
|
|||||||
drop_alpha = 1.0f;
|
drop_alpha = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
vulkan_raster_font_setup_viewport(font, full_screen);
|
vulkan_raster_font_setup_viewport(width, height, font, full_screen);
|
||||||
|
|
||||||
max_glyphs = strlen(msg);
|
max_glyphs = strlen(msg);
|
||||||
if (drop_x || drop_y)
|
if (drop_x || drop_y)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user