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
master
Alexis Deveria 2009-09-29 18:11:52 +00:00
parent 490b762441
commit ca24dd3caf
1 changed files with 22 additions and 17 deletions

View File

@ -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 = [];
};