summaryrefslogtreecommitdiffstats
path: root/src/live_effects/lpe-lattice2.cpp
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-03-14 10:22:32 +0000
committerJabiertxof <jtx@jtx.marker.es>2015-03-14 10:22:32 +0000
commit9dde2a95bdbe44c1acdfa4bb279ca554771bb0c8 (patch)
tree613faaf93a3c4d3ced5e591daf0fe3cdab23afb1 /src/live_effects/lpe-lattice2.cpp
parentFix for a potential (though unlikely) dereference of null pointer in the spra... (diff)
downloadinkscape-9dde2a95bdbe44c1acdfa4bb279ca554771bb0c8.tar.gz
inkscape-9dde2a95bdbe44c1acdfa4bb279ca554771bb0c8.zip
Lattice 2 now handle in miror mode revase of axis, also fix a bug moving extem axis knots
(bzr r14001)
Diffstat (limited to 'src/live_effects/lpe-lattice2.cpp')
-rw-r--r--src/live_effects/lpe-lattice2.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/live_effects/lpe-lattice2.cpp b/src/live_effects/lpe-lattice2.cpp
index a0069042e..1916fc2d4 100644
--- a/src/live_effects/lpe-lattice2.cpp
+++ b/src/live_effects/lpe-lattice2.cpp
@@ -295,6 +295,9 @@ LPELattice2::vertical(PointParam &paramA, PointParam &paramB, Geom::Line vert){
double distA = Geom::distance(A,nearest);
double distB = Geom::distance(B,nearest);
double distanceMed = (distA + distB)/2;
+ if(A[Geom::X] > B[Geom::X]){
+ distanceMed *= -1;
+ }
A[Geom::X] = nearest[Geom::X] - distanceMed;
B[Geom::X] = nearest[Geom::X] + distanceMed;
paramA.param_setValue(A, true);
@@ -312,6 +315,9 @@ LPELattice2::horizontal(PointParam &paramA, PointParam &paramB, Geom::Line horiz
double distA = Geom::distance(A,nearest);
double distB = Geom::distance(B,nearest);
double distanceMed = (distA + distB)/2;
+ if(A[Geom::Y] > B[Geom::Y]){
+ distanceMed *= -1;
+ }
A[Geom::Y] = nearest[Geom::Y] - distanceMed;
B[Geom::Y] = nearest[Geom::Y] + distanceMed;
paramA.param_setValue(A, true);
@@ -323,8 +329,8 @@ LPELattice2::doBeforeEffect (SPLPEItem const* lpeitem)
{
original_bbox(lpeitem);
setDefaults();
- Geom::Line vert(grid_point8x9,grid_point10x11);
- Geom::Line horiz(grid_point24x26,grid_point25x27);
+ Geom::Line vert(grid_point8x9.param_get_default(),grid_point10x11.param_get_default());
+ Geom::Line horiz(grid_point24x26.param_get_default(),grid_point25x27.param_get_default());
if(verticalMirror){
vertical(grid_point0, grid_point1,vert);
vertical(grid_point2, grid_point3,vert);