Move id generation to a separate private method: getId() - this reduces the diff against the wave version considerably, as the wave version need to include the viewer id in the element id's to prevent them from clobbering eachothers new objects

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@34 eee81c28-f429-11dd-99c0-75d572ba1ddd
master
Vidar Hokstad 2009-06-05 12:33:02 +00:00
parent d1df328cd3
commit 5d06fc70e8
1 changed files with 13 additions and 21 deletions

View File

@ -34,6 +34,9 @@ function SvgCanvas(doc)
var selected = null;
// private functions
var getId = function() {
return "svg_"+obj_num;
}
var assignAttributes = function(node, attrs) {
for (i in attrs) {
@ -127,7 +130,7 @@ function SvgCanvas(doc)
"y": y,
"width": 0,
"height": 0,
"id": "rect_" + obj_num,
"id": getId(),
"fill": '#DBEBF9',
"stroke": '#CEE2F7',
"stroke-width": 1,
@ -144,7 +147,7 @@ function SvgCanvas(doc)
"element": "path",
"attr": {
"d": d_attr,
"id": "path_" + obj_num,
"id": getId(),
"fill": "none",
"stroke": current_stroke,
"stroke-width": current_stroke_width,
@ -190,7 +193,7 @@ function SvgCanvas(doc)
"y1": y,
"x2": x,
"y2": y,
"id": "line_" + obj_num,
"id": getId(),
"stroke": current_stroke,
"stroke-width": current_stroke_width,
"stroke-dasharray": current_stroke_style,
@ -207,7 +210,7 @@ function SvgCanvas(doc)
"cx": x,
"cy": y,
"r": 0,
"id": "circle_" + obj_num,
"id": getId(),
"fill": current_fill,
"stroke": current_stroke,
"stroke-width": current_stroke_width,
@ -252,15 +255,14 @@ function SvgCanvas(doc)
var x = evt.pageX;
var y = evt.pageY;
var shape = svgdoc.getElementById(getId());
switch (current_mode)
{
case "line":
var shape = svgdoc.getElementById("line_" + obj_num);
shape.setAttributeNS(null, "x2", x);
shape.setAttributeNS(null, "y2", y);
break;
case "square":
var shape = svgdoc.getElementById("rect_" + obj_num);
var size = Math.max( Math.abs(x - start_x), Math.abs(y - start_y) );
shape.setAttributeNS(null, "width", size);
shape.setAttributeNS(null, "height", size);
@ -277,7 +279,6 @@ function SvgCanvas(doc)
break;
case "select":
case "rect":
var shape = svgdoc.getElementById("rect_" + obj_num);
if (start_x < x) {
shape.setAttributeNS(null, "x", start_x);
shape.setAttributeNS(null, "width", x - start_x);
@ -294,14 +295,12 @@ function SvgCanvas(doc)
}
break;
case "circle":
var shape = svgdoc.getElementById("circle_" + obj_num);
var cx = shape.getAttributeNS(null, "cx");
var cy = shape.getAttributeNS(null, "cy");
var rad = Math.sqrt( (x-cx)*(x-cx) + (y-cy)*(y-cy) );
shape.setAttributeNS(null, "r", rad);
break;
case "ellipse":
var shape = svgdoc.getElementById("ellipse_" + obj_num);
var cx = shape.getAttributeNS(null, "cx");
var cy = shape.getAttributeNS(null, "cy");
shape.setAttributeNS(null, "rx", Math.abs(x - cx) );
@ -316,7 +315,7 @@ function SvgCanvas(doc)
// break; missing on purpose
case "path":
d_attr += "L" + x + " " + y + " ";
var shape = svgdoc.getElementById("path_" + obj_num);
var shape = svgdoc.getElementById(getId());
shape.setAttributeNS(null, "d", d_attr);
break;
}
@ -327,11 +326,11 @@ function SvgCanvas(doc)
if (!started) return;
started = false;
var element = null;
var element = svgdoc.getElementById(getId());
switch (current_mode)
{
case "select":
element = svgdoc.getElementById("rect_" + obj_num);
if (element.getAttribute('width') == 0 &&
element.getAttribute('height') == 0) {
// only one element is selected and stored in selected variable (or null)
@ -345,12 +344,10 @@ function SvgCanvas(doc)
break;
case "path":
d_attr = null;
element = svgdoc.getElementById("path_" + obj_num);
element.setAttribute("opacity", current_opacity);
obj_num++;
break;
case "line":
element = svgdoc.getElementById("line_" + obj_num);
if (element.getAttribute('x1') == element.getAttribute('x2') &&
element.getAttribute('y1') == element.getAttribute('y2')) {
element.parentNode.removeChild(element);
@ -362,7 +359,6 @@ function SvgCanvas(doc)
break;
case "square":
case "rect":
element = svgdoc.getElementById("rect_" + obj_num);
if (element.getAttribute('width') == 0 &&
element.getAttribute('height') == 0) {
element.parentNode.removeChild(element);
@ -373,7 +369,6 @@ function SvgCanvas(doc)
}
break;
case "circle":
element = svgdoc.getElementById("circle_" + obj_num);
if (element.getAttribute('r') == 0) {
element.parentNode.removeChild(element);
element = null;
@ -383,7 +378,6 @@ function SvgCanvas(doc)
}
break;
case "ellipse":
element = svgdoc.getElementById("ellipse_" + obj_num);
if (element.getAttribute('rx') == 0 &&
element.getAttribute('ry') == 0) {
element.parentNode.removeChild(element);
@ -395,7 +389,6 @@ function SvgCanvas(doc)
break;
case "fhellipse":
d_attr = null;
element = svgdoc.getElementById("path_" + obj_num);
element.parentNode.removeChild(element);
if ((freehand_max_x - freehand_min_x) > 0 &&
(freehand_max_y - freehand_min_y) > 0) {
@ -406,7 +399,7 @@ function SvgCanvas(doc)
"cy": (freehand_min_y + freehand_max_y) / 2,
"rx": (freehand_max_x - freehand_min_x) / 2,
"ry": (freehand_max_y - freehand_min_y) / 2,
"id": "ellipse_" + obj_num,
"id": getId(),
"fill": current_fill,
"stroke": current_stroke,
"stroke-width": current_stroke_width,
@ -421,7 +414,6 @@ function SvgCanvas(doc)
break;
case "fhrect":
d_attr = null;
element = svgdoc.getElementById("path_" + obj_num);
element.parentNode.removeChild(element);
if ((freehand_max_x - freehand_min_x) > 0 &&
(freehand_max_y - freehand_min_y) > 0) {
@ -432,7 +424,7 @@ function SvgCanvas(doc)
"y": freehand_min_y,
"width": (freehand_max_x - freehand_min_x),
"height": (freehand_max_y - freehand_min_y),
"id": "rect_" + obj_num,
"id": getId(),
"fill": current_fill,
"stroke": current_stroke,
"stroke-width": current_stroke_width,