summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlexander Valavanis <valavanisalex@gmail.com>2019-05-26 21:03:04 +0000
committerAlexander Valavanis <valavanisalex@gmail.com>2019-05-26 21:03:04 +0000
commit05bfa7a553ea605d36c34df0aec45bd61f17b978 (patch)
tree0f7e59f20b19101e6e2d5b7756c2769068f19eaa /src
parentRm unused code now Gtk+ >= 3.22 dependency is set (diff)
parentUpdate it.po (diff)
downloadinkscape-05bfa7a553ea605d36c34df0aec45bd61f17b978.tar.gz
inkscape-05bfa7a553ea605d36c34df0aec45bd61f17b978.zip
Merge branch 'master' of gitlab.com:inkscape/inkscape
Diffstat (limited to 'src')
-rw-r--r--src/gradient-chemistry.cpp11
-rw-r--r--src/libnrtype/Layout-TNG-Output.cpp3
-rw-r--r--src/live_effects/lpe-mirror_symmetry.cpp76
-rw-r--r--src/live_effects/lpe-mirror_symmetry.h1
-rw-r--r--src/ui/toolbar/gradient-toolbar.cpp6
-rw-r--r--src/ui/toolbar/gradient-toolbar.h2
-rw-r--r--src/ui/widget/combo-tool-item.cpp7
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(&center_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);