Mercurial > hg > digilib-old
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 |