summaryrefslogtreecommitdiffstats
path: root/src/ui/tool/node.cpp
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2013-02-25 09:59:10 +0000
committerJabiertxo Arraiza Zenotz <jtx@jtx.marker.es>2013-02-25 09:59:10 +0000
commitca40dfd444c2543a6debc0786fa8679a108b1056 (patch)
tree153eb060180f947221d4bb0c0d63bc3bdb759ac4 /src/ui/tool/node.cpp
parentSaved for next refactor (diff)
downloadinkscape-ca40dfd444c2543a6debc0786fa8679a108b1056.tar.gz
inkscape-ca40dfd444c2543a6debc0786fa8679a108b1056.zip
BSpline refactor
(bzr r11950.1.38)
Diffstat (limited to 'src/ui/tool/node.cpp')
-rw-r--r--src/ui/tool/node.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/ui/tool/node.cpp b/src/ui/tool/node.cpp
index c6a2df749..6dc6c7528 100644
--- a/src/ui/tool/node.cpp
+++ b/src/ui/tool/node.cpp
@@ -577,13 +577,29 @@ void Node::move(Geom::Point const &new_pos)
Geom::Point old_pos = position();
Geom::Point delta = new_pos - position();
//BSpline
+ double prevPos = 0;
double pos = 0;
+ double nextPos = 0;
+ Node *n = this;
+ Node * nextNode = n->nodeToward(n->front());
+ Node * prevNode = n->nodeToward(n->back());
if(_pm().isBSpline()){
- Node *n = this;
+ if(prevNode)
+ prevPos = _pm().BSplineHandlePosition(prevNode->front());
pos = _pm().BSplineHandlePosition(n->front());
+ if(nextNode)
+ nextPos = _pm().BSplineHandlePosition(nextNode->back());
}
//BSpline End
setPosition(new_pos);
+ //BSpline
+ if(prevNode){
+ prevNode->front()->setPosition(_pm().BSplineHandleReposition(prevNode->front(),prevPos));
+ }
+ if(nextNode){
+ nextNode->back()->setPosition(_pm().BSplineHandleReposition(nextNode->back(),nextPos));
+ }
+ //BSpline End
_front.setPosition(_front.position() + delta);
_back.setPosition(_back.position() + delta);
//BSpline