Revert "(drivers_font) Cut down on unnecessary strlen calls within a for loop"

This reverts commit 3e9d0b875835dba8452d18cf36bc0f9e4e46517a.
This commit is contained in:
twinaphex 2020-06-24 21:09:44 +02:00
parent 5fc63dc578
commit 9cb4d924cb
17 changed files with 66 additions and 121 deletions

View File

@ -89,7 +89,6 @@ static void caca_render_msg(
settings_t *settings = config_get_ptr();
float video_msg_pos_x = settings->floats.video_msg_pos_x;
float video_msg_pos_y = settings->floats.video_msg_pos_y;
size_t _msg_len = strlen(msg);
if (!font || string_is_empty(msg))
return;
@ -120,10 +119,10 @@ static void caca_render_msg(
switch (align)
{
case TEXT_ALIGN_RIGHT:
newX = (x * width * scale) - _msg_len;
newX = (x * width * scale) - strlen(msg);
break;
case TEXT_ALIGN_CENTER:
newX = (x * width * scale) - (_msg_len / 2);
newX = (x * width * scale) - (strlen(msg) / 2);
break;
case TEXT_ALIGN_LEFT:
default:

View File

@ -312,10 +312,9 @@ static void ctr_font_render_message(
const unsigned int color, float pos_x, float pos_y,
unsigned width, unsigned height, unsigned text_align)
{
float line_height;
struct font_line_metrics *line_metrics = NULL;
int lines = 0;
size_t _msg_len = strlen(msg);
float line_height;
if (!msg || !*msg)
return;
@ -324,7 +323,7 @@ static void ctr_font_render_message(
if (!font->font_driver->get_line_metrics ||
!font->font_driver->get_line_metrics(font->font_data, &line_metrics))
{
ctr_font_render_line(ctr, font, msg, (unsigned)_msg_len,
ctr_font_render_line(ctr, font, msg, strlen(msg),
scale, color, pos_x, pos_y,
width, height, text_align);
return;
@ -348,7 +347,7 @@ static void ctr_font_render_message(
}
else
{
unsigned msg_len = (unsigned)_msg_len;
unsigned msg_len = strlen(msg);
ctr_font_render_line(ctr, font, msg, msg_len,
scale, color, pos_x, pos_y - (float)lines * line_height,
width, height, text_align);

View File

@ -237,22 +237,19 @@ static void d3d10_font_render_message(
unsigned height,
unsigned text_align)
{
float line_height;
struct font_line_metrics *line_metrics = NULL;
int lines = 0;
size_t _msg_len = 0;
float line_height;
if (!msg || !*msg)
return;
_msg_len = strlen(msg);
/* If font line metrics are not supported just draw as usual */
if (!font->font_driver->get_line_metrics ||
!font->font_driver->get_line_metrics(font->font_data, &line_metrics))
{
d3d10_font_render_line(d3d10,
font, msg, (unsigned)_msg_len, scale, color, pos_x, pos_y,
font, msg, strlen(msg), scale, color, pos_x, pos_y,
width, height, text_align);
return;
}
@ -276,7 +273,7 @@ static void d3d10_font_render_message(
}
else
{
unsigned msg_len = (unsigned)_msg_len;
unsigned msg_len = strlen(msg);
d3d10_font_render_line(d3d10,
font, msg, msg_len, scale, color, pos_x,
pos_y - (float)lines * line_height,

View File

@ -234,22 +234,19 @@ static void d3d11_font_render_message(
unsigned height,
unsigned text_align)
{
float line_height;
struct font_line_metrics *line_metrics = NULL;
int lines = 0;
size_t _msg_len = 0;
float line_height;
if (!msg || !*msg)
return;
_msg_len = strlen(msg);
/* If font line metrics are not supported just draw as usual */
if (!font->font_driver->get_line_metrics ||
!font->font_driver->get_line_metrics(font->font_data, &line_metrics))
{
d3d11_font_render_line(d3d11,
font, msg, (unsigned)_msg_len, scale, color, pos_x, pos_y,
font, msg, strlen(msg), scale, color, pos_x, pos_y,
width, height, text_align);
return;
}
@ -273,7 +270,7 @@ static void d3d11_font_render_message(
}
else
{
unsigned msg_len = (unsigned)_msg_len;
unsigned msg_len = strlen(msg);
d3d11_font_render_line(d3d11,
font, msg, msg_len, scale, color, pos_x,
pos_y - (float)lines * line_height,

View File

@ -248,22 +248,19 @@ static void d3d12_font_render_message(
unsigned height,
unsigned text_align)
{
float line_height;
struct font_line_metrics *line_metrics = NULL;
int lines = 0;
size_t _msg_len = 0;
float line_height;
if (!msg || !*msg)
return;
_msg_len = strlen(msg);
/* If font line metrics are not supported just draw as usual */
if (!font->font_driver->get_line_metrics ||
!font->font_driver->get_line_metrics(font->font_data, &line_metrics))
{
d3d12_font_render_line(d3d12,
font, msg, _msg_len,
font, msg, strlen(msg),
scale, color, pos_x, pos_y, width, height, text_align);
return;
}
@ -286,7 +283,7 @@ static void d3d12_font_render_message(
}
else
{
unsigned msg_len = (unsigned)_msg_len;
unsigned msg_len = strlen(msg);
d3d12_font_render_line(d3d12,
font, msg, msg_len, scale, color, pos_x,
pos_y - (float)lines * line_height, width, height, text_align);

View File

@ -120,7 +120,7 @@ static int d3dfonts_w32_get_message_width(void* data, const char* msg,
return 0;
d3d9x_font_draw_text(d3dfonts->font, NULL, (void*)msg,
msg_len ? msg_len : -1, &box, DT_CALCRECT, 0);
msg_len? msg_len : -1, &box, DT_CALCRECT, 0);
return box.right - box.left;
}

View File

@ -90,13 +90,12 @@ static void gdi_render_msg(
const struct font_params *params)
{
float x, y, scale, drop_mod, drop_alpha;
int drop_x, drop_y;
int drop_x, drop_y, msg_strlen;
unsigned i;
unsigned newX, newY, newDropX, newDropY;
unsigned align;
unsigned red, green, blue;
unsigned drop_red, drop_green, drop_blue;
size_t _msg_len = 0;
gdi_t *gdi = (gdi_t*)userdata;
gdi_raster_t *font = (gdi_raster_t*)data;
unsigned width = gdi->video_width;
@ -143,9 +142,9 @@ static void gdi_render_msg(
blue = video_msg_color_b * 255.0f;
}
_msg_len = strlen(msg);
msg_strlen = strlen(msg);
GetTextExtentPoint32(font->gdi->memDC, msg, (int)_msg_len, &textSize);
GetTextExtentPoint32(font->gdi->memDC, msg, msg_strlen, &textSize);
switch (align)
{
@ -167,21 +166,21 @@ static void gdi_render_msg(
break;
}
newY = height - (y * height * scale) - textSize.cy;
newDropY = height - (drop_y * height * scale) - textSize.cy;
newY = height - (y * height * scale) - textSize.cy;
newDropY = height - (drop_y * height * scale) - textSize.cy;
font->gdi->bmp_old = (HBITMAP)SelectObject(font->gdi->memDC, font->gdi->bmp);
SetBkMode(font->gdi->memDC, TRANSPARENT);
msg_list = string_split(msg, "\n");
msg_list = string_split(msg, "\n");
if (drop_x || drop_y)
{
float dark_alpha = drop_alpha;
drop_red = red * drop_mod * dark_alpha;
drop_green = green * drop_mod * dark_alpha;
drop_blue = blue * drop_mod * dark_alpha;
drop_red = red * drop_mod * dark_alpha;
drop_green = green * drop_mod * dark_alpha;
drop_blue = blue * drop_mod * dark_alpha;
SetTextColor(font->gdi->memDC, RGB(drop_red, drop_green, drop_blue));

View File

@ -382,22 +382,16 @@ static void gl1_raster_font_render_message(
const GLfloat color[4], GLfloat pos_x, GLfloat pos_y,
unsigned text_align)
{
float line_height;
struct font_line_metrics *line_metrics = NULL;
int lines = 0;
size_t _msg_len = 0;
if (!msg || !*msg)
return;
_msg_len = strlen(msg);
float line_height;
/* If font line metrics are not supported just draw as usual */
if (!font->font_driver->get_line_metrics ||
!font->font_driver->get_line_metrics(font->font_data, &line_metrics))
{
gl1_raster_font_render_line(font,
msg, (unsigned)_msg_len, scale, color, pos_x,
msg, (unsigned)strlen(msg), scale, color, pos_x,
pos_y, text_align);
return;
}
@ -408,7 +402,7 @@ static void gl1_raster_font_render_message(
{
const char *delim = strchr(msg, '\n');
unsigned msg_len = delim
? (unsigned)(delim - msg) : (unsigned)_msg_len;
? (unsigned)(delim - msg) : (unsigned)strlen(msg);
/* Draw the line */
gl1_raster_font_render_line(font,

View File

@ -293,22 +293,16 @@ static void gl_core_raster_font_render_message(
const GLfloat color[4], GLfloat pos_x, GLfloat pos_y,
unsigned text_align)
{
float line_height;
struct font_line_metrics *line_metrics = NULL;
int lines = 0;
size_t _msg_len = 0;
if (!msg || !*msg)
return;
_msg_len = strlen(msg);
float line_height;
/* If font line metrics are not supported just draw as usual */
if (!font->font_driver->get_line_metrics ||
!font->font_driver->get_line_metrics(font->font_data, &line_metrics))
{
gl_core_raster_font_render_line(font,
msg, _msg_len, scale, color, pos_x,
msg, (unsigned)strlen(msg), scale, color, pos_x,
pos_y, text_align);
return;
}
@ -319,7 +313,7 @@ static void gl_core_raster_font_render_message(
{
const char *delim = strchr(msg, '\n');
unsigned msg_len = delim
? (unsigned)(delim - msg) : _msg_len;
? (unsigned)(delim - msg) : (unsigned)strlen(msg);
/* Draw the line */
gl_core_raster_font_render_line(font,

View File

@ -362,22 +362,16 @@ static void gl_raster_font_render_message(
const GLfloat color[4], GLfloat pos_x, GLfloat pos_y,
unsigned text_align)
{
float line_height;
struct font_line_metrics *line_metrics = NULL;
int lines = 0;
size_t _msg_len = 0;
if (!msg || !*msg)
return;
_msg_len = strlen(msg);
float line_height;
/* If font line metrics are not supported just draw as usual */
if (!font->font_driver->get_line_metrics ||
!font->font_driver->get_line_metrics(font->font_data, &line_metrics))
{
gl_raster_font_render_line(font,
msg, (unsigned)_msg_len, scale, color, pos_x,
msg, (unsigned)strlen(msg), scale, color, pos_x,
pos_y, text_align);
return;
}
@ -388,7 +382,7 @@ static void gl_raster_font_render_message(
{
const char *delim = strchr(msg, '\n');
unsigned msg_len = delim
? (unsigned)(delim - msg) : (unsigned)_msg_len;
? (unsigned)(delim - msg) : (unsigned)strlen(msg);
/* Draw the line */
gl_raster_font_render_line(font,

View File

@ -350,25 +350,18 @@ static INLINE void write_quad6(SpriteVertex *pv,
posY:(float)posY
aligned:(unsigned)aligned
{
float line_height;
int lines = 0;
struct font_line_metrics *line_metrics = NULL;
size_t _msg_len = 0;
if (!msg || !*msg)
return;
_msg_len = strlen(msg);
/* If font line metrics are not supported just draw as usual */
if (!_font_driver->get_line_metrics ||
!_font_driver->get_line_metrics(_font_data, &line_metrics))
{
[self _renderLine:msg length:(unsigned)_msg_len scale:scale color:color posX:posX posY:posY aligned:aligned];
[self _renderLine:msg length:strlen(msg) scale:scale color:color posX:posX posY:posY aligned:aligned];
return;
}
line_height = line_metrics->height * scale / height;
int lines = 0;
float line_height = line_metrics->height * scale / height;
for (;;)
{
@ -390,7 +383,7 @@ static INLINE void write_quad6(SpriteVertex *pv,
}
else
{
NSUInteger msg_len = (NSUInteger)_msg_len;
NSUInteger msg_len = strlen(msg);
[self _renderLine:msg
length:msg_len
scale:scale

View File

@ -83,20 +83,17 @@ static void sixel_render_msg(
{
float x, y, scale;
unsigned width, height;
unsigned new_x, new_y;
unsigned newX, newY;
unsigned align;
sixel_raster_t *font = (sixel_raster_t*)data;
const struct font_params *params = (const struct font_params*)_params;
settings_t *settings = config_get_ptr();
float video_msg_pos_x = settings->floats.video_msg_pos_x;
float video_msg_pos_y = settings->floats.video_msg_pos_y;
size_t _msg_len = 0;
if (!font || string_is_empty(msg))
return;
_msg_len = strlen(msg);
if (params)
{
x = params->x;
@ -117,19 +114,19 @@ static void sixel_render_msg(
width = font->sixel->screen_width;
height = font->sixel->screen_height;
new_y = height - (y * height * scale);
newY = height - (y * height * scale);
switch (align)
{
case TEXT_ALIGN_RIGHT:
new_x = (x * width * scale) - _msg_len;
newX = (x * width * scale) - strlen(msg);
break;
case TEXT_ALIGN_CENTER:
new_x = (x * width * scale) - (_msg_len / 2);
newX = (x * width * scale) - (strlen(msg) / 2);
break;
case TEXT_ALIGN_LEFT:
default:
new_x = x * width * scale;
newX = x * width * scale;
break;
}

View File

@ -193,24 +193,22 @@ static void switch_font_render_message(
const unsigned int color, float pos_x, float pos_y,
unsigned text_align)
{
float line_height;
struct font_line_metrics *line_metrics = NULL;
int lines = 0;
size_t _msg_len = 0;
float line_height;
if (!msg || !*msg)
return;
_msg_len = strlen(msg);
/* If font line metrics are not supported just draw as usual */
if (!font->font_driver->get_line_metrics ||
!font->font_driver->get_line_metrics(font->font_data, &line_metrics))
{
if (_msg_len <= AVG_GLPYH_LIMIT)
int msgLen = strlen(msg);
if (msgLen <= AVG_GLPYH_LIMIT)
{
if (sw)
switch_font_render_line(sw, font, msg, (unsigned)_msg_len,
switch_font_render_line(sw, font, msg, strlen(msg),
scale, color, pos_x, pos_y, text_align);
}
return;
@ -237,10 +235,11 @@ static void switch_font_render_message(
}
else
{
if (_msg_len <= AVG_GLPYH_LIMIT)
unsigned msg_len = strlen(msg);
if (msg_len <= AVG_GLPYH_LIMIT)
{
if (sw)
switch_font_render_line(sw, font, msg, (unsigned)_msg_len,
switch_font_render_line(sw, font, msg, msg_len,
scale, color, pos_x, pos_y - (float)lines * line_height,
text_align);
}

View File

@ -89,13 +89,10 @@ static void vga_render_msg(
settings_t *settings = config_get_ptr();
float video_msg_pos_x = settings->floats.video_msg_pos_x;
float video_msg_pos_y = settings->floats.video_msg_pos_y;
size_t _msg_len = 0;
if (!font || string_is_empty(msg))
return;
_msg_len = strlen(msg);
if (params)
{
x = params->x;
@ -124,10 +121,10 @@ static void vga_render_msg(
new_x = x * width * scale;
break;
case TEXT_ALIGN_RIGHT:
new_x = (x * width * scale) - _msg_len;
new_x = (x * width * scale) - strlen(msg);
break;
case TEXT_ALIGN_CENTER:
new_x = (x * width * scale) - (_msg_len / 2);
new_x = (x * width * scale) - (strlen(msg) / 2);
break;
default:
break;

View File

@ -225,21 +225,18 @@ static void vita2d_font_render_message(
const unsigned int color, float pos_x, float pos_y,
unsigned width, unsigned height, unsigned text_align)
{
float line_height;
struct font_line_metrics *line_metrics = NULL;
int lines = 0;
size_t _msg_len = 0;
float line_height;
if (!msg || !*msg)
return;
_msg_len = strlen(msg);
/* If font line metrics are not supported just draw as usual */
if (!font->font_driver->get_line_metrics ||
!font->font_driver->get_line_metrics(font->font_data, &line_metrics))
{
vita2d_font_render_line(font, msg, (unsigned)_msg_len,
vita2d_font_render_line(font, msg, strlen(msg),
scale, color, pos_x, pos_y, width, height, text_align);
return;
}
@ -249,7 +246,7 @@ static void vita2d_font_render_message(
for (;;)
{
const char *delim = strchr(msg, '\n');
unsigned msg_len = (delim) ? (delim - msg) : (unsigned)_msg_len;
unsigned msg_len = (delim) ? (delim - msg) : strlen(msg);
vita2d_font_render_line(font, msg, msg_len,
scale, color, pos_x, pos_y - (float)lines * line_height,

View File

@ -233,22 +233,19 @@ static void vulkan_raster_font_render_message(
const float color[4], float pos_x, float pos_y,
unsigned text_align)
{
float line_height;
struct font_line_metrics *line_metrics = NULL;
int lines = 0;
size_t _msg_len = 0;
float line_height;
if (!msg || !*msg || !font->vk)
return;
_msg_len = strlen(msg);
/* If font line metrics are not supported just draw as usual */
if (!font->font_driver->get_line_metrics ||
!font->font_driver->get_line_metrics(font->font_data, &line_metrics))
{
if (font->vk)
vulkan_raster_font_render_line(font, msg, (unsigned)_msg_len,
vulkan_raster_font_render_line(font, msg, strlen(msg),
scale, color, pos_x, pos_y, text_align);
return;
}
@ -272,7 +269,7 @@ static void vulkan_raster_font_render_message(
}
else
{
unsigned msg_len = _msg_len;
unsigned msg_len = strlen(msg);
if (font->vk)
vulkan_raster_font_render_line(font, msg, msg_len,
scale, color, pos_x, pos_y - (float)lines * line_height,

View File

@ -109,7 +109,7 @@ static void wiiu_font_free_font(void* data, bool is_threaded)
}
static int wiiu_font_get_message_width(void* data, const char* msg,
unsigned msg_len, float scale)
unsigned msg_len, float scale)
{
wiiu_font_t* font = (wiiu_font_t*)data;
@ -150,9 +150,7 @@ static void wiiu_font_render_line(
float pos_y,
unsigned width, unsigned height, unsigned text_align)
{
int count;
unsigned i;
sprite_vertex_t *v = NULL;
int x = roundf(pos_x * width);
int y = roundf((1.0 - pos_y) * height);
@ -171,7 +169,7 @@ static void wiiu_font_render_line(
break;
}
v = wiiu->vertex_cache.v + wiiu->vertex_cache.current;
sprite_vertex_t* v = wiiu->vertex_cache.v + wiiu->vertex_cache.current;
for (i = 0; i < msg_len; i++)
{
@ -209,7 +207,7 @@ static void wiiu_font_render_line(
y += glyph->advance_y * scale;
}
count = v - wiiu->vertex_cache.v - wiiu->vertex_cache.current;
int count = v - wiiu->vertex_cache.v - wiiu->vertex_cache.current;
if (!count)
return;
@ -243,21 +241,18 @@ static void wiiu_font_render_message(
const unsigned int color, float pos_x, float pos_y,
unsigned width, unsigned height, unsigned text_align)
{
float line_height;
struct font_line_metrics *line_metrics = NULL;
int lines = 0;
size_t _msg_len = 0;
float line_height;
if (!msg || !*msg)
return;
_msg_len = strlen(msg);
/* If font line metrics are not supported just draw as usual */
if (!font->font_driver->get_line_metrics ||
!font->font_driver->get_line_metrics(font->font_data, &line_metrics))
{
wiiu_font_render_line(wiiu, font, msg, (unsigned)_msg_len,
wiiu_font_render_line(wiiu, font, msg, strlen(msg),
scale, color, pos_x, pos_y,
width, height, text_align);
return;
@ -281,7 +276,7 @@ static void wiiu_font_render_message(
}
else
{
unsigned msg_len = (unsigned)_msg_len;
unsigned msg_len = strlen(msg);
wiiu_font_render_line(wiiu, font, msg, msg_len,
scale, color, pos_x, pos_y - (float)lines * line_height,
width, height, text_align);