Fixed resolution change function

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@627 eee81c28-f429-11dd-99c0-75d572ba1ddd
This commit is contained in:
Alexis Deveria
2009-09-11 15:49:50 +00:00
parent 53a6f81960
commit 0f29ad3e8b
2 changed files with 29 additions and 21 deletions

View File

@@ -63,9 +63,10 @@ function svg_edit_setup() {
for (var i = 0; i < elems.length; ++i) {
var elem = elems[i];
// if the element changed was the svg, then it could be a resolution change
if (elem && elem.tagName == "svg") {
changeResolution(parseInt(elem.getAttribute("width")),
parseInt(elem.getAttribute("height")));
if (elem && elem.tagName == "svg" && elem.getAttribute("viewBox")) {
var vb = elem.getAttribute("viewBox").split(' ');
changeResolution(parseInt(vb[2]),
parseInt(vb[3]));
}
}
@@ -597,7 +598,7 @@ function svg_edit_setup() {
var clickZoom = function(zoomIn) {
var res = svgCanvas.getResolution();
var multiplier = zoomIn? res.zoom * 2 : res.zoom * 0.5;
setResolution(res.w * multiplier, res.h * multiplier);
setResolution(res.w * multiplier, res.h * multiplier, true);
svgCanvas.setZoom(multiplier);
};
@@ -935,17 +936,19 @@ function svg_edit_setup() {
}
});
if(!found) $('#resolution').val('Custom');
setResolution(x, y);
var zoom = svgCanvas.getResolution().zoom;
setResolution(x * zoom, y * zoom);
}
function setResolution(w, h) {
function setResolution(w, h, center) {
$('#svgcanvas').css( { 'width': w, 'height': h } );
var w_area = $('#workarea');
var scroll_y = h/2 - w_area.height()/2;
var scroll_x = w/2 - w_area.width()/2;
w_area[0].scrollTop = scroll_y;
w_area[0].scrollLeft = scroll_x;
if(center) {
var w_area = $('#workarea');
var scroll_y = h/2 - w_area.height()/2;
var scroll_x = w/2 - w_area.width()/2;
w_area[0].scrollTop = scroll_y;
w_area[0].scrollLeft = scroll_x;
}
}
$('#resolution').change(function(){

View File

@@ -2491,7 +2491,7 @@ function BatchCommand(text) {
selectorManager.update();
addCommandToHistory(batchCmd);
call("changed", [svgroot]);
call("changed", [svgzoom]);
} catch(e) {
console.log(e);
return false;
@@ -2534,10 +2534,10 @@ function BatchCommand(text) {
var vb = svgzoom.getAttribute("viewBox").split(' ');
return {'w':vb[2], 'h':vb[3], 'zoom': current_zoom};
};
// TODO: change svgzoom's viewBox here also and create a batch command
this.setResolution = function(x, y) {
var w = svgroot.getAttribute("width"),
h = svgroot.getAttribute("height");
var res = canvas.getResolution();
var w = res.w, h = res.h;
var batchCmd = new BatchCommand("Change Image Dimensions");
var handle = svgroot.suspendRedraw(1000);
@@ -2555,13 +2555,17 @@ function BatchCommand(text) {
return;
}
}
svgroot.setAttribute("width", x);
svgroot.setAttribute("height", y);
svgroot.setAttribute('width', x * current_zoom);
svgroot.setAttribute('height', y * current_zoom);
batchCmd.addSubCommand(new ChangeElementCommand(svgroot, {"width":w, "height":h}));
svgzoom.setAttribute("viewBox", ["0 0", x, y].join(' '));
batchCmd.addSubCommand(new ChangeElementCommand(svgzoom, {"viewBox": ["0 0", w, h].join(' ')}));
svgroot.unsuspendRedraw(handle);
addCommandToHistory(new ChangeElementCommand(svgroot, {"width":w,"height":h}, "resolution"));
call("changed", [svgroot]);
addCommandToHistory(batchCmd);
call("changed", [svgzoom]);
};
this.setZoom = function(zoomlevel) {
@@ -2818,6 +2822,7 @@ function BatchCommand(text) {
this.getRotationAngle = function(elem) {
var selected = elem || selectedElements[0];
if(!elem.transform) return null;
// find the rotation transform (if any) and set it
var tlist = selected.transform.baseVal;
var t = tlist.numberOfItems;