diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2010-02-07 01:22:44 +0000 |
|---|---|---|
| committer | Krzysztof KosiĆski <tweenk.pl@gmail.com> | 2010-02-07 01:22:44 +0000 |
| commit | a19670da5137c1403f53f4a9725248acc8459950 (patch) | |
| tree | 3e9b5c0d622a5bd94a7baddaa795a75d01600f03 /src/2geom/path.cpp | |
| parent | Fix performance regressions in the node tool and a stupid crash bug (diff) | |
| download | inkscape-a19670da5137c1403f53f4a9725248acc8459950.tar.gz inkscape-a19670da5137c1403f53f4a9725248acc8459950.zip | |
Fix path transformation (LP bug #515237)
Fixed bugs:
- https://launchpad.net/bugs/515237
(bzr r9062)
Diffstat (limited to 'src/2geom/path.cpp')
| -rw-r--r-- | src/2geom/path.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/2geom/path.cpp b/src/2geom/path.cpp index 88c7a99b9..05a69d616 100644 --- a/src/2geom/path.cpp +++ b/src/2geom/path.cpp @@ -89,8 +89,17 @@ Path &Path::operator*=(Matrix const &m) { } prev = (*it)->finalPoint(); } - for ( int i = 0 ; i < 2 ; ++i ) { - final_->setPoint(i, (*final_)[i] * m); + if (closed_) { + Geom::Point pt = front().initialPoint(); + if (size_open() > 0) { + Curve *l = const_cast<Curve*>((get_curves().end() - 2)->get()); + l->setFinal(pt); + } + final_->setInitial(pt); + final_->setFinal(pt); + } else { + final_->setInitial(back().finalPoint()); + final_->setFinal(front().initialPoint()); } if (get_curves().size() > 1) { if ( front().initialPoint() != initialPoint() || back().finalPoint() != finalPoint() ) { |
