diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2016-11-01 15:18:55 +0000 |
|---|---|---|
| committer | jabiertxof <info@marker.es> | 2016-11-01 15:18:55 +0000 |
| commit | efd3002943b5346bbaf961f3f02dc81c0ca0716d (patch) | |
| tree | f92291c0ef59518938aa5db1abcc39e57ffdfbd0 /src/sp-namedview.cpp | |
| parent | Add fadding from temporary rotate draw to real ones (diff) | |
| parent | [Bug #1574561] Italian translation update. (diff) | |
| download | inkscape-efd3002943b5346bbaf961f3f02dc81c0ca0716d.tar.gz inkscape-efd3002943b5346bbaf961f3f02dc81c0ca0716d.zip | |
Add some Vlava improvements from mailing list
(bzr r15142.1.28)
Diffstat (limited to 'src/sp-namedview.cpp')
| -rw-r--r-- | src/sp-namedview.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index df0778265..c9e71955f 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -958,6 +958,27 @@ static void sp_namedview_lock_guides(SPNamedView *nv) } } +void sp_namedview_doc_rotate_guides(SPNamedView *nv) +{ + bool saved = DocumentUndo::getUndoSensitive(nv->document); + DocumentUndo::setUndoSensitive(nv->document, false); + SPRoot * root = nv->document->getRoot(); + Geom::Point page_center = root->viewBox.midpoint() * root->vbt; + Geom::Affine rot = Geom::identity(); + rot *= Geom::Translate(page_center).inverse(); + rot *= Geom::Rotate(Geom::rad_from_deg((nv->document_rotation - root->get_rotation()) * -1)); + rot *= Geom::Translate(page_center); + for(std::vector<SPGuide *>::iterator it=nv->guides.begin();it!=nv->guides.end();++it ) { + Geom::Point const on_line = (*it)->getPoint() * rot ; + (*it)->moveto(on_line, true); + Geom::Affine rot_normal_affine = Geom::Rotate(Geom::rad_from_deg((nv->document_rotation - root->get_rotation()) * -1)); + Geom::Point const rot_normal = (*it)->getNormal() * rot_normal_affine; + (*it)->set_normal(rot_normal, true); + } + DocumentUndo::setUndoSensitive(nv->document, saved); + nv->document->setModifiedSinceSave(); +} + void sp_namedview_set_document_rotation(SPNamedView *nv) { if ( nv->document->getRoot()->get_rotation() == nv->document_rotation) return; @@ -984,6 +1005,7 @@ void sp_namedview_set_document_rotation(SPNamedView *nv) sp_canvas_item_affine_absolute(canvas_border, rot * root->vbt); nv->page_border_rotated = desktop->add_temporary_canvasitem(canvas_border, 0); } + sp_namedview_doc_rotate_guides(nv); nv->document->getRoot()->set_rotation(nv->document_rotation); c->unref(); } @@ -1025,6 +1047,8 @@ static void sp_namedview_lock_single_guide(SPGuide* guide, bool locked) guide->set_locked(locked, true); } + + void sp_namedview_toggle_guides(SPDocument *doc, Inkscape::XML::Node *repr) { unsigned int v; |
