]> granicus.if.org Git - libass/commitdiff
Simplify change_alpha and change_color
authorOleg Oshmyan <chortos@inbox.lv>
Sun, 24 May 2015 11:47:37 +0000 (14:47 +0300)
committerOleg Oshmyan <chortos@inbox.lv>
Sun, 24 May 2015 21:51:09 +0000 (00:51 +0300)
libass/ass_parse.c

index 63bce2b238752641e50c30c567b434668e8856d1..b99ed4866667c72441c96062b2bded8e9d2bff8f 100644 (file)
@@ -178,17 +178,15 @@ void change_border(ASS_Renderer *render_priv, double border_x, double border_y)
  */
 static void change_color(uint32_t *var, uint32_t new, double pwr)
 {
-    (*var) = ((uint32_t) (_r(*var) * (1 - pwr) + _r(new) * pwr) << 24) +
-        ((uint32_t) (_g(*var) * (1 - pwr) + _g(new) * pwr) << 16) +
-        ((uint32_t) (_b(*var) * (1 - pwr) + _b(new) * pwr) << 8) + _a(*var);
+    (*var) = ((uint32_t) (_r(*var) * (1 - pwr) + _r(new) * pwr) << 24) |
+        ((uint32_t) (_g(*var) * (1 - pwr) + _g(new) * pwr) << 16) |
+        ((uint32_t) (_b(*var) * (1 - pwr) + _b(new) * pwr) << 8) | _a(*var);
 }
 
 // like change_color, but for alpha component only
 inline void change_alpha(uint32_t *var, int32_t new, double pwr)
 {
-    *var =
-        (_r(*var) << 24) + (_g(*var) << 16) + (_b(*var) << 8) +
-        (uint8_t) (_a(*var) * (1 - pwr) + new * pwr);
+    *var = (*var & 0xFFFFFF00) | (uint8_t) (_a(*var) * (1 - pwr) + new * pwr);
 }
 
 /**