From e15ae9a60043d8d9c1b110607c5059f13ca86421 Mon Sep 17 00:00:00 2001 From: eugeni Date: Fri, 7 Jul 2006 18:26:51 +0000 Subject: Initial libass release (without mencoder support). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@18942 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libass/ass_utils.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 libass/ass_utils.c (limited to 'libass/ass_utils.c') diff --git a/libass/ass_utils.c b/libass/ass_utils.c new file mode 100644 index 0000000000..7b381d3d38 --- /dev/null +++ b/libass/ass_utils.c @@ -0,0 +1,63 @@ +#include "config.h" + +#include +#include +#include +#include + +#include "mp_msg.h" +#include "ass_utils.h" + +int mystrtoi(char** p, int base, int* res) +{ + char* start = *p; + *res = strtol(*p, p, base); + if (*p != start) return 1; + else return 0; +} + +int mystrtou32(char** p, int base, uint32_t* res) +{ + char* start = *p; + *res = strtoll(*p, p, base); + if (*p != start) return 1; + else return 0; +} + +int mystrtod(char** p, double* res) +{ + char* start = *p; + *res = strtod(*p, p); + if (*p != start) return 1; + else return 0; +} + +int strtocolor(char** q, uint32_t* res) +{ + uint32_t color = 0; + int result; + char* p = *q; + + if (*p == '&') ++p; + else mp_msg(MSGT_GLOBAL, MSGL_V, "bad color: \"%s\"\n", p); + + if (*p == 'H') { + ++p; + result = mystrtou32(&p, 16, &color); + } else { + result = mystrtou32(&p, 10, &color); + } + + { + unsigned char* tmp = (unsigned char*)(&color); + unsigned char b; + b = tmp[0]; tmp[0] = tmp[3]; tmp[3] = b; + b = tmp[1]; tmp[1] = tmp[2]; tmp[2] = b; + } + if (*p == '&') ++p; + *q = p; + + *res = color; + return result; +} + -- cgit v1.2.3