| X-Git-Url: https://git.videolan.org/?p=vlc.git;a=blobdiff_plain;f=modules%2Ftext_renderer%2Ffreetype%2Ftext_layout.c;h=1a28786d097959e246b85913eef82f78013d4108;hp=13efd567b46a30bb159c974a4c12e603275cb1c8;hb=26e2d3906658c30f2f88f4b1bc9630ec43bf5525;hpb=f391a2a3b0410a4361ca0b93209b6e5ec79ff918 |
| |
| diff --git a/modules/text_renderer/freetype/text_layout.c b/modules/text_renderer/freetype/text_layout.c |
| index 13efd567b4..1a28786d09 100644 |
| --- a/modules/text_renderer/freetype/text_layout.c |
| +++ b/modules/text_renderer/freetype/text_layout.c |
| @@ -153,6 +153,9 @@ typedef struct paragraph_t |
| |
| #ifdef HAVE_FRIBIDI |
| FriBidiCharType *p_types; |
| +#if FRIBIDI_MAJOR_VERSION >= 1 |
| + FriBidiBracketType *p_btypes; |
| +#endif |
| FriBidiLevel *p_levels; |
| FriBidiStrIndex *pi_reordered_indices; |
| FriBidiParType paragraph_type; |
| @@ -361,6 +364,9 @@ static paragraph_t *NewParagraph( filter_t *p_filter, |
| #ifdef HAVE_FRIBIDI |
| p_paragraph->p_levels = vlc_alloc( i_size, sizeof( *p_paragraph->p_levels ) ); |
| p_paragraph->p_types = vlc_alloc( i_size, sizeof( *p_paragraph->p_types ) ); |
| +#if FRIBIDI_MAJOR_VERSION >= 1 |
| + p_paragraph->p_btypes = vlc_alloc( i_size, sizeof( *p_paragraph->p_btypes ) ); |
| +#endif |
| p_paragraph->pi_reordered_indices = |
| vlc_alloc( i_size, sizeof( *p_paragraph->pi_reordered_indices ) ); |
| |
| @@ -398,6 +404,9 @@ error: |
| #ifdef HAVE_FRIBIDI |
| if( p_paragraph->p_levels ) free( p_paragraph->p_levels ); |
| if( p_paragraph->p_types ) free( p_paragraph->p_types ); |
| +#if FRIBIDI_MAJOR_VERSION >= 1 |
| + if( p_paragraph->p_btypes ) free( p_paragraph->p_btypes ); |
| +#endif |
| if( p_paragraph->pi_reordered_indices ) |
| free( p_paragraph->pi_reordered_indices ); |
| #endif |
| @@ -424,6 +433,9 @@ static void FreeParagraph( paragraph_t *p_paragraph ) |
| #ifdef HAVE_FRIBIDI |
| free( p_paragraph->pi_reordered_indices ); |
| free( p_paragraph->p_types ); |
| +#if FRIBIDI_MAJOR_VERSION >= 1 |
| + free( p_paragraph->p_btypes ); |
| +#endif |
| free( p_paragraph->p_levels ); |
| #endif |
| |
| @@ -436,10 +448,22 @@ static int AnalyzeParagraph( paragraph_t *p_paragraph ) |
| fribidi_get_bidi_types( p_paragraph->p_code_points, |
| p_paragraph->i_size, |
| p_paragraph->p_types ); |
| +#if FRIBIDI_MAJOR_VERSION >= 1 |
| + fribidi_get_bracket_types( p_paragraph->p_code_points, |
| + p_paragraph->i_size, |
| + p_paragraph->p_types, |
| + p_paragraph->p_btypes ); |
| + fribidi_get_par_embedding_levels_ex( p_paragraph->p_types, |
| + p_paragraph->p_btypes, |
| + p_paragraph->i_size, |
| + &p_paragraph->paragraph_type, |
| + p_paragraph->p_levels ); |
| +#else |
| fribidi_get_par_embedding_levels( p_paragraph->p_types, |
| p_paragraph->i_size, |
| &p_paragraph->paragraph_type, |
| p_paragraph->p_levels ); |
| +#endif |
| |
| #ifdef HAVE_HARFBUZZ |
| hb_unicode_funcs_t *p_funcs = hb_unicode_funcs_get_default(); |