]> granicus.if.org Git - libass/commitdiff
parse_tag: split \fscx, \fscy, \fsc
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 d0d1972015e792e09c2c6dafcf0f2d8b20478218..aa4a206c0d5895ec35fc12edf5501fdc1732e151 100644 (file)
@@ -321,30 +321,27 @@ char *parse_tag(ASS_Renderer *render_priv, char *p, double pwr)
         } else
             render_priv->state.blur = 0.0;
         // ASS standard tags
-    } else if (mystrcmp(&p, "fsc")) {
-        char tp = *p++;
+    } else if (mystrcmp(&p, "fscx")) {
         double val;
-        if (tp == 'x') {
-            if (mystrtod(&p, &val)) {
-                val /= 100;
-                val = render_priv->state.scale_x * (1 - pwr) + val * pwr;
-                val = (val < 0) ? 0 : val;
-            } else
-                val = render_priv->state.style->ScaleX;
-            render_priv->state.scale_x = val;
-        } else if (tp == 'y') {
-            if (mystrtod(&p, &val)) {
-                val /= 100;
-                val = render_priv->state.scale_y * (1 - pwr) + val * pwr;
-                val = (val < 0) ? 0 : val;
-            } else
-                val = render_priv->state.style->ScaleY;
-            render_priv->state.scale_y = val;
-        } else {
-            --p;
-            render_priv->state.scale_x = render_priv->state.style->ScaleX;
-            render_priv->state.scale_y = render_priv->state.style->ScaleY;
-        }
+        if (mystrtod(&p, &val)) {
+            val /= 100;
+            val = render_priv->state.scale_x * (1 - pwr) + val * pwr;
+            val = (val < 0) ? 0 : val;
+        } else
+            val = render_priv->state.style->ScaleX;
+        render_priv->state.scale_x = val;
+    } else if (mystrcmp(&p, "fscy")) {
+        double val;
+        if (mystrtod(&p, &val)) {
+            val /= 100;
+            val = render_priv->state.scale_y * (1 - pwr) + val * pwr;
+            val = (val < 0) ? 0 : val;
+        } else
+            val = render_priv->state.style->ScaleY;
+        render_priv->state.scale_y = val;
+    } else if (mystrcmp(&p, "fsc")) {
+        render_priv->state.scale_x = render_priv->state.style->ScaleX;
+        render_priv->state.scale_y = render_priv->state.style->ScaleY;
     } else if (mystrcmp(&p, "fsp")) {
         double val;
         if (mystrtod(&p, &val))