Mercurial > hg > digilib
changeset 1556:9d754003c2d3
copy 2 files from branch measure-maps
author | hertzhaft |
---|---|
date | Fri, 28 Oct 2016 15:54:43 +0200 |
parents | fb4cb912dd51 |
children | f747edb6cc9a |
files | webapp/src/main/webapp/jquery/jquery.digilib.js webapp/src/main/webapp/jquery/jquery.digilib.vector.js |
diffstat | 2 files changed, 47 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/jquery.digilib.js Mon Oct 24 08:49:38 2016 +0200 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.js Fri Oct 28 15:54:43 2016 +0200 @@ -1280,7 +1280,9 @@ imgRect.getSize().adjustDiv($scaler); // show image in case it was hidden (for example in zoomDrag) $img.css('visibility', 'visible'); - $scaler.css({'opacity' : '1'}); + $img.fadeIn(); + // $scaler.css({'opacity' : '1'}); + $scaler.fadeTo('slow', 1); data.hasPreviewBg = false; // update display (render marks, etc.) updateDisplay(data); @@ -1410,18 +1412,14 @@ */ var setPreviewBg = function(data, newZoomArea) { var $scaler = data.$scaler; - var $img = data.$img; var imgTrafo = data.imgTrafo; var scalerPos = geom.position($scaler); var bgRect = null; - // hide the scaler img, show background of div instead - $img.css('visibility', 'hidden'); // use current image as first background var scalerCss = { - 'background-image' : 'url(' + $img.attr('src') + ')', + 'background-image' : 'url(' + data.$img.attr('src') + ')', 'background-repeat' : 'no-repeat', 'background-position' : '0px 0px', - 'opacity' : '0.7', 'cursor' : 'move' }; if (newZoomArea != null) { @@ -1463,6 +1461,7 @@ scalerCss[data.bgSizeName] += ', ' + Math.round(fullRect.width) + 'px ' + Math.round(fullRect.height) + 'px'; scalerCss['background-position'] += ', ' + Math.round(fullRect.x) + 'px '+ Math.round(fullRect.y) + 'px'; } + // console.debug('setPreviewBg', scalerCss); } $scaler.css(scalerCss); data.hasPreviewBg = true; @@ -1489,6 +1488,10 @@ $elem.find('.'+data.settings.cssPrefix+'overlay').hide(); // hide all overlays (marks/regions) startPos = geom.position(evt); delta = null; + // hide the scaler img, show background of div instead + $img.css('visibility', 'hidden'); + $img.hide(); + $scaler.fadeTo('slow', 0.7); // set low res background immediately on mousedown setPreviewBg(data); $document.on("mousemove.dlZoomDrag", dragMove); @@ -1518,7 +1521,9 @@ if (delta == null || delta.distance() < 2) { // no movement $img.css('visibility', 'visible'); - $scaler.css({'opacity' : '1', 'background-image' : 'none'}); + $img.fadeIn(); + $scaler.fadeTo('slow', 1); + // $scaler.css({'opacity' : '1', 'background-image' : 'none'}); data.hasPreviewBg = false; // unhide marks etc. updateDisplay(data);
--- a/webapp/src/main/webapp/jquery/jquery.digilib.vector.js Mon Oct 24 08:49:38 2016 +0200 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.vector.js Fri Oct 28 15:54:43 2016 +0200 @@ -66,7 +66,9 @@ // default SVG fill 'defaultFill' : 'none', // grab handle size - 'editHandleSize' : 10 + 'editHandleSize' : 10, + // handle type (square, diamond, circle, cross) + 'editHandleType' : 'square' }; var actions = { @@ -216,7 +218,8 @@ svgAttr: svgAttr, createScreenCoords: createScreenCoords, editShapeBegin: addEditHandles, - editShapeEnd: removeEditHandles + editShapeEnd: removeEditHandles, + redrawShape: redrawShape }); }; @@ -556,26 +559,26 @@ var addEditHandles = function (data, shape, layer) { var $svg = $(layer.svgElem); var trafo = data.imgTrafo; - // type of handle can be stated in layer - var type = layer.handleType; - var newHandle = data.handleFactory[type] || data.handleFactory['square']; + // type of handle can be stated in layer or in settings + var type = layer.handleType || data.settings.editHandleType; var handles = []; - var createHandle = function (i, item) { + var createHandle = data.handleFactory[type]; + var insertHandle = function (i, item) { var p = trafo.transform(geom.position(item)); - var $handle = newHandle(); + var $handle = createHandle(); + $handle.attr('vertex', i); $handle.moveTo(p); handles.push($handle); $svg.append($handle); return $handle; }; - var coords = shape.geometry.coordinates; - $.each(coords, createHandle); - // vertexElems must be defined before calling getVertexDragHandler() + $.each(shape.geometry.coordinates, insertHandle); shape.$vertexElems = handles; + // not needed? var done = function (data, shape, evt) { - unrenderShape(data, shape); - renderShape(data, shape, layer); - } + redrawShape(data, shape, layer); + }; + // vertexElems must be defined before calling getVertexDragHandler() var attachEvent = function (i, item) { item.one("mousedown.dlVertexDrag", getVertexDragHandler(data, shape, i, done)); }; @@ -635,7 +638,7 @@ } return geom.rectangle(xmin, ymin, xmax-xmin, ymax-ymin); }; - + /** * render a shape on screen. * @@ -659,12 +662,15 @@ } // create the SVG var $elem = data.shapeFactory[shapeType].svg(shape); + // let shape know where it is rendered shape.$elem = $elem; + shape.layer = layer; // place the SVG on screen createScreenCoords(data, shape); $elem.place(); // render the SVG $(layer.svgElem).append($elem); + // add adjustment handles if (shape.properties.editable) { addEditHandles(data, shape, layer); } @@ -689,6 +695,20 @@ }; /** + * re-render a shape. + * + * Removes the SVG element from layer and renders the (updated) shape again. + * + * @param data + * @param shape + * @param layer + */ + var redrawShape = function (data, shape, layer) { + unrenderShape(data, shape); + renderShape(data, shape, layer || shape.layer); + }; + + /** * return a vertexDragHandler function. * * @param data @@ -859,9 +879,8 @@ rerender = true; } if (rerender) { - unrenderShape(data, shape); shape.properties.vtx = vtx; - renderShape(data, shape, layer); + redrawShape(data, shape, layer); } } else { console.error("unknown event type!");