diff --git a/editor/svg-editor.css b/editor/svg-editor.css
index 6cd1a894..61113415 100644
--- a/editor/svg-editor.css
+++ b/editor/svg-editor.css
@@ -267,7 +267,7 @@ div.color_block {
}
#svg_editor #tools_bottom_1 {
- width: 100px;
+ width: 115px;
float: left;
}
diff --git a/editor/svg-editor.html b/editor/svg-editor.html
index 55d874ca..f8fe7630 100644
--- a/editor/svg-editor.html
+++ b/editor/svg-editor.html
@@ -199,6 +199,8 @@
+
+
diff --git a/editor/svg-editor.js b/editor/svg-editor.js
index b71860ff..f4d3f92b 100644
--- a/editor/svg-editor.js
+++ b/editor/svg-editor.js
@@ -848,14 +848,39 @@ function svg_edit_setup() {
});
function changeResolution(x,y) {
- $('#resolution').val(x+'x'+y);
-// $('#svgroot').css( { 'width': x+'px', 'height': y+'px' } );
+ var new_res = x+'x'+y;
+ var found = false;
+ $('#resolution option').each(function() {
+ if($(this).text() == new_res) {
+ $('#resolution').val(x+'x'+y);
+ found = true;
+ }
+ });
+ if(!found) $('#resolution').val('Custom');
+
$('#svgcanvas').css( { 'width': x+'px', 'height': y+'px' } );
}
$('#resolution').change(function(){
- var res = this.value.split('x');
- var x = parseInt(res[0]), y = parseInt(res[1]);
+ if(this.value == 'Custom') {
+ var cust_val = prompt("Please enter custom size (i.e. 400x300)","");
+ var res_vals = cust_val.match(/(\d+)[x \/,](\d+)/);
+ if(!res_vals) {
+ alert('Invalid size. Please format it as WIDTHxHEIGHT (like 400x300)');
+ return false;
+ } else {
+ var x = res_vals[1], y = res_vals[2];
+ if(x == '0' || y == '0') {
+ alert('Invalid size. Width or height may not be 0.');
+ return false;
+ }
+ }
+ } else if(this.value == 'Fit to content'){
+ var x = '', y = '';
+ } else {
+ var res = this.value.split('x');
+ var x = parseInt(res[0]), y = parseInt(res[1]);
+ }
svgCanvas.setResolution(x,y);
});
diff --git a/editor/svgcanvas.js b/editor/svgcanvas.js
index d8e0f0c5..1baa9944 100644
--- a/editor/svgcanvas.js
+++ b/editor/svgcanvas.js
@@ -1969,8 +1969,25 @@ function SvgCanvas(c)
h = svgroot.getAttribute("height");
var handle = svgroot.suspendRedraw(1000);
+
+ if(!x) {
+ canvas.clearSelection();
+
+ // Get bounding box
+ var bbox = svgroot.getBBox();
+
+ if(bbox) {
+ x = bbox.x + bbox.width;
+ y = bbox.y + bbox.height;
+ } else {
+ alert('No content to fit to');
+ return;
+ }
+ }
+
svgroot.setAttribute("width", x);
svgroot.setAttribute("height", y);
+
svgroot.unsuspendRedraw(handle);
addCommandToHistory(new ChangeElementCommand(svgroot, {"width":w,"height":h}, "resolution"));
call("changed", [svgroot]);