From a6928af7a8f12d715eae58497c14bef14d645f80 Mon Sep 17 00:00:00 2001 From: David Gene Date: Tue, 30 Mar 2021 11:57:19 -0500 Subject: [PATCH 1/3] refactoring: readability, no ostreams --- src/extension/internal/filter/shadows.h | 130 ++++++++++++------------ 1 file changed, 64 insertions(+), 66 deletions(-) diff --git a/src/extension/internal/filter/shadows.h b/src/extension/internal/filter/shadows.h index 2616b25789..e54ddb999c 100644 --- a/src/extension/internal/filter/shadows.h +++ b/src/extension/internal/filter/shadows.h @@ -95,91 +95,89 @@ gchar const * ColorizableDropShadow::get_filter_text (Inkscape::Extension::Extension * ext) { if (_filter != nullptr) g_free((void *)_filter); - - std::ostringstream blur; - std::ostringstream a; - std::ostringstream r; - std::ostringstream g; - std::ostringstream b; - std::ostringstream x; - std::ostringstream y; - std::ostringstream comp1in1; - std::ostringstream comp1in2; - std::ostringstream comp1op; - std::ostringstream comp2in1; - std::ostringstream comp2in2; - std::ostringstream comp2op; - const gchar *type = ext->get_param_optiongroup("type"); + float blur_std = ext->get_param_float("blur"); + guint32 color = ext->get_param_color("color"); - - blur << ext->get_param_float("blur"); - x << ext->get_param_float("xoffset"); - y << ext->get_param_float("yoffset"); - a << (color & 0xff) / 255.0F; - r << ((color >> 24) & 0xff); - g << ((color >> 16) & 0xff); - b << ((color >> 8) & 0xff); + float flood_a = (color & 0xff) / 255.0F; + int flood_r = ((color >> 24) & 0xff); + int flood_g = ((color >> 16) & 0xff); + int flood_b = ((color >> 8) & 0xff); + + float offset_x = ext->get_param_float("xoffset"); + float offset_y = ext->get_param_float("yoffset"); + + const char *comp1in1; + const char *comp1in2; + const char *comp1op; + const char *comp2in1; + const char *comp2in2; + const char *comp2op; // Select object or user-defined color - if ((g_ascii_strcasecmp("innercut", type) == 0)) { + const gchar *filter_mode = ext->get_param_optiongroup("type"); + + if ((g_ascii_strcasecmp("innercut", filter_mode) == 0)) { if (ext->get_param_bool("objcolor")) { - comp2in1 << "SourceGraphic"; - comp2in2 << "offset"; + comp2in1 = "SourceGraphic"; + comp2in2 = "offset"; } else { - comp2in1 << "offset"; - comp2in2 << "SourceGraphic"; + comp2in1 = "offset"; + comp2in2 = "SourceGraphic"; } } else { if (ext->get_param_bool("objcolor")) { - comp1in1 << "SourceGraphic"; - comp1in2 << "flood"; + comp1in1 = "SourceGraphic"; + comp1in2 = "flood"; } else { - comp1in1 << "flood"; - comp1in2 << "SourceGraphic"; + comp1in1 = "flood"; + comp1in2 = "SourceGraphic"; } } // Shadow mode - if ((g_ascii_strcasecmp("outer", type) == 0)) { - comp1op << "in"; - comp2op << "over"; - comp2in1 << "SourceGraphic"; - comp2in2 << "offset"; - } else if ((g_ascii_strcasecmp("inner", type) == 0)) { - comp1op << "out"; - comp2op << "atop"; - comp2in1 << "offset"; - comp2in2 << "SourceGraphic"; - } else if ((g_ascii_strcasecmp("outercut", type) == 0)) { - comp1op << "in"; - comp2op << "out"; - comp2in1 << "offset"; - comp2in2 << "SourceGraphic"; - } else if ((g_ascii_strcasecmp("innercut", type) == 0)){ - comp1op << "out"; - comp1in1 << "flood"; - comp1in2 << "SourceGraphic"; - comp2op << "in"; - } else { //shadow - comp1op << "in"; - comp2op << "atop"; - comp2in1 << "offset"; - comp2in2 << "offset"; + if (g_ascii_strcasecmp("outer", filter_mode) == 0) { + comp1op = "in"; + comp2op = "over"; + comp2in1 = "SourceGraphic"; + comp2in2 = "offset"; + } else if (g_ascii_strcasecmp("inner", filter_mode) == 0) { + comp1op = "out"; + comp2op = "atop"; + comp2in1 = "offset"; + comp2in2 = "SourceGraphic"; + } else if (g_ascii_strcasecmp("outercut", filter_mode) == 0) { + comp1op = "in"; + comp2op = "out"; + comp2in1 = "offset"; + comp2in2 = "SourceGraphic"; + } else if (g_ascii_strcasecmp("innercut", filter_mode) == 0){ + comp1op = "out"; + comp1in1 = "flood"; + comp1in2 = "SourceGraphic"; + comp2op = "in"; + } else { // shadow only + comp1op = "in"; + comp2op = "atop"; + comp2in1 = "offset"; + comp2in2 = "offset"; } // clang-format off _filter = g_strdup_printf( "\n" - "\n" - "\n" - "\n" - "\n" - "\n" - "\n", a.str().c_str(), r.str().c_str(), g.str().c_str(), b.str().c_str(), - comp1in1.str().c_str(), comp1in2.str().c_str(), comp1op.str().c_str(), - blur.str().c_str(), x.str().c_str(), y.str().c_str(), - comp2in1.str().c_str(), comp2in2.str().c_str(), comp2op.str().c_str()); + "\n" + "\n" + "\n" + "\n" + "\n" + "\n", + flood_a, flood_r, flood_g, flood_b, + comp1op, comp1in1, comp1in2, + blur_std, + offset_x, offset_y, + comp2op, comp2in1, comp2in2 + ); // clang-format on return _filter; -- GitLab From 71e43946c37d9211fbf31a01605d8eb032ab7027 Mon Sep 17 00:00:00 2001 From: David Gene Date: Tue, 30 Mar 2021 12:58:42 -0500 Subject: [PATCH 2/3] Reorder filter effects, fix shadow cutoff --- src/extension/internal/filter/shadows.h | 77 +++++++++++-------------- 1 file changed, 35 insertions(+), 42 deletions(-) diff --git a/src/extension/internal/filter/shadows.h b/src/extension/internal/filter/shadows.h index e54ddb999c..00be66fbd5 100644 --- a/src/extension/internal/filter/shadows.h +++ b/src/extension/internal/filter/shadows.h @@ -96,6 +96,8 @@ ColorizableDropShadow::get_filter_text (Inkscape::Extension::Extension * ext) { if (_filter != nullptr) g_free((void *)_filter); + // Style parameters + float blur_std = ext->get_param_float("blur"); guint32 color = ext->get_param_color("color"); @@ -106,76 +108,67 @@ ColorizableDropShadow::get_filter_text (Inkscape::Extension::Extension * ext) float offset_x = ext->get_param_float("xoffset"); float offset_y = ext->get_param_float("yoffset"); + + // Handle mode parameter - const char *comp1in1; - const char *comp1in2; const char *comp1op; const char *comp2in1; const char *comp2in2; const char *comp2op; - - // Select object or user-defined color - const gchar *filter_mode = ext->get_param_optiongroup("type"); - if ((g_ascii_strcasecmp("innercut", filter_mode) == 0)) { - if (ext->get_param_bool("objcolor")) { - comp2in1 = "SourceGraphic"; - comp2in2 = "offset"; - } else { - comp2in1 = "offset"; - comp2in2 = "SourceGraphic"; - } - } else { - if (ext->get_param_bool("objcolor")) { - comp1in1 = "SourceGraphic"; - comp1in2 = "flood"; - } else { - comp1in1 = "flood"; - comp1in2 = "SourceGraphic"; - } - } - - // Shadow mode - if (g_ascii_strcasecmp("outer", filter_mode) == 0) { + const gchar *mode = ext->get_param_optiongroup("type"); + + if (g_ascii_strcasecmp("outer", mode) == 0) { comp1op = "in"; comp2op = "over"; + comp2in1 = "SourceGraphic"; - comp2in2 = "offset"; - } else if (g_ascii_strcasecmp("inner", filter_mode) == 0) { + comp2in2 = "comp1"; + } + else if (g_ascii_strcasecmp("inner", mode) == 0) { comp1op = "out"; comp2op = "atop"; - comp2in1 = "offset"; + + comp2in1 = "comp1"; comp2in2 = "SourceGraphic"; - } else if (g_ascii_strcasecmp("outercut", filter_mode) == 0) { + } + else if (g_ascii_strcasecmp("outercut", mode) == 0) { comp1op = "in"; comp2op = "out"; - comp2in1 = "offset"; + + comp2in1 = "comp1"; comp2in2 = "SourceGraphic"; - } else if (g_ascii_strcasecmp("innercut", filter_mode) == 0){ + } + else if (g_ascii_strcasecmp("innercut", mode) == 0){ comp1op = "out"; - comp1in1 = "flood"; - comp1in2 = "SourceGraphic"; comp2op = "in"; - } else { // shadow only + + comp2in1 = "comp1"; + comp2in2 = "SourceGraphic"; + } + else { // shadow only comp1op = "in"; comp2op = "atop"; - comp2in1 = "offset"; - comp2in2 = "offset"; + + comp2in1 = "comp1"; + comp2in2 = "comp1"; } // clang-format off _filter = g_strdup_printf( "\n" - "\n" - "\n" - "\n" - "\n" - "\n" + "\n" + "\n" + "\n" + "\n" + "\n" "\n", + flood_a, flood_r, flood_g, flood_b, - comp1op, comp1in1, comp1in2, blur_std, offset_x, offset_y, + + comp1op, comp2op, comp2in1, comp2in2 ); // clang-format on -- GitLab From 9d323ff0a6b00b46bc1cb07edcacb8b8f9795287 Mon Sep 17 00:00:00 2001 From: David Gene Date: Tue, 30 Mar 2021 15:28:00 -0500 Subject: [PATCH 3/3] clean w/ clang-format --- src/extension/internal/filter/shadows.h | 65 ++++++++++++------------- 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/src/extension/internal/filter/shadows.h b/src/extension/internal/filter/shadows.h index 00be66fbd5..c17f18a3cc 100644 --- a/src/extension/internal/filter/shadows.h +++ b/src/extension/internal/filter/shadows.h @@ -15,11 +15,10 @@ */ /* ^^^ Change the copyright to be you and your e-mail address ^^^ */ -#include "filter.h" - +#include "extension/extension.h" #include "extension/internal/clear-n_.h" #include "extension/system.h" -#include "extension/extension.h" +#include "filter.h" namespace Inkscape { namespace Extension { @@ -28,7 +27,7 @@ namespace Filter { /** \brief Custom predefined Drop shadow filter. - + Colorizable Drop shadow. Filter's parameters: @@ -44,15 +43,23 @@ namespace Filter { * Color (guint, default 0,0,0,127) -> flood (flood-opacity, flood-color) * Use object's color (boolean, default false) -> composite1 (in1, in2) */ -class ColorizableDropShadow : public Inkscape::Extension::Internal::Filter::Filter { +class ColorizableDropShadow : public Inkscape::Extension::Internal::Filter::Filter +{ protected: - gchar const * get_filter_text (Inkscape::Extension::Extension * ext) override; + gchar const *get_filter_text(Inkscape::Extension::Extension *ext) override; public: - ColorizableDropShadow ( ) : Filter() { }; - ~ColorizableDropShadow ( ) override { if (_filter != nullptr) g_free((void *)_filter); return; } + ColorizableDropShadow() + : Filter(){}; + ~ColorizableDropShadow() override + { + if (_filter != nullptr) + g_free((void *)_filter); + return; + } - static void init () { + static void init() + { // clang-format off Inkscape::Extension::build_from_mem( "\n" @@ -88,68 +95,58 @@ public: "\n", new ColorizableDropShadow()); // clang-format on }; - }; -gchar const * -ColorizableDropShadow::get_filter_text (Inkscape::Extension::Extension * ext) +gchar const *ColorizableDropShadow::get_filter_text(Inkscape::Extension::Extension *ext) { - if (_filter != nullptr) g_free((void *)_filter); - + if (_filter != nullptr) + g_free((void *)_filter); + // Style parameters - + float blur_std = ext->get_param_float("blur"); - + guint32 color = ext->get_param_color("color"); float flood_a = (color & 0xff) / 255.0F; int flood_r = ((color >> 24) & 0xff); int flood_g = ((color >> 16) & 0xff); - int flood_b = ((color >> 8) & 0xff); - + int flood_b = ((color >> 8) & 0xff); + float offset_x = ext->get_param_float("xoffset"); float offset_y = ext->get_param_float("yoffset"); // Handle mode parameter - + const char *comp1op; const char *comp2in1; const char *comp2in2; const char *comp2op; - + const gchar *mode = ext->get_param_optiongroup("type"); - + if (g_ascii_strcasecmp("outer", mode) == 0) { comp1op = "in"; comp2op = "over"; - comp2in1 = "SourceGraphic"; comp2in2 = "comp1"; - } - else if (g_ascii_strcasecmp("inner", mode) == 0) { + } else if (g_ascii_strcasecmp("inner", mode) == 0) { comp1op = "out"; comp2op = "atop"; - comp2in1 = "comp1"; comp2in2 = "SourceGraphic"; - } - else if (g_ascii_strcasecmp("outercut", mode) == 0) { + } else if (g_ascii_strcasecmp("outercut", mode) == 0) { comp1op = "in"; comp2op = "out"; - comp2in1 = "comp1"; comp2in2 = "SourceGraphic"; - } - else if (g_ascii_strcasecmp("innercut", mode) == 0){ + } else if (g_ascii_strcasecmp("innercut", mode) == 0) { comp1op = "out"; comp2op = "in"; - comp2in1 = "comp1"; comp2in2 = "SourceGraphic"; - } - else { // shadow only + } else { // shadow only comp1op = "in"; comp2op = "atop"; - comp2in1 = "comp1"; comp2in2 = "comp1"; } -- GitLab