summaryrefslogtreecommitdiffstats
path: root/src/live_effects
diff options
context:
space:
mode:
authorJabiertxof <jtx@jtx>2017-01-21 23:01:21 +0000
committerJabiertxof <jtx@jtx>2017-01-21 23:01:21 +0000
commita942f902eeaa4e0d7a2bfe6f9c65b3aed6e38f8e (patch)
treeef4173ba35eb0ec66fe4b8c07e00f57998067e04 /src/live_effects
parentFix inverse clone (diff)
parent[Bug #1574561] Italian translation update. (diff)
downloadinkscape-a942f902eeaa4e0d7a2bfe6f9c65b3aed6e38f8e.tar.gz
inkscape-a942f902eeaa4e0d7a2bfe6f9c65b3aed6e38f8e.zip
Relay LPE on widgets and optionaly write on text inputs
(bzr r15356.1.13)
Diffstat (limited to 'src/live_effects')
-rw-r--r--src/live_effects/lpe-clone-original.cpp79
-rw-r--r--src/live_effects/lpe-clone-original.h11
2 files changed, 67 insertions, 23 deletions
diff --git a/src/live_effects/lpe-clone-original.cpp b/src/live_effects/lpe-clone-original.cpp
index 33abd685a..da93a5093 100644
--- a/src/live_effects/lpe-clone-original.cpp
+++ b/src/live_effects/lpe-clone-original.cpp
@@ -25,9 +25,16 @@ LPECloneOriginal::LPECloneOriginal(LivePathEffectObject *lpeobject) :
scale(_("Scale %"), _("Scale item %"), "scale", &wr, this, 100.0),
preserve_position(_("Preserve position"), _("Preserve position"), "preserve_position", &wr, this, false),
inverse(_("Inverse clone"), _("Use LPE item as origin"), "inverse", &wr, this, false),
- use_center(_("Relative center of element"), _("Relative center of element"), "use_center", &wr, this, true),
+ d(_("Clone shape -d-"), _("Clone shape -d-"), "d", &wr, this, true),
+ transform(_("Clone transforms"), _("Clone transforms"), "d", &wr, this, true),
+ fill(_("Clone fill"), _("Clone fill"), "fill", &wr, this, false),
+ stroke(_("Clone stroke"), _("Clone stroke"), "stroke", &wr, this, false),
+ paintorder(_("Clone paint order"), _("Clone paint order"), "paintorder", &wr, this, false),
+ opacity(_("Clone opacity"), _("Clone opacity"), "opacity", &wr, this, false),
+ filter(_("Clone filter"), _("Clone filter"), "filter", &wr, this, false),
attributes("Attributes linked", "Attributes linked", "attributes", &wr, this,""),
- style_attributes("Style attributes linked", "Style attributes linked", "style_attributes", &wr, this,"")
+ style_attributes("Style attributes linked", "Style attributes linked", "style_attributes", &wr, this,""),
+ expanded(false)
{
registerParameter(&linked_path);
registerParameter(&linked_item);
@@ -36,7 +43,13 @@ LPECloneOriginal::LPECloneOriginal(LivePathEffectObject *lpeobject) :
registerParameter(&style_attributes);
registerParameter(&preserve_position);
registerParameter(&inverse);
- registerParameter(&use_center);
+ registerParameter(&d);
+ registerParameter(&transform);
+ registerParameter(&fill);
+ registerParameter(&stroke);
+ registerParameter(&paintorder);
+ registerParameter(&opacity);
+ registerParameter(&filter);
scale.param_set_range(0.01, 999999.0);
scale.param_set_increments(1, 1);
scale.param_set_digits(2);
@@ -148,10 +161,6 @@ LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, bool live, co
if (dest_bbox && orig_bbox && root) {
Geom::Point orig_point = (*orig_bbox).corner(0);
Geom::Point dest_point = (*dest_bbox).corner(0);
- if (use_center) {
- orig_point = (*orig_bbox).midpoint();
- dest_point = (*dest_bbox).midpoint();
- }
if (scale != 100.0) {
double scale_affine = scale/100.0;
Geom::Scale scale = Geom::Scale(scale_affine);
@@ -228,10 +237,36 @@ LPECloneOriginal::doBeforeEffect (SPLPEItem const* lpeitem){
}
preserve_position_changed = preserve_position;
}
+ Glib::ustring attr = Glib::ustring(attributes.param_getSVGValue());
+ if (d) {
+ attr.append("d,");
+ }
+ if (transform) {
+ attr.append("transform,");
+ }
+ Glib::ustring style_attr = Glib::ustring(style_attributes.param_getSVGValue());
+ if (fill) {
+ style_attr.append("fill,").append("fill-rule,");
+ }
+ if (stroke) {
+ style_attr.append("stroke,").append("stroke-width,").append("stroke-linecap,").append("stroke-linejoin,");
+ style_attr.append("stroke-opacity,").append("stroke-miterlimit,").append("stroke-dasharray,");
+ style_attr.append("stroke-opacity,").append("stroke-dashoffset,").append("marker-start,");
+ style_attr.append("marker-mid,").append("marker-end,");
+ }
+ if (paintorder) {
+ style_attr.append("paint-order,");
+ }
+ if (filter) {
+ style_attr.append("filter,");
+ }
+ if (opacity) {
+ style_attr.append("opacity,");
+ }
if (inverse) {
- cloneAttrbutes(SP_OBJECT(sp_lpe_item), linked_item.getObject(), true, attributes.param_getSVGValue(), style_attributes.param_getSVGValue(), true);
+ cloneAttrbutes(SP_OBJECT(sp_lpe_item), linked_item.getObject(), true, g_strdup(attr.c_str()), g_strdup(style_attr.c_str()), true);
} else {
- cloneAttrbutes(linked_item.getObject(), SP_OBJECT(sp_lpe_item), true, attributes.param_getSVGValue(), style_attributes.param_getSVGValue(), true);
+ cloneAttrbutes(linked_item.getObject(), SP_OBJECT(sp_lpe_item), true, g_strdup(attr.c_str()), g_strdup(style_attr.c_str()), true);
}
}
}
@@ -246,7 +281,9 @@ LPECloneOriginal::newWidget()
vbox->set_border_width(5);
vbox->set_homogeneous(false);
vbox->set_spacing(2);
-
+ Gtk::VBox * vbox_expander = Gtk::manage( new Gtk::VBox(Effect::newWidget()) );
+ vbox_expander->set_border_width(0);
+ vbox_expander->set_spacing(2);
std::vector<Parameter *>::iterator it = param_vector.begin();
while (it != param_vector.end()) {
if ((*it)->widget_is_visible) {
@@ -258,7 +295,12 @@ LPECloneOriginal::newWidget()
Gtk::Widget * widg = param->param_newWidget();
Glib::ustring * tip = param->param_getTooltip();
if (widg) {
- vbox->pack_start(*widg, true, true, 2);
+ if (param->param_key != "attributes" &&
+ param->param_key != "style_attributes") {
+ vbox->pack_start(*widg, true, true, 2);
+ } else {
+ vbox_expander->pack_start(*widg, true, true, 2);
+ }
if (tip) {
widg->set_tooltip_text(*tip);
} else {
@@ -270,20 +312,15 @@ LPECloneOriginal::newWidget()
++it;
}
+ expander = Gtk::manage(new Gtk::Expander(Glib::ustring(_("Show attributes override"))));
+ expander->add(*vbox_expander);
+ expander->set_expanded(expanded);
+ expander->property_expanded().signal_changed().connect(sigc::mem_fun(*this, &LPEMeasureLine::onExpanderChanged) );
+ vbox->pack_start(*expander, true, true, 2);
this->upd_params = false;
return dynamic_cast<Gtk::Widget *>(vbox);
}
-void
-LPECloneOriginal::doOnApply(SPLPEItem const* lpeitem){
- Glib::ustring attributes_value("d,transform");
- attributes.param_setValue(attributes_value);
- attributes.write_to_SVG();
- Glib::ustring style_attributes_value("opacity,stroke-width");
- style_attributes.param_setValue(style_attributes_value);
- style_attributes.write_to_SVG();
-}
-
LPECloneOriginal::~LPECloneOriginal()
{
diff --git a/src/live_effects/lpe-clone-original.h b/src/live_effects/lpe-clone-original.h
index aad6e9fa9..c5080ad0e 100644
--- a/src/live_effects/lpe-clone-original.h
+++ b/src/live_effects/lpe-clone-original.h
@@ -24,7 +24,6 @@ class LPECloneOriginal : public Effect, GroupBBoxEffect {
public:
LPECloneOriginal(LivePathEffectObject *lpeobject);
virtual ~LPECloneOriginal();
- virtual void doOnApply(SPLPEItem const* lpeitem);
virtual void doEffect (SPCurve * curve);
virtual void doBeforeEffect (SPLPEItem const* lpeitem);
virtual void transform_multiply(Geom::Affine const& postmul, bool set);
@@ -37,10 +36,18 @@ private:
ScalarParam scale;
BoolParam preserve_position;
BoolParam inverse;
- BoolParam use_center;
+ BoolParam d;
+ BoolParam transform;
+ BoolParam fill;
+ BoolParam stroke;
+ BoolParam paintorder;
+ BoolParam opacity;
+ BoolParam filter;
TextParam attributes;
TextParam style_attributes;
bool preserve_position_changed;
+ bool expanded;
+ Gtk::Expander * expander;
Geom::Affine preserve_affine;
LPECloneOriginal(const LPECloneOriginal&);
LPECloneOriginal& operator=(const LPECloneOriginal&);