]> granicus.if.org Git - libass/commitdiff
Distinguish cached glyphs with different hspacing when border_style == 3
authorOleg Oshmyan <chortos@inbox.lv>
Tue, 7 Jan 2014 22:48:36 +0000 (00:48 +0200)
committerOleg Oshmyan <chortos@inbox.lv>
Wed, 8 Jan 2014 01:24:32 +0000 (03:24 +0200)
hspacing affects opaque box borders.

libass/ass_cache_template.h
libass/ass_render.c

index f9aab779191dfd152586ee6418c93cd8ef3b136b..3d8185f81e99e892c4855145f99b413a69af3876 100644 (file)
@@ -96,6 +96,7 @@ START(glyph, glyph_hash_key)
     FTVECTOR(outline) // border width, 16.16
     GENERIC(unsigned, flags)    // glyph decoration flags
     GENERIC(unsigned, border_style)
+    GENERIC(int, hspacing) // 16.16
 END(GlyphHashKey)
 
 START(glyph_metrics, glyph_metrics_hash_key)
@@ -114,6 +115,7 @@ START(drawing, drawing_hash_key)
     GENERIC(int, pbo)
     FTVECTOR(outline)
     GENERIC(unsigned, border_style)
+    GENERIC(int, hspacing)
     GENERIC(int, scale)
     GENERIC(unsigned, hash)
     STRING(text)
index 5d916355551c277eb56f68af139265940474a3df..25a33e5db5043846d8126465bec238bf605c6f36 100644 (file)
@@ -1042,6 +1042,10 @@ fill_glyph_hash(ASS_Renderer *priv, OutlineHashKey *outline_key,
         key->outline.x = double_to_d16(info->border_x);
         key->outline.y = double_to_d16(info->border_y);
         key->border_style = info->border_style;
+        // hpacing only matters for opaque box borders (see draw_opaque_box),
+        // so for normal borders, maximize cache utility by ignoring it
+        key->hspacing =
+            info->border_style == 3 ? double_to_d16(info->hspacing) : 0;
         key->hash = info->drawing->hash;
         key->text = info->drawing->text;
         key->pbo = info->drawing->pbo;
@@ -1061,6 +1065,8 @@ fill_glyph_hash(ASS_Renderer *priv, OutlineHashKey *outline_key,
         key->outline.y = double_to_d16(info->border_y);
         key->flags = info->flags;
         key->border_style = info->border_style;
+        key->hspacing =
+            info->border_style == 3 ? double_to_d16(info->hspacing) : 0;
     }
 }