# HG changeset patch
# User robcast
# Date 1325535014 -3600
# Node ID 5bde01bcfb16e0f8865f5e53e2a6bba8122c3eea
# Parent aa5a978a53118f2f3f55ce8a70638abd75160e84
button plugin works now.
diff -r aa5a978a5311 -r 5bde01bcfb16 webapp/src/main/webapp/jquery/digilib.html
--- a/webapp/src/main/webapp/jquery/digilib.html Mon Jan 02 17:12:39 2012 +0100
+++ b/webapp/src/main/webapp/jquery/digilib.html Mon Jan 02 21:10:14 2012 +0100
@@ -16,8 +16,8 @@
-
+
+
+
diff -r aa5a978a5311 -r 5bde01bcfb16 webapp/src/main/webapp/jquery/jquery-test-embedded.html
--- a/webapp/src/main/webapp/jquery/jquery-test-embedded.html Mon Jan 02 17:12:39 2012 +0100
+++ b/webapp/src/main/webapp/jquery/jquery-test-embedded.html Mon Jan 02 21:10:14 2012 +0100
@@ -51,10 +51,11 @@
-
+
+
diff -r aa5a978a5311 -r 5bde01bcfb16 webapp/src/main/webapp/jquery/jquery-test-full-rc.html
--- a/webapp/src/main/webapp/jquery/jquery-test-full-rc.html Mon Jan 02 17:12:39 2012 +0100
+++ b/webapp/src/main/webapp/jquery/jquery-test-full-rc.html Mon Jan 02 21:10:14 2012 +0100
@@ -22,6 +22,7 @@
+
diff -r aa5a978a5311 -r 5bde01bcfb16 webapp/src/main/webapp/jquery/jquery-test-full.html
--- a/webapp/src/main/webapp/jquery/jquery-test-full.html Mon Jan 02 17:12:39 2012 +0100
+++ b/webapp/src/main/webapp/jquery/jquery-test-full.html Mon Jan 02 21:10:14 2012 +0100
@@ -55,10 +55,11 @@
}
-
+
+
diff -r aa5a978a5311 -r 5bde01bcfb16 webapp/src/main/webapp/jquery/jquery-test-svg.html
--- a/webapp/src/main/webapp/jquery/jquery-test-svg.html Mon Jan 02 17:12:39 2012 +0100
+++ b/webapp/src/main/webapp/jquery/jquery-test-svg.html Mon Jan 02 21:10:14 2012 +0100
@@ -7,10 +7,11 @@
-
+
+
diff -r aa5a978a5311 -r 5bde01bcfb16 webapp/src/main/webapp/jquery/jquery.digilib.birdseye.js
--- a/webapp/src/main/webapp/jquery/jquery.digilib.birdseye.js Mon Jan 02 17:12:39 2012 +0100
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.birdseye.js Mon Jan 02 21:10:14 2012 +0100
@@ -40,7 +40,7 @@
}
var on = digilib.fn.showDiv(settings.isBirdDivVisible, data.$birdDiv, show);
settings.isBirdDivVisible = on;
- digilib.fn.highlightButtons(data, 'bird', on);
+ //digilib.fn.highlightButtons(data, 'bird', on);
updateBirdDiv(data);
digilib.fn.storeOptions(data);
}
@@ -72,7 +72,7 @@
$data.on('setup', handleSetup);
$data.on('update', handleUpdate);
$data.on('redisplay', handleRedisplay);
- $data.on('dragZoom', handleDragZoom);
+ $data.on('changeZoomArea', handleChangeZoomArea);
};
@@ -103,11 +103,11 @@
}
};
- var handleDragZoom = function (evt, zoomArea) {
+ var handleChangeZoomArea = function (evt, zoomArea) {
//console.debug("birdseye: handleDragZoom za="+zoomArea);
var data = this;
if (data.settings.isBirdDivVisible) {
- setBirdZoom(data, zoomArea);
+ updateBirdZoom(data, zoomArea);
}
};
@@ -174,8 +174,10 @@
// malheureusement IE7 calls load handler when there is no size info yet
setTimeout(function () { $birdImg.triggerHandler('load'); }, 200);
}
+ // create Transform from current area and picsize
+ data.birdTrafo = digilib.fn.getImgTrafo(data.$birdImg, FULL_AREA);
// update display (zoom area indicator)
- digilib.fn.updateDisplay(data);
+ $(data).trigger('update');
};
};
@@ -191,8 +193,6 @@
} else {
$birdZoom.show();
}
- // create Transform from current area and picsize
- data.birdTrafo = digilib.fn.getImgTrafo(data.$birdImg, FULL_AREA);
var zoomRect = data.birdTrafo.transform(zoomArea);
console.debug("renderBirdArea:", zoomRect, "zoomArea:", zoomArea, "$birdTrafo:", data.birdTrafo);
// acount for border width
@@ -215,6 +215,16 @@
}
};
+ // move bird zoom indicator to reflect zoomed detail area
+ var updateBirdZoom = function(data, zoomArea) {
+ var birdRect = data.birdTrafo.transform(zoomArea);
+ var $birdZoom = data.$birdZoom;
+ // acount for border width
+ var bw = digilib.fn.getBorderWidth($birdZoom);
+ birdRect.addPosition({x : -bw, y : -bw});
+ birdRect.adjustDiv(data.$birdZoom);
+ };
+
// bird's eye view zoom area click and drag handler
var setupBirdDrag = function(data) {
var $birdImg = data.$birdImg;
@@ -246,12 +256,12 @@
newRect = birdZoomRect.copy();
newRect.addPosition(delta);
newRect.stayInside(birdImgRect);
+ // acount for border width
+ newRect.addPosition({x : -bw, y : -bw});
+ newRect.adjustDiv($birdZoom);
// reflect birdview zoom position in scaler image
var area = data.birdTrafo.invtransform(newRect);
$(data).trigger('changeZoomArea', area);
- // acount for border width
- newRect.addPosition({x : -bw, y : -bw});
- newRect.adjustDiv($birdZoom);
return false;
};
@@ -284,19 +294,6 @@
}
};
- // move bird zoom indicator to reflect zoomed detail area
- var setBirdZoom = function(data, rect) {
- var part = data.imgTrafo.invtransform(rect);
- // area = FULL_AREA.fit(part); // no, we want to see where we transcend the borders
- birdTrafo = digilib.fn.getImgTrafo(data.$birdImg, FULL_AREA);
- var birdRect = birdTrafo.transform(part);
- var $birdZoom = data.$birdZoom;
- // acount for border width
- var bw = digilib.fn.getBorderWidth($birdZoom);
- birdRect.addPosition({x : -bw, y : -bw});
- birdRect.adjustDiv(data.$birdZoom);
- };
-
// plugin object with name and init
// shared objects filled by digilib on registration
var plugin = {
diff -r aa5a978a5311 -r 5bde01bcfb16 webapp/src/main/webapp/jquery/jquery.digilib.buttons.js
--- a/webapp/src/main/webapp/jquery/jquery.digilib.buttons.js Mon Jan 02 17:12:39 2012 +0100
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.buttons.js Mon Jan 02 21:10:14 2012 +0100
@@ -164,8 +164,8 @@
};
var defaults = {
- // buttons
- 'buttons' : buttons,
+ // buttons (reference added later)
+ 'buttons' : null,
// defaults for digilib buttons
'buttonSettings' : {
'fullscreen' : {
@@ -230,8 +230,11 @@
$.extend(digilib.defaults, defaults);
$.extend(digilib.actions, actions);
$.extend(digilib.buttons, buttons);
+ // update buttons reference in defaults
+ digilib.defaults.buttons = digilib.buttons;
// export functions
digilib.fn.createButton = createButton;
+ digilib.fn.highlightButtons = highlightButtons;
};
// plugin initialization
@@ -413,7 +416,7 @@
name : 'buttons',
install : install,
init : init,
- //buttons : {},
+ buttons : {},
actions : {},
fn : {},
plugins : {}
diff -r aa5a978a5311 -r 5bde01bcfb16 webapp/src/main/webapp/jquery/jquery.digilib.js
--- a/webapp/src/main/webapp/jquery/jquery.digilib.js Mon Jan 02 17:12:39 2012 +0100
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.js Mon Jan 02 21:10:14 2012 +0100
@@ -109,7 +109,9 @@
// rectangle with maximum zoom area
var FULL_AREA;
// limit for float comparison
- var EPSILON = 0.000001;
+ var EPSILON = 0.0001;
+ // list of buttons
+ var buttons = {};
var actions = {
// init: digilib initialization
@@ -214,6 +216,9 @@
elemSettings.scalerBaseUrl = elemSettings.digilibBaseUrl + '/servlet/Scaler';
}
}
+ // set up event handlers
+ $(data).on('update', handleUpdate); // handleUpdate needs to be the first handler for update
+ $(data).on('changeZoomArea', handleChangeZoomArea);
// initialise plugins
for (n in plugins) {
var p = plugins[n];
@@ -226,7 +231,7 @@
if (data.scaleMode === 'pixel' || data.scaleMode === 'size') {
loadImageInfo(data); // triggers "imageInfo" on completion
}
- // create HTML structure for scaler, taking width of buttons div into account
+ // create HTML structure for scaler
setupScalerDiv(data);
// about window creation - TODO: could be deferred? restrict to only one item?
setupAboutDiv(data);
@@ -801,14 +806,19 @@
// update display (overlays etc.)
var updateDisplay = function (data) {
+ // send event
+ $(data).trigger('update');
+ };
+
+ // update display (overlays etc.)
+ var handleUpdate = function (evt) {
+ var data = this;
updateImgTrafo(data);
renderMarks(data);
setupZoomDrag(data);
renderZoomArrows(data);
- // send event
- $(data).trigger('update');
};
-
+
// returns maximum size for scaler img in fullscreen mode
var getFullscreenImgSize = function (data) {
var mode = data.settings.interactionMode;
@@ -827,12 +837,10 @@
console.debug("fixing border height for getFullscreenImgSize!");
borderH = 5;
}
- // FIXME!
var buttonsW = 0;
if (data.settings.visibleButtonSets) {
// get button width from settings
- buttonsW = data.settings.buttonSettings[mode].buttonSetWidth;
- // TODO: leave space for all button sets?
+ buttonsW = data.settings.buttonSettings[mode].buttonSetWidth * data.settings.visibleButtonSets;
}
// account for left/right border, body margins and additional requirements
var imgW = winW - borderW - buttonsW;
@@ -892,15 +900,13 @@
$img.addClass('pic');
data.$scaler = $scaler;
data.$img = $img;
- // set up event handlers
- $(data).on('changeZoomArea', handleChangeZoomArea);
+ // set busy cursor
+ $('body').css('cursor','progress');
+ data.$scaler.css('cursor', 'progress');
// set up image load handler before setting the src attribute (IE bug)
$img.load(scalerImgLoadedHandler(data));
$img.error(function () {console.error("error loading scaler image");});
$img.attr('src', scalerUrl);
- // set busy cursor
- $('body').css('cursor','progress');
- data.$scaler.css('cursor', 'progress');
};
// creates arrow overlays for moving the zoomed area
@@ -1100,7 +1106,7 @@
data.imgTrafo = getImgTrafo($img, data.zoomArea,
data.settings.rot, data.scalerFlags.hmir, data.scalerFlags.vmir,
data.scaleMode, data);
- // console.debug("imgTrafo=", data.imgTrafo);
+ console.debug("imgTrafo=", data.imgTrafo);
}
};
@@ -1143,6 +1149,7 @@
var dw = data.zoomArea.width / newZa.width;
var dh = data.zoomArea.height / newZa.height;
var deltapix = geom.size(dw, dh);
+ data.$elem.find(".overlay").hide(); // hide all overlays (marks/regions)
setZoomBg(data, deltapix);
} else if (Math.abs(delta.x) > EPSILON || Math.abs(delta.y) > EPSILON) {
// move background
@@ -1154,6 +1161,7 @@
moveZoomBg(data, deltapix);
} else {
// no background yet
+ data.$elem.find(".overlay").hide(); // hide all overlays (marks/regions)
setZoomBg(data, deltapix);
}
}
@@ -1283,7 +1291,7 @@
$scaler.one('mousedown.dlZoomArea', zoomStart);
};
- // set zoom background (returns rectangle with fullsize backgroud coordinates)
+ // set zoom background (returns rectangle with fullsize background coordinates)
var setZoomBg = function(data, delta) {
var $scaler = data.$scaler;
var $img = data.$img;
@@ -1390,11 +1398,14 @@
var pos = geom.position(evt);
delta = startPos.delta(pos);
// position background
- moveZoomBg(data, delta);
+ //moveZoomBg(data, delta);
// send message event with current zoom position
var za = geom.rectangle($img);
za.addPosition(delta.neg());
- $data.trigger('dragZoom', [za]);
+ // transform back
+ var newArea = data.imgTrafo.invtransform(za);
+ $data.trigger('changeZoomArea', newArea);
+ //$data.trigger('dragZoom', [za]);
return false;
};
@@ -1591,7 +1602,7 @@
plugins[plugin.name] = plugin;
// share common objects
plugin.defaults = defaults;
- //plugin.buttons = buttons; FIXME
+ plugin.buttons = buttons;
plugin.actions = actions;
plugin.fn = fn;
plugin.plugins = plugins;
diff -r aa5a978a5311 -r 5bde01bcfb16 webapp/src/main/webapp/jquery/jquery.digilib.regions.js
--- a/webapp/src/main/webapp/jquery/jquery.digilib.regions.js Mon Jan 02 17:12:39 2012 +0100
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.regions.js Mon Jan 02 21:10:14 2012 +0100
@@ -9,8 +9,6 @@
(function($) {
// the digilib object
var digilib;
- // the data object passed by digilib
- var data;
// the functions made available by digilib
var fn;
// affine geometry plugin
@@ -288,7 +286,7 @@
};
// create a region div from the data.regions array
- var createRegionDiv = function (regions, index, attributes) {
+ var createRegionDiv = function (data, regions, index, attributes) {
var $regionDiv = addRegionDiv(data, index, attributes);
var region = regions[index];
region.$div = $regionDiv;
@@ -300,7 +298,7 @@
unpackRegions(data);
var regions = data.regions;
$.each(regions, function(i) {
- createRegionDiv(regions, i);
+ createRegionDiv(data, regions, i);
});
};
@@ -324,7 +322,7 @@
if ($a.attr('href')) { attributes.href = $a.attr('href'); }
if ($a.attr('title')) { attributes.title = $a.attr('title'); }
// create the div
- var $regionDiv = createRegionDiv(regions, index, attributes);
+ var $regionDiv = createRegionDiv(data, regions, index, attributes);
var $contents = $a.contents().clone();
$regionDiv.append($contents);
});
@@ -462,13 +460,7 @@
var handleRedisplay = function (evt) {
var data = this;
console.debug("regions: handleRedisplay");
- // renderRegions(data);
- };
-
- // event handler
- var handleDragZoom = function (evt, zoomArea) {
- // console.debug("regions: handleDragZoom, zoomArea:", zoomArea);
- // var data = this;
+ //renderRegions(data);
};
// plugin installation called by digilib on plugin object.
@@ -500,9 +492,8 @@
$data.on('setup', handleSetup);
$data.on('update', handleUpdate);
$data.on('redisplay', handleRedisplay);
- $data.on('dragZoom', handleDragZoom);
var settings = data.settings;
- var selector = data.settings.regionContentSelector;
+ var selector = settings.regionContentSelector;
settings.hasRegionContent = $elem.has(selector).length > 0;
// neither URL-defined regions nor buttons when regions are predefined in HTML
if (!settings.hasRegionContent) {