diff options
| author | Tavmjong Bah <tavmjong@free.fr> | 2017-03-13 14:22:22 +0000 |
|---|---|---|
| committer | tavmjong-free <tavmjong@free.fr> | 2017-03-13 14:22:22 +0000 |
| commit | 014489163050d8abe9e5c4949fb80f3c21b1c17b (patch) | |
| tree | 7cbeb87aa023d563986b32f65fd500c6072ee86a /src/verbs.cpp | |
| parent | Two Extensions for converting objects to paths before exporting. (Bug 1662531) (diff) | |
| download | inkscape-014489163050d8abe9e5c4949fb80f3c21b1c17b.tar.gz inkscape-014489163050d8abe9e5c4949fb80f3c21b1c17b.zip | |
Replace rectangle based zooming by affine based zooming.
This allows a rotation to be included in the drawing to window mapping.
General code cleanup.
Added documentation.
Any change to zooming behavior is probably a bug.
(bzr r15592)
Diffstat (limited to 'src/verbs.cpp')
| -rw-r--r-- | src/verbs.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/verbs.cpp b/src/verbs.cpp index d67e68392..8b3d7a5a2 100644 --- a/src/verbs.cpp +++ b/src/verbs.cpp @@ -1890,7 +1890,10 @@ void ZoomVerb::perform(SPAction *action, void *data) zcorr = prefs->getDouble("/options/zoomcorrection/value", 1.0); Geom::Rect const d = dt->get_display_area(); - + + Geom::Rect const d_canvas = dt->getCanvas()->getViewbox(); // Not SVG 'viewBox' + Geom::Point midpoint = dt->w2d(d_canvas.midpoint()); // Midpoint of drawing on canvas. + switch (reinterpret_cast<std::size_t>(data)) { case SP_VERB_ZOOM_IN: { @@ -1907,7 +1910,7 @@ void ZoomVerb::perform(SPAction *action, void *data) } } - dt->zoom_relative( d.midpoint()[Geom::X], d.midpoint()[Geom::Y], mul*zoom_inc); + dt->zoom_relative_center_point( midpoint, mul*zoom_inc); break; } case SP_VERB_ZOOM_OUT: @@ -1924,17 +1927,17 @@ void ZoomVerb::perform(SPAction *action, void *data) } } - dt->zoom_relative( d.midpoint()[Geom::X], d.midpoint()[Geom::Y], 1 / (mul*zoom_inc) ); + dt->zoom_relative_center_point( midpoint, 1 / (mul*zoom_inc) ); break; } case SP_VERB_ZOOM_1_1: - dt->zoom_absolute( d.midpoint()[Geom::X], d.midpoint()[Geom::Y], 1.0 * zcorr ); + dt->zoom_absolute_center_point( midpoint, 1.0 * zcorr ); break; case SP_VERB_ZOOM_1_2: - dt->zoom_absolute( d.midpoint()[Geom::X], d.midpoint()[Geom::Y], 0.5 * zcorr ); + dt->zoom_absolute_center_point( midpoint, 0.5 * zcorr ); break; case SP_VERB_ZOOM_2_1: - dt->zoom_absolute( d.midpoint()[Geom::X], d.midpoint()[Geom::Y], 2.0 * zcorr ); + dt->zoom_absolute_center_point( midpoint, 2.0 * zcorr ); break; case SP_VERB_ZOOM_PAGE: dt->zoom_page(); @@ -1949,10 +1952,10 @@ void ZoomVerb::perform(SPAction *action, void *data) dt->zoom_selection(); break; case SP_VERB_ZOOM_NEXT: - dt->next_zoom(); + dt->next_transform(); break; case SP_VERB_ZOOM_PREV: - dt->prev_zoom(); + dt->prev_transform(); break; case SP_VERB_TOGGLE_RULERS: dt->toggleRulers(); @@ -2895,6 +2898,7 @@ Verb *Verb::_base_verbs[] = { // Zoom/View new ZoomVerb(SP_VERB_ZOOM_IN, "ZoomIn", N_("Zoom In"), N_("Zoom in"), INKSCAPE_ICON("zoom-in")), new ZoomVerb(SP_VERB_ZOOM_OUT, "ZoomOut", N_("Zoom Out"), N_("Zoom out"), INKSCAPE_ICON("zoom-out")), + // WHY ARE THE FOLLOWING ZoomVerbs??? new ZoomVerb(SP_VERB_TOGGLE_RULERS, "ToggleRulers", N_("_Rulers"), N_("Show or hide the canvas rulers"), NULL), new ZoomVerb(SP_VERB_TOGGLE_SCROLLBARS, "ToggleScrollbars", N_("Scroll_bars"), N_("Show or hide the canvas scrollbars"), NULL), new ZoomVerb(SP_VERB_TOGGLE_GRID, "ToggleGrid", N_("Page _Grid"), N_("Show or hide the page grid"), INKSCAPE_ICON("show-grid")), |
