Mercurial > hg > digilib-old
comparison client/digitallibrary/jquery/jquery.digilib.js @ 664:d5a5ee4cbf04 jquery
work on getting transformation to work with rotation (currently still doesn't)
author | robcast |
---|---|
date | Mon, 24 Jan 2011 00:13:16 +0100 |
parents | 9791a2cec863 |
children | 3de056c96bcf |
comparison
equal
deleted
inserted
replaced
663:9791a2cec863 | 664:d5a5ee4cbf04 |
---|---|
404 } | 404 } |
405 data.settings.cont = factor; | 405 data.settings.cont = factor; |
406 redisplay(data); | 406 redisplay(data); |
407 } | 407 } |
408 | 408 |
409 | |
410 | |
411 | 409 |
412 }; | 410 }; |
413 | 411 |
414 // returns parameters from page url | 412 // returns parameters from page url |
415 var parseQueryParams = function() { | 413 var parseQueryParams = function() { |
773 } | 771 } |
774 return isVisible; | 772 return isVisible; |
775 }; | 773 }; |
776 | 774 |
777 // create Transform from area and $img | 775 // create Transform from area and $img |
778 var getImgTrafo = function ($img, area) { | 776 var getImgTrafo = function ($img, area, data) { |
779 var picrect = geom.rectangle($img); | 777 var picrect = geom.rectangle($img); |
780 var trafo = geom.transform(); | 778 var trafo = geom.transform(); |
781 // subtract area offset and size | 779 // zoom area offset |
782 trafo.concat(trafo.getTranslation(geom.position(-area.x, -area.y))); | 780 trafo.concat(trafo.getTranslation(geom.position(-area.x, -area.y))); |
781 // zoom area size | |
783 trafo.concat(trafo.getScale(geom.size(1/area.width, 1/area.height))); | 782 trafo.concat(trafo.getScale(geom.size(1/area.width, 1/area.height))); |
784 // scale to screen size | 783 // rotate |
784 if (data) { | |
785 var rot = trafo.getRotationAround(-parseFloat(data.settings.rot), | |
786 geom.position(0.5 * area.width + area.x, 0.5 * area.height + area.y)); | |
787 trafo.concat(rot); | |
788 } | |
789 // scale to screen position and size | |
785 trafo.concat(trafo.getScale(picrect)); | 790 trafo.concat(trafo.getScale(picrect)); |
786 trafo.concat(trafo.getTranslation(picrect)); | 791 trafo.concat(trafo.getTranslation(picrect)); |
792 /* if (data && data.settings.rot) { | |
793 var rot = trafo.getRotationAround(-data.settings.rot, | |
794 geom.position(0.5 * picrect.width + picrect.x, 0.5 * picrect.height + picrect.y)); | |
795 //var trans1 = trafo.getTranslation(geom.position(-0.5*picrect.width, -0.5*picrect.height)); | |
796 //var rot = trafo.getRotation(data.settings.rot); | |
797 //var trans2 = trafo.getTranslation(geom.position(0.5*picrect.width, 0.5*pirect.height)); | |
798 //trafo.concat(trans1); | |
799 trafo.concat(rot); | |
800 //trafo.concat(trans2); | |
801 } */ | |
787 return trafo; | 802 return trafo; |
788 }; | 803 }; |
789 | 804 |
790 // returns function for load event of scaler img | 805 // returns function for load event of scaler img |
791 var scalerImgLoadedHandler = function (data) { | 806 var scalerImgLoadedHandler = function (data) { |
792 var $img = data.$img; | 807 var $img = data.$img; |
793 return function () { | 808 return function () { |
794 console.debug("img loaded! this=", this, " data=", data); | 809 console.debug("img loaded! this=", this, " data=", data); |
795 // create Transform from current area and picsize | 810 // create Transform from current area and picsize |
796 data.imgTrafo = getImgTrafo($img, data.zoomArea); | 811 data.imgTrafo = getImgTrafo($img, data.zoomArea, data); |
797 // display marks | 812 // display marks |
798 renderMarks(data); | 813 renderMarks(data); |
799 //digilib.showArrows(); // show arrow overlays for zoom navigation | 814 //digilib.showArrows(); // show arrow overlays for zoom navigation |
800 }; | 815 }; |
801 }; | 816 }; |
819 // TODO: clear marks first(?) | 834 // TODO: clear marks first(?) |
820 for (var i = 0; i < marks.length; i++) { | 835 for (var i = 0; i < marks.length; i++) { |
821 var mark = marks[i]; | 836 var mark = marks[i]; |
822 if (data.zoomArea.containsPosition(mark)) { | 837 if (data.zoomArea.containsPosition(mark)) { |
823 var mpos = data.imgTrafo.transform(mark); | 838 var mpos = data.imgTrafo.transform(mark); |
839 console.debug("renderMarks: mpos=",mpos); | |
824 // create mark | 840 // create mark |
825 var html = '<div class="mark">'+(i+1)+'</div>'; | 841 var html = '<div class="mark">'+(i+1)+'</div>'; |
826 var $mark = $(html); | 842 var $mark = $(html); |
827 $elem.append($mark); | 843 $elem.append($mark); |
828 $mark.offset({left : mpos.x, top : mpos.y}); | 844 $mark.offset({left : mpos.x, top : mpos.y}); |
839 $ind.width(indRect.width); | 855 $ind.width(indRect.width); |
840 $ind.height(indRect.height); | 856 $ind.height(indRect.height); |
841 // offset minus frame width | 857 // offset minus frame width |
842 $ind.offset({ left : indRect.x-2, top : indRect.y-2 }); | 858 $ind.offset({ left : indRect.x-2, top : indRect.y-2 }); |
843 $ind.css(data.settings.birdIndicatorStyle); | 859 $ind.css(data.settings.birdIndicatorStyle); |
844 } | 860 }; |
845 | 861 |
846 // zooms by the given factor | 862 // zooms by the given factor |
847 var zoomBy = function(data, factor) { | 863 var zoomBy = function(data, factor) { |
848 var area = data.zoomArea; | 864 var area = data.zoomArea; |
849 var newarea = area.copy(); | 865 var newarea = area.copy(); |