# HG changeset patch # User robcast # Date 1297377661 -3600 # Node ID 19754e80cc9fb019a073b61891415233b4ef591a # Parent 6d7c51e4724b2e9247ff855bc9e50d6a245ef6de# Parent 33b5477f8d84cc3e76f0d3dee73e8d26f4dd06dd merge with 33b5477f8d84cc3e76f0d3dee73e8d26f4dd06dd diff -r 6d7c51e4724b -r 19754e80cc9f client/digitallibrary/jquery/jquery.digilib.js --- a/client/digitallibrary/jquery/jquery.digilib.js Thu Feb 10 22:46:17 2011 +0100 +++ b/client/digitallibrary/jquery/jquery.digilib.js Thu Feb 10 23:41:01 2011 +0100 @@ -208,7 +208,7 @@ 'ddpix' : null, 'ddpiy' : null, // list of digilib parameters - 'digilibParamNames' : ['fn','pn','ww','wh','wx','wy','ws','mo','rot','cont','brgt','rgbm','rgba','mk','clop'], + 'digilibParamNames' : ['fn','pn','ww','wh','wx','wy','ws','mo','rot','cont','brgt','rgbm','rgba','ddpi','mk','clop'], // digilib parameter defaults 'mk' : '', 'clop' : '', @@ -604,8 +604,15 @@ }, // calibrate (only faking) - calibrate : function (data) { - loadImageInfo(data); + calibrate : function (data, res) { + var oldRes = data.settings.ddpi; + if (res == null) { + res = window.prompt("Display resolution (dpi)", oldRes); + } + if (res != null) { + data.settings.ddpi = res; + redisplay(data); + } }, // set image scale mode @@ -1173,9 +1180,10 @@ }; // create Transform from area and $img - var getImgTrafo = function ($img, area, rot, hmir, vmir, mode, imgInfo) { + var getImgTrafo = function ($img, area, rot, hmir, vmir, mode, data) { var picrect = geom.rectangle($img); if (mode != null) { + var imgInfo = data.imgInfo; if (mode === 'pixel') { // scaler mo=clip - image area size does not come from ww, wh if (imgInfo != null) { @@ -1185,6 +1193,16 @@ console.error("No image info for pixel mode!"); } } + if (mode === 'size') { + // scaler mo=osize - image area size does not come from ww, wh + if (imgInfo != null) { + var ddpi = parseFloat(data.settings.ddpi); + area.width = (picrect.width / ddpi) / (imgInfo.width / imgInfo.dpi_x); + area.height = (picrect.height / ddpi) / (imgInfo.height / imgInfo.dpi_y); + } else { + console.error("No image info for original size mode!"); + } + } } var trafo = geom.transform(); // move zoom area offset to center @@ -1223,7 +1241,7 @@ // create Transform from current zoomArea and image size data.imgTrafo = getImgTrafo($img, data.zoomArea, data.settings.rot, data.scalerFlags.hmir, data.scalerFlags.vmir, - data.scaleMode, data.imgInfo); + data.scaleMode, data); // console.debug("imgTrafo=", data.imgTrafo); } }; @@ -1284,7 +1302,7 @@ // show zoom area indicator on bird's eye view var renderBirdArea = function (data) { - if (data.$birdImg == null) return; + if (data.$birdImg == null || ! data.$birdImg.get(0).complete) return; var $birdZoom = data.$birdZoom; var zoomArea = data.zoomArea; var normalSize = isFullArea(zoomArea); diff -r 6d7c51e4724b -r 19754e80cc9f servlet/src/digilib/image/ImageJobDescription.java --- a/servlet/src/digilib/image/ImageJobDescription.java Thu Feb 10 22:46:17 2011 +0100 +++ b/servlet/src/digilib/image/ImageJobDescription.java Thu Feb 10 23:41:01 2011 +0100 @@ -298,12 +298,20 @@ if ((origResX == 0) || (origResY == 0)) { throw new ImageOpException("Missing image DPI information!"); } - if ((getAsFloat("ddpix") == 0) || (getAsFloat("ddpiy") == 0)) { - throw new ImageOpException("Missing display DPI information!"); + float ddpix = getAsFloat("ddpix"); + float ddpiy = getAsFloat("ddpiy"); + if (ddpix == 0 || ddpiy == 0) { + float ddpi = getAsFloat("ddpi"); + if (ddpi == 0) { + throw new ImageOpException("Missing display DPI information!"); + } else { + ddpix = ddpi; + ddpiy = ddpi; + } } // calculate absolute scale factor - float sx = getAsFloat("ddpix") / origResX; - float sy = getAsFloat("ddpiy") / origResY; + float sx = ddpix / origResX; + float sy = ddpiy / origResY; // currently only same scale -- mean value scaleXY = (sx + sy) / 2f; } else {