summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNicolas Dufour <nicoduf@yahoo.fr>2011-08-11 16:47:03 +0000
committerJazzyNico <nicoduf@yahoo.fr>2011-08-11 16:47:03 +0000
commitf8ec6beee66399feae2bd94d6f212aaeb86d1a50 (patch)
tree36a109cc92af3fa2d6096bd4ba4b47b531b36a43 /src
parentFilters. Forgotten textures file... (diff)
downloadinkscape-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.h146
-rw-r--r--src/extension/internal/filter/distort.h37
-rwxr-xr-xsrc/extension/internal/filter/filter-all.cpp3
-rw-r--r--src/extension/internal/filter/paint.h155
-rw-r--r--src/extension/internal/filter/textures.h6
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");