From ca24dd3caffba62172aad775259f58ea724f3c23 Mon Sep 17 00:00:00 2001 From: Alexis Deveria Date: Tue, 29 Sep 2009 18:11:52 +0000 Subject: [PATCH] Fixed polyedit on zoom and poly disappearing on serialization git-svn-id: http://svg-edit.googlecode.com/svn/trunk@736 eee81c28-f429-11dd-99c0-75d572ba1ddd --- editor/svgcanvas.js | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/editor/svgcanvas.js b/editor/svgcanvas.js index 17b960c7..50a70c63 100644 --- a/editor/svgcanvas.js +++ b/editor/svgcanvas.js @@ -1945,7 +1945,7 @@ function BatchCommand(text) { if (current_poly_pt_drag != -1 && current_poly) { var i = current_poly_pt_drag * 2; - var old_poly_pts = $.map(current_poly_pts, function(n){return n;}); + var old_poly_pts = $.map(current_poly_pts, function(n){return n/current_zoom;}); // if the image is rotated, then we must modify the x,y mouse coordinates // and rotate them into the shape's rotated coordinate system @@ -1968,10 +1968,10 @@ function BatchCommand(text) { // reset the path's d attribute using current_poly_pts var index = current_poly_pt_drag; - var node_x = (getPolyPoint(index)[0] - getPolyPoint(index-1)[0]) / current_zoom; - var node_y = (getPolyPoint(index)[1] - getPolyPoint(index-1)[1]) / current_zoom; - var next_x = getPolyPoint(index+1)[0] / current_zoom; - var next_y = getPolyPoint(index+1)[1] / current_zoom; + var node_x = (getPolyPoint(index)[0] - getPolyPoint(index-1)[0]); + var node_y = (getPolyPoint(index)[1] - getPolyPoint(index-1)[1]); + var next_x = getPolyPoint(index+1)[0]; + var next_y = getPolyPoint(index+1)[1]; var item = current_poly.pathSegList.getItem(index); var next_index = index+1 >= (current_poly_pts/2).length ? 0 : index+1; @@ -2041,9 +2041,9 @@ function BatchCommand(text) { var id2 = (current_poly_pt_drag-1)+'c2'; var line = document.getElementById("ctrlLine_"+id2); if(line) { - var x2 = line.getAttribute('x2') - 0 + x_diff; - var y2 = line.getAttribute('y2') - 0 + y_diff; - addControlPointGrip(x2,y2, mouse_x,mouse_y, id2); + var x2 = line.getAttribute('x2') - 0 + x_diff*current_zoom; + var y2 = line.getAttribute('y2') - 0 + y_diff*current_zoom; + addControlPointGrip(x2,y2, mouse_x,mouse_y, id2, true); } } @@ -2051,9 +2051,9 @@ function BatchCommand(text) { var id1 = (current_poly_pt_drag)+'c1'; var line = document.getElementById("ctrlLine_"+id1); if(line) { - var x2 = line.getAttribute('x2') - 0 + x_diff; - var y2 = line.getAttribute('y2') - 0 + y_diff; - addControlPointGrip(x2,y2, mouse_x,mouse_y, id1); + var x2 = line.getAttribute('x2') - 0 + x_diff*current_zoom; + var y2 = line.getAttribute('y2') - 0 + y_diff*current_zoom; + addControlPointGrip(x2,y2, mouse_x,mouse_y, id1, true); } } @@ -2239,7 +2239,7 @@ function BatchCommand(text) { }); }; - var getPolyPoint = function(index) { + var getPolyPoint = function(index, raw_val) { var len = current_poly_pts.length; var pt_num = len/2; if(index < 0) { @@ -2247,10 +2247,16 @@ function BatchCommand(text) { } else if(index >= pt_num) { index -= pt_num; } - return [current_poly_pts[index*2], current_poly_pts[index*2 + 1]]; + var z = raw_val?1:current_zoom; + return [current_poly_pts[index*2] / z, current_poly_pts[index*2 + 1] / z]; } - var addControlPointGrip = function(x, y, source_x, source_y, id) { + var addControlPointGrip = function(x, y, source_x, source_y, id, raw_val) { + if(!raw_val) { + x *= current_zoom; y *= current_zoom; + source_x *= current_zoom; source_y *= current_zoom; + } + // create the container of all the control point grips var ctrlPointGripContainer = document.getElementById("ctrlpointgrip_container"); if (!ctrlPointGripContainer) { @@ -2287,7 +2293,7 @@ function BatchCommand(text) { assignAttributes(pointGrip, { 'id': "ctrlpointgrip_" + id, 'display': "none", - 'r': 5, + 'r': 4, 'fill': "#AAA", 'stroke': "#55F", 'stroke-width': 1, @@ -3147,12 +3153,11 @@ function BatchCommand(text) { }; this.clearPoly = function(remove) { - if(remove && current_poly_pts.length > 0) { + if(remove && current_mode == 'poly') { var elem = svgdoc.getElementById(getId()); if(elem) elem.parentNode.removeChild(elem); } removeAllPointGripsFromPoly(); - current_poly = null; current_poly_pts = []; };