#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_osd.h>
-#include <vlc_block.h>
-#include <vlc_filter.h>
#include <vlc_stream.h>
#include <vlc_xml.h>
#include <vlc_input.h>
-#include <vlc_strings.h>
-
-#include <math.h>
// Fix ourselves ColorSync headers that gets included in ApplicationServices.
#define DisposeCMProfileIterateUPP(a) DisposeCMProfileIterateUPP(CMProfileIterateUPP userUPP __attribute__((unused)))
#define DisposeCMMIterateUPP(a) DisposeCMMIterateUPP(CMProfileIterateUPP userUPP __attribute__((unused)))
-#include <Carbon/Carbon.h>
+#define __MACHINEEXCEPTIONS__
+#include <ApplicationServices/ApplicationServices.h>
#define DEFAULT_FONT "Arial Black"
#define DEFAULT_FONT_COLOR 0xffffff
N_("Smaller"), N_("Small"), N_("Normal"), N_("Large"), N_("Larger") };
vlc_module_begin ()
- set_shortname( N_("Mac Text renderer"))
- set_description( N_("Quartz font renderer") )
+ set_shortname( N_("Text renderer for Mac"))
+ set_description( N_("CoreText font renderer") )
set_category( CAT_VIDEO )
set_subcategory( SUBCAT_VIDEO_SUBPIC )
char *psz_string;
int i_font_alpha, i_font_size;
uint32_t i_font_color;
+ bool b_bold, b_uline, b_italic;
vlc_value_t val;
int i_scale = 1000;
+ b_bold = b_uline = b_italic = FALSE;
p_sys->i_font_size = GetFontSize( p_filter );
i_font_color = __MAX( __MIN( p_region_in->p_style->i_font_color, 0xFFFFFF ), 0 );
i_font_alpha = __MAX( __MIN( p_region_in->p_style->i_font_alpha, 255 ), 0 );
i_font_size = __MAX( __MIN( p_region_in->p_style->i_font_size, 255 ), 0 ) * i_scale / 1000;
+ if( p_region_in->p_style->i_style_flags )
+ {
+ if( p_region_in->p_style->i_style_flags & STYLE_BOLD )
+ b_bold = TRUE;
+ if( p_region_in->p_style->i_style_flags & STYLE_ITALIC )
+ b_italic = TRUE;
+ if( p_region_in->p_style->i_style_flags & STYLE_UNDERLINE )
+ b_uline = TRUE;
+ }
}
else
{
CFRelease( p_cfString );
len = CFAttributedStringGetLength( p_attrString );
- setFontAttibutes( p_sys->psz_font_name, i_font_size, i_font_color, FALSE, FALSE, FALSE,
+ setFontAttibutes( p_sys->psz_font_name, i_font_size, i_font_color, b_bold, b_italic, b_uline,
CFRangeMake( 0, len ), p_attrString);
RenderYUVA( p_filter, p_region_out, p_attrString );
{
if( !strcasecmp( "face", psz_name ) )
{
- if( psz_fontname ) free( psz_fontname );
+ free( psz_fontname );
psz_fontname = strdup( psz_value );
}
else if( !strcasecmp( "size", psz_name ) )
{
CFStringRef p_cfString;
CTFontRef p_font;
-
+
// Handle font name and size
p_cfString = CFStringCreateWithCString( NULL,
psz_fontname,
// Create a new subpicture region
memset( &fmt, 0, sizeof(video_format_t) );
fmt.i_chroma = VLC_CODEC_YUVA;
- fmt.i_aspect = 0;
fmt.i_width = fmt.i_visible_width = i_width;
fmt.i_height = fmt.i_visible_height = __MIN( i_height, i_textblock_height + VERTICAL_MARGIN * 2);
fmt.i_x_offset = fmt.i_y_offset = 0;
- p_region->p_picture = picture_New( fmt.i_chroma, fmt.i_width, fmt.i_height, fmt.i_aspect );
+ p_region->p_picture = picture_NewFromFormat( &fmt );
if( !p_region->p_picture )
return VLC_EGENERIC;
p_region->fmt = fmt;