diff libass/ass_utils.c @ 18937:9e95ac641e77

Initial libass release (without mencoder support).
author eugeni
date Fri, 07 Jul 2006 18:26:51 +0000
parents
children 9dc06456af0f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libass/ass_utils.c	Fri Jul 07 18:26:51 2006 +0000
@@ -0,0 +1,63 @@
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdint.h>
+#include <sys/time.h>
+#include <time.h>
+
+#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;
+}
+