]> granicus.if.org Git - libass/commitdiff
parse_tag: merge \fs+, \fs-, \fs
authorOleg Oshmyan <chortos@inbox.lv>
Thu, 1 May 2014 01:47:43 +0000 (02:47 +0100)
committerOleg Oshmyan <chortos@inbox.lv>
Fri, 6 Jun 2014 14:08:15 +0000 (15:08 +0100)
libass/ass_parse.c

index aa4a206c0d5895ec35fc12edf5501fdc1732e151..3410f83bb9cdec6248a92431a6fc838738fdcc48 100644 (file)
@@ -349,26 +349,15 @@ char *parse_tag(ASS_Renderer *render_priv, char *p, double pwr)
                 render_priv->state.hspacing * (1 - pwr) + val * pwr;
         else
             render_priv->state.hspacing = render_priv->state.style->Spacing;
-    } else if (mystrcmp(&p, "fs+")) {
-        double val;
-        mystrtod(&p, &val);
-        val = render_priv->state.font_size * (1 + pwr * val / 10);
-        if (val <= 0)
-            val = render_priv->state.style->FontSize;
-        if (render_priv->state.font)
-            change_font_size(render_priv, val);
-    } else if (mystrcmp(&p, "fs-")) {
-        double val;
-        mystrtod(&p, &val);
-        val = render_priv->state.font_size * (1 - pwr * val / 10);
-        if (val <= 0)
-            val = render_priv->state.style->FontSize;
-        if (render_priv->state.font)
-            change_font_size(render_priv, val);
     } else if (mystrcmp(&p, "fs")) {
         double val;
-        if (mystrtod(&p, &val))
-            val = render_priv->state.font_size * (1 - pwr) + val * pwr;
+        char *start = p;
+        if (mystrtod(&p, &val)) {
+            if (*start == '+' || *start == '-')
+                val = render_priv->state.font_size * (1 + pwr * val / 10);
+            else
+                val = render_priv->state.font_size * (1 - pwr) + val * pwr;
+        }
         if (val <= 0)
             val = render_priv->state.style->FontSize;
         if (render_priv->state.font)