diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index ddb4b0edb9..f01e7bcd7f 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -203,15 +203,12 @@ FONTS #endif #include "../../gfx/fonts/fonts.c" - -#ifdef HAVE_OPENGL -#include "../../gfx/fonts/gl_font.c" -#endif - -#if defined(ANDROID) #include "../../gfx/fonts/bitmapfont.c" -#elif defined(HAVE_LIBDBGFONT) + +#if defined(HAVE_LIBDBGFONT) #include "../../gfx/fonts/ps_libdbgfont.c" +#elif defined(HAVE_OPENGL) +#include "../../gfx/fonts/gl_font.c" #elif defined(_XBOX1) #include "../../gfx/fonts/xdk1_xfonts.c" #elif defined(_XBOX360) diff --git a/gfx/fonts/fonts.c b/gfx/fonts/fonts.c index 65214f055b..7c6bf48edb 100644 --- a/gfx/fonts/fonts.c +++ b/gfx/fonts/fonts.c @@ -23,6 +23,9 @@ static const font_renderer_driver_t *backends[] = { #ifdef HAVE_FREETYPE &ft_font_renderer, +#endif +#ifdef HAVE_LIBDBGFONT + &libdbgps_font_renderer, #endif &bitmap_font_renderer, }; diff --git a/gfx/fonts/fonts.h b/gfx/fonts/fonts.h index 5a4e10ad84..2ffdefa1dc 100644 --- a/gfx/fonts/fonts.h +++ b/gfx/fonts/fonts.h @@ -50,6 +50,7 @@ typedef struct font_renderer_driver extern const font_renderer_driver_t ft_font_renderer; extern const font_renderer_driver_t bitmap_font_renderer; +extern const font_renderer_driver_t libdbgps_font_renderer; bool font_renderer_create_default(const font_renderer_driver_t **driver, void **handle); diff --git a/gfx/fonts/ps_libdbgfont.c b/gfx/fonts/ps_libdbgfont.c index 33c47c6850..57bd87d182 100644 --- a/gfx/fonts/ps_libdbgfont.c +++ b/gfx/fonts/ps_libdbgfont.c @@ -14,7 +14,7 @@ * If not, see . */ -#include "../gl_common.h" +#include "fonts.h" #if defined(SN_TARGET_PSP2) #include @@ -33,16 +33,20 @@ #define DbgFontDraw cellDbgFontDraw #endif -void gl_init_font(void *data, const char *font_path, unsigned font_size) +static void *libdbgpsfont_renderer_init(const char *font_path, unsigned font_size) { (void)font_path; (void)font_size; + font_renderer_t *handle = (font_renderer_t*)calloc(1, sizeof(*handle)); + if (!handle) + return NULL; + DbgFontConfig cfg; #if defined(SN_TARGET_PSP2) cfg.fontSize = SCE_DBGFONT_FONTSIZE_LARGE; #elif defined(__CELLOS_LV2__) - gl_t *gl = (gl_t*)data; + gl_t *gl = (gl_t*)driver.video_data; cfg.bufSize = SCE_DBGFONT_BUFSIZE_LARGE; cfg.screenWidth = gl->win_width; @@ -50,26 +54,57 @@ void gl_init_font(void *data, const char *font_path, unsigned font_size) #endif DbgFontInit(&cfg); + + return handle; } -void gl_deinit_font(void *data) +static void libdbgpsfont_renderer_free(void *data) { + (void)data; + DbgFontExit(); } -void gl_render_msg(void *data, const char *msg) +static void libdbgpsfont_renderer_free_output(void *data, struct font_output_list *output) { - (void)data; - - DbgFontPrint(g_settings.video.msg_pos_x, 0.76f, 1.04f, SILVER, msg); - DbgFontPrint(g_settings.video.msg_pos_x, 0.76f, 1.03f, WHITE, msg); - DbgFontDraw(); } -void gl_render_msg_place(void *data, float x, float y, float scale, uint32_t color, const char *msg) +static void libdbgpsfont_renderer_msg(void *data, const char *msg, struct font_output_list *output) { (void)data; + float x, y, scale; + unsigned color; + + if(!output) + { + x = g_settings.video.msg_pos_x; + y = 0.76f; + scale = 1.04f; + color = SILVER; + } + else + { + x = output->head->off_x; + y = output->head->off_y; + scale = output->head->scaling_factor; + color = WHITE; + } DbgFontPrint(x, y, scale, color, msg); + DbgFontPrint(x, y, scale - 0.01f, WHITE, msg); DbgFontDraw(); } + +static const char *libdbgpsfont_renderer_get_default_font(void) +{ + return ""; +} + +const font_renderer_driver_t libdbgps_font_renderer = { + libdbgpsfont_renderer_init, + libdbgpsfont_renderer_msg, + libdbgpsfont_renderer_free_output, + libdbgpsfont_renderer_free, + libdbgpsfont_renderer_get_default_font, + "libdbgpsfont", +};