diff options
author | rcombs <rcombs@rcombs.me> | 2022-07-27 16:50:04 -0500 |
---|---|---|
committer | rcombs <rcombs@rcombs.me> | 2022-11-15 21:14:37 -0600 |
commit | 4943c18520c7d4a9a2f7fb5dc4cb45bd8004bbd3 (patch) | |
tree | 68e7c4b95478087c36c10bf58b3f16fb4284fb6d /libass | |
parent | 63e592b3f4fce6ff7d5048d72e1937e1a74b882c (diff) | |
download | libass-4943c18520c7d4a9a2f7fb5dc4cb45bd8004bbd3.tar.bz2 libass-4943c18520c7d4a9a2f7fb5dc4cb45bd8004bbd3.tar.xz |
ass_render: mover rasterizer into RenderContext
Diffstat (limited to 'libass')
-rw-r--r-- | libass/ass_bitmap.c | 5 | ||||
-rw-r--r-- | libass/ass_bitmap.h | 4 | ||||
-rw-r--r-- | libass/ass_render.c | 14 | ||||
-rw-r--r-- | libass/ass_render.h | 8 |
4 files changed, 18 insertions, 13 deletions
diff --git a/libass/ass_bitmap.c b/libass/ass_bitmap.c index 1b858cc..527916f 100644 --- a/libass/ass_bitmap.c +++ b/libass/ass_bitmap.c @@ -168,10 +168,11 @@ bool ass_copy_bitmap(const BitmapEngine *engine, Bitmap *dst, const Bitmap *src) return true; } -bool ass_outline_to_bitmap(ASS_Renderer *render_priv, Bitmap *bm, +bool ass_outline_to_bitmap(RenderContext *state, Bitmap *bm, ASS_Outline *outline1, ASS_Outline *outline2) { - RasterizerData *rst = &render_priv->rasterizer; + ASS_Renderer *render_priv = state->renderer; + RasterizerData *rst = &state->rasterizer; if (outline1 && !ass_rasterizer_set_outline(rst, outline1, false)) { ass_msg(render_priv->library, MSGL_WARN, "Failed to process glyph outline!\n"); return false; diff --git a/libass/ass_bitmap.h b/libass/ass_bitmap.h index e21d100..90973e0 100644 --- a/libass/ass_bitmap.h +++ b/libass/ass_bitmap.h @@ -102,7 +102,9 @@ bool ass_realloc_bitmap(const BitmapEngine *engine, Bitmap *bm, int32_t w, int32 bool ass_copy_bitmap(const BitmapEngine *engine, Bitmap *dst, const Bitmap *src); void ass_free_bitmap(Bitmap *bm); -bool ass_outline_to_bitmap(ASS_Renderer *render_priv, Bitmap *bm, +struct render_context; + +bool ass_outline_to_bitmap(struct render_context *state, Bitmap *bm, ASS_Outline *outline1, ASS_Outline *outline2); void ass_synth_blur(const BitmapEngine *engine, Bitmap *bm, diff --git a/libass/ass_render.c b/libass/ass_render.c index 54bb7fa..cbc9e28 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -119,7 +119,7 @@ ASS_Renderer *ass_renderer_init(ASS_Library *library) priv->engine = &ass_bitmap_engine_c; #endif - if (!ass_rasterizer_init(priv->engine, &priv->rasterizer, RASTERIZER_PRECISION)) + if (!ass_rasterizer_init(priv->engine, &priv->state.rasterizer, RASTERIZER_PRECISION)) goto fail; priv->cache.font_cache = ass_font_cache_create(); @@ -175,7 +175,7 @@ void ass_renderer_done(ASS_Renderer *render_priv) ass_shaper_free(render_priv->state.shaper); ass_cache_done(render_priv->cache.font_cache); - ass_rasterizer_done(&render_priv->rasterizer); + ass_rasterizer_done(&render_priv->state.rasterizer); if (render_priv->fontselect) ass_fontselect_free(render_priv->fontselect); @@ -716,7 +716,7 @@ static void blend_vector_clip(RenderContext *state, ASS_Image *head) ass_cache_dec_ref(key.outline); return; } - Bitmap *clip_bm = ass_cache_get(render_priv->cache.bitmap_cache, &key, render_priv); + Bitmap *clip_bm = ass_cache_get(render_priv->cache.bitmap_cache, &key, state); if (!clip_bm) return; @@ -1410,7 +1410,7 @@ get_bitmap_glyph(RenderContext *state, GlyphInfo *info, ass_cache_dec_ref(info->outline); return; } - info->bm = ass_cache_get(render_priv->cache.bitmap_cache, &key, render_priv); + info->bm = ass_cache_get(render_priv->cache.bitmap_cache, &key, state); if (!info->bm || !info->bm->buffer) { ass_cache_dec_ref(info->bm); info->bm = NULL; @@ -1537,7 +1537,7 @@ get_bitmap_glyph(RenderContext *state, GlyphInfo *info, ass_cache_dec_ref(key.outline); return; } - info->bm_o = ass_cache_get(render_priv->cache.bitmap_cache, &key, render_priv); + info->bm_o = ass_cache_get(render_priv->cache.bitmap_cache, &key, state); if (!info->bm_o || !info->bm_o->buffer) { ass_cache_dec_ref(info->bm_o); info->bm_o = NULL; @@ -1548,7 +1548,7 @@ get_bitmap_glyph(RenderContext *state, GlyphInfo *info, size_t ass_bitmap_construct(void *key, void *value, void *priv) { - ASS_Renderer *render_priv = priv; + RenderContext *state = priv; BitmapHashKey *k = key; Bitmap *bm = value; @@ -1564,7 +1564,7 @@ size_t ass_bitmap_construct(void *key, void *value, void *priv) ass_outline_transform_2d(&outline[1], &k->outline->outline[1], m); } - if (!ass_outline_to_bitmap(render_priv, bm, &outline[0], &outline[1])) + if (!ass_outline_to_bitmap(state, bm, &outline[0], &outline[1])) memset(bm, 0, sizeof(*bm)); ass_outline_free(&outline[0]); ass_outline_free(&outline[1]); diff --git a/libass/ass_render.h b/libass/ass_render.h index 31204bd..fadbee1 100644 --- a/libass/ass_render.h +++ b/libass/ass_render.h @@ -208,10 +208,11 @@ typedef struct { // Renderer state. // Values like current font face, color, screen position, clipping and so on are stored here. -typedef struct { +struct render_context { ASS_Renderer *renderer; TextInfo *text_info; ASS_Shaper *shaper; + RasterizerData rasterizer; ASS_Event *event; ASS_Style *style; @@ -292,7 +293,9 @@ typedef struct { double border_scale_x; double border_scale_y; double blur_scale; -} RenderContext; +}; + +typedef struct render_context RenderContext; typedef struct { Cache *font_cache; @@ -334,7 +337,6 @@ struct ass_renderer { CacheStore cache; const BitmapEngine *engine; - RasterizerData rasterizer; ASS_Style user_override_style; }; |