Mercurial > hg > digilib
diff client/digitallibrary/jquery/jquery.digilib.js @ 657:b0c6cc4a0932 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 | cad479ecb089 |
children | 934da7e40031 |
line wrap: on
line diff
--- a/client/digitallibrary/jquery/jquery.digilib.js Sun Jan 23 00:26:07 2011 +0100 +++ b/client/digitallibrary/jquery/jquery.digilib.js Mon Jan 24 00:13:16 2011 +0100 @@ -406,8 +406,6 @@ redisplay(data); } - - }; @@ -775,15 +773,32 @@ }; // create Transform from area and $img - var getImgTrafo = function ($img, area) { + var getImgTrafo = function ($img, area, data) { var picrect = geom.rectangle($img); var trafo = geom.transform(); - // subtract area offset and size + // zoom area offset trafo.concat(trafo.getTranslation(geom.position(-area.x, -area.y))); + // zoom area size trafo.concat(trafo.getScale(geom.size(1/area.width, 1/area.height))); - // scale to screen size + // rotate + if (data) { + var rot = trafo.getRotationAround(-parseFloat(data.settings.rot), + geom.position(0.5 * area.width + area.x, 0.5 * area.height + area.y)); + trafo.concat(rot); + } + // scale to screen position and size trafo.concat(trafo.getScale(picrect)); trafo.concat(trafo.getTranslation(picrect)); + /* if (data && data.settings.rot) { + var rot = trafo.getRotationAround(-data.settings.rot, + geom.position(0.5 * picrect.width + picrect.x, 0.5 * picrect.height + picrect.y)); + //var trans1 = trafo.getTranslation(geom.position(-0.5*picrect.width, -0.5*picrect.height)); + //var rot = trafo.getRotation(data.settings.rot); + //var trans2 = trafo.getTranslation(geom.position(0.5*picrect.width, 0.5*pirect.height)); + //trafo.concat(trans1); + trafo.concat(rot); + //trafo.concat(trans2); + } */ return trafo; }; @@ -793,7 +808,7 @@ return function () { console.debug("img loaded! this=", this, " data=", data); // create Transform from current area and picsize - data.imgTrafo = getImgTrafo($img, data.zoomArea); + data.imgTrafo = getImgTrafo($img, data.zoomArea, data); // display marks renderMarks(data); //digilib.showArrows(); // show arrow overlays for zoom navigation @@ -821,6 +836,7 @@ var mark = marks[i]; if (data.zoomArea.containsPosition(mark)) { var mpos = data.imgTrafo.transform(mark); + console.debug("renderMarks: mpos=",mpos); // create mark var html = '<div class="mark">'+(i+1)+'</div>'; var $mark = $(html); @@ -841,7 +857,7 @@ // offset minus frame width $ind.offset({ left : indRect.x-2, top : indRect.y-2 }); $ind.css(data.settings.birdIndicatorStyle); - } + }; // zooms by the given factor var zoomBy = function(data, factor) {