diff options
| author | Nicolas Dufour <nicoduf@yahoo.fr> | 2011-08-23 19:50:21 +0000 |
|---|---|---|
| committer | JazzyNico <nicoduf@yahoo.fr> | 2011-08-23 19:50:21 +0000 |
| commit | 20f5fdf0157485e4a606449bea6ea07ab4b25b64 (patch) | |
| tree | 15f2f15ddb1bdb23f5c8d257e15a02ce9065d21a /src | |
| parent | 1) Use the "snap guides" button both for guides being snap sources, as well a... (diff) | |
| download | inkscape-20f5fdf0157485e4a606449bea6ea07ab4b25b64.tar.gz inkscape-20f5fdf0157485e4a606449bea6ea07ab4b25b64.zip | |
UI. Adding a digit in the blur spinbox (F&S dialog, see Bug #414767, More precision to Blur filter value).
Filters. Some CPF improvements (including a new Cross-smooth version).
(bzr r10577)
Diffstat (limited to 'src')
| -rw-r--r-- | src/extension/internal/filter/color.h | 8 | ||||
| -rw-r--r-- | src/extension/internal/filter/morphology.h | 67 | ||||
| -rw-r--r-- | src/extension/internal/filter/transparency.h | 8 | ||||
| -rw-r--r-- | src/ui/widget/filter-effect-chooser.cpp | 2 |
4 files changed, 56 insertions, 29 deletions
diff --git a/src/extension/internal/filter/color.h b/src/extension/internal/filter/color.h index 9cc009b3a..ecdf25f39 100644 --- a/src/extension/internal/filter/color.h +++ b/src/extension/internal/filter/color.h @@ -153,10 +153,10 @@ public: "<param name=\"tab\" type=\"notebook\">\n" "<page name=\"optionstab\" _gui-text=\"Options\">\n" "<param name=\"saturation\" gui-text=\"" N_("Saturation:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.\" max=\"1.\">1</param>\n" - "<param name=\"red\" gui-text=\"" N_("Red:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.00\" max=\"10.00\">-1</param>\n" - "<param name=\"green\" gui-text=\"" N_("Green:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.00\" max=\"10.00\">0.5</param>\n" - "<param name=\"blue\" gui-text=\"" N_("Blue:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.00\" max=\"10.00\">0.5</param>\n" - "<param name=\"alpha\" gui-text=\"" N_("Alpha:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.\" max=\"1.\">1</param>\n" + "<param name=\"red\" gui-text=\"" N_("Red:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.\" max=\"10.\">-1</param>\n" + "<param name=\"green\" gui-text=\"" N_("Green:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.\" max=\"10.\">0.5</param>\n" + "<param name=\"blue\" gui-text=\"" N_("Blue:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.\" max=\"10.\">0.5</param>\n" + "<param name=\"alpha\" gui-text=\"" N_("Alpha:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.\" max=\"10.\">1</param>\n" "<param name=\"invert\" gui-text=\"" N_("Inverted") "\" type=\"boolean\">false</param>\n" "</page>\n" "<page name=\"colortab\" _gui-text=\"Color\">\n" diff --git a/src/extension/internal/filter/morphology.h b/src/extension/internal/filter/morphology.h index c57cb3618..7dde0002d 100644 --- a/src/extension/internal/filter/morphology.h +++ b/src/extension/internal/filter/morphology.h @@ -33,9 +33,15 @@ namespace Filter { Filter's parameters: * Type (enum, default "Smooth edges") -> - Smooth edges = composite1 (in="SourceGraphic", in2="blur") - Smooth all = composite1 (in="blur", in2="blur") - * Blur (0.01->10., default 5.) -> blur (stdDeviation) + Inner = composite1 (operator="in") + Outer = composite1 (operator="over") + Open = composite1 (operator="XOR") + * Width (0.01->30., default 10.) -> blur (stdDeviation) + * Level (0.2->2., default 1.) -> composite2 (k2) + * Dilatation (1.->100., default 10.) -> colormatrix1 (last-1 value) + * Erosion (1.->100., default 1.) -> colormatrix1 (last value) + * Antialiasing (0.01->1., default 1) -> blur2 (stdDeviation) + * Blur content (boolean, default false) -> blend (true: in="colormatrix2", false: in="SourceGraphic") */ class Crosssmooth : public Inkscape::Extension::Internal::Filter::Filter { @@ -52,10 +58,17 @@ public: "<name>" N_("Cross-smooth") "</name>\n" "<id>org.inkscape.effect.filter.crosssmooth</id>\n" "<param name=\"type\" gui-text=\"" N_("Type:") "\" type=\"enum\">\n" - "<_item value=\"edges\">Smooth edges</_item>\n" - "<_item value=\"all\">Smooth all</_item>\n" + "<_item value=\"in\">Inner</_item>\n" + "<_item value=\"over\">Outer</_item>\n" + "<_item value=\"xor\">Open</_item>\n" "</param>\n" - "<param name=\"blur\" gui-text=\"" N_("Blur:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.01\" max=\"10.00\">5</param>\n" + "<param name=\"width\" gui-text=\"" N_("Width:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.01\" max=\"30.\">10</param>\n" + "<param name=\"level\" gui-text=\"" N_("Level:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.2\" max=\"2\">1</param>\n" + "<param name=\"dilat\" gui-text=\"" N_("Dilatation:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"1\" max=\"100\">10</param>\n" + "<param name=\"erosion\" gui-text=\"" N_("Erosion:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"1\" max=\"100\">1</param>\n" + "<param name=\"antialias\" gui-text=\"" N_("Antialiasing:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.01\" max=\"1\">1</param>\n" + "<param name=\"content\" gui-text=\"" N_("Blur content") "\" type=\"boolean\" >false</param>\n" + "<effect>\n" "<object-type>all</object-type>\n" "<effects-menu>\n" @@ -75,29 +88,43 @@ Crosssmooth::get_filter_text (Inkscape::Extension::Extension * ext) { if (_filter != NULL) g_free((void *)_filter); - std::ostringstream blur; - std::ostringstream c1in; + std::ostringstream type; + std::ostringstream width; + std::ostringstream level; + std::ostringstream dilat; + std::ostringstream erosion; + std::ostringstream antialias; + std::ostringstream content; - blur << ext->get_param_float("blur"); + type << ext->get_param_enum("type"); + width << ext->get_param_float("width"); + level << ext->get_param_float("level"); + dilat << ext->get_param_float("dilat"); + erosion << (1 - ext->get_param_float("erosion")); + antialias << ext->get_param_float("antialias"); - const gchar *type = ext->get_param_enum("type"); - if((g_ascii_strcasecmp("all", type) == 0)) { - c1in << "blur"; + if (ext->get_param_bool("content")) { + content << "colormatrix2"; } else { - c1in << "SourceGraphic"; + content << "SourceGraphic"; } _filter = g_strdup_printf( "<filter xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" style=\"color-interpolation-filters:sRGB;\" inkscape:label=\"Cross-smooth\">\n" - "<feGaussianBlur stdDeviation=\"%s\" result=\"blur\" />\n" - "<feComposite in=\"%s\" in2=\"blur\" operator=\"atop\" result=\"composite1\" />\n" - "<feComposite in2=\"composite1\" operator=\"in\" result=\"composite2\" />\n" - "<feComposite in2=\"composite2\" operator=\"in\" result=\"composite3\" />\n" - "<feColorMatrix values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -10 \" result=\"colormatrix\" />\n" - "</filter>\n", blur.str().c_str(), c1in.str().c_str()); + "<feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"%s\" result=\"blur1\" />\n" + "<feComposite in=\"blur1\" in2=\"blur1\" operator=\"%s\" result=\"composite1\" />\n" + "<feComposite in=\"composite1\" in2=\"composite1\" k2=\"%s\" operator=\"arithmetic\" result=\"composite2\" />\n" + "<feColorMatrix in=\"composite2\" values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 %s %s \" result=\"colormatrix1\" />\n" + "<feGaussianBlur stdDeviation=\"%s\" result=\"blur2\" />\n" + "<feColorMatrix in=\"blur2\" values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 5 -1 \" result=\"colormatrix2\" />\n" + "<feBlend in=\"%s\" in2=\"colormatrix2\" stdDeviation=\"17\" mode=\"normal\" result=\"blend\" />\n" + "<feComposite in=\"blend\" in2=\"colormatrix2\" operator=\"in\" result=\"composite3\" />\n" + "</filter>\n", width.str().c_str(), type.str().c_str(), level.str().c_str(), + dilat.str().c_str(), erosion.str().c_str(), antialias.str().c_str(), + content.str().c_str()); return _filter; -}; /* Crosssmooth filter */ +}; /* Cross-smooth filter */ /** \brief Custom predefined Outline filter. diff --git a/src/extension/internal/filter/transparency.h b/src/extension/internal/filter/transparency.h index 1397b726d..add50b169 100644 --- a/src/extension/internal/filter/transparency.h +++ b/src/extension/internal/filter/transparency.h @@ -129,10 +129,10 @@ public: "<inkscape-extension xmlns=\"" INKSCAPE_EXTENSION_URI "\">\n" "<name>" N_("Channel Transparency") "</name>\n" "<id>org.inkscape.effect.filter.ChannelTransparency</id>\n" - "<param name=\"red\" gui-text=\"" N_("Red:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.00\" max=\"10.00\">-1</param>\n" - "<param name=\"green\" gui-text=\"" N_("Green:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.00\" max=\"10.00\">0.5</param>\n" - "<param name=\"blue\" gui-text=\"" N_("Blue:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.00\" max=\"10.00\">0.5</param>\n" - "<param name=\"alpha\" gui-text=\"" N_("Alpha:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.\" max=\"1.\">1</param>\n" + "<param name=\"red\" gui-text=\"" N_("Red:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.\" max=\"10.\">-1</param>\n" + "<param name=\"green\" gui-text=\"" N_("Green:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.\" max=\"10.\">0.5</param>\n" + "<param name=\"blue\" gui-text=\"" N_("Blue:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.\" max=\"10.\">0.5</param>\n" + "<param name=\"alpha\" gui-text=\"" N_("Alpha:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.\" max=\"10.\">1</param>\n" "<param name=\"invert\" gui-text=\"" N_("Inverted") "\" type=\"boolean\">false</param>\n" "<effect>\n" "<object-type>all</object-type>\n" diff --git a/src/ui/widget/filter-effect-chooser.cpp b/src/ui/widget/filter-effect-chooser.cpp index 37202c8b4..52ce0b5bc 100644 --- a/src/ui/widget/filter-effect-chooser.cpp +++ b/src/ui/widget/filter-effect-chooser.cpp @@ -25,7 +25,7 @@ SimpleFilterModifier::SimpleFilterModifier(int flags) : _lb_blend(_("Blend mode:")), _lb_blur(_("_Blur:"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, true), _blend(BlendModeConverter, SP_ATTR_INVALID, false), - _blur(0, 0, 100, 1, 0.01, 1) + _blur(0, 0, 100, 1, 0.01, 2) { _flags = flags; |
