From fecb5d364e09e7daf4fd9ffd1eb31eac6f475b8f Mon Sep 17 00:00:00 2001 From: Chad Phillips Date: Mon, 16 Apr 2018 23:03:52 -0700 Subject: [PATCH] FS-11117: font_scale float values, add min/max_font_size when setting video banner Previously, the font_scale parameter available for the video_mute_banner/video_banner_text conference channel variable would only accept integer values. It now can accept float values for more fine grained control, eg: Add params to set min_font_size and max_font_size for video banners. The hard-coded defaults of 5/24 for min/max font size don't always look good depending on the layout use case. This adds min_font_size and max_font_size params for more fine-grained control, eg: --- .../mod_conference/conference_video.c | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index 859b135515..223da15685 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -1272,8 +1272,8 @@ void conference_member_set_logo(conference_member_t *member, const char *path) void conference_video_layer_set_banner(conference_member_t *member, mcu_layer_t *layer, const char *text) { switch_rgb_color_t fgcolor, bgcolor; - int font_scale = 1; - uint16_t font_size = 0; + float font_scale = 1; + uint16_t min_font_size = 5, max_font_size = 24, font_size = 0; const char *fg = "#cccccc"; const char *bg = "#142e55"; char *parsed = NULL; @@ -1338,8 +1338,22 @@ void conference_video_layer_set_banner(conference_member_t *member, mcu_layer_t font_face = var; } - if ((var = switch_event_get_header(params, "font_scale"))) { + if ((var = switch_event_get_header(params, "min_font_size"))) { int tmp = atoi(var); + if (tmp >= min_font_size && tmp <= max_font_size) { + min_font_size = tmp; + } + } + + if ((var = switch_event_get_header(params, "max_font_size"))) { + int tmp = atoi(var); + if (tmp >= min_font_size && tmp <= max_font_size) { + max_font_size = tmp; + } + } + + if ((var = switch_event_get_header(params, "font_scale"))) { + float tmp = atof(var); if (tmp >= 0 && tmp <= 50) { font_scale = tmp; @@ -1351,8 +1365,8 @@ void conference_video_layer_set_banner(conference_member_t *member, mcu_layer_t font_size = (uint16_t)(((double)layer->screen_w / ((double)strlen(text) / 1.2f)) * font_scale); - if (font_size <= 5) font_size = 5; - if (font_size >= 24) font_size = 24; + if (font_size <= min_font_size) font_size = min_font_size; + if (font_size >= max_font_size) font_size = max_font_size; switch_color_set_rgb(&fgcolor, fg); switch_color_set_rgb(&bgcolor, bg);