summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNicholas Bishop <nicholasbishop@gmail.com>2007-07-28 01:55:25 +0000
committernicholasbishop <nicholasbishop@users.sourceforge.net>2007-07-28 01:55:25 +0000
commit7d725c199fd4f45b5333cc6eb464925e08dee58d (patch)
tree8076e15c2f54ffa735237e319af5805748b6b945 /src
parentFilter effects dialog: (diff)
downloadinkscape-7d725c199fd4f45b5333cc6eb464925e08dee58d.tar.gz
inkscape-7d725c199fd4f45b5333cc6eb464925e08dee58d.zip
Filter effects dialog:
* Limited the upper bounds of the feConvolveMatrix attributes targetX and targetY so that they match the value of Order. (bzr r3323)
Diffstat (limited to 'src')
-rw-r--r--src/ui/dialog/filter-effects-dialog.cpp51
-rw-r--r--src/ui/dialog/filter-effects-dialog.h7
2 files changed, 33 insertions, 25 deletions
diff --git a/src/ui/dialog/filter-effects-dialog.cpp b/src/ui/dialog/filter-effects-dialog.cpp
index 19e6a9d3d..6a634449f 100644
--- a/src/ui/dialog/filter-effects-dialog.cpp
+++ b/src/ui/dialog/filter-effects-dialog.cpp
@@ -89,9 +89,18 @@ public:
return _signal_changed;
}
- void update_direct(FilterEffectsDialog* d)
+ void update(SPFeConvolveMatrix* conv)
{
- update(SP_FECONVOLVEMATRIX(d->_primitive_list.get_selected()));
+ if(conv) {
+ int cols, rows;
+
+ cols = (int)conv->order.getNumber();
+ if(cols > 5)
+ cols = 5;
+ rows = conv->order.optNumber_set ? (int)conv->order.getOptNumber() : cols;
+
+ update(conv, cols, rows);
+ }
}
private:
class ConvolveMatrixColumns : public Gtk::TreeModel::ColumnRecord
@@ -106,20 +115,6 @@ private:
std::vector<Gtk::TreeModelColumn<double> > cols;
};
- void update(SPFeConvolveMatrix* conv)
- {
- if(conv) {
- int cols, rows;
-
- cols = (int)conv->order.getNumber();
- if(cols > 5)
- cols = 5;
- rows = conv->order.optNumber_set ? (int)conv->order.getOptNumber() : cols;
-
- update(conv, cols, rows);
- }
- }
-
void update(SPFeConvolveMatrix* conv, const int rows, const int cols)
{
_model->clear();
@@ -1176,17 +1171,16 @@ void FilterEffectsDialog::init_settings_widgets()
_k4 = _settings->add(SP_ATTR_K4, _("K4"), -10, 10, 1, 0.01, 1);
_settings->type(NR_FILTER_CONVOLVEMATRIX);
- DualSpinSlider* order = _settings->add(SP_ATTR_ORDER, _("Size"), "", 1, 5, 1, 1, 0);
- order->remove_scale();
+ _convolve_order = _settings->add(SP_ATTR_ORDER, _("Size"), "", 1, 5, 1, 1, 0);
+ _convolve_order->remove_scale();
_settings->combine();
- SpinSlider* tx = _settings->add(SP_ATTR_TARGETX, _("Target"), 1, 5, 1, 1, 0);
- tx->remove_scale();
- SpinSlider* ty = _settings->add(SP_ATTR_TARGETY, "", 1, 5, 1, 1, 0);
- ty->remove_scale();
+ _convolve_tx = _settings->add(SP_ATTR_TARGETX, _("Target"), 0, 4, 1, 1, 0);
+ _convolve_tx->remove_scale();
+ _convolve_ty = _settings->add(SP_ATTR_TARGETY, "", 0, 4, 1, 1, 0);
+ _convolve_ty->remove_scale();
_settings->combine();
- ConvolveMatrix* convmat = _settings->add(SP_ATTR_KERNELMATRIX, _("Kernel"));
- order->signal_value_changed().connect(
- sigc::bind(sigc::mem_fun(*convmat, &ConvolveMatrix::update_direct), this));
+ _convolve_matrix = _settings->add(SP_ATTR_KERNELMATRIX, _("Kernel"));
+ _convolve_order->signal_value_changed().connect(sigc::mem_fun(*this, &FilterEffectsDialog::convolve_order_changed));
_settings->add(SP_ATTR_DIVISOR, _("Divisor"), 0.01, 10, 1, 0.01, 1);
_settings->add(SP_ATTR_BIAS, _("Bias"), -10, 10, 1, 0.01, 1);
@@ -1258,6 +1252,13 @@ void FilterEffectsDialog::duplicate_primitive()
}
}
+void FilterEffectsDialog::convolve_order_changed()
+{
+ _convolve_matrix->update(SP_FECONVOLVEMATRIX(_primitive_list.get_selected()));
+ _convolve_tx->get_adjustment().set_upper(_convolve_order->get_spinslider1().get_value());
+ _convolve_ty->get_adjustment().set_upper(_convolve_order->get_spinslider2().get_value());
+}
+
void FilterEffectsDialog::set_attr_color(const SPAttributeEnum attr, const Gtk::ColorButton* input)
{
if(input->is_sensitive()) {
diff --git a/src/ui/dialog/filter-effects-dialog.h b/src/ui/dialog/filter-effects-dialog.h
index 51c1cc5fc..9e9a02f47 100644
--- a/src/ui/dialog/filter-effects-dialog.h
+++ b/src/ui/dialog/filter-effects-dialog.h
@@ -173,6 +173,7 @@ private:
void add_primitive();
void remove_primitive();
void duplicate_primitive();
+ void convolve_order_changed();
void set_attr_color(const SPAttributeEnum attr, const Gtk::ColorButton*);
void set_attr_direct(const SPAttributeEnum attr, const AttrWidget*);
@@ -198,6 +199,12 @@ private:
class ConvolveMatrix;
Settings* _settings;
+ // Convolve Matrix
+ ConvolveMatrix* _convolve_matrix;
+ DualSpinSlider* _convolve_order;
+ SpinSlider* _convolve_tx;
+ SpinSlider* _convolve_ty;
+
// For controlling setting sensitivity
Gtk::Widget* _k1, *_k2, *_k3, *_k4;