Move convertAttrs into units.js

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@1849 eee81c28-f429-11dd-99c0-75d572ba1ddd
master
Jeff Schiller 2010-11-06 14:37:00 +00:00
parent e64bee32a8
commit abab2645af
2 changed files with 40 additions and 48 deletions

View File

@ -124,7 +124,6 @@ var snapToAngle = svgedit.math.snapToAngle;
svgedit.units.init(curConfig);
var unit_types = svgedit.units.getTypeMap();
// import from svgutils.js
var getUrlFromAttr = this.getUrlFromAttr = svgedit.utilities.getUrlFromAttr;
var getHref = this.getHref = svgedit.utilities.getHref;
@ -140,7 +139,7 @@ svgedit.utilities.snapToGrid = function(value){
var stepSize = curConfig.snappingStep;
var unit = curConfig.baseUnit;
if(unit !== "px") {
stepSize *= svgedit.units.typeMap[unit];
stepSize *= svgedit.units.getTypeMap()[unit];
}
value = Math.round(value/stepSize)*stepSize;
return value;
@ -341,7 +340,7 @@ $(opac_ani).attr({
// TODO(codedread): Migrate this into units.js
// Set the scope for these functions
var convertToNum, unitConvertAttrs;
var convertToNum;
(function() {
// TODO(codedread): Remove these arrays and maps, they are now in units.js.
@ -433,48 +432,6 @@ var convertToNum, unitConvertAttrs;
return valid;
};
// Function: unitConvertAttrs
// Converts all applicable attributes to the given baseUnit
unitConvertAttrs = canvas.unitConvertAttrs = function(element) {
var elName = element.tagName;
var unit = curConfig.baseUnit;
var attrs;
switch (elName)
{
case "line":
attrs = ['x1', 'x2', 'y1', 'y2'];
break;
case "circle":
attrs = ['cx', 'cy', 'r'];
break;
case "ellipse":
attrs = ['cx', 'cy', 'rx', 'ry'];
break;
case "foreignObject":
case "rect":
case "image":
case "use":
attrs = ['x', 'y', 'width', 'height'];
break;
case "text":
attrs = ['x', 'y'];
break;
}
if(!attrs) return;
var len = attrs.length
for(var i = 0; i < len; i++) {
var attr = attrs[i];
var cur = element.getAttribute(attr);
if(cur) {
if(!isNaN(cur)) {
element.setAttribute(attr, (cur / unit_types[unit]) + unit);
} else {
// Convert existing?
}
}
}
};
})();
@ -4647,7 +4604,7 @@ var getMouseTarget = this.getMouseTarget = function(evt) {
} else if (element != null) {
canvas.addedNew = true;
if(useUnit) unitConvertAttrs(element);
if(useUnit) svgedit.units.convertAttrs(element);
var ani_dur = .2, c_ani;
if(opac_ani.beginElement && element.getAttribute('opacity') != cur_shape.opacity) {
@ -7260,8 +7217,8 @@ var svgToString = this.svgToString = function(elem, indent) {
// }
if(unit !== "px") {
res.w = shortFloat(svgedit.units.convertUnit(res.w, unit)) + unit;
res.h = shortFloat(svgedit.units.convertUnit(res.h, unit)) + unit;
res.w = this.convertUnit(res.w, unit) + unit;
res.h = this.convertUnit(res.h, unit) + unit;
}
out.push(' width="' + res.w + '" height="' + res.h + '"' + vb + ' xmlns="'+svgns+'"');

View File

@ -138,4 +138,39 @@ svgedit.units.setUnitAttr = function(elem, attr, val) {
elem.setAttribute(attr, val);
};
var attrsToConvert = {
"line": ['x1', 'x2', 'y1', 'y2'],
"circle": ['cx', 'cy', 'r'],
"ellipse": ['cx', 'cy', 'rx', 'ry'],
"foreignObject": ['x', 'y', 'width', 'height'],
"rect": ['x', 'y', 'width', 'height'],
"image": ['x', 'y', 'width', 'height'],
"use": ['x', 'y', 'width', 'height'],
"text": ['x', 'y']
};
// Function: svgedit.units.convertAttrs
// Converts all applicable attributes to the configured baseUnit
//
// Parameters:
// element - a DOM element whose attributes should be converted
svgedit.units.convertAttrs = function(element) {
var elName = element.tagName;
var unit = svgedit.units.config_.baseUnit;
var attrs = attrsToConvert[elName];
if(!attrs) return;
var len = attrs.length
for(var i = 0; i < len; i++) {
var attr = attrs[i];
var cur = element.getAttribute(attr);
if(cur) {
if(!isNaN(cur)) {
element.setAttribute(attr, (cur / svgedit.units.typeMap_[unit]) + unit);
} else {
// Convert existing?
}
}
}
};
})();