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",
+};