summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrcombs <rcombs@rcombs.me>2022-07-26 23:58:35 -0500
committerrcombs <rcombs@rcombs.me>2022-11-15 21:14:37 -0600
commitbdcfdf89297b25148b2c3e56d73021b7dcd245aa (patch)
tree01cd77594f73fc9ed47197bf585cebeeecc6317e
parentf60d8b91087eb85be0ff02a4c1cac64627949afa (diff)
downloadlibass-bdcfdf89297b25148b2c3e56d73021b7dcd245aa.tar.bz2
libass-bdcfdf89297b25148b2c3e56d73021b7dcd245aa.tar.xz
ass_render: move shaper member to RenderContext
-rw-r--r--libass/ass_render.c20
-rw-r--r--libass/ass_render.h6
2 files changed, 13 insertions, 13 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c
index af0e5b6..54bb7fa 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -143,7 +143,7 @@ ASS_Renderer *ass_renderer_init(ASS_Library *library)
priv->settings.font_size_coeff = 1.;
priv->settings.selective_style_overrides = ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE;
- if (!(priv->shaper = ass_shaper_new(priv->cache.metrics_cache)))
+ if (!(priv->state.shaper = ass_shaper_new(priv->cache.metrics_cache)))
goto fail;
ass_shaper_info(library);
@@ -172,7 +172,7 @@ void ass_renderer_done(ASS_Renderer *render_priv)
ass_cache_done(render_priv->cache.bitmap_cache);
ass_cache_done(render_priv->cache.outline_cache);
ass_cache_done(render_priv->cache.metrics_cache);
- ass_shaper_free(render_priv->shaper);
+ ass_shaper_free(render_priv->state.shaper);
ass_cache_done(render_priv->cache.font_cache);
ass_rasterizer_done(&render_priv->rasterizer);
@@ -2264,10 +2264,10 @@ static void reorder_text(RenderContext *state)
{
ASS_Renderer *render_priv = state->renderer;
TextInfo *text_info = state->text_info;
- FriBidiStrIndex *cmap = ass_shaper_reorder(render_priv->shaper, text_info);
+ FriBidiStrIndex *cmap = ass_shaper_reorder(state->shaper, text_info);
if (!cmap) {
ass_msg(render_priv->library, MSGL_ERR, "Failed to reorder text");
- ass_shaper_cleanup(render_priv->shaper, text_info);
+ ass_shaper_cleanup(state->shaper, text_info);
free_render_context(state);
return;
}
@@ -2303,7 +2303,7 @@ static void apply_baseline_shear(RenderContext *state)
{
ASS_Renderer *render_priv = state->renderer;
TextInfo *text_info = state->text_info;
- FriBidiStrIndex *cmap = ass_shaper_get_reorder_map(render_priv->shaper);
+ FriBidiStrIndex *cmap = ass_shaper_get_reorder_map(state->shaper);
int32_t shear = 0;
bool whole_text_layout =
render_priv->track->parser_priv->feature_flags &
@@ -2853,11 +2853,11 @@ ass_render_event(RenderContext *state, ASS_Event *event,
split_style_runs(state);
// Find shape runs and shape text
- ass_shaper_set_base_direction(render_priv->shaper,
+ ass_shaper_set_base_direction(state->shaper,
ass_resolve_base_direction(state->font_encoding));
- ass_shaper_find_runs(render_priv->shaper, render_priv, text_info->glyphs,
+ ass_shaper_find_runs(state->shaper, render_priv, text_info->glyphs,
text_info->length);
- if (!ass_shaper_shape(render_priv->shaper, text_info)) {
+ if (!ass_shaper_shape(state->shaper, text_info)) {
ass_msg(render_priv->library, MSGL_ERR, "Failed to shape text");
free_render_context(state);
return false;
@@ -3037,7 +3037,7 @@ ass_render_event(RenderContext *state, ASS_Event *event,
if (state->border_style == 4)
add_background(state, event_images);
- ass_shaper_cleanup(render_priv->shaper, text_info);
+ ass_shaper_cleanup(state->shaper, text_info);
free_render_context(state);
return true;
@@ -3099,7 +3099,7 @@ ass_start_frame(ASS_Renderer *render_priv, ASS_Track *track,
render_priv->fontselect, render_priv->num_emfonts);
}
- setup_shaper(render_priv->shaper, render_priv);
+ setup_shaper(render_priv->state.shaper, render_priv);
// PAR correction
double par = render_priv->settings.par;
diff --git a/libass/ass_render.h b/libass/ass_render.h
index cfbd8a3..31204bd 100644
--- a/libass/ass_render.h
+++ b/libass/ass_render.h
@@ -204,11 +204,14 @@ typedef struct {
unsigned max_bitmaps;
} TextInfo;
+#include "ass_shaper.h"
+
// Renderer state.
// Values like current font face, color, screen position, clipping and so on are stored here.
typedef struct {
ASS_Renderer *renderer;
TextInfo *text_info;
+ ASS_Shaper *shaper;
ASS_Event *event;
ASS_Style *style;
@@ -302,8 +305,6 @@ typedef struct {
size_t composite_max_size;
} CacheStore;
-#include "ass_shaper.h"
-
struct ass_renderer {
ASS_Library *library;
FT_Library ftlibrary;
@@ -311,7 +312,6 @@ struct ass_renderer {
size_t num_emfonts;
ASS_Settings settings;
int render_id;
- ASS_Shaper *shaper;
ASS_Image *images_root; // rendering result is stored here
ASS_Image *prev_images_root;