summaryrefslogtreecommitdiffstats
path: root/src/ui/tool/control-point-selection.cpp
diff options
context:
space:
mode:
authorDiederik van Lierop <mail@diedenrezi.nl>2011-09-16 23:00:05 +0000
committerDiederik van Lierop <mail@diedenrezi.nl>2011-09-16 23:00:05 +0000
commitee17bac8a5d9b6bf840272885c1eda57c45fb4ad (patch)
tree2df5e6001c742e2f7a73007977c75ecd86fb7947 /src/ui/tool/control-point-selection.cpp
parentCorrect the formula of the displacement map so that zero alpha value (diff)
downloadinkscape-ee17bac8a5d9b6bf840272885c1eda57c45fb4ad.tar.gz
inkscape-ee17bac8a5d9b6bf840272885c1eda57c45fb4ad.zip
Node tool, transforming a set of nodes: Fix crashes, and finish implementation of snapping
Fixed bugs: - https://launchpad.net/bugs/590261 (bzr r10633)
Diffstat (limited to 'src/ui/tool/control-point-selection.cpp')
-rw-r--r--src/ui/tool/control-point-selection.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/ui/tool/control-point-selection.cpp b/src/ui/tool/control-point-selection.cpp
index 13da4a712..fbcb337a5 100644
--- a/src/ui/tool/control-point-selection.cpp
+++ b/src/ui/tool/control-point-selection.cpp
@@ -16,6 +16,7 @@
#include "ui/tool/event-utils.h"
#include "ui/tool/selectable-control-point.h"
#include "ui/tool/transform-handle-set.h"
+#include "ui/tool/node.h"
namespace Inkscape {
namespace UI {
@@ -642,13 +643,24 @@ bool ControlPointSelection::event(GdkEvent *event)
return false;
}
-std::vector<Inkscape::SnapCandidatePoint> ControlPointSelection::getOriginalPoints()
+void ControlPointSelection::getOriginalPoints(std::vector<Inkscape::SnapCandidatePoint> &pts)
{
- std::vector<Inkscape::SnapCandidatePoint> points;
+ pts.clear();
for (iterator i = _points.begin(); i != _points.end(); ++i) {
- points.push_back(Inkscape::SnapCandidatePoint(_original_positions[*i], SNAPSOURCE_NODE_HANDLE));
+ pts.push_back(Inkscape::SnapCandidatePoint(_original_positions[*i], SNAPSOURCE_NODE_HANDLE));
+ }
+}
+
+void ControlPointSelection::getUnselectedPoints(std::vector<Inkscape::SnapCandidatePoint> &pts)
+{
+ pts.clear();
+ ControlPointSelection::Set &nodes = this->allPoints();
+ for (ControlPointSelection::Set::iterator i = nodes.begin(); i != nodes.end(); ++i) {
+ if (!(*i)->selected()) {
+ Node *n = static_cast<Node*>(*i);
+ pts.push_back(n->snapCandidatePoint());
+ }
}
- return points;
}
void ControlPointSelection::setOriginalPoints()