From e24b9a61fa1d4eb67457ecace7c4a24756255cf8 Mon Sep 17 00:00:00 2001 From: Michael Fabian 'Xaymar' Dirks Date: Mon, 15 Apr 2019 12:54:19 +0200 Subject: [PATCH] filter-blur: Update long description of Type and Subtype fields Automatically updates the long description (hover text) if the Type or Subtype field is changed, allowing for more contextual information about what the selected information does. --- data/locale/en-US.ini | 9 +++++++ source/filters/filter-blur.cpp | 48 ++++++++++++++++++++++++++++++++-- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 70ab2b1..156046c 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -11,14 +11,23 @@ FileType.Effects="Effects" # Blur Blur.Type.Box="Box" +Blur.Type.Box.Description="Box blur (named for its distinct shape) is a simple average over a number of pixels, resulting in a box like look." Blur.Type.BoxLinear="Box Linear" +Blur.Type.BoxLinear.Description="Box blur (named for its distinct shape) is a simple average over a number of pixels, resulting in a box like look.\nThis is a linear optimized version of the normal Box blur." Blur.Type.Gaussian="Gaussian" +Blur.Type.Gaussian.Description="Gaussian blur uses the Gaussian Bell curve as a weight for each sampled pixel, resulting in a smooth look." Blur.Type.GaussianLinear="Gaussian Linear" +Blur.Type.GaussianLinear.Description="Gaussian blur uses the Gaussian Bell curve as a weight for each sampled pixel, resulting in a smooth look.\nThis is a linear optimized version of the normal Gaussian blur, but might look slightly worse" Blur.Type.DualFiltering="Dual Filtering" +Blur.Type.DualFiltering.Description="Dual Filtering is a Gaussian approximation that is able to get similar results as Gaussian blur at much lower cost." Blur.Subtype.Area="Area" +Blur.Subtype.Area.Description="A 2-Dimensional area blur." Blur.Subtype.Directional="Directional" +Blur.Subtype.Directional.Description="A 1-Dimensional directional blur." Blur.Subtype.Rotational="Rotational" +Blur.Subtype.Rotational.Description="A blur that rotates around a center point." Blur.Subtype.Zoom="Zoom" +Blur.Subtype.Zoom.Description="A blur that zooms towards a center point." # Mip Generator MipGenerator="Mipmap Generator" diff --git a/source/filters/filter-blur.cpp b/source/filters/filter-blur.cpp index 9354552..41a83a1 100644 --- a/source/filters/filter-blur.cpp +++ b/source/filters/filter-blur.cpp @@ -446,18 +446,62 @@ bool filter::blur::blur_instance::modified_properties(void*, obs_properties_t* p for (size_t idx = 0, edx = obs_property_list_item_count(prop_subtype); idx < edx; idx++) { if (!obs_property_list_item_disabled(prop_subtype, idx)) { obs_data_set_string(settings, P_SUBTYPE, obs_property_list_item_string(prop_subtype, idx)); + + // Find new Subtype + auto subtype_found2 = list_of_subtypes.find(vsubtype); + if (subtype_found2 == list_of_subtypes.end()) { + subtype_found = list_of_subtypes.end(); + } else { + subtype_found = subtype_found2; + } + break; } } } } + // Update hover text with new descriptions. + if (type_found != list_of_types.end()) { + if (type_found->first == "box") { + obs_property_set_long_description(obs_properties_get(props, P_TYPE), P_TRANSLATE(P_DESC(S_BLUR_TYPE_BOX))); + } else if (type_found->first == "box_linear") { + obs_property_set_long_description(obs_properties_get(props, P_TYPE), + P_TRANSLATE(P_DESC(S_BLUR_TYPE_BOX_LINEAR))); + } else if (type_found->first == "gaussian") { + obs_property_set_long_description(obs_properties_get(props, P_TYPE), + P_TRANSLATE(P_DESC(S_BLUR_TYPE_GAUSSIAN))); + } else if (type_found->first == "gaussian_linear") { + obs_property_set_long_description(obs_properties_get(props, P_TYPE), + P_TRANSLATE(P_DESC(S_BLUR_TYPE_GAUSSIAN_LINEAR))); + } + } else { + obs_property_set_long_description(obs_properties_get(props, P_TYPE), P_TRANSLATE(P_DESC(P_TYPE))); + } + if (subtype_found != list_of_subtypes.end()) { + if (subtype_found->first == "area") { + obs_property_set_long_description(obs_properties_get(props, P_SUBTYPE), + P_TRANSLATE(P_DESC(S_BLUR_SUBTYPE_AREA))); + } else if (subtype_found->first == "directional") { + obs_property_set_long_description(obs_properties_get(props, P_SUBTYPE), + P_TRANSLATE(P_DESC(S_BLUR_SUBTYPE_DIRECTIONAL))); + } else if (subtype_found->first == "rotational") { + obs_property_set_long_description(obs_properties_get(props, P_SUBTYPE), + P_TRANSLATE(P_DESC(S_BLUR_SUBTYPE_ROTATIONAL))); + } else if (subtype_found->first == "zoom") { + obs_property_set_long_description(obs_properties_get(props, P_SUBTYPE), + P_TRANSLATE(P_DESC(S_BLUR_SUBTYPE_ZOOM))); + } + } else { + obs_property_set_long_description(obs_properties_get(props, P_SUBTYPE), P_TRANSLATE(P_DESC(P_SUBTYPE))); + } + // Blur Sub-Type { bool has_angle_support = (subtype_found->second.type == ::gfx::blur::type::Directional) || (subtype_found->second.type == ::gfx::blur::type::Rotational); - bool has_center_support = - (subtype_found->second.type == ::gfx::blur::type::Rotational) || (subtype_found->second.type == ::gfx::blur::type::Zoom); + bool has_center_support = (subtype_found->second.type == ::gfx::blur::type::Rotational) + || (subtype_found->second.type == ::gfx::blur::type::Zoom); bool has_stepscale_support = type_found->second.fn().is_step_scale_supported(subtype_found->second.type); bool show_scaling = obs_data_get_bool(settings, P_STEPSCALE) && has_stepscale_support;