summaryrefslogtreecommitdiffstats
path: root/src/ui/tool/curve-drag-point.cpp
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2013-02-23 22:34:58 +0000
committerJabiertxo Arraiza Zenotz <jtx@jtx.marker.es>2013-02-23 22:34:58 +0000
commit9af17a6572db964acebd2b7eeea29c8b722c8221 (patch)
tree20fef1b2c5a2f9d49a841be10238919be7acf72e /src/ui/tool/curve-drag-point.cpp
parentMayor refactor (diff)
downloadinkscape-9af17a6572db964acebd2b7eeea29c8b722c8221.tar.gz
inkscape-9af17a6572db964acebd2b7eeea29c8b722c8221.zip
Saved for next refactor
(bzr r11950.1.37)
Diffstat (limited to 'src/ui/tool/curve-drag-point.cpp')
-rw-r--r--src/ui/tool/curve-drag-point.cpp20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/ui/tool/curve-drag-point.cpp b/src/ui/tool/curve-drag-point.cpp
index b83ce1b3c..40dcb5058 100644
--- a/src/ui/tool/curve-drag-point.cpp
+++ b/src/ui/tool/curve-drag-point.cpp
@@ -53,9 +53,12 @@ bool CurveDragPoint::grabbed(GdkEventMotion */*event*/)
// delta is a vector equal 1/3 of distance from first to second
Geom::Point delta = (second->position() - first->position()) / 3.0;
- first->front()->move(first->front()->position() + delta);
- second->back()->move(second->back()->position() - delta);
-
+ //BSpline
+ if(!_pm.isBSpline()){
+ first->front()->move(first->front()->position() + delta);
+ second->back()->move(second->back()->position() - delta);
+ }
+ //BSpline End
_pm.update();
} else {
_segment_was_degenerate = false;
@@ -87,10 +90,13 @@ void CurveDragPoint::dragged(Geom::Point &new_pos, GdkEventMotion *event)
Geom::Point delta = new_pos - position();
Geom::Point offset0 = ((1-weight)/(3*t*(1-t)*(1-t))) * delta;
Geom::Point offset1 = (weight/(3*t*t*(1-t))) * delta;
-
- first->front()->move(first->front()->position() + offset0);
- second->back()->move(second->back()->position() + offset1);
-
+ //BSpline
+ if(!_pm.isBSpline()){
+ first->front()->move(first->front()->position() + offset0);
+ second->back()->move(second->back()->position() + offset1);
+ }else if(weight>=0.8)second->back()->move(new_pos);
+ else if(weight<=0.2)first->front()->move(new_pos);
+ //BSpline End
_pm.update();
}