whitespace
[conkeror/arlinius.git] / modules / zoom.js
blobe7de245e8f1a817696bb96f889230994ed5be013
1 /**
2  * (C) Copyright 2007-2008 Jeremy Maitin-Shepard
3  *
4  * Portions of this file were derived from Vimperator,
5  * (C) Copyright 2006-2007 Martin Stubenschrott.
6  *
7  * Use, modification, and distribution are subject to the terms specified in the
8  * COPYING file.
9 **/
11 /**
12  * Text and full-page zoom
13  */
16 var zoom_levels = [ 1, 10, 25, 50, 75, 90, 100,
17                     120, 150, 200, 300, 500, 1000, 2000 ];
19 function browser_zoom_set(buffer, full_zoom, value) {
20     var txt = full_zoom ? "Zoom: " : "Text zoom: ";
21     if (value < zoom_levels[0])
22         value = zoom_levels[0];
23     if (value > zoom_levels[zoom_levels.length - 1])
24         value = zoom_levels[zoom_levels.length - 1];
25     buffer.markup_document_viewer[full_zoom ? "fullZoom" : "textZoom"] = value / 100.0;
26     buffer.window.minibuffer.message(txt + value + "%");
29 function browser_zoom_change(buffer, full_zoom, count) {
30     if (count == 0)
31         return;
32     var zoom = full_zoom ? "fullZoom" : "textZoom";
33     var cur_value = buffer.markup_document_viewer[zoom] * 100;
34     var new_level;
35     if (count < 0) {
36         new_level = 0;
37         for (var i = zoom_levels.length - 1; i >= 0; --i)
38         {
39             if (zoom_levels[i] - 0.01 < cur_value) {
40                 new_level = i + count;
41                 break;
42             }
43         }
44     } else {
45         new_level = zoom_levels.length - 1;
46         for (var i = 0; i < zoom_levels.length; ++i)
47         {
48             if (zoom_levels[i] + 0.01 > cur_value) {
49                 new_level = i + count;
50                 break;
51             }
52         }
53     }
55     if (new_level < 0)
56         new_level = 0;
57     if (new_level >= zoom_levels.length)
58         new_level = zoom_levels.length - 1;
59     browser_zoom_set(buffer, full_zoom, zoom_levels[new_level]);
62 interactive("zoom-in-text", null, function (I) {browser_zoom_change(I.buffer, false /* not full zoom */, I.p);});
63 interactive("zoom-out-text", null, function (I) {browser_zoom_change(I.buffer, false /* not full zoom */, -I.p);});
64 interactive("zoom-in-text-more", null, function (I) {browser_zoom_change(I.buffer, false /* not full zoom */, I.p * 3);});
65 interactive("zoom-out-text-more", null, function (I) {browser_zoom_change(I.buffer, false /* not full zoom */, -I.p * 3);});
66 interactive("zoom-reset-text", null, function (I) {browser_zoom_set(I.buffer, false /* not full zoom */, I.p = 100);});
68 interactive("zoom-in-full", null, function (I) {browser_zoom_change(I.buffer, true /* full zoom */, I.p);});
69 interactive("zoom-out-full", null, function (I) {browser_zoom_change(I.buffer, true /* full zoom */, -I.p);});
70 interactive("zoom-in-full-more", null, function (I) {browser_zoom_change(I.buffer, true /* full zoom */, I.p * 3);});
71 interactive("zoom-out-full-more", null, function (I) {browser_zoom_change(I.buffer, true /* full zoom */, -I.p * 3);});
72 interactive("zoom-reset-full", null, function (I) {browser_zoom_set(I.buffer, true /* full zoom */, I.p = 100);});