Mercurial > hg > digilib
changeset 1340:758036e8e8ed
more refactoring for renderShape
author | hertzhaft |
---|---|
date | Sun, 01 Feb 2015 16:03:29 +0100 |
parents | 8a0cdf624dc2 |
children | 77b2a646767b |
files | webapp/src/main/webapp/jquery/jquery.digilib.vector.js |
diffstat | 1 files changed, 19 insertions(+), 44 deletions(-) [+] |
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/jquery.digilib.vector.js Sun Feb 01 15:40:29 2015 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.vector.js Sun Feb 01 16:03:29 2015 +0100 @@ -360,104 +360,79 @@ }; $.each(coords, createHandle); }; + // convert coords into an array of screen points + var p = $.map(coords, function(coord) { + return trafo.transform(geom.position(coord)); + }); + var p1 = p[0]; + var p2 = p[1]; + var $elem; // render the shape - if (gt === 'Point') { + if (gt === 'Point') { /* * Point */ - var p1 = trafo.transform(geom.position(coords[0])); // point uses pin-like path of size 3*pu var pu = hs / 3; - var $elem = $(svgElement('path', { + $elem = $(svgElement('path', { 'id': id, 'class': cssclass, 'd': 'M '+p1.x+','+p1.y+' l '+2*pu+','+pu+' c '+2*pu+','+pu+' '+0+','+3*pu+' '+(-pu)+','+pu+' Z', 'stroke': stroke, 'stroke-width': strokeWidth, 'fill': fill, 'style': style})); - shape.$elem = $elem; - $svg.append($elem); - if (props.editable) { - $elem.one("mousedown.dlVertexDrag", getVertexDragHandler(data, shape, 0)); - } } else if (gt === 'Line') { /* * Line */ - var p1 = trafo.transform(geom.position(coords[0])); - var p2 = trafo.transform(geom.position(coords[1])); - var $elem = $(svgElement('line', { + $elem = $(svgElement('line', { 'id': id, 'class': cssclass, 'x1': p1.x, 'y1': p1.y, 'x2': p2.x, 'y2': p2.y, 'stroke': stroke, 'stroke-width': strokeWidth, 'style': style})); - shape.$elem = $elem; - $svg.append($elem); - createHandles(shape); } else if (gt === 'Rectangle') { /* * Rectangle */ - var p1 = trafo.transform(geom.position(coords[0])); - var p2 = trafo.transform(geom.position(coords[1])); var rect = geom.rectangle(p1, p2); - var $elem = $(svgElement('rect', { + $elem = $(svgElement('rect', { 'id': id, 'class': cssclass, 'x': rect.x, 'y': rect.y, 'width': rect.width, 'height': rect.height, 'stroke': stroke, 'stroke-width': strokeWidth, 'fill': fill, 'style': style})); - shape.$elem = $elem; - $svg.append($elem); - createHandles(shape); } else if (gt === 'Polygon') { /* * Polygon */ - var ps = []; - for (var i in coords) { - ps[i] = trafo.transform(geom.position(coords[i])); - } - var $elem = $(svgElement('polygon', { + $elem = $(svgElement('polygon', { 'id': id, 'class': cssclass, - 'points': ps.join(" "), + 'points': p.join(" "), 'stroke': stroke, 'stroke-width': strokeWidth, 'fill': fill, 'style': style})); - shape.$elem = $elem; - $svg.append($elem); - createHandles(shape); } else if (gt === 'LineString') { /* * Polyline */ - var ps = []; - for (var i in coords) { - ps[i] = trafo.transform(geom.position(coords[i])); - } - var $elem = $(svgElement('polyline', { + $elem = $(svgElement('polyline', { 'id': id, 'class': cssclass, - 'points': ps.join(" "), + 'points': p.join(" "), 'stroke': stroke, 'stroke-width': strokeWidth, 'fill': 'none', 'style': style})); - shape.$elem = $elem; - $svg.append($elem); - createHandles(shape); } else if (gt === 'Circle') { /* * Circle */ - var p1 = trafo.transform(geom.position(coords[0])); - var p2 = trafo.transform(geom.position(coords[1])); - var $elem = $(svgElement('circle', { + $elem = $(svgElement('circle', { 'id': id, 'class': cssclass, 'cx': p1.x, 'cy': p1.y, 'r' : p1.distance(p2), 'fill' : 'none', 'stroke': stroke, 'stroke-width': strokeWidth, 'style': style})); - shape.$elem = $elem; - $svg.append($elem); - createHandles(shape); } else { console.error("Unable to render shape type:", gt); return; } + $svg.append($elem); + shape.$elem = $elem; + createHandles(shape); $(data).trigger("renderShape", shape); };