Mercurial > hg > digilib
changeset 1368:186ef7695627
place handles along with shapes
author | hertzhaft |
---|---|
date | Sun, 22 Feb 2015 01:18:05 +0100 |
parents | 4711b8ffd77f |
children | 7bf408354341 |
files | webapp/src/main/webapp/jquery/jquery.digilib.measure.js webapp/src/main/webapp/jquery/jquery.digilib.vector.js |
diffstat | 2 files changed, 19 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/jquery.digilib.measure.js Sat Feb 21 23:34:13 2015 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.measure.js Sun Feb 22 01:18:05 2015 +0100 @@ -1191,10 +1191,11 @@ var p = props.screenpos; var g = shape.geometry; var vtx = props.vtx; - if (vtx > 1 || p.length > 2) { + if (p.length > 2) { + var pt = (vtx > 1) ? p[vtx] : p[2]; var d = p[0].delta(p[1]).toArray(); var line1 = geom.line(p[0], d); - var line2 = geom.line(p[2], d); // parallel (same slope) + var line2 = geom.line(pt, d); // parallel (same slope) var orth = line1.orthogonal(); p[3] = orth.intersection(line2); p[2] = p[3].copy().add(d);
--- a/webapp/src/main/webapp/jquery/jquery.digilib.vector.js Sat Feb 21 23:34:13 2015 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.vector.js Sun Feb 22 01:18:05 2015 +0100 @@ -575,18 +575,28 @@ */ var getVertexDragHandler = function (data, shape, vtx, onComplete) { var $document = $(document); + var imgRect = data.imgRect; var $shape = shape.$elem; var $handle = (shape.$vertexElems != null) ? shape.$vertexElems[vtx] : null; var shapeType = shape.geometry.type; - var imgRect = data.imgRect; + var props = shape.properties; + var pos = props.screenpos; var pStart; // save startpoint + var placeHandle = function (i, $handle) { + $handle.moveTo(pos[i]); + }; + + var placeHandles = function () { + $.each(shape.$vertexElems, placeHandle); + }; + var dragStart = function (evt) { // start dragging // cancel if not left-click if (evt.which != 1) return; pStart = geom.position(evt); - shape.properties.startpos = pStart; - shape.properties.vtx = vtx; + props.startpos = pStart; + props.vtx = vtx; $(data).trigger('positionShape', shape); $document.on("mousemove.dlVertexDrag", dragMove); $document.on("mouseup.dlVertexDrag", dragEnd); @@ -597,18 +607,17 @@ var dragMove = function (evt) { // dragging var pt = geom.position(evt); pt.clipTo(imgRect); - shape.properties.screenpos[vtx] = pt; + pos[vtx] = pt; $(data).trigger('positionShape', shape); if (isSupported(data, shapeType)) { // update shape object and trigger drag event shape.geometry.coordinates[vtx] = data.imgTrafo.invtransform(pt).toArray(); // update shape SVG element $shape.place(); + // move handles accordingly + placeHandles(); $(data).trigger('dragShape', shape); } - if ($handle != null) { - $handle.moveTo(pt); - } return false; };