iconv fixes
authorlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Wed, 19 Jan 2005 13:51:11 +0000 (13:51 +0000)
committerlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Wed, 19 Jan 2005 13:51:11 +0000 (13:51 +0000)
git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@622 d19143bc-622f-0410-bfdd-b5b2a6649095

src/modules/feeds/PAL/etv.properties
src/modules/gtk2/producer_pango.c

index 2eaf41c..25bc45c 100644 (file)
@@ -16,6 +16,8 @@
 location=region
 .description=Titles
 .properties.markup=filter[1].producer.markup
+.properties.font=filter[1].producer.font
+.properties.size=filter[1].producer.size
 .period=2
 .properties.length[0]=composite.out
 .composite.geometry=0,80:230x30:0;12=,:x:100
@@ -26,7 +28,8 @@ location=region
 .filter[1]=watermark
 .filter[1].resource=pango:
 .filter[1].producer.markup=
-.filter[1].producer.font=Sans 24
+.filter[1].producer.font=Sans
+.filter[1].producer.size=24
 .filter[1].composite.geometry=0,0:95%x100%
 .filter[1].composite.titles=1
 .filter[1].composite.halign=right
@@ -35,6 +38,8 @@ location=region
 courtesy=region
 .description=Courtesy
 .properties.markup=filter[1].producer.markup
+.properties.font=filter[1].producer.font
+.properties.size=filter[1].producer.size
 .type.markup=text
 .period=2
 .properties.length[0]=composite.out
@@ -46,7 +51,8 @@ courtesy=region
 .filter[1]=watermark
 .filter[1].resource=pango:
 .filter[1].producer.markup=ETV Exclusive
-.filter[1].producer.font=Sans 24
+.filter[1].producer.font=Sans
+.filter[1].producer.size=24
 .filter[1].composite.geometry=0,0:95%x100%
 .filter[1].composite.titles=1
 .filter[1].composite.halign=right
@@ -55,6 +61,8 @@ courtesy=region
 exclusive=region
 .description=Exclusive
 .properties.markup=filter[1].producer.markup
+.properties.font=filter[1].producer.font
+.properties.size=filter[1].producer.size
 .type.markup=text
 .period=2
 .properties.length[0]=composite.out
@@ -64,7 +72,8 @@ exclusive=region
 .filter[1]=watermark
 .filter[1].resource=pango:
 .filter[1].producer.markup=ETV Exclusive
-.filter[1].producer.font=Sans 24
+.filter[1].producer.font=Sans
+.filter[1].producer.size=24
 .filter[1].producer.weight=700
 .filter[1].composite.geometry=0,0:95%x100%
 .filter[1].composite.titles=1
@@ -74,6 +83,8 @@ exclusive=region
 file_shot=region
 .description=Titles
 .period=2
+.properties.font=filter[1].producer.font
+.properties.size=filter[1].producer.size
 .properties.length[0]=composite.out
 .composite.geometry=590,160:80x25:0;12=,:x:100
 .filter[0]=watermark
@@ -81,7 +92,8 @@ file_shot=region
 .filter[1]=watermark
 .filter[1].resource=pango:
 .filter[1].producer.markup=File Shot
-.filter[1].producer.font=Sans 18
+.filter[1].producer.font=Sans
+.filter[1].producer.size=18
 .filter[1].producer.weight=700
 .filter[1].composite.titles=1
 .filter[1].composite.halign=centre
@@ -90,6 +102,8 @@ file_shot=region
 special=region
 .description=Special
 .period=2
+.properties.font=filter[1].producer.font
+.properties.size=filter[1].producer.size
 .properties.length[0]=filter[0].composite.out
 .properties.length[1]=filter[1].composite.out
 .composite.geometry=465,375:255x35
@@ -99,7 +113,8 @@ special=region
 .filter[1]=watermark
 .filter[1].resource=pango:
 .filter[1].producer.markup=Special
-.filter[1].producer.font=Sans 24
+.filter[1].producer.font=Sans
+.filter[1].producer.size=24
 .filter[1].producer.weight=700
 .filter[1].composite.geometry=100%,0%:100%x100%:0;12=0%,0%:x:100
 .filter[1].composite.titles=1
@@ -109,6 +124,8 @@ special=region
 ticker=region
 .description=Tickertape
 .properties.markup=filter[1].producer.markup
+.properties.font=filter[1].producer.font
+.properties.size=filter[1].producer.size
 .type.markup=text
 .properties.length[0]=filter[1].composite.out
 .composite.geometry=0,500:722x75
@@ -118,7 +135,8 @@ ticker=region
 .filter[1]=watermark
 .filter[1].resource=pango:
 .filter[1].producer.markup=Ticker - provided for reference
-.filter[1].producer.font=Sans 24
+.filter[1].producer.font=Sans
+.filter[1].producer.size=24
 .filter[1].producer.weight=700
 .filter[1].composite.titles=1
 .filter[1].composite.halign=centre
@@ -130,6 +148,10 @@ super=region
 .properties.1=filter[2].producer.markup
 .properties.align=filter[1].composite.valign
 .properties.weight=filter[1].producer.weight
+.properties.f0=filter[1].producer.font
+.properties.s0=filter[1].producer.size
+.properties.f1=filter[2].producer.font
+.properties.s1=filter[2].producer.size
 .properties.length[0]=composite.out
 .period=2
 .composite.geometry=0,410:720x90:0;25=,:x:100
@@ -141,8 +163,10 @@ super=region
 .filter[0].composite.geometry=0,0:100%:100%:70
 .filter[1]=watermark
 .filter[1].resource=pango:
+.filter[1].producer.encoding=iso8859-1
 .filter[1].producer.markup=
-.filter[1].producer.font=Sans 32
+.filter[1].producer.font=Sans
+.filter[1].producer.size=32
 .filter[1].producer.weight=700
 .filter[1].producer.fgcolour=0x6c0101ff
 .filter[1].composite.titles=1
@@ -150,8 +174,10 @@ super=region
 .filter[1].composite.valign=top
 .filter[2]=watermark
 .filter[2].resource=pango:
+.filter[2].producer.encoding=iso8859-1
 .filter[2].producer.markup=
-.filter[2].producer.font=Sans 32
+.filter[2].producer.font=Sans
+.filter[2].producer.size=32
 .filter[2].producer.fgcolour=0x6c0101ff
 .filter[2].composite.titles=1
 .filter[2].composite.halign=centre
index 2d6dd50..b868063 100644 (file)
@@ -55,7 +55,7 @@ static int producer_get_frame( mlt_producer parent, mlt_frame_ptr frame, int ind
 static void producer_close( mlt_producer parent );
 static void pango_draw_background( GdkPixbuf *pixbuf, rgba_color bg );
 static GdkPixbuf *pango_get_pixbuf( const char *markup, const char *text, const char *font,
-       rgba_color fg, rgba_color bg, int pad, int align, int weight );
+       rgba_color fg, rgba_color bg, int pad, int align, int weight, int size );
 
 /** Return nonzero if the two strings are equal, ignoring case, up to
     the first n characters.
@@ -247,20 +247,22 @@ static int iconv_utf8( mlt_properties properties, char *prop_name, const char* e
        iconv_t cd = iconv_open( "UTF-8", encoding );
        if ( cd != ( iconv_t )-1 )
        {
-               char *inbuf_p = strdup( text );
+               char *inbuf_p = text;
                size_t inbuf_n = strlen( text );
                size_t outbuf_n = inbuf_n * 6;
                char *outbuf = mlt_pool_alloc( outbuf_n );
                char *outbuf_p = outbuf;
                
-               if ( iconv( cd, &inbuf_p, &inbuf_n, &outbuf_p, &outbuf_n ) != -1 )
-               {
-                       outbuf[ outbuf_n ] = 0;
+               memset( outbuf, 0, outbuf_n );
+
+               if ( text != NULL && strcmp( text, "" ) && iconv( cd, &inbuf_p, &inbuf_n, &outbuf_p, &outbuf_n ) != -1 )
                        mlt_properties_set( properties, prop_name, outbuf );
-                       result = 0;
-               }
+               else
+                       mlt_properties_set( properties, prop_name, "" );
+
                mlt_pool_release( outbuf );
                iconv_close( cd );
+               result = 0;
        }
        return result;
 }
@@ -292,6 +294,7 @@ static void refresh_image( mlt_frame frame, int width, int height )
        char *font = mlt_properties_get( producer_props, "font" );
        char *encoding = mlt_properties_get( producer_props, "encoding" );
        int weight = mlt_properties_get_int( producer_props, "weight" );
+       int size = mlt_properties_get_int( producer_props, "size" );
        
        // See if any properties changed
        int property_changed = ( align != this->align );
@@ -339,7 +342,7 @@ static void refresh_image( mlt_frame frame, int width, int height )
                }
                
                // Render the title
-               pixbuf = pango_get_pixbuf( markup, text, font, fgcolor, bgcolor, pad, align, weight );
+               pixbuf = pango_get_pixbuf( markup, text, font, fgcolor, bgcolor, pad, align, weight, size );
 
                if ( pixbuf != NULL )
                {
@@ -535,7 +538,7 @@ static void pango_draw_background( GdkPixbuf *pixbuf, rgba_color bg )
        }
 }
 
-static GdkPixbuf *pango_get_pixbuf( const char *markup, const char *text, const char *font, rgba_color fg, rgba_color bg, int pad, int align, int weight )
+static GdkPixbuf *pango_get_pixbuf( const char *markup, const char *text, const char *font, rgba_color fg, rgba_color bg, int pad, int align, int weight, int size )
 {
        PangoFT2FontMap *fontmap = (PangoFT2FontMap*) pango_ft2_font_map_new();
        PangoContext *context = pango_ft2_font_map_create_context( fontmap );
@@ -553,6 +556,8 @@ static GdkPixbuf *pango_get_pixbuf( const char *markup, const char *text, const
        pango_ft2_font_map_set_resolution( fontmap, 72, 72 );
        pango_layout_set_width( layout, -1 ); // set wrapping constraints
        pango_font_description_set_weight( desc, ( PangoWeight ) weight  );
+       if ( size != 0 )
+               pango_font_description_set_size( desc, PANGO_SCALE * size );
        pango_layout_set_font_description( layout, desc );
 //     pango_layout_set_spacing( layout, space );
        pango_layout_set_alignment( layout, ( PangoAlignment ) align  );