diff options
author | wm4 <wm4@nowhere> | 2013-02-16 22:51:10 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-02-16 23:24:46 +0100 |
commit | 80e9b3c0f277824c4223b2f3dac91e86b2333f77 (patch) | |
tree | 212c8c7cd0fc874c023b20e9b8e0fcb50d87b35b /sub/osd_libass.c | |
parent | 6b3e7740f1d6aa22ac518d53a77cae0b010ef04e (diff) | |
download | mpv-80e9b3c0f277824c4223b2f3dac91e86b2333f77.tar.bz2 mpv-80e9b3c0f277824c4223b2f3dac91e86b2333f77.tar.xz |
cleanup: remove duplicated function, move escape parsing function
Diffstat (limited to 'sub/osd_libass.c')
-rw-r--r-- | sub/osd_libass.c | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/sub/osd_libass.c b/sub/osd_libass.c index 051383f78e..bbd925f135 100644 --- a/sub/osd_libass.c +++ b/sub/osd_libass.c @@ -20,12 +20,14 @@ #include <string.h> #include <assert.h> +#include <libavutil/common.h> + #include "config.h" #include "talloc.h" +#include "core/mp_common.h" #include "core/mp_msg.h" #include "sub.h" -#include "libavutil/common.h" static const char osd_font_pfb[] = #include "sub/osd_font.h" @@ -102,15 +104,6 @@ static void clear_obj(struct osd_object *obj) ass_flush_events(obj->osd_track); } -static char *append_utf8_buffer(char *buffer, uint32_t codepoint) -{ - char data[8]; - uint8_t tmp; - char *output = data; - PUT_UTF8(codepoint, tmp, *output++ = tmp;); - return talloc_strndup_append_buffer(buffer, data, output - data); -} - void osd_get_function_sym(char *buffer, size_t buffer_size, int osd_function) { // 0xFF is never valid UTF-8, so we can use it to escape OSD symbols. @@ -124,7 +117,7 @@ static char *mangle_ass(const char *in) // As used by osd_get_function_sym(). if (in[0] == '\xFF' && in[1]) { res = talloc_strdup_append_buffer(res, ASS_USE_OSD_FONT); - res = append_utf8_buffer(res, OSD_CODEPOINTS + in[1]); + res = mp_append_utf8_buffer(res, OSD_CODEPOINTS + in[1]); res = talloc_strdup_append_buffer(res, "{\\r}"); in += 2; continue; @@ -134,7 +127,7 @@ static char *mangle_ass(const char *in) res = talloc_strndup_append_buffer(res, in, 1); // Break ASS escapes with U+2060 WORD JOINER if (*in == '\\') - res = append_utf8_buffer(res, 0x2060); + res = mp_append_utf8_buffer(res, 0x2060); in++; } return res; @@ -207,10 +200,10 @@ static void update_progbar(struct osd_state *osd, struct osd_object *obj) if (osd->progbar_type == 0 || osd->progbar_type >= 256) { // no sym } else if (osd->progbar_type >= 32) { - text = append_utf8_buffer(text, osd->progbar_type); + text = mp_append_utf8_buffer(text, osd->progbar_type); } else { text = talloc_strdup_append_buffer(text, ASS_USE_OSD_FONT); - text = append_utf8_buffer(text, OSD_CODEPOINTS + osd->progbar_type); + text = mp_append_utf8_buffer(text, OSD_CODEPOINTS + osd->progbar_type); text = talloc_strdup_append_buffer(text, "{\\r}"); } @@ -218,12 +211,12 @@ static void update_progbar(struct osd_state *osd, struct osd_object *obj) text = talloc_strdup_append_buffer(text, "\\h"); text = talloc_strdup_append_buffer(text, ASS_USE_OSD_FONT); - text = append_utf8_buffer(text, OSD_CODEPOINTS + OSD_PB_START); + text = mp_append_utf8_buffer(text, OSD_CODEPOINTS + OSD_PB_START); for (int n = 0; n < active; n++) - text = append_utf8_buffer(text, OSD_CODEPOINTS + OSD_PB_0); + text = mp_append_utf8_buffer(text, OSD_CODEPOINTS + OSD_PB_0); for (int n = 0; n < OSDBAR_ELEMS - active; n++) - text = append_utf8_buffer(text, OSD_CODEPOINTS + OSD_PB_1); - text = append_utf8_buffer(text, OSD_CODEPOINTS + OSD_PB_END); + text = mp_append_utf8_buffer(text, OSD_CODEPOINTS + OSD_PB_1); + text = mp_append_utf8_buffer(text, OSD_CODEPOINTS + OSD_PB_END); ASS_Event *event = get_osd_ass_event(obj->osd_track); event->Text = strdup(text); |