comparison client/digitallibrary/jquery/jquery.digilib.js @ 633:73357f3dec20 jquery

rendering marks works now
author robcast
date Tue, 18 Jan 2011 16:06:22 +0100
parents 4f7b52b97738
children 34ee220a664b
comparison
equal deleted inserted replaced
631:4f7b52b97738 633:73357f3dec20
211 settings : elemSettings 211 settings : elemSettings
212 }; 212 };
213 // store in data element 213 // store in data element
214 $elem.data('digilib', data); 214 $elem.data('digilib', data);
215 } 215 }
216 unpackParams(data);
216 // create HTML structure 217 // create HTML structure
217 setupScalerDiv(data); 218 setupScalerDiv(data);
218 setupButtons(data, 'actionsStandard'); 219 setupButtons(data, 'actionsStandard');
219 // bird's eye view creation - TODO: could be deferred? 220 // bird's eye view creation - TODO: could be deferred?
220 setupBirdviewDiv(data); 221 setupBirdviewDiv(data);
363 var zoomArea = geom.rectangle(settings.wx, settings.wy, settings.ww, settings.wh); 364 var zoomArea = geom.rectangle(settings.wx, settings.wy, settings.ww, settings.wh);
364 settings.zoomArea = zoomArea; 365 settings.zoomArea = zoomArea;
365 366
366 // read marks 367 // read marks
367 var marks = []; 368 var marks = [];
368 if (query.indexOf(";") >= 0) { 369 var mk = settings.mk || '';
369 var pa = query.split(";"); // old format with ";" 370 if (mk.indexOf(";") >= 0) {
371 var pa = mk.split(";"); // old format with ";"
370 } else { 372 } else {
371 var pa = query.split(","); // new format 373 var pa = mk.split(","); // new format
372 } 374 }
373 for (var i = 0; i < pa.length ; i++) { 375 for (var i = 0; i < pa.length ; i++) {
374 var pos = pa[i].split("/"); 376 var pos = pa[i].split("/");
375 if (pos.length > 1) marks.push(geom.position(pos[0], pos[1])); 377 if (pos.length > 1) {
378 marks.push(geom.position(pos[0], pos[1]));
379 }
376 } 380 }
377 settings.marks = marks; 381 settings.marks = marks;
378 }; 382 };
379 383
380 // put objects back into parameters 384 // put objects back into parameters
547 $(this).digilib('toggleAboutDiv'); 551 $(this).digilib('toggleAboutDiv');
548 }); 552 });
549 }; 553 };
550 554
551 // returns function for load event of scaler img 555 // returns function for load event of scaler img
552 var scalerImgLoadedFn = function(data) { 556 var scalerImgLoadedFn = function (data) {
553 var settings = data.settings; 557 var settings = data.settings;
554 var $elem = data.target; 558 var $elem = data.target;
555 var $img = data.img; 559 var $img = data.img;
556 560
557 return function() { 561 return function () {
558 console.debug("img loaded! this=", this, " data=", data); 562 console.debug("img loaded! this=", this, " data=", data);
559 var area = settings.zoomArea; 563 var area = settings.zoomArea;
560 // create Transform from current area and picsize 564 // create Transform from current area and picsize
561 var picpos = $img.offset(); 565 var picpos = $img.offset();
562 var picrect = geom.rectangle(picpos.left, picpos.top, $img.width(), $img.height()); 566 var picrect = geom.rectangle(picpos.left, picpos.top, $img.width(), $img.height());
567 // scale to screen size 571 // scale to screen size
568 trafo.concat(trafo.getScale(picrect)); 572 trafo.concat(trafo.getScale(picrect));
569 trafo.concat(trafo.getTranslation(picrect)); 573 trafo.concat(trafo.getTranslation(picrect));
570 data.imgTrafo = trafo; 574 data.imgTrafo = trafo;
571 // display marks 575 // display marks
572 //digilib.renderMarks(); 576 renderMarks(data);
573 //digilib.showBirdDiv(isBirdDivVisible); 577 //digilib.showBirdDiv(isBirdDivVisible);
574 //digilib.showArrows(); // show arrow overlays for zoom navigation 578 //digilib.showArrows(); // show arrow overlays for zoom navigation
575 579
576 }; 580 };
581 };
582
583 // place marks on the image
584 var renderMarks = function (data) {
585 var $elem = data.target;
586 var marks = data.settings.marks;
587 for (var i = 0; i < marks.length; i++) {
588 var mark = marks[i];
589 if (data.settings.zoomArea.containsPosition(mark)) {
590 var mpos = data.imgTrafo.transform(mark);
591 // create mark
592 var html = '<div class="mark">'+(i+1)+'</div>';
593 var $mark = $(html);
594 $elem.append($mark);
595 $mark.offset({ left : mpos.x, top : mpos.y});
596 }
597 }
577 }; 598 };
578 599
579 // auxiliary function to crop senseless precision 600 // auxiliary function to crop senseless precision
580 var cropFloat = function (x) { 601 var cropFloat = function (x) {
581 return parseInt(10000 * x) / 10000; 602 return parseInt(10000 * x) / 10000;