annotate webapp/src/main/webapp/jquery/jquery.digilib.svg.js @ 1102:8878c6e36fd5

refactoring; define regions in JS
author hertzhaft
date Fri, 26 Oct 2012 10:32:14 +0200
parents 6488318df736
children 05f7eb1ba0a2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1054
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
1 /* Copyright (c) 2011 Martin Raspe, Robert Casties
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
2
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
3 This program is free software: you can redistribute it and/or modify
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
4 it under the terms of the GNU Lesser General Public License as published by
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
5 the Free Software Foundation, either version 2 of the License, or
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
6 (at your option) any later version.
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
7
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
8 This program is distributed in the hope that it will be useful,
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
11 GNU Lesser General Public License for more details.
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
12
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
13 You should have received a copy of the GNU Lesser General Public License
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
15
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
16 Authors:
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
17 Martin Raspe, Robert Casties, 26.3.2012
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
18 */
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
19
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
20 /**
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
21 * digilib SVG plugin (display a SVG on top if scaler image and zoom/rotate/mirror etc.)
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
22 **/
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
23
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
24 /* jslint browser: true, debug: true, forin: true
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
25 */
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
26
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
27 (function($) {
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
28
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
29 // plugin object with digilib data
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
30 var digilib = null;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
31 // the functions made available by digilib
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
32 var fn = null;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
33 // affine geometry plugin
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
34 var geom = null;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
35
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
36 var defaults = {};
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
37
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
38 var actions = {
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
39 "test" : function(options) {
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
40 var onLoadXML = function (xml) {
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
41 settings.xml = xml;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
42 settings.$toolBar = setupToolBar(settings);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
43 $digilib.each(function() {
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
44 var $elem = $(this);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
45 $elem.data(pluginName, settings);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
46 });
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
47 };
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
48 var onLoadScalerImg = function () {
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
49 var $svgDiv = $('<div id="svg" />');
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
50 $('body').append($svgDiv);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
51 // size SVG div like scaler img
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
52 var $scalerImg = $digilib.find('img.pic');
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
53 var scalerImgRect = geom.rectangle($scalerImg);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
54 scalerImgRect.adjustDiv($svgDiv);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
55 console.debug('$svgDiv', scalerImgRect);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
56 var $svg = $svgDiv.svg({
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
57 'onLoad' : drawInitial
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
58 });
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
59 settings.$elem = $digilib;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
60 settings.$svgDiv = $svgDiv;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
61 settings.$svg = $svg;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
62 // set SVG data
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
63 $svg.data('digilib', data);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
64 $svg.data(pluginName, settings);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
65 };
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
66 // fetch the XML measuring unit list
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
67 $.ajax({
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
68 type : "GET",
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
69 url : "svg/archimedes.xml",
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
70 dataType : "xml",
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
71 success : onLoadXML
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
72 });
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
73 data.$img.load(onLoadScalerImg);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
74 return this;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
75 }
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
76 };
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
77
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
78 // plugin installation called by digilib on plugin object.
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
79 var install = function (plugin) {
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
80 digilib = plugin;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
81 console.debug('installing svg plugin. digilib:', digilib);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
82 fn = digilib.fn;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
83 // import geometry classes
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
84 geom = fn.geometry;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
85 // add defaults, actions, buttons
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
86 $.extend(true, digilib.defaults, defaults); // make deep copy
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
87 $.extend(digilib.actions, actions);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
88 // export functions
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
89 // fn.test = test;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
90 };
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
91
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
92 // plugin initialization
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
93 var init = function (data) {
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
94 console.debug('initialising digilibSVG plugin. data:', data);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
95 var $data = $(data);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
96 $data.bind('setup', handleSetup);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
97 };
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
98
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
99 var handleSetup = function (evt) {
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
100 console.debug("svg: handleSetup");
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
101 var data = this;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
102 var settings = data.settings;
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
103 };
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
104
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
105 // plugin object with name and init
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
106 // shared objects filled by digilib on registration
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
107 var plugin = {
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
108 name : 'svg',
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
109 install : install,
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
110 init : init,
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
111 buttons : {},
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
112 actions : {},
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
113 fn : {},
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
114 plugins : {}
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
115 };
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
116
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
117 if ($.fn.digilib == null) {
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
118 $.error("jquery.digilib.svg must be loaded after jquery.digilib!");
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
119 } else {
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
120 $.fn.digilib('plugin', plugin);
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
121 }
6488318df736 stuff for svg testing
hertzhaft
parents:
diff changeset
122 })(jQuery);