diff options
author | Oleg Oshmyan <chortos@inbox.lv> | 2013-06-15 22:24:45 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-06-22 19:07:58 +0200 |
commit | 8d555a1d7463bcb18a561dafbeabd297e7b721b8 (patch) | |
tree | 990c02e656dd73029b8a864333795cbba47e06ba /libass/ass.c | |
parent | 5523d3d5e0ba0fc747b9159d59bf2c57f6a79715 (diff) | |
download | libass-8d555a1d7463bcb18a561dafbeabd297e7b721b8.tar.bz2 libass-8d555a1d7463bcb18a561dafbeabd297e7b721b8.tar.xz |
Parse style names like VSFilter does
Trim '*' from the start of style name fields of Style
and Dialogue lines and normalize the case of "Default"
in the style name field of Dialogue lines.
Diffstat (limited to 'libass/ass.c')
-rw-r--r-- | libass/ass.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/libass/ass.c b/libass/ass.c index 576f04b..6505892 100644 --- a/libass/ass.c +++ b/libass/ass.c @@ -240,6 +240,13 @@ static int numpad2align(int val) target->name = strdup(token); \ ass_msg(track->library, MSGL_DBG2, "%s = %s", #name, token); +#define STARREDSTRVAL(name) \ + } else if (strcasecmp(tname, #name) == 0) { \ + if (target->name != NULL) free(target->name); \ + while (*token == '*') ++token; \ + target->name = strdup(token); \ + ass_msg(track->library, MSGL_DBG2, "%s = %s", #name, token); + #define COLORVAL(name) \ } else if (strcasecmp(tname, #name) == 0) { \ target->name = string2color(track->library, token); \ @@ -498,10 +505,9 @@ static int process_style(ASS_Track *track, char *str) NEXT(p, token); if (0) { // cool ;) - STRVAL(Name) - if ((strcmp(target->Name, "Default") == 0) - || (strcmp(target->Name, "*Default") == 0)) - track->default_style = sid; + STARREDSTRVAL(Name) + if (strcmp(target->Name, "Default") == 0) + track->default_style = sid; STRVAL(FontName) COLORVAL(PrimaryColour) COLORVAL(SecondaryColour) |