static int LoadFontsFromAttachments( filter_t *p_filter )
{
filter_sys_t *p_sys = p_filter->p_sys;
- input_thread_t *p_input;
input_attachment_t **pp_attachments;
int i_attachments_cnt;
- int k;
- int rv = VLC_SUCCESS;
- p_input = (input_thread_t *)vlc_object_find( p_filter, VLC_OBJECT_INPUT, FIND_PARENT );
- if( ! p_input )
+ if( filter_GetInputAttachments( p_filter, &pp_attachments, &i_attachments_cnt ) )
return VLC_EGENERIC;
- if( VLC_SUCCESS != input_Control( p_input, INPUT_GET_ATTACHMENTS, &pp_attachments, &i_attachments_cnt ))
- {
- vlc_object_release(p_input);
- return VLC_EGENERIC;
- }
-
p_sys->i_font_attachments = 0;
p_sys->pp_font_attachments = malloc( i_attachments_cnt * sizeof( input_attachment_t * ));
- if(! p_sys->pp_font_attachments )
- rv = VLC_ENOMEM;
+ if( !p_sys->pp_font_attachments )
+ return VLC_ENOMEM;
- for( k = 0; k < i_attachments_cnt; k++ )
+ for( int k = 0; k < i_attachments_cnt; k++ )
{
input_attachment_t *p_attach = pp_attachments[k];
- if( p_sys->pp_font_attachments )
+ if( ( !strcmp( p_attach->psz_mime, "application/x-truetype-font" ) || // TTF
+ !strcmp( p_attach->psz_mime, "application/x-font-otf" ) ) && // OTF
+ p_attach->i_data > 0 && p_attach->p_data )
{
- if(( !strcmp( p_attach->psz_mime, "application/x-truetype-font" ) || // TTF
- !strcmp( p_attach->psz_mime, "application/x-font-otf" ) ) && // OTF
- ( p_attach->i_data > 0 ) &&
- ( p_attach->p_data != NULL ) )
- {
- p_sys->pp_font_attachments[ p_sys->i_font_attachments++ ] = p_attach;
- }
- else
- {
- vlc_input_attachment_Delete( p_attach );
- }
+ p_sys->pp_font_attachments[ p_sys->i_font_attachments++ ] = p_attach;
}
else
{
}
free( pp_attachments );
- vlc_object_release(p_input);
-
- return rv;
+ return VLC_SUCCESS;
}
/*****************************************************************************
}
p_line->p_glyph_pos[ i ].x = i_pen_x;
p_line->p_glyph_pos[ i ].y = i_pen_y;
- i_error = FT_Load_Glyph( face, i_glyph_index, FT_LOAD_DEFAULT );
+ i_error = FT_Load_Glyph( face, i_glyph_index, FT_LOAD_NO_BITMAP | FT_LOAD_DEFAULT );
if( i_error )
{
- msg_Err( p_filter, "unable to render text FT_Load_Glyph returned"
- " %d", i_error );
- goto error;
+ i_error = FT_Load_Glyph( face, i_glyph_index, FT_LOAD_DEFAULT );
+ if( i_error )
+ {
+ msg_Err( p_filter, "unable to render text FT_Load_Glyph returned"
+ " %d", i_error );
+ goto error;
+ }
}
i_error = FT_Get_Glyph( glyph, &tmp_glyph );
if( i_error )
p_line->p_glyph_pos[ i ].x = *pi_pen_x;
p_line->p_glyph_pos[ i ].y = i_pen_y;
- i_error = FT_Load_Glyph( p_face, i_glyph_index, FT_LOAD_DEFAULT );
+ i_error = FT_Load_Glyph( p_face, i_glyph_index, FT_LOAD_NO_BITMAP | FT_LOAD_DEFAULT );
if( i_error )
{
- msg_Err( p_filter,
- "unable to render text FT_Load_Glyph returned %d", i_error );
- p_line->pp_glyphs[ i ] = NULL;
- return VLC_EGENERIC;
+ i_error = FT_Load_Glyph( p_face, i_glyph_index, FT_LOAD_DEFAULT );
+ if( i_error )
+ {
+ msg_Err( p_filter,
+ "unable to render text FT_Load_Glyph returned %d", i_error );
+ p_line->pp_glyphs[ i ] = NULL;
+ return VLC_EGENERIC;
+ }
}
/* Do synthetic styling now that Freetype supports it;