mirror of
https://github.com/libretro/RetroArch
synced 2025-03-01 07:13:35 +00:00
(Font) Some simplifications
This commit is contained in:
parent
1b3f9b84d9
commit
a0292c1db4
@ -276,7 +276,6 @@ static bool gdi_font_init_first(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_VULKAN
|
#ifdef HAVE_VULKAN
|
||||||
|
|
||||||
static bool vulkan_font_init_first(
|
static bool vulkan_font_init_first(
|
||||||
const void **font_driver, void **font_handle,
|
const void **font_driver, void **font_handle,
|
||||||
void *video_data, const char *font_path,
|
void *video_data, const char *font_path,
|
||||||
@ -1018,70 +1017,58 @@ int font_driver_get_message_width(void *font_data,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int font_driver_get_line_height(void *font_data, float scale)
|
int font_driver_get_line_height(font_data_t *font, float scale)
|
||||||
{
|
{
|
||||||
struct font_line_metrics *metrics = NULL;
|
struct font_line_metrics *metrics = NULL;
|
||||||
font_data_t *font = (font_data_t*)(font_data ? font_data : video_font_driver);
|
|
||||||
|
|
||||||
/* First try the line metrics implementation */
|
/* First try the line metrics implementation */
|
||||||
if (font && font->renderer && font->renderer->get_line_metrics)
|
if (font && font->renderer && font->renderer->get_line_metrics)
|
||||||
if ((font->renderer->get_line_metrics(
|
if ((font->renderer->get_line_metrics(
|
||||||
font->renderer_data, &metrics)))
|
font->renderer_data, &metrics)))
|
||||||
return (int)roundf(metrics->height * scale);
|
return (int)roundf(metrics->height * scale);
|
||||||
|
|
||||||
/* Else return an approximation
|
/* Else return an approximation
|
||||||
* (uses a fudge of standard font metrics - mostly garbage...)
|
* (uses a fudge of standard font metrics - mostly garbage...)
|
||||||
* > font_size = (width of 'a') / 0.6
|
* > font_size = (width of 'a') / 0.6
|
||||||
* > line_height = font_size * 1.7f */
|
* > line_height = font_size * 1.7f */
|
||||||
return (int)roundf(1.7f * (float)font_driver_get_message_width(font_data, "a", 1, scale) / 0.6f);
|
return (int)roundf(1.7f * (float)font_driver_get_message_width(font, "a", 1, scale) / 0.6f);
|
||||||
}
|
}
|
||||||
|
|
||||||
int font_driver_get_line_ascender(void *font_data, float scale)
|
int font_driver_get_line_ascender(font_data_t *font, float scale)
|
||||||
{
|
{
|
||||||
struct font_line_metrics *metrics = NULL;
|
struct font_line_metrics *metrics = NULL;
|
||||||
font_data_t *font = (font_data_t*)(font_data ? font_data : video_font_driver);
|
|
||||||
|
|
||||||
/* First try the line metrics implementation */
|
/* First try the line metrics implementation */
|
||||||
if (font && font->renderer && font->renderer->get_line_metrics)
|
if (font && font->renderer && font->renderer->get_line_metrics)
|
||||||
if ((font->renderer->get_line_metrics(font->renderer_data, &metrics)))
|
if ((font->renderer->get_line_metrics(font->renderer_data, &metrics)))
|
||||||
return (int)roundf(metrics->ascender * scale);
|
return (int)roundf(metrics->ascender * scale);
|
||||||
|
|
||||||
/* Else return an approximation
|
/* Else return an approximation
|
||||||
* (uses a fudge of standard font metrics - mostly garbage...)
|
* (uses a fudge of standard font metrics - mostly garbage...)
|
||||||
* > font_size = (width of 'a') / 0.6
|
* > font_size = (width of 'a') / 0.6
|
||||||
* > ascender = 1.58 * font_size * 0.75 */
|
* > ascender = 1.58 * font_size * 0.75 */
|
||||||
return (int)roundf(1.58f * 0.75f * (float)font_driver_get_message_width(font_data, "a", 1, scale) / 0.6f);
|
return (int)roundf(1.58f * 0.75f * (float)font_driver_get_message_width(font, "a", 1, scale) / 0.6f);
|
||||||
}
|
}
|
||||||
|
|
||||||
int font_driver_get_line_descender(void *font_data, float scale)
|
int font_driver_get_line_descender(font_data_t *font, float scale)
|
||||||
{
|
{
|
||||||
struct font_line_metrics *metrics = NULL;
|
struct font_line_metrics *metrics = NULL;
|
||||||
font_data_t *font = (font_data_t*)(font_data ? font_data : video_font_driver);
|
|
||||||
|
|
||||||
/* First try the line metrics implementation */
|
/* First try the line metrics implementation */
|
||||||
if (font && font->renderer && font->renderer->get_line_metrics)
|
if (font && font->renderer && font->renderer->get_line_metrics)
|
||||||
if ((font->renderer->get_line_metrics(font->renderer_data, &metrics)))
|
if ((font->renderer->get_line_metrics(font->renderer_data, &metrics)))
|
||||||
return (int)roundf(metrics->descender * scale);
|
return (int)roundf(metrics->descender * scale);
|
||||||
|
|
||||||
/* Else return an approximation
|
/* Else return an approximation
|
||||||
* (uses a fudge of standard font metrics - mostly garbage...)
|
* (uses a fudge of standard font metrics - mostly garbage...)
|
||||||
* > font_size = (width of 'a') / 0.6
|
* > font_size = (width of 'a') / 0.6
|
||||||
* > descender = 1.58 * font_size * 0.25 */
|
* > descender = 1.58 * font_size * 0.25 */
|
||||||
return (int)roundf(1.58f * 0.25f * (float)font_driver_get_message_width(font_data, "a", 1, scale) / 0.6f);
|
return (int)roundf(1.58f * 0.25f * (float)font_driver_get_message_width(font, "a", 1, scale) / 0.6f);
|
||||||
}
|
}
|
||||||
|
|
||||||
int font_driver_get_line_centre_offset(void *font_data, float scale)
|
int font_driver_get_line_centre_offset(font_data_t *font, float scale)
|
||||||
{
|
{
|
||||||
struct font_line_metrics *metrics = NULL;
|
struct font_line_metrics *metrics = NULL;
|
||||||
font_data_t *font = (font_data_t*)(font_data ? font_data : video_font_driver);
|
|
||||||
|
|
||||||
/* First try the line metrics implementation */
|
/* First try the line metrics implementation */
|
||||||
if (font && font->renderer && font->renderer->get_line_metrics)
|
if (font && font->renderer && font->renderer->get_line_metrics)
|
||||||
if ((font->renderer->get_line_metrics(font->renderer_data, &metrics)))
|
if ((font->renderer->get_line_metrics(font->renderer_data, &metrics)))
|
||||||
return (int)roundf((metrics->ascender - metrics->descender) * 0.5f * scale);
|
return (int)roundf((metrics->ascender - metrics->descender) * 0.5f * scale);
|
||||||
|
|
||||||
/* Else return an approximation... */
|
/* Else return an approximation... */
|
||||||
return (int)roundf((1.58f * 0.5f * (float)font_driver_get_message_width(font_data, "a", 1, scale) / 0.6f) / 2.0f);
|
return (int)roundf((1.58f * 0.5f * (float)font_driver_get_message_width(font, "a", 1, scale) / 0.6f) / 2.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void font_driver_free(void *font_data)
|
void font_driver_free(void *font_data)
|
||||||
|
@ -169,10 +169,10 @@ void font_driver_init_osd(
|
|||||||
|
|
||||||
void font_driver_free_osd(void);
|
void font_driver_free_osd(void);
|
||||||
|
|
||||||
int font_driver_get_line_height(void *font_data, float scale);
|
int font_driver_get_line_height(font_data_t *font, float scale);
|
||||||
int font_driver_get_line_ascender(void *font_data, float scale);
|
int font_driver_get_line_ascender(font_data_t *font, float scale);
|
||||||
int font_driver_get_line_descender(void *font_data, float scale);
|
int font_driver_get_line_descender(font_data_t *font, float scale);
|
||||||
int font_driver_get_line_centre_offset(void *font_data, float scale);
|
int font_driver_get_line_centre_offset(font_data_t *font, float scale);
|
||||||
|
|
||||||
extern font_renderer_t gl2_raster_font;
|
extern font_renderer_t gl2_raster_font;
|
||||||
extern font_renderer_t gl3_raster_font;
|
extern font_renderer_t gl3_raster_font;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user