Mercurial > hg > digilib
comparison client/digitallibrary/jquery/jquery.digilib.js @ 620:b930fa64c684 jquery
scalerImgLoaded sets up img trafo
author | robcast |
---|---|
date | Mon, 17 Jan 2011 23:57:09 +0100 |
parents | 1035891fb6f1 |
children | 7f97716b901c |
comparison
equal
deleted
inserted
replaced
619:1035891fb6f1 | 620:b930fa64c684 |
---|---|
145 // repository url | 145 // repository url |
146 'reposUrl' : 'http://digilib.berlios.de', | 146 'reposUrl' : 'http://digilib.berlios.de', |
147 // base URL to Scaler servlet | 147 // base URL to Scaler servlet |
148 'scalerBaseUrl' : 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler', | 148 'scalerBaseUrl' : 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler', |
149 // list of Scaler parameters | 149 // list of Scaler parameters |
150 'scalerParamNames' : ['fn','pn','dw','dh','ww','wh','wx','wy','ws','mo', | 150 'scalerParamNames' : ['fn','pn','dw','dh','ww','wh','wx','wy','ws','mo', |
151 'rot','cont','brgt','rgbm','rgba','ddpi','ddpix','ddpiy'], | 151 'rot','cont','brgt','rgbm','rgba','ddpi','ddpix','ddpiy'], |
152 // Scaler parameter defaults | |
153 'ww' : 1.0, | |
154 'wh' : 1.0, | |
155 'wx' : 0.0, | |
156 'wy' : 0.0, | |
157 'ws' : 1.0, | |
152 // mode of operation. | 158 // mode of operation. |
153 // fullscreen: takes parameters from page URL, keeps state in page URL | 159 // fullscreen: takes parameters from page URL, keeps state in page URL |
154 // embedded: takes parameters from Javascript options, keeps state inside object | 160 // embedded: takes parameters from Javascript options, keeps state inside object |
155 'interactionMode' : 'fullscreen', | 161 'interactionMode' : 'fullscreen', |
156 // actions | 162 // actions |
198 } else { | 204 } else { |
199 elemSettings = $.extend({}, settings, parseImgParams($elem)); | 205 elemSettings = $.extend({}, settings, parseImgParams($elem)); |
200 }; | 206 }; |
201 // store $(this) element in the settings | 207 // store $(this) element in the settings |
202 elemSettings.digilibRoot = $elem; | 208 elemSettings.digilibRoot = $elem; |
209 data = { | |
210 target : $elem, | |
211 settings : elemSettings | |
212 }; | |
203 // store in data element | 213 // store in data element |
204 $elem.data('digilib', { | 214 $elem.data('digilib', data); |
205 target : $elem, | |
206 settings : elemSettings | |
207 }); | |
208 } | 215 } |
209 // create HTML structure | 216 // create HTML structure |
210 setupScalerDiv($elem, elemSettings); | 217 setupScalerDiv(data); |
211 setupButtons($elem, elemSettings, 'actionsStandard'); | 218 setupButtons($elem, elemSettings, 'actionsStandard'); |
212 // bird's eye view creation - could be deferred? | 219 // bird's eye view creation - TODO: could be deferred? |
213 setupBirdviewDiv($elem, elemSettings); | 220 setupBirdviewDiv($elem, elemSettings); |
214 // about window creation - could be deferred? restrict to only one item? | 221 // about window creation - TODO: could be deferred? restrict to only one item? |
215 setupAboutDiv($elem, elemSettings); | 222 setupAboutDiv($elem, elemSettings); |
216 }); | 223 }); |
217 }, | 224 }, |
218 | 225 |
219 // clean up digilib | 226 // clean up digilib |
311 return null; | 318 return null; |
312 } | 319 } |
313 var pos = src.indexOf('?'); | 320 var pos = src.indexOf('?'); |
314 var query = (pos < 0) ? '' : src.substring(pos + 1); | 321 var query = (pos < 0) ? '' : src.substring(pos + 1); |
315 var scalerUrl = src.substring(0, pos); | 322 var scalerUrl = src.substring(0, pos); |
316 var hash = parseQueryString(query); | 323 var params = parseQueryString(query); |
317 hash.scalerBaseUrl = scalerUrl; | 324 params.scalerBaseUrl = scalerUrl; |
318 // console.log(hash); | 325 // console.log(hash); |
319 return hash; | 326 return params; |
320 }; | 327 }; |
321 | 328 |
322 // parses query parameter string into parameter object | 329 // parses query parameter string into parameter object |
323 var parseQueryString = function(query) { | 330 var parseQueryString = function(query) { |
324 var pairs = query.split("&"); | 331 var pairs = query.split("&"); |
325 var hash = {}; | 332 var params = {}; |
326 for (var i = 0; i < pairs.length; i++) { | 333 for (var i = 0; i < pairs.length; i++) { |
327 var pair = pairs[i].split("="); | 334 var pair = pairs[i].split("="); |
328 if (pair.length === 2) { | 335 if (pair.length === 2) { |
329 hash[pair[0]] = pair[1]; | 336 params[pair[0]] = pair[1]; |
330 }; | 337 }; |
331 }; | 338 }; |
332 return hash; | 339 return params; |
333 }; | 340 }; |
334 | 341 |
335 // returns a query string from key names from a parameter hash | 342 // returns a query string from key names from a parameter hash |
336 var makeParamString = function (settings, keys) { | 343 var makeParamString = function (settings, keys) { |
337 var paramString = ''; | 344 var paramString = ''; |
372 $img.attr('src', scalerUrl); | 379 $img.attr('src', scalerUrl); |
373 // TODO: update bird view? | 380 // TODO: update bird view? |
374 }; | 381 }; |
375 | 382 |
376 // creates HTML structure for digilib in elem | 383 // creates HTML structure for digilib in elem |
377 var setupScalerDiv = function ($elem, settings) { | 384 var setupScalerDiv = function (data) { |
385 var settings = data.settings; | |
386 var $elem = data.target; | |
378 var $img; | 387 var $img; |
379 if (settings.interactionMode === 'fullscreen') { | 388 if (settings.interactionMode === 'fullscreen') { |
380 // fullscreen | 389 // fullscreen |
381 var imgSize = getFullscreenImgSize($elem); | 390 var imgSize = getFullscreenImgSize($elem); |
382 settings.dw = imgSize.width; | 391 settings.dw = imgSize.width; |
398 $elem.empty(); // TODO: should we keep stuff for customization? | 407 $elem.empty(); // TODO: should we keep stuff for customization? |
399 var $scaler = $('<div class="scaler"/>'); | 408 var $scaler = $('<div class="scaler"/>'); |
400 $elem.append($scaler); | 409 $elem.append($scaler); |
401 $scaler.append($img); | 410 $scaler.append($img); |
402 $img.addClass('pic'); | 411 $img.addClass('pic'); |
403 $img.load(scalerImgLoadedFn(settings)); | 412 data.img = $img; |
413 $img.load(scalerImgLoadedFn(data)); | |
404 }; | 414 }; |
405 | 415 |
406 // creates HTML structure for buttons in elem | 416 // creates HTML structure for buttons in elem |
407 var setupButtons = function ($elem, settings, actionGroup) { | 417 var setupButtons = function ($elem, settings, actionGroup) { |
408 if (settings.interactionMode === 'fullscreen') { | 418 if (settings.interactionMode === 'fullscreen') { |
492 $(this).digilib('toggleAboutDiv'); | 502 $(this).digilib('toggleAboutDiv'); |
493 }); | 503 }); |
494 }; | 504 }; |
495 | 505 |
496 // returns function for load event of scaler img | 506 // returns function for load event of scaler img |
497 var scalerImgLoadedFn = function(settings) { | 507 var scalerImgLoadedFn = function(data) { |
508 var settings = data.settings; | |
509 var $elem = data.target; | |
510 var $img = data.img; | |
511 | |
498 return function() { | 512 return function() { |
499 console.debug("img loaded! settings=", settings); | 513 console.debug("img loaded! this=", this, " data=", data); |
514 var area = geom.rectangle(settings.wx, settings.wy, settings.ww, settings.wh); | |
515 settings.zoomArea = area; | |
516 // create Transform from current area and picsize | |
517 var picpos = $img.offset(); | |
518 var picrect = geom.rectangle(picpos.left, picpos.top, $img.width(), $img.height()); | |
519 var trafo = geom.transform(); | |
520 // subtract area offset and size | |
521 trafo.concat(trafo.getTranslation(geom.position(area.x, area.y))); | |
522 trafo.concat(trafo.getScale(geom.size(1/area.width, 1/area.height))); | |
523 // scale to screen size | |
524 trafo.concat(trafo.getScale(picrect)); | |
525 trafo.concat(trafo.getTranslation(picrect)); | |
526 data.imgTrafo = trafo; | |
527 // display marks | |
528 //digilib.renderMarks(); | |
529 //digilib.showBirdDiv(isBirdDivVisible); | |
530 //digilib.showArrows(); // show arrow overlays for zoom navigation | |
531 | |
500 }; | 532 }; |
501 }; | 533 }; |
502 // hook plugin into jquery | 534 // hook plugin into jquery |
503 $.fn.digilib = function(method) { | 535 $.fn.digilib = function(method) { |
504 if (methods[method]) { | 536 if (methods[method]) { |