]> granicus.if.org Git - libass/commitdiff
BorderStyle cache integration
authorGrigori Goronzy <greg@blackbox>
Wed, 12 Aug 2009 04:36:43 +0000 (06:36 +0200)
committerGrigori Goronzy <greg@blackbox>
Wed, 12 Aug 2009 04:36:43 +0000 (06:36 +0200)
Add new fields to the cache hash key for BorderStyle 3 (glyph cache
and bitmap cache).

libass/ass_cache_template.h
libass/ass_render.c

index 6a6c3f2cf9deb99ff0511ef9785a687da947380f..19ab00ff30f728e83ebcc2622fba24153953e477 100644 (file)
@@ -79,6 +79,7 @@ START(bitmap, bipmap_hash_key)
     FTVECTOR(advance) // subpixel shift vector
     FTVECTOR(shadow_offset) // shadow subpixel shift
     GENERIC(unsigned, drawing_hash) // hashcode of a drawing
+    GENERIC(unsigned, border_style)
 END(BitmapHashKey)
 
 // describes an outline glyph
@@ -93,6 +94,7 @@ START(glyph, glyph_hash_key)
     FTVECTOR(outline) // border width, 16.16
     GENERIC(unsigned, drawing_hash) // hashcode of a drawing
     GENERIC(unsigned, flags)    // glyph decoration flags
+    GENERIC(unsigned, border_style)
 END(GlyphHashKey)
 
 // Cache for composited bitmaps
index aa677273d02aa8683492d8b5a9bcf2edfd4b5999..90df1b56e9c96a85836e8f5bf0a3fa8b5ac79e13 100644 (file)
@@ -1988,6 +1988,7 @@ get_outline_glyph(ASS_Renderer *render_priv, int symbol,
         key.scale_y = double_to_d16(render_priv->state.scale_y);
         key.outline.x = render_priv->state.border_x * 0xFFFF;
         key.outline.y = render_priv->state.border_y * 0xFFFF;
+        key.border_style = render_priv->state.style->BorderStyle;
         key.drawing_hash = drawing->hash;
     } else {
         key.font = render_priv->state.font;
@@ -2000,6 +2001,7 @@ get_outline_glyph(ASS_Renderer *render_priv, int symbol,
         key.outline.x = render_priv->state.border_x * 0xFFFF;
         key.outline.y = render_priv->state.border_y * 0xFFFF;
         key.flags = render_priv->state.flags;
+        key.border_style = render_priv->state.style->BorderStyle;
     }
     memset(info, 0, sizeof(GlyphInfo));
 
@@ -2732,6 +2734,8 @@ ass_render_event(ASS_Renderer *render_priv, ASS_Event *event,
             render_priv->state.be;
         text_info->glyphs[text_info->length].hash_key.blur =
             render_priv->state.blur;
+        text_info->glyphs[text_info->length].hash_key.border_style =
+            render_priv->state.style->BorderStyle;
         text_info->glyphs[text_info->length].hash_key.shadow_offset.x =
             double_to_d6(
                 render_priv->state.shadow_x * render_priv->border_scale -