{
FT_Library p_library; /* handle to library */
FT_Face p_face; /* handle to face object */
- FT_Stroker p_stroker;
+ FT_Stroker p_stroker; /* handle to path stroker object */
- int i_font_size;
- int i_font_alpha;
- int i_style_flags;
+ xml_reader_t *p_xml; /* vlc xml parser */
- int i_outline_color;
- int i_outline_alpha;
+ text_style_t style; /* Current Style */
+ /* More styles... */
float f_shadow_vector_x;
float f_shadow_vector_y;
- int i_shadow_color;
- int i_shadow_alpha;
-
int i_default_font_size;
-
- char* psz_fontname;
char* psz_monofontfamily;
+
+ /* Attachments */
+ input_attachment_t **pp_font_attachments;
+ int i_font_attachments;
+
+ /* Cache the Win32 font folder */
#ifdef _WIN32
char* psz_win_fonts_path;
#endif
- xml_reader_t *p_xml;
-
- input_attachment_t **pp_font_attachments;
- int i_font_attachments;
};
/* */
msg_Dbg( p_filter, "using fontsize: %i", i_size );
}
- p_sys->i_font_size = i_size;
+ p_sys->style.i_font_size = i_size;
if( FT_Set_Pixel_Sizes( p_sys->p_face, 0, i_size ) )
{
uint32_t i_color;
switch (g) {
case 0:
- i_a = i_a * p_sys->i_shadow_alpha / 255;
- i_color = p_sys->i_shadow_color;
+ i_a = i_a * p_sys->style.i_shadow_alpha / 255;
+ i_color = p_sys->style.i_shadow_color;
break;
case 1:
- i_a = i_a * p_sys->i_outline_alpha / 255;
- i_color = p_sys->i_outline_color;
+ i_a = i_a * p_sys->style.i_outline_alpha / 255;
+ i_color = p_sys->style.i_outline_color;
break;
default:
i_color = ch->i_color;
uint32_t i_font_color = var_InheritInteger( p_filter, "freetype-color" );
i_font_color = VLC_CLIP( i_font_color, 0, 0xFFFFFF );
i_font_color = i_font_color & 0x00ffffff;
- int i_font_size = p_filter->p_sys->i_font_size;
+ int i_font_size = p_filter->p_sys->style.i_font_size;
uint32_t i_karaoke_bg_color = i_font_color;
if( PeekFont( p_fonts, &psz_fontname, &i_font_size,
{
/* If the font is not specified in the style, assume the system font */
if(!p_font_style->psz_fontname)
- p_font_style->psz_fontname = strdup(p_sys->psz_fontname);
+ p_font_style->psz_fontname = strdup(p_sys->style.psz_fontname);
rv = PushFont( &p_fonts,
p_font_style->psz_fontname,
p_font_style->i_font_size > 0 ? p_font_style->i_font_size
- : p_sys->i_font_size,
+ : p_sys->style.i_font_size,
(p_font_style->i_font_color & 0xffffff) |
((p_font_style->i_font_alpha & 0xff) << 24),
(p_font_style->i_karaoke_background_color & 0xffffff) |
}
else
{
- uint32_t i_font_size = p_sys->i_font_size;
+ uint32_t i_font_size = p_sys->style.i_font_size;
uint32_t i_font_color = var_InheritInteger( p_filter, "freetype-color" );
i_font_color = VLC_CLIP( i_font_color, 0, 0xFFFFFF );
- int i_font_alpha = p_sys->i_font_alpha;
+ int i_font_alpha = p_sys->style.i_font_alpha;
rv = PushFont( &p_fonts,
- p_sys->psz_fontname,
+ p_sys->style.psz_fontname,
i_font_size,
(i_font_color & 0xffffff) |
((i_font_alpha & 0xff) << 24),
0x00ffffff );
}
- if( p_sys->i_style_flags & STYLE_BOLD )
+ if( p_sys->style.i_style_flags & STYLE_BOLD )
i_style_flags |= STYLE_BOLD;
if( rv != VLC_SUCCESS )
}
FT_Glyph shadow = NULL;
- if( p_filter->p_sys->i_shadow_alpha > 0 )
+ if( p_filter->p_sys->style.i_shadow_alpha > 0 )
{
shadow = outline ? outline : glyph;
if( FT_Glyph_To_Bitmap( &shadow, FT_RENDER_MODE_NORMAL, p_pen_shadow, 0 ) )
}
/* Reset the default fontsize in case screen metrics have changed */
- p_filter->p_sys->i_font_size = GetFontSize( p_filter );
+ p_filter->p_sys->style.i_font_size = GetFontSize( p_filter );
/* */
int rv = VLC_SUCCESS;
text_style_t *p_style;
if( p_region_in->p_style )
p_style = CreateStyle( p_region_in->p_style->psz_fontname ? p_region_in->p_style->psz_fontname
- : p_sys->psz_fontname,
+ : p_sys->style.psz_fontname,
p_region_in->p_style->i_font_size > 0 ? p_region_in->p_style->i_font_size
- : p_sys->i_font_size,
+ : p_sys->style.i_font_size,
(p_region_in->p_style->i_font_color & 0xffffff) |
((p_region_in->p_style->i_font_alpha & 0xff) << 24),
0x00ffffff,
{
uint32_t i_font_color = var_InheritInteger( p_filter, "freetype-color" );
i_font_color = VLC_CLIP( i_font_color, 0, 0xFFFFFF );
- p_style = CreateStyle( p_sys->psz_fontname,
- p_sys->i_font_size,
+ p_style = CreateStyle( p_sys->style.psz_fontname,
+ p_sys->style.i_font_size,
(i_font_color & 0xffffff) |
- ((p_sys->i_font_alpha & 0xff) << 24),
+ ((p_sys->style.i_font_alpha & 0xff) << 24),
0x00ffffff, 0);
}
- if( p_sys->i_style_flags & STYLE_BOLD )
+ if( p_sys->style.i_style_flags & STYLE_BOLD )
p_style->i_style_flags |= STYLE_BOLD;
i_text_length = SetupText( p_filter,
if( !p_sys )
return VLC_ENOMEM;
- p_sys->psz_fontname = NULL;
+ p_sys->style.psz_fontname = NULL;
p_sys->p_xml = NULL;
p_sys->p_face = 0;
p_sys->p_library = 0;
- p_sys->i_font_size = 0;
+ p_sys->style.i_font_size = 0;
/*
* The following variables should not be cached, as they might be changed on-the-fly:
psz_fontname = var_InheritString( p_filter, "freetype-font" );
psz_monofontfamily = var_InheritString( p_filter, "freetype-monofont" );
p_sys->i_default_font_size = var_InheritInteger( p_filter, "freetype-fontsize" );
- p_sys->i_font_alpha = var_InheritInteger( p_filter,"freetype-opacity" );
- p_sys->i_font_alpha = VLC_CLIP( p_sys->i_font_alpha, 0, 255 );
+ p_sys->style.i_font_alpha = var_InheritInteger( p_filter,"freetype-opacity" );
+ p_sys->style.i_font_alpha = VLC_CLIP( p_sys->style.i_font_alpha, 0, 255 );
if( var_InheritBool( p_filter, "freetype-bold" ) )
- p_sys->i_style_flags |= STYLE_BOLD;
+ p_sys->style.i_style_flags |= STYLE_BOLD;
double f_outline_thickness = var_InheritInteger( p_filter, "freetype-outline-thickness" ) / 100.0;
f_outline_thickness = VLC_CLIP( f_outline_thickness, 0.0, 0.5 );
- p_sys->i_outline_alpha = var_InheritInteger( p_filter, "freetype-outline-opacity" );
- p_sys->i_outline_alpha = VLC_CLIP( p_sys->i_outline_alpha, 0, 255 );
- p_sys->i_outline_color = var_InheritInteger( p_filter, "freetype-outline-color" );
- p_sys->i_outline_color = VLC_CLIP( p_sys->i_outline_color, 0, 0xFFFFFF );
-
- p_sys->i_shadow_alpha = var_InheritInteger( p_filter, "freetype-shadow-opacity" );
- p_sys->i_shadow_alpha = VLC_CLIP( p_sys->i_shadow_alpha, 0, 255 );
- p_sys->i_shadow_color = var_InheritInteger( p_filter, "freetype-shadow-color" );
- p_sys->i_shadow_color = VLC_CLIP( p_sys->i_shadow_color, 0, 0xFFFFFF );
+ p_sys->style.i_outline_alpha = var_InheritInteger( p_filter, "freetype-outline-opacity" );
+ p_sys->style.i_outline_alpha = VLC_CLIP( p_sys->style.i_outline_alpha, 0, 255 );
+ p_sys->style.i_outline_color = var_InheritInteger( p_filter, "freetype-outline-color" );
+ p_sys->style.i_outline_color = VLC_CLIP( p_sys->style.i_outline_color, 0, 0xFFFFFF );
+
+ p_sys->style.i_shadow_alpha = var_InheritInteger( p_filter, "freetype-shadow-opacity" );
+ p_sys->style.i_shadow_alpha = VLC_CLIP( p_sys->style.i_shadow_alpha, 0, 255 );
+ p_sys->style.i_shadow_color = var_InheritInteger( p_filter, "freetype-shadow-color" );
+ p_sys->style.i_shadow_color = VLC_CLIP( p_sys->style.i_shadow_color, 0, 0xFFFFFF );
float f_shadow_angle = var_InheritFloat( p_filter, "freetype-shadow-angle" );
float f_shadow_distance = var_InheritFloat( p_filter, "freetype-shadow-distance" );
f_shadow_distance = VLC_CLIP( f_shadow_distance, 0, 1 );
}
/* Set the current font file */
- p_sys->psz_fontname = psz_fontname;
+ p_sys->style.psz_fontname = psz_fontname;
#ifdef HAVE_STYLES
#ifdef HAVE_FONTCONFIG
FontConfig_BuildCache( p_filter );
}
if( p_sys->p_xml ) xml_ReaderDelete( p_sys->p_xml );
- free( p_sys->psz_fontname );
+ free( p_sys->style.psz_fontname );
free( p_sys->psz_monofontfamily );
#ifdef _WIN32