diff options
| author | Nicolas Dufour <nicoduf@yahoo.fr> | 2011-08-11 16:47:03 +0000 |
|---|---|---|
| committer | JazzyNico <nicoduf@yahoo.fr> | 2011-08-11 16:47:03 +0000 |
| commit | f8ec6beee66399feae2bd94d6f212aaeb86d1a50 (patch) | |
| tree | 36a109cc92af3fa2d6096bd4ba4b47b531b36a43 /src | |
| parent | Filters. Forgotten textures file... (diff) | |
| download | inkscape-f8ec6beee66399feae2bd94d6f212aaeb86d1a50.tar.gz inkscape-f8ec6beee66399feae2bd94d6f212aaeb86d1a50.zip | |
Filters. New Point engraving and Nudge custom predefined filters.
Translations. Translation list and template files update.
(bzr r10536)
Diffstat (limited to 'src')
| -rw-r--r-- | src/extension/internal/filter/color.h | 146 | ||||
| -rw-r--r-- | src/extension/internal/filter/distort.h | 37 | ||||
| -rwxr-xr-x | src/extension/internal/filter/filter-all.cpp | 3 | ||||
| -rw-r--r-- | src/extension/internal/filter/paint.h | 155 | ||||
| -rw-r--r-- | src/extension/internal/filter/textures.h | 6 |
5 files changed, 325 insertions, 22 deletions
diff --git a/src/extension/internal/filter/color.h b/src/extension/internal/filter/color.h index fb6ea0ab9..e9aea4ed2 100644 --- a/src/extension/internal/filter/color.h +++ b/src/extension/internal/filter/color.h @@ -17,6 +17,7 @@ * Greyscale * Invert * Lightness + * Nudge * Quadritone * Solarize * Tritone @@ -65,7 +66,7 @@ public: Inkscape::Extension::build_from_mem( "<inkscape-extension xmlns=\"" INKSCAPE_EXTENSION_URI "\">\n" "<name>" N_("Brilliance") "</name>\n" - "<id>org.inkscape.effect.filter.Brightness</id>\n" + "<id>org.inkscape.effect.filter.Brilliance</id>\n" "<param name=\"brightness\" gui-text=\"" N_("Brightness:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"1\" max=\"10.00\">2</param>\n" "<param name=\"sat\" gui-text=\"" N_("Over-saturation:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.0\" max=\"10.00\">0.5</param>\n" "<param name=\"lightness\" gui-text=\"" N_("Lightness:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"-10.00\" max=\"10.00\">0</param>\n" @@ -917,6 +918,149 @@ Lightness::get_filter_text (Inkscape::Extension::Extension * ext) }; /* Lightness filter */ /** + \brief Custom predefined Nudge filter. + + Nudge separately RGB channels and blend them to different types of backgrounds + + Filter's parameters: + Offsets + * Red + * x (-100.->100., default -7) -> offset1 (dx) + * y (-100.->100., default 5) -> offset1 (dy) + * Green + * x (-100.->100., default 0) -> offset2 (dx) + * y (-100.->100., default 10) -> offset2 (dy) + * Blue + * x (-100.->100., default 3) -> offset3 (dx) + * y (-100.->100., default -9) -> offset3 (dy) + Color + * Background color (guint, default -1)-> flood (flood-color, flood-opacity) + * Blend type (enum [normal,multiply and screen], default screen) -> blend1,2,3 (mode) + * Blend source (enum, default color) -> + * color: blend1 (in="flood") + * image: blend1 (in="SourceGraphic") + * background: blend1 (in="BackgroundImage") + * Composite (enum [in,over], default over) -> composite (operator) + +*/ +class Nudge : public Inkscape::Extension::Internal::Filter::Filter { +protected: + virtual gchar const * get_filter_text (Inkscape::Extension::Extension * ext); + +public: + Nudge ( ) : Filter() { }; + virtual ~Nudge ( ) { if (_filter != NULL) g_free((void *)_filter); return; } + + static void init (void) { + Inkscape::Extension::build_from_mem( + "<inkscape-extension xmlns=\"" INKSCAPE_EXTENSION_URI "\">\n" + "<name>" N_("Nudge") "</name>\n" + "<id>org.inkscape.effect.filter.Nudge</id>\n" + "<param name=\"tab\" type=\"notebook\">\n" + "<page name=\"offsettab\" _gui-text=\"Offset\">\n" + "<_param name=\"redOffset\" type=\"description\" appearance=\"header\">" N_("Red offset") "</_param>\n" + "<param name=\"rx\" gui-text=\"" N_("X:") "\" type=\"float\" indent=\"1\" appearance=\"full\" precision=\"2\" min=\"-100.\" max=\"100.\">-7</param>\n" + "<param name=\"ry\" gui-text=\"" N_("Y:") "\" type=\"float\" indent=\"1\" appearance=\"full\" precision=\"2\" min=\"-100.\" max=\"100.\">5</param>\n" + "<_param name=\"greenOffset\" type=\"description\" appearance=\"header\">" N_("Green offset") "</_param>\n" + "<param name=\"gx\" gui-text=\"" N_("X:") "\" type=\"float\" indent=\"1\" appearance=\"full\" precision=\"2\" min=\"-100.\" max=\"100.\">0</param>\n" + "<param name=\"gy\" gui-text=\"" N_("Y:") "\" type=\"float\" indent=\"1\" appearance=\"full\" precision=\"2\" min=\"-100.\" max=\"100.\">10</param>\n" + "<_param name=\"redOffset\" type=\"description\" appearance=\"header\">" N_("Blue offset") "</_param>\n" + "<param name=\"bx\" gui-text=\"" N_("X:") "\" type=\"float\" indent=\"1\" appearance=\"full\" precision=\"2\" min=\"-100.\" max=\"100.\">3</param>\n" + "<param name=\"by\" gui-text=\"" N_("Y:") "\" type=\"float\" indent=\"1\" appearance=\"full\" precision=\"2\" min=\"-100.\" max=\"100.\">-9</param>\n" + "</page>\n" + "<page name=\"coltab\" _gui-text=\"Color\">\n" + "<param name=\"color\" gui-text=\"" N_("Background color") "\" type=\"color\">255</param>\n" + "<param name=\"blend\" gui-text=\"" N_("Blend type:") "\" type=\"enum\">\n" + "<_item value=\"screen\">" N_("Screen") "</_item>\n" + "<_item value=\"multiply\">" N_("Multiply") "</_item>\n" + "<_item value=\"normal\">" N_("Normal") "</_item>\n" + "</param>\n" + "<param name=\"source\" gui-text=\"" N_("Blend source:") "\" type=\"enum\">\n" + "<_item value=\"flood\">" N_("Color") "</_item>\n" + "<_item value=\"SourceGraphic\">" N_("Image") "</_item>\n" + "<_item value=\"BackgroundImage\">" N_("Background") "</_item>\n" + "</param>\n" + "<param name=\"composite\" gui-text=\"" N_("Composite:") "\" type=\"enum\">\n" + "<_item value=\"over\">" N_("Over") "</_item>\n" + "<_item value=\"in\">" N_("In") "</_item>\n" + "</param>\n" + "</page>\n" + "</param>\n" + "<effect>\n" + "<object-type>all</object-type>\n" + "<effects-menu>\n" + "<submenu name=\"" N_("Filters") "\">\n" + "<submenu name=\"" N_("Color") "\"/>\n" + "</submenu>\n" + "</effects-menu>\n" + "<menu-tip>" N_("Nudge separately RGB channels and blend them to different types of backgrounds") "</menu-tip>\n" + "</effect>\n" + "</inkscape-extension>\n", new Nudge()); + }; +}; + +gchar const * +Nudge::get_filter_text (Inkscape::Extension::Extension * ext) +{ + if (_filter != NULL) g_free((void *)_filter); + + std::ostringstream rx; + std::ostringstream ry; + std::ostringstream gx; + std::ostringstream gy; + std::ostringstream bx; + std::ostringstream by; + + std::ostringstream blend; + std::ostringstream source; + std::ostringstream composite; + + std::ostringstream a; + std::ostringstream r; + std::ostringstream g; + std::ostringstream b; + + rx << ext->get_param_float("rx"); + ry << ext->get_param_float("ry"); + gx << ext->get_param_float("gx"); + gy << ext->get_param_float("gy"); + bx << ext->get_param_float("bx"); + by << ext->get_param_float("by"); + + blend << ext->get_param_enum("blend"); + source << ext->get_param_enum("source"); + composite << ext->get_param_enum("composite"); + + guint32 color = ext->get_param_color("color"); + r << ((color >> 24) & 0xff); + g << ((color >> 16) & 0xff); + b << ((color >> 8) & 0xff); + a << (color & 0xff) / 255.0F; + + _filter = g_strdup_printf( + "<filter xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" color-interpolation-filters=\"sRGB\" inkscape:label=\"Nudge\">\n" + "<feFlood flood-opacity=\"%s\" flood-color=\"rgb(%s,%s,%s)\" result=\"flood\" />\n" + "<feColorMatrix in=\"SourceGraphic\" values=\"0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 \" result=\"colormatrix1\" />\n" + "<feOffset dy=\"%s\" dx=\"%s\" result=\"offset1\" />\n" + "<feBlend in2=\"%s\" mode=\"%s\" blend=\"normal\" result=\"blend1\" />\n" + "<feColorMatrix in=\"SourceGraphic\" values=\"0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 \" result=\"colormatrix2\" />\n" + "<feOffset dy=\"%s\" dx=\"%s\" result=\"offset2\" />\n" + "<feBlend in2=\"blend1\" mode=\"%s\" blend=\"normal\" result=\"blend2\" />\n" + "<feOffset dy=\"%s\" dx=\"%s\" result=\"offset3\" />\n" + "<feColorMatrix in=\"SourceGraphic\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 \" result=\"colormatrix3\" />\n" + "<feBlend in2=\"offset3\" mode=\"%s\" blend=\"normal\" result=\"blend3\" />\n" + "<feComposite in2=\"SourceGraphic\" operator=\"%s\" />\n" + "</filter>\n", a.str().c_str(), r.str().c_str(), g.str().c_str(), b.str().c_str(), + rx.str().c_str(), ry.str().c_str(), source.str().c_str(), blend.str().c_str(), + gx.str().c_str(), gy.str().c_str(), blend.str().c_str(), + bx.str().c_str(), by.str().c_str(), blend.str().c_str(), + composite.str().c_str()); + + return _filter; + +}; /* Nudge filter */ + +/** \brief Custom predefined Quadritone filter. Replace hue by two colors. diff --git a/src/extension/internal/filter/distort.h b/src/extension/internal/filter/distort.h index 3972029ae..56855abea 100644 --- a/src/extension/internal/filter/distort.h +++ b/src/extension/internal/filter/distort.h @@ -44,13 +44,13 @@ namespace Filter { Wide = composite4 (operator="over") Narrow = composite4 (operator="in") No fill = composite4 (operator="xor") - * Roughness (group) * Turbulence type (enum, default fractalNoise else turbulence) -> turbulence (type) - * Horizontal frequency (0.001->1., default 0.05) -> turbulence (baseFrequency [/1000]) - * Vertical frequency (0.001->1., default 0.05) -> turbulence (baseFrequency [/1000]) + * Horizontal frequency (0.001->1., default 0.05) -> turbulence (baseFrequency [/100]) + * Vertical frequency (0.001->1., default 0.05) -> turbulence (baseFrequency [/100]) * Complexity (1->5, default 3) -> turbulence (numOctaves) * Variation (0->100, default 0) -> turbulence (seed) + * Intensity (0.0->100., default 30) -> displacement (scale) */ class FeltFeather : public Inkscape::Extension::Internal::Filter::Filter { @@ -84,10 +84,11 @@ public: "<_item value=\"fractalNoise\">Fractal noise</_item>\n" "<_item value=\"turbulence\">Turbulence</_item>\n" "</param>\n" - "<param name=\"hfreq\" gui-text=\"" N_("Horizontal frequency:") "\" type=\"float\" appearance=\"full\" precision=\"3\" min=\"0.001\" max=\"1.\">0.05</param>\n" - "<param name=\"vfreq\" gui-text=\"" N_("Vertical frequency:") "\" type=\"float\" appearance=\"full\" precision=\"3\" min=\"0.001\" max=\"1.\">0.05</param>\n" + "<param name=\"hfreq\" gui-text=\"" N_("Horizontal frequency:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.01\" max=\"100.\">5</param>\n" + "<param name=\"vfreq\" gui-text=\"" N_("Vertical frequency:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.01\" max=\"100.\">5</param>\n" "<param name=\"complexity\" gui-text=\"" N_("Complexity:") "\" type=\"int\" appearance=\"full\" min=\"1\" max=\"5\">3</param>\n" "<param name=\"variation\" gui-text=\"" N_("Variation:") "\" type=\"int\" appearance=\"full\" min=\"1\" max=\"100\">0</param>\n" + "<param name=\"intensity\" gui-text=\"" N_("Intensity:") "\" type=\"float\" appearance=\"full\" min=\"0.0\" max=\"100\">30</param>\n" "<effect>\n" "<object-type>all</object-type>\n" "<effects-menu>\n" @@ -118,7 +119,8 @@ FeltFeather::get_filter_text (Inkscape::Extension::Extension * ext) std::ostringstream vfreq; std::ostringstream complexity; std::ostringstream variation; - + std::ostringstream intensity; + std::ostringstream map; std::ostringstream stroke; @@ -128,11 +130,12 @@ FeltFeather::get_filter_text (Inkscape::Extension::Extension * ext) erosion << -ext->get_param_float("erosion"); turbulence << ext->get_param_enum("turbulence"); - hfreq << ext->get_param_float("hfreq"); - vfreq << ext->get_param_float("vfreq"); + hfreq << ext->get_param_float("hfreq") / 100; + vfreq << ext->get_param_float("vfreq") / 100; complexity << ext->get_param_int("complexity"); variation << ext->get_param_int("variation"); - + intensity << ext->get_param_float("intensity"); + stroke << ext->get_param_enum("stroke"); const gchar *maptype = ext->get_param_enum("type"); @@ -149,12 +152,12 @@ FeltFeather::get_filter_text (Inkscape::Extension::Extension * ext) "<feComposite in2=\"composite1\" operator=\"in\" result=\"composite2\" />\n" "<feComposite in2=\"composite2\" operator=\"in\" result=\"composite3\" />\n" "<feTurbulence type=\"%s\" numOctaves=\"%s\" seed=\"%s\" baseFrequency=\"%s %s\" result=\"turbulence\" />\n" - "<feDisplacementMap in=\"%s\" in2=\"turbulence\" xChannelSelector=\"R\" scale=\"30\" yChannelSelector=\"G\" result=\"map\" />\n" + "<feDisplacementMap in=\"%s\" in2=\"turbulence\" xChannelSelector=\"R\" scale=\"%s\" yChannelSelector=\"G\" result=\"map\" />\n" "<feColorMatrix values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 %s %s \" result=\"colormatrix\" />\n" "<feComposite in=\"composite3\" in2=\"colormatrix\" operator=\"%s\" result=\"composite4\" />\n" "</filter>\n", hblur.str().c_str(), vblur.str().c_str(), turbulence.str().c_str(), complexity.str().c_str(), variation.str().c_str(), hfreq.str().c_str(), vfreq.str().c_str(), - map.str().c_str(), dilat.str().c_str(), erosion.str().c_str(), stroke.str().c_str() ); + map.str().c_str(), intensity.str().c_str(), dilat.str().c_str(), erosion.str().c_str(), stroke.str().c_str() ); return _filter; }; /* Felt feather filter */ @@ -166,8 +169,8 @@ FeltFeather::get_filter_text (Inkscape::Extension::Extension * ext) Filter's parameters: * Turbulence type (enum, default fractalNoise else turbulence) -> turbulence (type) - * Horizontal frequency (0.01->10., default 0.013) -> turbulence (baseFrequency) - * Vertical frequency (0.01->10., default 0.013) -> turbulence (baseFrequency) + * Horizontal frequency (0.001->10., default 0.013) -> turbulence (baseFrequency [/100]) + * Vertical frequency (0.001->10., default 0.013) -> turbulence (baseFrequency [/100]) * Complexity (1->5, default 5) -> turbulence (numOctaves) * Variation (1->360, default 1) -> turbulence (seed) * Intensity (0.0->50., default 6.6) -> displacement (scale) @@ -190,8 +193,8 @@ public: "<_item value=\"fractalNoise\">Fractal noise</_item>\n" "<_item value=\"turbulence\">Turbulence</_item>\n" "</param>\n" - "<param name=\"hfreq\" gui-text=\"" N_("Horizontal frequency:") "\" type=\"float\" appearance=\"full\" precision=\"3\" min=\"0.001\" max=\"10.00\">0.013</param>\n" - "<param name=\"vfreq\" gui-text=\"" N_("Vertical frequency:") "\" type=\"float\" appearance=\"full\" precision=\"3\" min=\"0.001\" max=\"10.00\">0.013</param>\n" + "<param name=\"hfreq\" gui-text=\"" N_("Horizontal frequency:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.1\" max=\"1000.00\">1.3</param>\n" + "<param name=\"vfreq\" gui-text=\"" N_("Vertical frequency:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.1\" max=\"1000.00\">1.3</param>\n" "<param name=\"complexity\" gui-text=\"" N_("Complexity:") "\" type=\"int\" appearance=\"full\" min=\"1\" max=\"5\">5</param>\n" "<param name=\"variation\" gui-text=\"" N_("Variation:") "\" type=\"int\" appearance=\"full\" min=\"1\" max=\"360\">0</param>\n" "<param name=\"intensity\" gui-text=\"" N_("Intensity:") "\" type=\"float\" appearance=\"full\" min=\"0.0\" max=\"50\">6.6</param>\n" @@ -222,8 +225,8 @@ Roughen::get_filter_text (Inkscape::Extension::Extension * ext) std::ostringstream intensity; type << ext->get_param_enum("type"); - hfreq << ext->get_param_float("hfreq"); - vfreq << ext->get_param_float("vfreq"); + hfreq << ext->get_param_float("hfreq") / 100; + vfreq << ext->get_param_float("vfreq") / 100; complexity << ext->get_param_int("complexity"); variation << ext->get_param_int("variation"); intensity << ext->get_param_float("intensity"); diff --git a/src/extension/internal/filter/filter-all.cpp b/src/extension/internal/filter/filter-all.cpp index 30376d231..f288c27b8 100755 --- a/src/extension/internal/filter/filter-all.cpp +++ b/src/extension/internal/filter/filter-all.cpp @@ -58,6 +58,7 @@ Filter::filters_all (void ) Greyscale::init(); Invert::init(); Lightness::init(); + Nudge::init(); Quadritone::init(); Solarize::init(); Tritone::init(); @@ -75,7 +76,7 @@ Filter::filters_all (void ) Drawing::init(); Electrize::init(); NeonDraw::init(); - //PointEngraving::init(); + PointEngraving::init(); Posterize::init(); PosterizeBasic::init(); diff --git a/src/extension/internal/filter/paint.h b/src/extension/internal/filter/paint.h index a3077d1c4..7c3bbfcd3 100644 --- a/src/extension/internal/filter/paint.h +++ b/src/extension/internal/filter/paint.h @@ -13,6 +13,7 @@ * Drawing * Electrize * Neon draw + * Point engraving * Posterize * Posterize basic * @@ -659,6 +660,160 @@ NeonDraw::get_filter_text (Inkscape::Extension::Extension * ext) }; /* NeonDraw filter */ /** + \brief Custom predefined Point engraving filter. + + Convert image to a transparent point engraving + + Filter's parameters: + + * Turbulence type (enum, default fractalNoise else turbulence) -> turbulence (type) + * Horizontal frequency (0.001->1., default 1) -> turbulence (baseFrequency [/100]) + * Vertical frequency (0.001->1., default 1) -> turbulence (baseFrequency [/100]) + * Complexity (1->5, default 3) -> turbulence (numOctaves) + * Variation (0->1000, default 0) -> turbulence (seed) + * Noise reduction (-1000->-1500, default -1045) -> convolve (kernelMatrix, central value) + * Noise blend (enum, all blend options, default normal) -> blend (mode) + * Lightness (0.->10., default 2.5) -> composite1 (k1) + * Grain lightness (0.->10., default 1.3) -> composite1 (k2) + * Erase (0.00->1., default 0) -> composite1 (k4) + * Blur (0.01->2., default 0.5) -> blur (stdDeviation) + + * Drawing color (guint32, default rgb(73,69,40)) -> flood1 (flood-color, flood-opacity) + + * Background color (guint32, default rgb(255,255,255)) -> flood2 (flood-color, flood-opacity) +*/ + +class PointEngraving : public Inkscape::Extension::Internal::Filter::Filter { +protected: + virtual gchar const * get_filter_text (Inkscape::Extension::Extension * ext); + +public: + PointEngraving ( ) : Filter() { }; + virtual ~PointEngraving ( ) { if (_filter != NULL) g_free((void *)_filter); return; } + + static void init (void) { + Inkscape::Extension::build_from_mem( + "<inkscape-extension xmlns=\"" INKSCAPE_EXTENSION_URI "\">\n" + "<name>" N_("Point Engraving") "</name>\n" + "<id>org.inkscape.effect.filter.PointEngraving</id>\n" + "<param name=\"tab\" type=\"notebook\">\n" + "<page name=\"optionstab\" _gui-text=\"Options\">\n" + "<param name=\"type\" gui-text=\"" N_("Turbulence type:") "\" type=\"enum\">\n" + "<_item value=\"fractalNoise\">Fractal noise</_item>\n" + "<_item value=\"turbulence\">Turbulence</_item>\n" + "</param>\n" + "<param name=\"hfreq\" gui-text=\"" N_("Horizontal frequency:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.1\" max=\"100.00\">100</param>\n" + "<param name=\"vfreq\" gui-text=\"" N_("Vertical frequency:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.1\" max=\"100.00\">100</param>\n" + "<param name=\"complexity\" gui-text=\"" N_("Complexity:") "\" type=\"int\" appearance=\"full\" min=\"1\" max=\"5\">3</param>\n" + "<param name=\"variation\" gui-text=\"" N_("Variation:") "\" type=\"int\" appearance=\"full\" min=\"1\" max=\"100\">0</param>\n" + "<param name=\"reduction\" gui-text=\"" N_("Noise reduction:") "\" type=\"int\" appearance=\"full\" min=\"0\" max=\"500\">45</param>\n" + "<param name=\"blend\" gui-text=\"" N_("Noise blend:") "\" type=\"enum\">\n" + "<_item value=\"normal\">" N_("Normal") "</_item>\n" + "<_item value=\"screen\">" N_("Screen") "</_item>\n" + "<_item value=\"multiply\">" N_("Multiply") "</_item>\n" + "<_item value=\"lighten\">" N_("Lighten") "</_item>\n" + "<_item value=\"darken\">" N_("Darken") "</_item>\n" + "</param>\n" + "<param name=\"lightness\" gui-text=\"" N_("Lightness:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0\" max=\"10\">2.5</param>\n" + "<param name=\"grain\" gui-text=\"" N_("Grain lightness:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0\" max=\"10\">1.3</param>\n" + "<param name=\"erase\" gui-text=\"" N_("Erase:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0\" max=\"1\">0</param>\n" + "<param name=\"blur\" gui-text=\"" N_("Blur:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.01\" max=\"2\">0.5</param>\n" + "</page>\n" + "<page name=\"drawingcolortab\" _gui-text=\"Drawing color\">\n" + "<param name=\"color\" gui-text=\"" N_("Color") "\" type=\"color\">1229269247</param>\n" + "</page>\n" + "<page name=\"bgcolortab\" _gui-text=\"Background color\">\n" + "<param name=\"bgcolor\" gui-text=\"" N_("Color") "\" type=\"color\">255</param>\n" + "</page>\n" + "</param>\n" + "<effect>\n" + "<object-type>all</object-type>\n" + "<effects-menu>\n" + "<submenu name=\"" N_("Filters") "\">\n" + "<submenu name=\"" N_("Image Paint and Draw") "\"/>\n" + "</submenu>\n" + "</effects-menu>\n" + "<menu-tip>" N_("Convert image to a transparent point engraving") "</menu-tip>\n" + "</effect>\n" + "</inkscape-extension>\n", new PointEngraving()); + }; + +}; + +gchar const * +PointEngraving::get_filter_text (Inkscape::Extension::Extension * ext) +{ + if (_filter != NULL) g_free((void *)_filter); + + std::ostringstream type; + std::ostringstream hfreq; + std::ostringstream vfreq; + std::ostringstream complexity; + std::ostringstream variation; + std::ostringstream reduction; + std::ostringstream blend; + std::ostringstream lightness; + std::ostringstream grain; + std::ostringstream erase; + std::ostringstream blur; + std::ostringstream r; + std::ostringstream g; + std::ostringstream b; + std::ostringstream a; + std::ostringstream br; + std::ostringstream bg; + std::ostringstream bb; + std::ostringstream ba; + + type << ext->get_param_enum("type"); + hfreq << ext->get_param_float("hfreq") / 100; + vfreq << ext->get_param_float("vfreq") / 100; + complexity << ext->get_param_int("complexity"); + variation << ext->get_param_int("variation"); + reduction << (-1000 - ext->get_param_int("reduction")); + blend << ext->get_param_enum("blend"); + lightness << ext->get_param_float("lightness"); + grain << ext->get_param_float("grain"); + erase << ext->get_param_float("erase"); + blur << ext->get_param_float("blur"); + + guint32 color = ext->get_param_color("color"); + r << ((color >> 24) & 0xff); + g << ((color >> 16) & 0xff); + b << ((color >> 8) & 0xff); + a << (color & 0xff) / 255.0F; + + guint32 bgcolor = ext->get_param_color("bgcolor"); + br << ((bgcolor >> 24) & 0xff); + bg << ((bgcolor >> 16) & 0xff); + bb << ((bgcolor >> 8) & 0xff); + ba << (bgcolor & 0xff) / 255.0F; + + _filter = g_strdup_printf( + "<filter xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" inkscape:label=\"Point Engraving\" x=\"0\" y=\"0\" width=\"1\" height=\"1\" color-interpolation-filters=\"sRGB\">\n" + "<feConvolveMatrix in=\"SourceGraphic\" kernelMatrix=\"0 250 0 250 %s 250 0 250 0\" order=\"3 3\" result=\"convolve\" />\n" + "<feBlend in=\"convolve\" in2=\"SourceGraphic\" mode=\"%s\" blend=\"normal\" result=\"blend\" />\n" + "<feTurbulence type=\"%s\" baseFrequency=\"%s %s\" numOctaves=\"%s\" seed=\"%s\" result=\"turbulence\" />\n" + "<feColorMatrix in=\"blend\" type=\"luminanceToAlpha\" result=\"colormatrix1\" />\n" + "<feComposite in=\"turbulence\" in2=\"colormatrix1\" k1=\"%s\" k2=\"%s\" k4=\"%s\" operator=\"arithmetic\" result=\"composite1\" />\n" + "<feColorMatrix in=\"composite1\" values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 10 -9 \" result=\"colormatrix2\" />\n" + "<feGaussianBlur stdDeviation=\"%s\" result=\"blur\" />\n" + "<feFlood in=\"blur\" flood-color=\"rgb(%s,%s,%s)\" flood-opacity=\"%s\" result=\"flood1\" />\n" + "<feComposite in=\"flood1\" in2=\"blur\" operator=\"out\" stdDeviation=\"2\" result=\"composite2\" />\n" + "<feFlood in=\"blur\" flood-color=\"rgb(%s,%s,%s)\" flood-opacity=\"%s\" result=\"flood2\" />\n" + "<feComposite in2=\"blur\" operator=\"in\" result=\"composite3\" />\n" + "<feComposite in=\"composite3\" in2=\"composite2\" k3=\"1\" k2=\"1\" operator=\"arithmetic\" result=\"composite4\" />\n" + "<feComposite in2=\"SourceGraphic\" operator=\"in\" result=\"composite5\" />\n" + "</filter>\n", reduction.str().c_str(), blend.str().c_str(), + type.str().c_str(), hfreq.str().c_str(), vfreq.str().c_str(), complexity.str().c_str(), variation.str().c_str(), + lightness.str().c_str(), grain.str().c_str(), erase.str().c_str(), blur.str().c_str(), + r.str().c_str(), g.str().c_str(), b.str().c_str(), a.str().c_str(), + br.str().c_str(), bg.str().c_str(), bb.str().c_str(), ba.str().c_str() ); + + return _filter; +}; /* Point engraving filter */ + +/** \brief Custom predefined Poster paint filter. Poster and painting effects. diff --git a/src/extension/internal/filter/textures.h b/src/extension/internal/filter/textures.h index 17fccfcbc..f0086eccf 100644 --- a/src/extension/internal/filter/textures.h +++ b/src/extension/internal/filter/textures.h @@ -34,7 +34,7 @@ namespace Filter { Filter's parameters: * Turbulence type (enum, default fractalNoise else turbulence) -> turbulence (type) - * Frequency (0.001->1., default 0.04) -> turbulence (baseFrequency) + * Frequency (0.001->1., default 0.04) -> turbulence (baseFrequency [/100]) * Complexity (1->5, default 3) -> turbulence (numOctaves) * Variation (0->100, default 0) -> turbulence (seed) * Horizontal inlay (0.01->30., default 10) -> blur1 (stdDeviation x) @@ -65,7 +65,7 @@ public: "<_item value=\"fractalNoise\">Fractal noise</_item>\n" "<_item value=\"turbulence\">Turbulence</_item>\n" "</param>\n" - "<param name=\"freq\" gui-text=\"" N_("Frequency:") "\" type=\"float\" appearance=\"full\" precision=\"3\" min=\"0.001\" max=\"1.00\">0.04</param>\n" + "<param name=\"freq\" gui-text=\"" N_("Frequency:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.01\" max=\"100.00\">4</param>\n" "<param name=\"complexity\" gui-text=\"" N_("Complexity:") "\" type=\"int\" appearance=\"full\" min=\"1\" max=\"5\">3</param>\n" "<param name=\"variation\" gui-text=\"" N_("Variation:") "\" type=\"int\" appearance=\"full\" min=\"0\" max=\"100\">0</param>\n" "<param name=\"hblur\" gui-text=\"" N_("Horizontal inlay:") "\" type=\"float\" appearance=\"full\" precision=\"2\" min=\"0.01\" max=\"30.00\">10</param>\n" @@ -115,7 +115,7 @@ InkBlot::get_filter_text (Inkscape::Extension::Extension * ext) std::ostringstream custom; type << ext->get_param_enum("type"); - freq << ext->get_param_float("freq"); + freq << ext->get_param_float("freq") / 100; complexity << ext->get_param_int("complexity"); variation << ext->get_param_int("variation"); hblur << ext->get_param_float("hblur"); |
