diff options
author | James Bowes <bowes@cs.dal.ca> | 2005-05-02 16:19:48 (GMT) |
---|---|---|
committer | James Bowes <jbowes@src.gnome.org> | 2005-05-02 16:19:48 (GMT) |
commit | 606f66cbbca54996a165121743cda6a993762c47 (patch) | |
tree | af9aeaf3c5f8b737c603576072e45503901ad434 /cut-n-paste/zoom-control/ephy-zoom.c | |
parent | 8ccbb218873ff3f7d5e6b924b9ff7d44f1f6d62e (diff) |
Output zoom-control Makefile. build zoom-control subdir.
2005-05-02 James Bowes <bowes@cs.dal.ca>
* configure.ac: Output zoom-control Makefile.
* cut-n-paste/Makefile.am: build zoom-control subdir.
* cut-n-paste/zoom-control/ephy-zoom-action.c:
* cut-n-paste/zoom-control/ephy-zoom-action.h:
* cut-n-paste/zoom-control/ephy-zoom-control.c:
* cut-n-paste/zoom-control/ephy-zoom-control.h:
* cut-n-paste/zoom-control/ephy-zoom.c:
* cut-n-paste/zoom-control/ephy-zoom.h: New files imported
from epiphany, and modified to add a separator into the menu.
* cut-n-paste/zoom-control/Makefile.am: Build zoom-control.
* data/evince-ui.xml: Replace old zoom toolbar actions with new
zoom-control action.
* shell/Makefile.am: Include zoom-control flags.
* shell/ev-view.c: (ev_view_set_zoom), (ev_view_get_zoom),
(ev_view_get_sizing_mode), (ev_view_zoom_in), (ev_view_zoom_out),
(ev_view_zoom_for_size_presentation),
(ev_view_zoom_for_size_continuous_and_dual_page),
(ev_view_zoom_for_size_continuous),
(ev_view_zoom_for_size_dual_page),
(ev_view_zoom_for_size_single_page), (ev_view_zoom_normal):
s/ev_view_zoom/ev_view_set_zoom/ and make public, add
ev_view_get_zoom and ev_view_get_sizing_mode.
* shell/ev-view.h:
* shell/ev-window.c: (update_action_sensitivity),
(update_sizing_buttons), (zoom_control_changed_cb),
(register_custom_actions): Initialize and use the zoom-control
widget.
Diffstat (limited to 'cut-n-paste/zoom-control/ephy-zoom.c')
-rw-r--r-- | cut-n-paste/zoom-control/ephy-zoom.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/cut-n-paste/zoom-control/ephy-zoom.c b/cut-n-paste/zoom-control/ephy-zoom.c new file mode 100644 index 0000000..d24530b --- /dev/null +++ b/cut-n-paste/zoom-control/ephy-zoom.c @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2003 Christian Persch + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + */ + +#include "config.h" + +#include "ephy-zoom.h" + +#include <math.h> + +guint +ephy_zoom_get_zoom_level_index (float level) +{ + guint i; + float previous, current, mean; + + /* Handle our options at the end of the list. */ + if (level == EPHY_ZOOM_BEST_FIT) { + return n_zoom_levels - 2; + } else if (level == EPHY_ZOOM_FIT_WIDTH) { + return n_zoom_levels - 1; + } + + previous = zoom_levels[0].level; + + for (i = 1; i < n_zoom_levels - 2; i++) + { + current = zoom_levels[i].level; + mean = sqrt (previous * current); + + if (level <= mean) return i - 1; + + previous = current; + } + + return n_zoom_levels - 4; +} + + +float +ephy_zoom_get_changed_zoom_level (float level, gint steps) +{ + guint index; + + index = ephy_zoom_get_zoom_level_index (level); + return zoom_levels[CLAMP(index + steps, 0, n_zoom_levels - 1)].level; +} + +float ephy_zoom_get_nearest_zoom_level (float level) +{ + return ephy_zoom_get_changed_zoom_level (level, 0); +} |