diff --git a/gfx/drivers/caca_gfx.c b/gfx/drivers/caca_gfx.c index 30573a2b06..e2113f5f9e 100644 --- a/gfx/drivers/caca_gfx.c +++ b/gfx/drivers/caca_gfx.c @@ -78,7 +78,7 @@ static void caca_font_free(void *data, bool is_threaded) if (!font) return; - if (font->font_driver && font->font_data && font->font_driver->free) + if (font->font_driver && font->font_data) font->font_driver->free(font->font_data); free(font); diff --git a/gfx/drivers/ctr_gfx.c b/gfx/drivers/ctr_gfx.c index 60a2a097b4..3e285682be 100644 --- a/gfx/drivers/ctr_gfx.c +++ b/gfx/drivers/ctr_gfx.c @@ -503,8 +503,7 @@ static void ctr_font_render_message( return; /* 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->font_driver->get_line_metrics(font->font_data, &line_metrics)) { size_t msg_len = strlen(msg); ctr_font_render_line(ctr, font, msg, msg_len, @@ -618,7 +617,7 @@ static const struct font_glyph* ctr_font_get_glyph( void* data, uint32_t code) { ctr_font_t* font = (ctr_font_t*)data; - if (font && font->font_driver && font->font_driver->ident) + if (font && font->font_driver) return font->font_driver->get_glyph((void*)font->font_driver, code); return NULL; } @@ -1307,7 +1306,8 @@ static void ctr_render_bottom_screen(void *data) msg_hash_to_str(MSG_3DS_BOTTOM_MENU_ASSET_NOT_FOUND), ¶ms); - sprintf(str_path, "%s\n/bottom_menu.png", dir_assets); + strlcpy(str_path, dir_assets, sizeof(str_path)); + strlcat(str_path, "\n/bottom_menu.png", sizeof(str_path)); params.scale = 1.10f; params.y -= 0.10f; diff --git a/gfx/drivers/d3d10.c b/gfx/drivers/d3d10.c index 2ea37e526b..9c8333be6f 100644 --- a/gfx/drivers/d3d10.c +++ b/gfx/drivers/d3d10.c @@ -618,7 +618,7 @@ static void d3d10_font_free(void* data, bool is_threaded) if (!font) return; - if (font->font_driver && font->font_data && font->font_driver->free) + if (font->font_driver && font->font_data) font->font_driver->free(font->font_data); Release(font->texture.handle); @@ -789,8 +789,7 @@ static void d3d10_font_render_message( return; /* 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->font_driver->get_line_metrics(font->font_data, &line_metrics)) { size_t msg_len = strlen(msg); if (msg_len <= (unsigned)d3d10->sprites.capacity) @@ -907,7 +906,7 @@ static void d3d10_font_render_msg( static const struct font_glyph* d3d10_font_get_glyph(void *data, uint32_t code) { d3d10_font_t* font = (d3d10_font_t*)data; - if (font && font->font_driver && font->font_driver->ident) + if (font && font->font_driver) return font->font_driver->get_glyph((void*)font->font_driver, code); return NULL; } diff --git a/gfx/drivers/d3d11.c b/gfx/drivers/d3d11.c index b3c5dac672..1217327a8d 100644 --- a/gfx/drivers/d3d11.c +++ b/gfx/drivers/d3d11.c @@ -667,7 +667,7 @@ static void d3d11_font_free(void* data, bool is_threaded) if (!font) return; - if (font->font_driver && font->font_data && font->font_driver->free) + if (font->font_driver && font->font_data) font->font_driver->free(font->font_data); Release(font->texture.handle); @@ -844,8 +844,7 @@ static void d3d11_font_render_message( return; /* 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->font_driver->get_line_metrics(font->font_data, &line_metrics)) { size_t msg_len = strlen(msg); if (msg_len <= (unsigned)d3d11->sprites.capacity) @@ -961,7 +960,7 @@ static void d3d11_font_render_msg( static const struct font_glyph* d3d11_font_get_glyph(void *data, uint32_t code) { d3d11_font_t* font = (d3d11_font_t*)data; - if (font && font->font_driver && font->font_driver->ident) + if (font && font->font_driver) return font->font_driver->get_glyph((void*)font->font_driver, code); return NULL; } diff --git a/gfx/drivers/d3d12.c b/gfx/drivers/d3d12.c index 400ce5e890..3c20386403 100644 --- a/gfx/drivers/d3d12.c +++ b/gfx/drivers/d3d12.c @@ -791,7 +791,7 @@ static void d3d12_font_free(void* data, bool is_threaded) if (!font) return; - if (font->font_driver && font->font_data && font->font_driver->free) + if (font->font_driver && font->font_data) font->font_driver->free(font->font_data); d3d12_release_texture(&font->texture); @@ -972,8 +972,7 @@ static void d3d12_font_render_message( return; /* 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->font_driver->get_line_metrics(font->font_data, &line_metrics)) { size_t msg_len = strlen(msg); if (msg_len <= d3d12->sprites.capacity) @@ -1089,7 +1088,7 @@ static const struct font_glyph* d3d12_font_get_glyph( void* data, uint32_t code) { d3d12_font_t* font = (d3d12_font_t*)data; - if (font && font->font_driver && font->font_driver->ident) + if (font && font->font_driver) return font->font_driver->get_glyph((void*)font->font_driver, code); return NULL; } diff --git a/gfx/drivers/dispmanx_gfx.c b/gfx/drivers/dispmanx_gfx.c index a012ee38ed..43529d545d 100644 --- a/gfx/drivers/dispmanx_gfx.c +++ b/gfx/drivers/dispmanx_gfx.c @@ -28,7 +28,6 @@ #include "../../driver.h" #include "../../retroarch.h" -#include "../font_driver.h" struct dispmanx_page { diff --git a/gfx/drivers/drm_gfx.c b/gfx/drivers/drm_gfx.c index 9b5405d656..716e49a656 100644 --- a/gfx/drivers/drm_gfx.c +++ b/gfx/drivers/drm_gfx.c @@ -35,7 +35,6 @@ #include "../../menu/menu_driver.h" #endif -#include "../font_driver.h" #include "../../retroarch.h" #include "../../verbosity.h" #include "../common/drm_common.h" diff --git a/gfx/drivers/gdi_gfx.c b/gfx/drivers/gdi_gfx.c index 318655fba2..8968f9bf96 100644 --- a/gfx/drivers/gdi_gfx.c +++ b/gfx/drivers/gdi_gfx.c @@ -198,7 +198,7 @@ static void gdi_font_free(void *data, bool is_threaded) if (!font) return; - if (font->font_driver && font->font_data && font->font_driver->free) + if (font->font_driver && font->font_data) font->font_driver->free(font->font_data); free(font); diff --git a/gfx/drivers/gl1.c b/gfx/drivers/gl1.c index 2edbe1099f..b6c74afe63 100644 --- a/gfx/drivers/gl1.c +++ b/gfx/drivers/gl1.c @@ -442,7 +442,6 @@ static int gl1_raster_font_get_message_width(void *data, const char *msg, if ( !font || !font->font_driver - || !font->font_driver->get_glyph || !font->font_data ) return 0; @@ -615,8 +614,7 @@ static void gl1_raster_font_render_message( 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)) + if (!font->font_driver->get_line_metrics(font->font_data, &line_metrics)) { gl1_raster_font_render_line(font->gl, font, msg, strlen(msg), scale, color, pos_x, @@ -766,7 +764,7 @@ static const struct font_glyph *gl1_raster_font_get_glyph( void *data, uint32_t code) { gl1_raster_t *font = (gl1_raster_t*)data; - if (font && font->font_driver && font->font_driver->ident) + if (font && font->font_driver) return font->font_driver->get_glyph((void*)font->font_driver, code); return NULL; } diff --git a/gfx/drivers/gl2.c b/gfx/drivers/gl2.c index db640ccf6e..51f71877c0 100644 --- a/gfx/drivers/gl2.c +++ b/gfx/drivers/gl2.c @@ -790,7 +790,6 @@ static int gl2_raster_font_get_message_width(void *data, const char *msg, if ( !font || !font->font_driver - || !font->font_driver->get_glyph || !font->font_data ) return 0; @@ -925,8 +924,7 @@ static void gl2_raster_font_render_message( 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)) + if (!font->font_driver->get_line_metrics(font->font_data, &line_metrics)) { gl2_raster_font_render_line(font->gl, font, msg, strlen(msg), scale, color, pos_x, @@ -1080,7 +1078,7 @@ static const struct font_glyph *gl2_raster_font_get_glyph( void *data, uint32_t code) { gl2_raster_t *font = (gl2_raster_t*)data; - if (font && font->font_driver && font->font_driver->ident) + if (font && font->font_driver) return font->font_driver->get_glyph((void*)font->font_driver, code); return NULL; } diff --git a/gfx/drivers/gl3.c b/gfx/drivers/gl3.c index 5057115237..8ca648fcee 100644 --- a/gfx/drivers/gl3.c +++ b/gfx/drivers/gl3.c @@ -504,7 +504,6 @@ static int gl3_raster_font_get_message_width(void *data, const char *msg, if ( !font || !font->font_driver - || !font->font_driver->get_glyph || !font->font_data ) return 0; @@ -657,8 +656,7 @@ static void gl3_raster_font_render_message( 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)) + if (!font->font_driver->get_line_metrics(font->font_data, &line_metrics)) { gl3_raster_font_render_line(font->gl, font, msg, strlen(msg), scale, color, pos_x, @@ -804,7 +802,7 @@ static const struct font_glyph *gl3_raster_font_get_glyph( void *data, uint32_t code) { gl3_raster_t *font = (gl3_raster_t*)data; - if (font && font->font_driver && font->font_driver->ident) + if (font && font->font_driver) return font->font_driver->get_glyph((void*)font->font_driver, code); return NULL; } diff --git a/gfx/drivers/gx2_gfx.c b/gfx/drivers/gx2_gfx.c index 3e1c358e6a..c357c828c6 100644 --- a/gfx/drivers/gx2_gfx.c +++ b/gfx/drivers/gx2_gfx.c @@ -441,8 +441,7 @@ static void gx2_font_free(void* data, bool is_threaded) if (!font) return; - if (font->font_driver && font->font_data && - font->font_driver->free) + if (font->font_driver && font->font_data) font->font_driver->free(font->font_data); if (font->texture.surface.image) @@ -597,8 +596,7 @@ static void gx2_font_render_message( return; /* 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->font_driver->get_line_metrics(font->font_data, &line_metrics)) { size_t msg_len = strlen(msg); if (wiiu->vertex_cache.current + (msg_len * 4) <= wiiu->vertex_cache.size) @@ -709,7 +707,7 @@ static void gx2_font_render_msg( static const struct font_glyph* gx2_font_get_glyph(void* data, uint32_t code) { gx2_font_t* font = (gx2_font_t*)data; - if (font && font->font_driver && font->font_driver->ident) + if (font && font->font_driver) return font->font_driver->get_glyph((void*)font->font_driver, code); return NULL; } diff --git a/gfx/drivers/gx_gfx.c b/gfx/drivers/gx_gfx.c index 9f37628faf..c8f27c2926 100644 --- a/gfx/drivers/gx_gfx.c +++ b/gfx/drivers/gx_gfx.c @@ -37,10 +37,9 @@ #include "../../memory/wii/mem2_manager.h" #endif -#include "../font_driver.h" +#include #include "../drivers_font_renderer/bitmap.h" -#include #include "../../configuration.h" #include "../../driver.h" diff --git a/gfx/drivers/metal.m b/gfx/drivers/metal.m index d7a46a2dc3..28966a5835 100644 --- a/gfx/drivers/metal.m +++ b/gfx/drivers/metal.m @@ -378,9 +378,6 @@ gfx_display_ctx_driver_t gfx_display_ctx_metal = { - (const struct font_glyph *)getGlyph:(uint32_t)code { - if (!_font_driver->ident) - return NULL; - const struct font_glyph *glyph = _font_driver->get_glyph((void *)_font_driver, code); if (glyph) [self updateGlyph:glyph]; @@ -526,8 +523,7 @@ static INLINE void write_quad6(SpriteVertex *pv, struct font_line_metrics *line_metrics = NULL; /* 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)) + if (!_font_driver->get_line_metrics(_font_data, &line_metrics)) { [self _renderLine:msg length:strlen(msg) scale:scale color:color posX:posX posY:posY aligned:aligned]; return; diff --git a/gfx/drivers/oga_gfx.c b/gfx/drivers/oga_gfx.c index 6afa83680c..b5c1e06450 100644 --- a/gfx/drivers/oga_gfx.c +++ b/gfx/drivers/oga_gfx.c @@ -403,7 +403,7 @@ static void *oga_init(const video_info_t *video, if (settings->bools.video_font_enable) { vid->font_driver = &bitmap_font_renderer; - vid->font = vid->font_driver->init("", settings->floats.video_font_size); + vid->font = vid->font_driver->init("", settings->floats.video_font_size); } for (i = 0; i < NUM_PAGES; ++i) diff --git a/gfx/drivers/ps2_gfx.c b/gfx/drivers/ps2_gfx.c index b78bdb850a..486369621f 100644 --- a/gfx/drivers/ps2_gfx.c +++ b/gfx/drivers/ps2_gfx.c @@ -296,8 +296,7 @@ static void ps2_font_render_message( return; /* 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->font_driver->get_line_metrics(font->font_data, &line_metrics)) { ps2_font_render_line(ps2, font, msg, strlen(msg), scale, color, pos_x, pos_y, @@ -409,7 +408,7 @@ static const struct font_glyph* ps2_font_get_glyph( void* data, uint32_t code) { ps2_font_t* font = (ps2_font_t*)data; - if (font && font->font_driver && font->font_driver->ident) + if (font && font->font_driver) return font->font_driver->get_glyph((void*)font->font_driver, code); return NULL; } diff --git a/gfx/drivers/psp1_gfx.c b/gfx/drivers/psp1_gfx.c index dadfc3b1cd..136204bb20 100644 --- a/gfx/drivers/psp1_gfx.c +++ b/gfx/drivers/psp1_gfx.c @@ -32,8 +32,6 @@ #include "../../menu/menu_driver.h" #endif -#include "../font_driver.h" - #include #ifndef SCEGU_SCR_WIDTH diff --git a/gfx/drivers/rsx_gfx.c b/gfx/drivers/rsx_gfx.c index bb5b102830..3bbea9fbaf 100644 --- a/gfx/drivers/rsx_gfx.c +++ b/gfx/drivers/rsx_gfx.c @@ -484,7 +484,6 @@ static int rsx_font_get_message_width(void *data, const char *msg, if ( !font || !font->font_driver - || !font->font_driver->get_glyph || !font->font_data ) return 0; @@ -661,8 +660,7 @@ static void rsx_font_render_message( 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)) + if (!font->font_driver->get_line_metrics(font->font_data, &line_metrics)) { rsx_font_render_line(font, msg, strlen(msg), scale, color, pos_x, @@ -818,7 +816,7 @@ static const struct font_glyph *rsx_font_get_glyph( void *data, uint32_t code) { rsx_font_t *font = (rsx_font_t*)data; - if (font && font->font_driver && font->font_driver->ident) + if (font && font->font_driver) return font->font_driver->get_glyph((void*)font->font_driver, code); return NULL; } diff --git a/gfx/drivers/sunxi_gfx.c b/gfx/drivers/sunxi_gfx.c index e27ee7f2f6..5876c6f66e 100644 --- a/gfx/drivers/sunxi_gfx.c +++ b/gfx/drivers/sunxi_gfx.c @@ -511,8 +511,6 @@ struct sunxi_page struct sunxi_video { void *font; - const font_renderer_driver_t *font_driver; - uint8_t font_rgb[4]; /* Sunxi framebuffer information struct */ diff --git a/gfx/drivers/switch_nx_gfx.c b/gfx/drivers/switch_nx_gfx.c index 3139173493..aeaf6f7009 100644 --- a/gfx/drivers/switch_nx_gfx.c +++ b/gfx/drivers/switch_nx_gfx.c @@ -261,8 +261,7 @@ static void switch_font_render_message( return; /* 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->font_driver->get_line_metrics(font->font_data, &line_metrics)) { size_t msg_len = strlen(msg); if (msg_len <= AVG_GLPYH_LIMIT) @@ -349,7 +348,7 @@ static const struct font_glyph *switch_font_get_glyph( void *data, uint32_t code) { switch_font_t *font = (switch_font_t *)data; - if (font && font->font_driver && font->font_driver->ident) + if (font && font->font_driver) return font->font_driver->get_glyph((void *)font->font_driver, code); return NULL; } diff --git a/gfx/drivers/vga_gfx.c b/gfx/drivers/vga_gfx.c index dde6da3898..aed9044ea7 100644 --- a/gfx/drivers/vga_gfx.c +++ b/gfx/drivers/vga_gfx.c @@ -76,7 +76,7 @@ static void vga_font_render_free(void *data, bool is_threaded) if (!font) return; - if (font->font_driver && font->font_data && font->font_driver->free) + if (font->font_driver && font->font_data) font->font_driver->free(font->font_data); free(font); diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index 19cf84ca02..79f4dc4bf5 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -392,8 +392,7 @@ static void vita2d_font_render_message( return; /* 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->font_driver->get_line_metrics(font->font_data, &line_metrics)) { vita2d_font_render_line(font, msg, strlen(msg), scale, color, pos_x, pos_y, width, height, text_align); @@ -506,7 +505,7 @@ static const struct font_glyph *vita2d_font_get_glyph( void *data, uint32_t code) { vita_font_t *font = (vita_font_t*)data; - if (font && font->font_driver && font->font_driver->ident) + if (font && font->font_driver) return font->font_driver->get_glyph((void*)font->font_driver, code); return NULL; } diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index b339605836..077c11bdac 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -1373,7 +1373,6 @@ static int vulkan_get_message_width(void *data, const char *msg, if ( !font || !font->font_driver - || !font->font_driver->get_glyph || !font->font_data ) return 0; @@ -1499,8 +1498,7 @@ static void vulkan_font_render_message( return; /* 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->font_driver->get_line_metrics(font->font_data, &line_metrics)) { vulkan_font_render_line(font->vk, font, msg, strlen(msg), scale, color, pos_x, pos_y, text_align); @@ -1709,7 +1707,7 @@ static const struct font_glyph *vulkan_font_get_glyph( const struct font_glyph* glyph; vulkan_raster_t *font = (vulkan_raster_t*)data; - if (!font || !font->font_driver || !font->font_driver->ident) + if (!font || !font->font_driver) return NULL; glyph = font->font_driver->get_glyph((void*)font->font_driver, code); diff --git a/gfx/drivers/xenon360_gfx.c b/gfx/drivers/xenon360_gfx.c index 30adb10eb7..7bd022ae0c 100644 --- a/gfx/drivers/xenon360_gfx.c +++ b/gfx/drivers/xenon360_gfx.c @@ -26,8 +26,6 @@ #include "../../config.h" #endif -#include "../font_driver.h" - #include "../../driver.h" #define XE_W 512 diff --git a/gfx/drivers/xshm_gfx.c b/gfx/drivers/xshm_gfx.c index 5d97ce9784..50140b3e40 100644 --- a/gfx/drivers/xshm_gfx.c +++ b/gfx/drivers/xshm_gfx.c @@ -32,7 +32,6 @@ #include "../../menu/menu_driver.h" #endif -#include "../font_driver.h" #include "../common/x11_common.h" #include "../../configuration.h" #include "../../verbosity.h" diff --git a/gfx/font_driver.h b/gfx/font_driver.h index 578a7d6491..ff465040a0 100644 --- a/gfx/font_driver.h +++ b/gfx/font_driver.h @@ -46,6 +46,8 @@ typedef struct font_renderer bool (*get_line_metrics)(void* data, struct font_line_metrics **metrics); } font_renderer_t; +/* NOTE: All functions are required to be implemented for font_renderer_driver */ + typedef struct font_renderer_driver { void *(*init)(const char *font_path, float font_size);