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();