comparison client/digitallibrary/jquery/jquery.digilib.js @ 813:1a7b14deae3a jquery

regions plugin works, inclunding event handlers
author hertzhaft
date Mon, 21 Feb 2011 01:03:55 +0100
parents 1b1728926534
children 40591c00ef41
comparison
equal deleted inserted replaced
812:b484631f37c1 813:1a7b14deae3a
789 settings.mk = ''; 789 settings.mk = '';
790 for (var i = 0; i < data.marks.length; i++) { 790 for (var i = 0; i < data.marks.length; i++) {
791 if (i) { 791 if (i) {
792 settings.mk += ','; 792 settings.mk += ',';
793 } 793 }
794 settings.mk += cropFloat(data.marks[i].x).toString() + 794 settings.mk +=
795 '/' + cropFloat(data.marks[i].y).toString(); 795 cropFloatStr(data.marks[i].x) + '/' +
796 cropFloatStr(data.marks[i].y);
796 } 797 }
797 } 798 }
798 // Scaler flags 799 // Scaler flags
799 if (data.scalerFlags) { 800 if (data.scalerFlags) {
800 var mo = ''; 801 var mo = '';
1234 // handler for imageInfo loaded event 1235 // handler for imageInfo loaded event
1235 var handleImageInfo = function (evt, json) { 1236 var handleImageInfo = function (evt, json) {
1236 var data = this; 1237 var data = this;
1237 updateDisplay(data); 1238 updateDisplay(data);
1238 }; 1239 };
1239 1240
1240 // place marks on the image 1241 // place marks on the image
1241 var renderMarks = function (data) { 1242 var renderMarks = function (data) {
1242 if (data.$img == null || data.imgTrafo == null) return; 1243 if (data.$img == null || data.imgTrafo == null) return;
1243 console.debug("rendermarks img=",data.$img," imgtrafo=",data.imgTrafo); 1244 console.debug("rendermarks img=",data.$img," imgtrafo=",data.imgTrafo);
1244 var $elem = data.$elem; 1245 var $elem = data.$elem;
1249 var mark = marks[i]; 1250 var mark = marks[i];
1250 if (data.zoomArea.containsPosition(mark)) { 1251 if (data.zoomArea.containsPosition(mark)) {
1251 var mpos = data.imgTrafo.transform(mark); 1252 var mpos = data.imgTrafo.transform(mark);
1252 console.debug("renderMarks: mpos=",mpos); 1253 console.debug("renderMarks: mpos=",mpos);
1253 // create mark 1254 // create mark
1254 var html = '<div class="mark">'+(i+1)+'</div>'; 1255 var html = '<div class="mark overlay">'+(i+1)+'</div>';
1255 var $mark = $(html); 1256 var $mark = $(html);
1257 $mark.attr("id", "dibilib.mark." + i);
1256 $elem.append($mark); 1258 $elem.append($mark);
1257 mpos.adjustDiv($mark); 1259 mpos.adjustDiv($mark);
1258 } 1260 }
1259 } 1261 }
1260 }; 1262 };
1360 // set zoom background 1362 // set zoom background
1361 var setZoomBG = function(data) { 1363 var setZoomBG = function(data) {
1362 var $scaler = data.$scaler; 1364 var $scaler = data.$scaler;
1363 var $img = data.$img; 1365 var $img = data.$img;
1364 var fullRect = null; 1366 var fullRect = null;
1365 // hide marks
1366 data.$elem.find('div.mark').hide();
1367 // hide the scaler img, show background of div instead 1367 // hide the scaler img, show background of div instead
1368 $img.css('visibility', 'hidden'); 1368 $img.css('visibility', 'hidden');
1369 var scalerCss = { 1369 var scalerCss = {
1370 'background-image' : 'url(' + $img.attr('src') + ')', 1370 'background-image' : 'url(' + $img.attr('src') + ')',
1371 'background-repeat' : 'no-repeat', 1371 'background-repeat' : 'no-repeat',
1403 var $scaler = data.$scaler; 1403 var $scaler = data.$scaler;
1404 var $img = data.$img; 1404 var $img = data.$img;
1405 1405
1406 // drag the image and load a new detail on mouse up 1406 // drag the image and load a new detail on mouse up
1407 var dragStart = function (evt) { 1407 var dragStart = function (evt) {
1408 console.debug("dragstart at=",evt); 1408 console.debug("dragstart at=", evt);
1409 // don't start dragging if not zoomed 1409 // don't start dragging if not zoomed
1410 if (isFullArea(data.zoomArea)) return false; 1410 if (isFullArea(data.zoomArea)) return false;
1411 $elem.find(".overlay").hide(); // hide all overlays (marks/regions)
1411 startPos = geom.position(evt); 1412 startPos = geom.position(evt);
1412 delta = null; 1413 delta = null;
1413 // set low res background immediately on mousedown 1414 // set low res background immediately on mousedown
1414 fullRect = setZoomBG(data); 1415 fullRect = setZoomBG(data);
1415 $document.bind("mousemove.dlZoomDrag", dragMove); 1416 $document.bind("mousemove.dlZoomDrag", dragMove);
1447 // no movement 1448 // no movement
1448 $img.css('visibility', 'visible'); 1449 $img.css('visibility', 'visible');
1449 $scaler.css({'opacity' : '1', 'background-image' : 'none'}); 1450 $scaler.css({'opacity' : '1', 'background-image' : 'none'});
1450 // unhide marks 1451 // unhide marks
1451 data.$elem.find('div.mark').show(); 1452 data.$elem.find('div.mark').show();
1453 $(data).trigger('redisplay');
1452 return false; 1454 return false;
1453 } 1455 }
1454 // get old zoom area (screen coordinates) 1456 // get old zoom area (screen coordinates)
1455 var za = geom.rectangle($img); 1457 var za = geom.rectangle($img);
1456 // move 1458 // move
1549 }; 1551 };
1550 1552
1551 // auxiliary function to crop senseless precision 1553 // auxiliary function to crop senseless precision
1552 var cropFloat = function (x) { 1554 var cropFloat = function (x) {
1553 return parseInt(10000 * x, 10) / 10000; 1555 return parseInt(10000 * x, 10) / 10000;
1556 };
1557
1558 // idem, string version
1559 var cropFloatStr = function (x) {
1560 return cropFloat(x).toString();
1554 }; 1561 };
1555 1562
1556 // fallback for console.log calls 1563 // fallback for console.log calls
1557 if (customConsole) { 1564 if (customConsole) {
1558 var logFunction = function(type) { 1565 var logFunction = function(type) {
1591 getQuality : getQuality, 1598 getQuality : getQuality,
1592 setQuality : setQuality, 1599 setQuality : setQuality,
1593 getScaleMode : getScaleMode, 1600 getScaleMode : getScaleMode,
1594 setScaleMode : setScaleMode, 1601 setScaleMode : setScaleMode,
1595 isFullArea : isFullArea, 1602 isFullArea : isFullArea,
1596 getBorderWidth : getBorderWidth 1603 isNumber : isNumber,
1604 getBorderWidth : getBorderWidth,
1605 cropFloat : cropFloat,
1606 cropFloatStr : cropFloatStr
1597 }; 1607 };
1598 1608
1599 // hook digilib plugin into jquery 1609 // hook digilib plugin into jquery
1600 $.fn.digilib = function (action) { 1610 $.fn.digilib = function (action) {
1601 // plugin extension mechanism, called when the plugins' code is read 1611 // plugin extension mechanism, called when the plugins' code is read