summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2007-09-30 20:56:15 +0000
committertavmjong <tavmjong@users.sourceforge.net>2007-09-30 20:56:15 +0000
commit638728491d5d5abd16deb20a252676bb235a97bd (patch)
treec19a1b5d622e83bfc7f7f5510c4e765745f5e4c6 /src
parenttypo in Product uninst key (diff)
downloadinkscape-638728491d5d5abd16deb20a252676bb235a97bd.tar.gz
inkscape-638728491d5d5abd16deb20a252676bb235a97bd.zip
Convolve Matrix Filter:
Enable and use preserveAlpha attribute. Increase range for divisor attribute. (bzr r3818)
Diffstat (limited to 'src')
-rw-r--r--src/display/nr-filter-convolve-matrix.cpp3
-rw-r--r--src/sp-feconvolvematrix.cpp1
-rw-r--r--src/ui/dialog/filter-effects-dialog.cpp3
3 files changed, 6 insertions, 1 deletions
diff --git a/src/display/nr-filter-convolve-matrix.cpp b/src/display/nr-filter-convolve-matrix.cpp
index 562f3ffc4..6adf9c9a5 100644
--- a/src/display/nr-filter-convolve-matrix.cpp
+++ b/src/display/nr-filter-convolve-matrix.cpp
@@ -69,6 +69,9 @@ int FilterConvolveMatrix::render(FilterSlot &slot, Matrix const &trans) {
out_data[4*( x + width*y )+1] = CLAMP_D_TO_U8(result_G / divisor + bias);
out_data[4*( x + width*y )+2] = CLAMP_D_TO_U8(result_B / divisor + bias);
out_data[4*( x + width*y )+3] = CLAMP_D_TO_U8(result_A / divisor + bias);
+ if( preserveAlpha ) {
+ out_data[4*( x + width*y )+3] = in_data[4*( x + width*y )+3];
+ }
}
}
diff --git a/src/sp-feconvolvematrix.cpp b/src/sp-feconvolvematrix.cpp
index 5a3edfc50..84a1a8682 100644
--- a/src/sp-feconvolvematrix.cpp
+++ b/src/sp-feconvolvematrix.cpp
@@ -321,6 +321,7 @@ static void sp_feConvolveMatrix_build_renderer(SPFilterPrimitive *primitive, NR:
nr_convolve->set_kernelMatrix(sp_convolve->kernelMatrix);
nr_convolve->set_divisor(sp_convolve->divisor);
nr_convolve->set_bias(sp_convolve->bias);
+ nr_convolve->set_preserveAlpha(sp_convolve->preserveAlpha);
}
/*
diff --git a/src/ui/dialog/filter-effects-dialog.cpp b/src/ui/dialog/filter-effects-dialog.cpp
index dc6fc06bb..fa64054b0 100644
--- a/src/ui/dialog/filter-effects-dialog.cpp
+++ b/src/ui/dialog/filter-effects-dialog.cpp
@@ -1967,9 +1967,10 @@ void FilterEffectsDialog::init_settings_widgets()
_convolve_target = _settings->add_multispinbutton(SP_ATTR_TARGETX, SP_ATTR_TARGETY, _("Target"), 0, 4, 1, 1, 0);
_convolve_matrix = _settings->add_matrix(SP_ATTR_KERNELMATRIX, _("Kernel"));
_convolve_order->signal_attr_changed().connect(sigc::mem_fun(*this, &FilterEffectsDialog::convolve_order_changed));
- _settings->add_spinslider(SP_ATTR_DIVISOR, _("Divisor"), 0.01, 10, 1, 0.01, 1);
+ _settings->add_spinslider(SP_ATTR_DIVISOR, _("Divisor"), 0.01, 1000, 1, 0.01, 1);
_settings->add_spinslider(SP_ATTR_BIAS, _("Bias"), -10, 10, 1, 0.01, 1);
_settings->add_combo(SP_ATTR_EDGEMODE, _("Edge Mode"), ConvolveMatrixEdgeModeConverter);
+ _settings->add_checkbutton(SP_ATTR_PRESERVEALPHA, _("Preserve Alpha"), "true", "false");
_settings->type(NR_FILTER_DIFFUSELIGHTING);
_settings->add_color(SP_PROP_LIGHTING_COLOR, _("Diffuse Color"));