diff options
| author | Alexander Valavanis <valavanisalex@gmail.com> | 2019-05-26 21:03:04 +0000 |
|---|---|---|
| committer | Alexander Valavanis <valavanisalex@gmail.com> | 2019-05-26 21:03:04 +0000 |
| commit | 05bfa7a553ea605d36c34df0aec45bd61f17b978 (patch) | |
| tree | 0f7e59f20b19101e6e2d5b7756c2769068f19eaa /src | |
| parent | Rm unused code now Gtk+ >= 3.22 dependency is set (diff) | |
| parent | Update it.po (diff) | |
| download | inkscape-05bfa7a553ea605d36c34df0aec45bd61f17b978.tar.gz inkscape-05bfa7a553ea605d36c34df0aec45bd61f17b978.zip | |
Merge branch 'master' of gitlab.com:inkscape/inkscape
Diffstat (limited to 'src')
| -rw-r--r-- | src/gradient-chemistry.cpp | 11 | ||||
| -rw-r--r-- | src/libnrtype/Layout-TNG-Output.cpp | 3 | ||||
| -rw-r--r-- | src/live_effects/lpe-mirror_symmetry.cpp | 76 | ||||
| -rw-r--r-- | src/live_effects/lpe-mirror_symmetry.h | 1 | ||||
| -rw-r--r-- | src/ui/toolbar/gradient-toolbar.cpp | 6 | ||||
| -rw-r--r-- | src/ui/toolbar/gradient-toolbar.h | 2 | ||||
| -rw-r--r-- | src/ui/widget/combo-tool-item.cpp | 7 |
7 files changed, 32 insertions, 74 deletions
diff --git a/src/gradient-chemistry.cpp b/src/gradient-chemistry.cpp index 63bdb397d..cde2d45e7 100644 --- a/src/gradient-chemistry.cpp +++ b/src/gradient-chemistry.cpp @@ -980,12 +980,11 @@ void sp_item_gradient_reverse_vector(SPItem *item, Inkscape::PaintTarget fill_or i->deleteObject(); } - std::vector<double>::iterator iter = offsets.end() - 1; - for (auto copy:child_copies) { - vector->appendChildRepr(copy); - sp_repr_set_svg_double (copy, "offset", 1 - *iter); - --iter; - Inkscape::GC::release(copy); + std::vector<double>::reverse_iterator o_it = offsets.rbegin(); + for (auto c_it = child_copies.rbegin(); c_it != child_copies.rend(); ++c_it, ++o_it) { + vector->appendChildRepr(*c_it); + sp_repr_set_svg_double (*c_it, "offset", 1 - *o_it); + Inkscape::GC::release(*c_it); } } diff --git a/src/libnrtype/Layout-TNG-Output.cpp b/src/libnrtype/Layout-TNG-Output.cpp index a3c11133b..812abba58 100644 --- a/src/libnrtype/Layout-TNG-Output.cpp +++ b/src/libnrtype/Layout-TNG-Output.cpp @@ -667,7 +667,8 @@ void Layout::fitToPathAlign(SVGLength const &startOffset, Path const &path) offset = startOffset.computed; } - switch (_paragraphs.front().alignment) { + Alignment alignment = _paragraphs.empty() ? LEFT : _paragraphs.front().alignment; + switch (alignment) { case CENTER: offset -= _getChunkWidth(0) * 0.5; break; diff --git a/src/live_effects/lpe-mirror_symmetry.cpp b/src/live_effects/lpe-mirror_symmetry.cpp index 2d49c5cd4..dda84d2f1 100644 --- a/src/live_effects/lpe-mirror_symmetry.cpp +++ b/src/live_effects/lpe-mirror_symmetry.cpp @@ -17,7 +17,6 @@ #include "live_effects/lpe-mirror_symmetry.h" #include "2geom/affine.h" -#include "2geom/intersection-graph.h" #include "2geom/path-intersection.h" #include "display/curve.h" #include "helper/geom.h" @@ -54,7 +53,6 @@ MTConverter(ModeTypeData, MT_END); LPEMirrorSymmetry::LPEMirrorSymmetry(LivePathEffectObject *lpeobject) : Effect(lpeobject), mode(_("Mode"), _("Set mode of transformation. Either freely defined by mirror line or constrained to certain symmetry points."), "mode", MTConverter, &wr, this, MT_FREE), - split_gap(_("Gap on splitting"), _("Add attitional space in between split objects."), "split_gap", &wr, this, -0.001), discard_orig_path(_("Discard original path"), _("Only keep mirrored part of the path, remove the original."), "discard_orig_path", &wr, this, false), fuse_paths(_("Fuse paths"), _("Fuse original path and mirror image into a single path"), "fuse_paths", &wr, this, false), oposite_fuse(_("Fuse opposite sides"), _("Picks the part on the other side of the mirror line as the original."), "oposite_fuse", &wr, this, false), @@ -65,7 +63,6 @@ LPEMirrorSymmetry::LPEMirrorSymmetry(LivePathEffectObject *lpeobject) : { show_orig_path = true; registerParameter(&mode); - registerParameter(&split_gap); registerParameter(&discard_orig_path); registerParameter(&fuse_paths); registerParameter(&oposite_fuse); @@ -73,9 +70,6 @@ LPEMirrorSymmetry::LPEMirrorSymmetry(LivePathEffectObject *lpeobject) : registerParameter(&start_point); registerParameter(&end_point); registerParameter(¢er_point); - split_gap.param_set_range(-999999.0, 999999.0); - split_gap.param_set_increments(0.1, 0.1); - split_gap.param_set_digits(5); apply_to_clippath_and_mask = true; previous_center = Geom::Point(0,0); center_point.param_widget_is_visible(false); @@ -105,7 +99,7 @@ LPEMirrorSymmetry::doAfterEffect (SPLPEItem const* lpeitem) if (split_items && !discard_orig_path) { Geom::Line ls((Geom::Point)start_point, (Geom::Point)end_point); Geom::Affine m = Geom::reflection (ls.vector(), (Geom::Point)start_point); - m = m * sp_lpe_item->transform; + m *= sp_lpe_item->transform; toMirror(m, reset); reset = false; } else { @@ -278,9 +272,6 @@ void LPEMirrorSymmetry::cloneStyle(SPObject *orig, SPObject *dest) if (iter->style_src != SP_STYLE_SRC_UNSET) { if (iter->name != "font" && iter->name != "d" && iter->name != "marker") { const gchar *attr = orig->getRepr()->attribute(iter->name.c_str()); - std::cout << iter->name << std::endl; - std::cout << attr << std::endl; - std::cout << "aaa" << std::endl; if (attr) { dest->getRepr()->setAttribute(iter->name.c_str(), attr); } @@ -465,44 +456,7 @@ LPEMirrorSymmetry::doEffect_path (Geom::PathVector const & path_in) Geom::Line line_separation((Geom::Point)start_point, (Geom::Point)end_point); Geom::Affine m = Geom::reflection (line_separation.vector(), (Geom::Point)start_point); - if (split_items && fuse_paths) { - Geom::OptRect bbox = sp_lpe_item->geometricBounds(); - Geom::Path p(Geom::Point(bbox->left(), bbox->top())); - p.appendNew<Geom::LineSegment>(Geom::Point(bbox->right(), bbox->top())); - p.appendNew<Geom::LineSegment>(Geom::Point(bbox->right(), bbox->bottom())); - p.appendNew<Geom::LineSegment>(Geom::Point(bbox->left(), bbox->bottom())); - p.appendNew<Geom::LineSegment>(Geom::Point(bbox->left(), bbox->top())); - p.close(); - p *= Geom::Translate(bbox->midpoint()).inverse(); - p *= Geom::Scale(1.2); - p *= Geom::Rotate(line_separation.angle()); - p *= Geom::Translate(bbox->midpoint()); - bbox = p.boundsFast(); - p.clear(); - p.start(Geom::Point(bbox->left(), bbox->top())); - p.appendNew<Geom::LineSegment>(Geom::Point(bbox->right(), bbox->top())); - p.appendNew<Geom::LineSegment>(Geom::Point(bbox->right(), bbox->bottom())); - p.appendNew<Geom::LineSegment>(Geom::Point(bbox->left(), bbox->bottom())); - p.appendNew<Geom::LineSegment>(Geom::Point(bbox->left(), bbox->top())); - p.close(); - p *= Geom::Translate(bbox->midpoint()).inverse(); - p *= Geom::Rotate(line_separation.angle()); - p *= Geom::Translate(bbox->midpoint()); - Geom::Point base(p.pointAt(3)); - if (oposite_fuse) { - base = p.pointAt(0); - } - p *= Geom::Translate(line_separation.pointAt(line_separation.nearestTime(base)) - base); - Geom::PathVector pv_bbox; - pv_bbox.push_back(p); - Geom::PathIntersectionGraph *pig = new Geom::PathIntersectionGraph(pv_bbox, original_pathv); - if (pig && !original_pathv.empty() && !pv_bbox.empty()) { - path_out = pig->getBminusA(); - } - Geom::Point dir = rot90(unit_vector((Geom::Point)end_point - (Geom::Point)start_point)); - Geom::Point gap = dir * split_gap; - path_out *= Geom::Translate(gap); - } else if (fuse_paths && !discard_orig_path) { + if (fuse_paths && !discard_orig_path) { for (const auto & path_it : original_pathv) { if (path_it.empty()) { @@ -551,12 +505,18 @@ LPEMirrorSymmetry::doEffect_path (Geom::PathVector const & path_in) position *= -1; } if (position == 1) { - Geom::Path mirror = portion.reversed() * m; - mirror.setInitial(portion.finalPoint()); - portion.append(mirror); - if(i != 0) { - portion.setFinal(portion.initialPoint()); - portion.close(); + if (!split_items) { + Geom::Path mirror = portion.reversed() * m; + mirror.setInitial(portion.finalPoint()); + portion.append(mirror); + if(i != 0) { + portion.setFinal(portion.initialPoint()); + portion.close(); + } + } else { + if (path_it.closed()) { + portion.close(); + } } tmp_pathvector.push_back(portion); } @@ -574,9 +534,11 @@ LPEMirrorSymmetry::doEffect_path (Geom::PathVector const & path_in) Geom::Path portion = original.portion(time_start, original.size()); if (!portion.empty()) { portion = portion.reversed(); - Geom::Path mirror = portion.reversed() * m; - mirror.setInitial(portion.finalPoint()); - portion.append(mirror); + if (!split_items) { + Geom::Path mirror = portion.reversed() * m; + mirror.setInitial(portion.finalPoint()); + portion.append(mirror); + } portion = portion.reversed(); if (!original.closed()) { tmp_pathvector.push_back(portion); diff --git a/src/live_effects/lpe-mirror_symmetry.h b/src/live_effects/lpe-mirror_symmetry.h index 3653d139c..aaddb3836 100644 --- a/src/live_effects/lpe-mirror_symmetry.h +++ b/src/live_effects/lpe-mirror_symmetry.h @@ -62,7 +62,6 @@ protected: private: EnumParam<ModeType> mode; - ScalarParam split_gap; BoolParam discard_orig_path; BoolParam fuse_paths; BoolParam oposite_fuse; diff --git a/src/ui/toolbar/gradient-toolbar.cpp b/src/ui/toolbar/gradient-toolbar.cpp index 60779f03a..afd613c83 100644 --- a/src/ui/toolbar/gradient-toolbar.cpp +++ b/src/ui/toolbar/gradient-toolbar.cpp @@ -447,7 +447,7 @@ GradientToolbar::GradientToolbar(SPDesktop *desktop) // Gradient Spread type (how a gradient is drawn outside its nominal area) { - add_label(_("Repeat")); + _spread_lbl = add_label(_("Repeat: ")); _spread_cb = Gtk::manage(new Gtk::ComboBoxText()); _spread_cb->append(C_("Gradient repeat type", "None")); @@ -461,7 +461,8 @@ GradientToolbar::GradientToolbar(SPDesktop *desktop) "(spreadMethod=\"pad\"), or repeat the gradient in the same direction " "(spreadMethod=\"repeat\"), or repeat the gradient in alternating opposite " "directions (spreadMethod=\"reflect\")")); - spread_item->set_sensitive(false); + _spread_lbl->set_sensitive(false); + _spread_cb->set_sensitive(false); spread_item->add(*_spread_cb); add(*spread_item); @@ -934,6 +935,7 @@ GradientToolbar::selection_changed(Inkscape::Selection * /*selection*/) } // Spread menu + _spread_lbl->set_sensitive( gr_selected && !gr_multi ); _spread_cb->set_sensitive( gr_selected && !gr_multi ); _spread_cb->set_active( gr_selected ? (int)spr_selected : 0 ); diff --git a/src/ui/toolbar/gradient-toolbar.h b/src/ui/toolbar/gradient-toolbar.h index f02dbdc46..40bd1acc0 100644 --- a/src/ui/toolbar/gradient-toolbar.h +++ b/src/ui/toolbar/gradient-toolbar.h @@ -23,6 +23,7 @@ class SPGradient; namespace Gtk { class ComboBoxText; class ToolButton; +class ToolItem; } namespace Inkscape { @@ -44,6 +45,7 @@ private: std::vector<Gtk::RadioToolButton *> _new_type_buttons; std::vector<Gtk::RadioToolButton *> _new_fillstroke_buttons; UI::Widget::ComboToolItem *_select_cb; + Gtk::ToolItem *_spread_lbl; Gtk::ComboBoxText *_spread_cb; UI::Widget::ComboToolItem *_stop_cb; diff --git a/src/ui/widget/combo-tool-item.cpp b/src/ui/widget/combo-tool-item.cpp index eb26e5c6e..a6c44f7eb 100644 --- a/src/ui/widget/combo-tool-item.cpp +++ b/src/ui/widget/combo-tool-item.cpp @@ -100,12 +100,6 @@ ComboToolItem::ComboToolItem(Glib::ustring group_label, void ComboToolItem::set_active (gint active) { - - if (active < 0) { - std::cerr << "ComboToolItem::set_active: active < 0: " << active << std::endl; - return; - } - if (_active != active) { _active = active; @@ -176,7 +170,6 @@ void ComboToolItem::on_changed_combobox() { int row = _combobox->get_active_row_number(); - if (row < 0) row = 0; // Happens when Gtk::ListStore reconstructed set_active( row ); _changed.emit (_active); _changed_after.emit (_active); |
