From f3f35a0402e689eee9f5254fb77d6a15653f185d Mon Sep 17 00:00:00 2001 From: Brian Matherly Date: Sun, 25 Sep 2011 22:40:51 -0500 Subject: [PATCH] Add support for HTML style color parameter to producer_pango. producer_color and producer_pango now work exactly the same WRT color parameters. --- src/modules/gtk2/filter_dynamictext.yml | 10 +++++++-- src/modules/gtk2/producer_pango.c | 29 ++++++++----------------- src/modules/gtk2/producer_pango.yml | 10 +++++++-- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/modules/gtk2/filter_dynamictext.yml b/src/modules/gtk2/filter_dynamictext.yml index 9356f60c..658f1394 100644 --- a/src/modules/gtk2/filter_dynamictext.yml +++ b/src/modules/gtk2/filter_dynamictext.yml @@ -57,7 +57,10 @@ parameters: - identifier: fgcolour title: Foreground color type: string - description: an RGBA colour specification of the text (i.e. 0xrrggbbaa) + description: > + A color value is a hexadecimal representation of RGB plus alpha channel + as 0xrrggbbaa. Colors can also be the words: white, black, red, green, + or blue. You can also use a HTML-style color values #rrggbb or #aarrggbb. default: 0x000000ff readonly: no mutable: yes @@ -65,7 +68,10 @@ parameters: - identifier: bgcolour title: Background color type: string - description: an RGBA colour of the background rectangle (i.e. 0xrrggbbaa) + description: > + A color value is a hexadecimal representation of RGB plus alpha channel + as 0xrrggbbaa. Colors can also be the words: white, black, red, green, + or blue. You can also use a HTML-style color values #rrggbb or #aarrggbb. default: 0x00000020 readonly: no mutable: yes diff --git a/src/modules/gtk2/producer_pango.c b/src/modules/gtk2/producer_pango.c index 0988715d..e1bff5d4 100644 --- a/src/modules/gtk2/producer_pango.c +++ b/src/modules/gtk2/producer_pango.c @@ -241,20 +241,11 @@ static void set_string( char **string, const char *value, const char *fallback ) } } -rgba_color parse_color( char *color ) +rgba_color parse_color( char *color, unsigned int color_int ) { rgba_color result = { 0xff, 0xff, 0xff, 0xff }; - if ( !strncmp( color, "0x", 2 ) ) - { - unsigned int temp = 0; - sscanf( color + 2, "%x", &temp ); - result.r = ( temp >> 24 ) & 0xff; - result.g = ( temp >> 16 ) & 0xff; - result.b = ( temp >> 8 ) & 0xff; - result.a = ( temp ) & 0xff; - } - else if ( !strcmp( color, "red" ) ) + if ( !strcmp( color, "red" ) ) { result.r = 0xff; result.g = 0x00; @@ -272,14 +263,12 @@ rgba_color parse_color( char *color ) result.g = 0x00; result.b = 0xff; } - else + else if ( strcmp( color, "white" ) ) { - unsigned int temp = 0; - sscanf( color, "%d", &temp ); - result.r = ( temp >> 24 ) & 0xff; - result.g = ( temp >> 16 ) & 0xff; - result.b = ( temp >> 8 ) & 0xff; - result.a = ( temp ) & 0xff; + result.r = ( color_int >> 24 ) & 0xff; + result.g = ( color_int >> 16 ) & 0xff; + result.b = ( color_int >> 8 ) & 0xff; + result.a = ( color_int ) & 0xff; } return result; @@ -383,8 +372,8 @@ static void refresh_image( mlt_frame frame, int width, int height ) if ( pixbuf == NULL && property_changed ) { - rgba_color fgcolor = parse_color( this->fgcolor ); - rgba_color bgcolor = parse_color( this->bgcolor ); + rgba_color fgcolor = parse_color( this->fgcolor, mlt_properties_get_int( producer_props, "fgcolour" ) ); + rgba_color bgcolor = parse_color( this->bgcolor, mlt_properties_get_int( producer_props, "bgcolour" ) ); if ( this->pixbuf ) g_object_unref( this->pixbuf ); diff --git a/src/modules/gtk2/producer_pango.yml b/src/modules/gtk2/producer_pango.yml index b63982d9..889120cd 100644 --- a/src/modules/gtk2/producer_pango.yml +++ b/src/modules/gtk2/producer_pango.yml @@ -53,7 +53,10 @@ parameters: - identifier: fgcolour title: Foreground color type: string - description: an RGBA colour specification of the text (i.e. 0xrrggbbaa) + description: > + A color value is a hexadecimal representation of RGB plus alpha channel + as 0xrrggbbaa. Colors can also be the words: white, black, red, green, + or blue. You can also use a HTML-style color values #rrggbb or #aarrggbb. readonly: no mutable: yes widget: color @@ -61,7 +64,10 @@ parameters: - identifier: bgcolour title: Background color type: string - description: an RGBA colour of the background rectangle (i.e. 0xrrggbbaa) + description: > + A color value is a hexadecimal representation of RGB plus alpha channel + as 0xrrggbbaa. Colors can also be the words: white, black, red, green, + or blue. You can also use a HTML-style color values #rrggbb or #aarrggbb. readonly: no mutable: yes widget: color -- 2.39.2