From 2960bfac80ff08425623c629568d48ec2676f673 Mon Sep 17 00:00:00 2001 From: Mark MacKay Date: Mon, 16 Jul 2012 14:23:24 -0500 Subject: [PATCH] canvas backround ocasionally had an unbleeded edge, fixed --- editor/extensions/ext-eyedropper.js | 35 ++++++++++++++++++++++++ editor/svg-editor.js | 8 +++--- editor/svgcanvas.js | 7 ++--- editor/svgedit.compiled.js | 6 ++-- method-draw/extensions/ext-eyedropper.js | 35 ++++++++++++++++++++++++ method-draw/svg-editor.js | 8 +++--- method-draw/svgcanvas.js | 7 ++--- method-draw/svgedit.compiled.js | 6 ++-- 8 files changed, 90 insertions(+), 22 deletions(-) diff --git a/editor/extensions/ext-eyedropper.js b/editor/extensions/ext-eyedropper.js index 7c62a72..435dac1 100644 --- a/editor/extensions/ext-eyedropper.js +++ b/editor/extensions/ext-eyedropper.js @@ -49,6 +49,35 @@ svgEditor.addExtension("eyedropper", function(S) { } + var getPaint = function(color, opac, type) { + // update the editor's fill paint + var opts = null; + if (color.indexOf("url(#") === 0) { + var refElem = svgCanvas.getRefElem(color); + if(refElem) { + refElem = refElem.cloneNode(true); + } else { + refElem = $("#" + type + "_color defs *")[0]; + } + + opts = { alpha: opac }; + opts[refElem.tagName] = refElem; + } + else if (color.indexOf("#") === 0) { + opts = { + alpha: opac, + solidColor: color.substr(1) + }; + } + else { + opts = { + alpha: opac, + solidColor: 'none' + }; + } + return new $.jGraduate.Paint(opts); + }; + return { name: "eyedropper", svgicons: "extensions/eyedropper-icon.xml", @@ -101,6 +130,12 @@ svgEditor.addExtension("eyedropper", function(S) { if (currentStyle.strokeLinecap) change(opts.selectedElements[0], "stroke-linecap", currentStyle.strokeLinecap); if (currentStyle.strokeLinejoin) change(opts.selectedElements[0], "stroke-linejoin", currentStyle.strokeLinejoin); + var fill = getPaint(currentStyle.fillPaint, currentStyle.fillOpacity*100, "fill") + var stroke = getPaint(currentStyle.strokePaint, currentStyle.strokeOpacity*100, "stroke") + + svgCanvas.setPaint("fill", fill) + svgCanvas.setPaint("stroke", stroke) + addToHistory(new ChangeElementCommand(target, changes)); } } diff --git a/editor/svg-editor.js b/editor/svg-editor.js index f4bee92..9402b62 100644 --- a/editor/svg-editor.js +++ b/editor/svg-editor.js @@ -1402,10 +1402,10 @@ cur_shape = svgCanvas.addSvgElementFromJson({ "element": "rect", "attr": { - "x": 0, - "y": 0, - "width": res.w, - "height": res.h, + "x": -1, + "y": -1, + "width": res.w+2, + "height": res.h+2, "stroke": "none", "id": "canvas_background", "opacity": 1, diff --git a/editor/svgcanvas.js b/editor/svgcanvas.js index ee8f992..292b51b 100644 --- a/editor/svgcanvas.js +++ b/editor/svgcanvas.js @@ -6711,8 +6711,8 @@ this.setResolution = function(x, y) { if (background) { background.setAttribute("x", -1) background.setAttribute("y", -1) - background.setAttribute("width", x+1) - background.setAttribute("height", y+1) + background.setAttribute("width", x+2) + background.setAttribute("height", y+2) } call("changed", [svgcontent]); } @@ -7025,7 +7025,6 @@ this.setPaint = function(type, paint) { // make a copy var p = new $.jGraduate.Paint(paint); this.setPaintOpacity(type, p.alpha/100, true); - // now set the current paint object cur_properties[type + '_paint'] = p; switch ( p.type ) { @@ -7037,7 +7036,7 @@ this.setPaint = function(type, paint) { else { this.setColor(type, "none"); var selector = (type == "fill") ? "#fill_color rect" : "#stroke_color rect" - document.querySelector(selector).setAttribute('fill', 'transparent'); + document.querySelector(selector).setAttribute('fill', 'none'); } break; case "linearGradient": diff --git a/editor/svgedit.compiled.js b/editor/svgedit.compiled.js index fc985e7..6c597d5 100644 --- a/editor/svgedit.compiled.js +++ b/editor/svgedit.compiled.js @@ -335,13 +335,13 @@ this.setUiStrings=function(g){$.extend(Cb,g.notification)};this.setConfig=functi g}else{k=d.createElementNS(c,"title");k.textContent=g;$(h).prepend(k);v.addSubCommand(new Na(k))}else{v.addSubCommand(new Sa(k[0],k.nextSibling,h));k.remove()}Ia(v)};this.getDocumentTitle=function(){return b.getTitle(l)};this.setDocumentTitle=function(g){for(var h=l.childNodes,k=false,v="",s=new Oa("Change Image Title"),E=0;E0)if(k)Wb(g,h,v);else{db(g,h,v);K("changed",v)}};var vb=function(){var g=l.getElementsByTagNameNS(c,"defs");if(g.length> 0)g=g[0];else{g=d.createElementNS(c,"defs");l.firstChild?l.insertBefore(g,l.firstChild.nextSibling):l.appendChild(g)}return g},kc=this.setGradient=function(g){if(!(!ib[g+"_paint"]||ib[g+"_paint"].type=="solidColor")){var h=b[g+"Grad"],k=jc(h),v=vb();if(k)h=k;else{h=v.appendChild(d.importNode(h,true));h.id=na()}b.setColor(g,"url(#"+h.id+")");if(g=="canvas")(g=document.getElementById("canvas_background"))&&g.setAttribute("fill","url(#"+h.id+")")}},jc=function(g){var h=vb();h=$(h).find("linearGradient, radialGradient"); for(var k=h.length,v=["r","cx","cy","fx","fy"];k--;){var s=h[k];if(g.tagName=="linearGradient"){if(g.getAttribute("x1")!=s.getAttribute("x1")||g.getAttribute("y1")!=s.getAttribute("y1")||g.getAttribute("x2")!=s.getAttribute("x2")||g.getAttribute("y2")!=s.getAttribute("y2"))continue}else{var E=$(g).attr(v),z=$(s).attr(v),t=false;$.each(v,function(G,P){if(E[P]!=z[P])t=true});if(t)continue}var C=g.getElementsByTagNameNS(c,"stop"),F=s.getElementsByTagNameNS(c,"stop");if(C.length==F.length){for(var B= C.length;B--;){var D=C[B],H=F[B];if(D.getAttribute("offset")!=H.getAttribute("offset")||D.getAttribute("stop-opacity")!=H.getAttribute("stop-opacity")||D.getAttribute("stop-color")!=H.getAttribute("stop-color"))break}if(B==-1)return s}}return null};this.setPaint=function(g,h){var k=new $.jGraduate.Paint(h);this.setPaintOpacity(g,k.alpha/100,true);ib[g+"_paint"]=k;switch(k.type){case "solidColor":if(k.solidColor!="none"&&k.solidColor!="#none")this.setColor(g,"#"+k.solidColor);else{this.setColor(g, -"none");document.querySelector(g=="fill"?"#fill_color rect":"#stroke_color rect").setAttribute("fill","transparent")}break;case "linearGradient":case "radialGradient":b[g+"Grad"]=k[k.type];kc(g)}};this.getStrokeWidth=function(){return ib.stroke_width};this.setStrokeWidth=function(g){if(g==0&&["line","path"].indexOf(Ma)>=0)b.setStrokeWidth(1);else{ib.stroke_width=g;for(var h=[],k=J.length;k--;){var v=J[k];if(v)v.tagName=="g"?svgedit.utilities.walkTree(v,function(s){s.nodeName!="g"&&h.push(s)}):h.push(v)}if(h.length> +"none");document.querySelector(g=="fill"?"#fill_color rect":"#stroke_color rect").setAttribute("fill","none")}break;case "linearGradient":case "radialGradient":b[g+"Grad"]=k[k.type];kc(g)}};this.getStrokeWidth=function(){return ib.stroke_width};this.setStrokeWidth=function(g){if(g==0&&["line","path"].indexOf(Ma)>=0)b.setStrokeWidth(1);else{ib.stroke_width=g;for(var h=[],k=J.length;k--;){var v=J[k];if(v)v.tagName=="g"?svgedit.utilities.walkTree(v,function(s){s.nodeName!="g"&&h.push(s)}):h.push(v)}if(h.length> 0){db("stroke-width",g,h);K("changed",J)}}};this.setStrokeAttr=function(g,h){M[g.replace("-","_")]=h;for(var k=[],v=J.length;v--;){var s=J[v];if(s)s.tagName=="g"?svgedit.utilities.walkTree(s,function(E){E.nodeName!="g"&&k.push(E)}):k.push(s)}if(k.length>0){db(g,h,k);K("changed",J)}};this.getStyle=function(){return M};this.getOpacity=function(){return M.opacity};this.setOpacity=function(g){M.opacity=g;db("opacity",g)};this.getFillOpacity=function(){return M.fill_opacity};this.getStrokeOpacity=function(){return M.stroke_opacity}; this.setPaintOpacity=function(g,h,k){M[g+"_opacity"]=h;k?Wb(g+"-opacity",h):db(g+"-opacity",h)};this.getBlur=function(g){var h=0;if(g)if(g.getAttribute("filter"))if(g=la(g.id+"_blur"))h=g.firstChild.getAttribute("stdDeviation");return h};(function(){function g(){var s=b.undoMgr.finishUndoableChange();h.addSubCommand(s);Ia(h);k=h=null}var h=null,k=null,v=false;b.setBlurNoUndo=function(s){if(k)if(s===0){Wb("filter","");v=true}else{var E=J[0];v&&Wb("filter","url(#"+E.id+"_blur)");if(svgedit.browser.isWebkit()){E.removeAttribute("filter"); E.setAttribute("filter","url(#"+E.id+"_blur)")}Wb("stdDeviation",s,[k.firstChild]);b.setBlurOffsets(k,s)}else b.setBlur(s)};b.setBlurOffsets=function(s,E){if(E>3)oa(s,{x:"-50%",y:"-50%",width:"200%",height:"200%"},100);else if(!svgedit.browser.isWebkit()){s.removeAttribute("x");s.removeAttribute("y");s.removeAttribute("width");s.removeAttribute("height")}};b.setBlur=function(s,E){if(h)g();else{var z=J[0],t=z.id;k=la(t+"_blur");s-=0;var C=new Oa;if(k){if(s===0)k=null}else{var F=da({element:"feGaussianBlur", @@ -406,7 +406,7 @@ q/2,y:A.y*q+A.height*q/2});f.getMode()=="zoom"&&A.width&&oa();B()}}};a("#cur_con a(this).mouseup(Ca);Ba.key&&a(document).bind("keydown",Ba.key[0]+" shift+"+Ba.key[0],Ca)});if(va)ja.attr("data-curopt",I[va].sel);else ja.attr("data-curopt")||ja.attr("data-curopt",I[0].sel);var ya,Da=a(X).position();a(A).css({left:Da.left+34,top:Da.top+77});ja.mousedown(function(Ca){a("#tools_shapelib").is(":visible")&&xa(X,false);if(ja.hasClass("disabled"))return false;var Ba=a(A),tb=Da.left+34,Ta=Ba.width()*-1,ia=Ba.data("shown_popop")?200:0;ya=setTimeout(function(){ja.data("isLibrary")?Ba.css("left", tb).show():Ba.css("left",Ta).show().animate({left:tb},150);Ba.data("shown_popop",true)},ia);Ca.preventDefault()}).mouseup(function(){clearTimeout(ya);var Ca=a(this).attr("data-curopt");if(ja.data("isLibrary")&&a(X.replace("_show","")).is(":visible"))xa(X,true);else xa(X)&&Ca in Ia&&Ia[Ca]()})});Kb()},Ga=function(q,A){return a("
",{"class":"tools_flyout",id:q}).appendTo("#svg_editor").append(A)},Cb=function(){a(".tools_flyout").each(function(){var q=a("#"+this.id+"_show"),A=q.offset();q=q.outerWidth(); a(this).css({left:(A.left+q)*S,top:A.top})})},Kb=function(){a(".tools_flyout").each(function(){var q=a("#"+this.id+"_show");if(!q.data("isLibrary")){var A=[];a(this).children().each(function(){A.push(this.title)});q[0].title=A.join(" / ")}})},nb,ab=function(q,A,I){var R=null;if(q.indexOf("url(#")===0){q=(q=f.getRefElem(q))?q.cloneNode(true):a("#"+I+"_color defs *")[0];R={alpha:A};R[q.tagName]=q}else R=q.indexOf("#")===0?{alpha:A,solidColor:q.substr(1)}:{alpha:A,solidColor:"none"};return new a.jGraduate.Paint(R)}, -Ya=f.getResolution();if(d.baseUnit!=="px"){Ya.w=svgedit.units.convertUnit(Ya.w)+d.baseUnit;Ya.h=svgedit.units.convertUnit(Ya.h)+d.baseUnit}a(".canvas_width").val(Ya.w);a(".canvas_height").val(Ya.h);a("#docprops_button").on("click",function(){H()});var La=function(q){f.createLayer("background");cur_shape=f.addSvgElementFromJson({element:"rect",attr:{x:0,y:0,width:Ya.w,height:Ya.h,stroke:"none",id:"canvas_background",opacity:1,fill:q||a.pref("bkgd_color"),style:"pointer-events:none"}});f.setCurrentLayer("Layer 1"); +Ya=f.getResolution();if(d.baseUnit!=="px"){Ya.w=svgedit.units.convertUnit(Ya.w)+d.baseUnit;Ya.h=svgedit.units.convertUnit(Ya.h)+d.baseUnit}a(".canvas_width").val(Ya.w);a(".canvas_height").val(Ya.h);a("#docprops_button").on("click",function(){H()});var La=function(q){f.createLayer("background");cur_shape=f.addSvgElementFromJson({element:"rect",attr:{x:-1,y:-1,width:Ya.w+2,height:Ya.h+2,stroke:"none",id:"canvas_background",opacity:1,fill:q||a.pref("bkgd_color"),style:"pointer-events:none"}});f.setCurrentLayer("Layer 1"); f.setCurrentLayerPosition("1")};document.getElementById("canvas_background")?document.getElementById("canvas_background").getAttribute("fill"):La();if(a.pref("bkgd_color"))p(a.pref("bkgd_color"),a.pref("bkgd_url"));else a.pref("bkgd_url")&&p(o.bkgd_color,a.pref("bkgd_url"));var Ea=c.setImageURL=function(q){q||(q=ea);f.setImageURL(q);a("#image_url").val(q);if(q.indexOf("data:")===0){a("#image_url").hide();a("#change_image_url").show()}else{f.embedImage(q,function(A){A?a("#url_notice").hide():a("#url_notice").show(); ea=q});a("#image_url").show();a("#change_image_url").hide()}},qb=function(q){var A=Math.min(Math.max(12+q.value.length*6,50),300);a(q).width(A)},Ja=function(){var q=Z;if(q!=null&&!q.parentNode)q=null;var A=f.getCurrentDrawing().getCurrentLayerName(),I=f.getMode(),R=d.baseUnit!=="px"?d.baseUnit:null,X=I=="pathedit",ja=a("#cmenu_canvas li");a("#selected_panel, #multiselected_panel, #g_panel, #path_panel, #rect_panel, #canvas_panel, #circle_panel,\t\t\t\t\t#ellipse_panel, #line_panel, #text_panel, #image_panel, #container_panel, #use_panel, #a_panel").hide(); a(".menu_item","#edit_menu").addClass("disabled");a(".menu_item","#object_menu").addClass("disabled");!q&&!Aa&&a("#canvas_panel").show();if(q!=null){var va=q.nodeName,ya=f.getRotationAngle(q);a("#angle").val(Math.round(ya));ya=f.getBlur(q);a("#blur").val(ya);a("#blur_slider").slider("option","value",ya);f.addedNew&&va==="image"&&f.getHref(q).indexOf("data:")!==0&&L();if(!X&&I!="pathedit"){a("#selected_panel").show();a(".action_selected").removeClass("disabled");if(["line","circle","ellipse"].indexOf(va)>= diff --git a/method-draw/extensions/ext-eyedropper.js b/method-draw/extensions/ext-eyedropper.js index 7c62a72..435dac1 100644 --- a/method-draw/extensions/ext-eyedropper.js +++ b/method-draw/extensions/ext-eyedropper.js @@ -49,6 +49,35 @@ svgEditor.addExtension("eyedropper", function(S) { } + var getPaint = function(color, opac, type) { + // update the editor's fill paint + var opts = null; + if (color.indexOf("url(#") === 0) { + var refElem = svgCanvas.getRefElem(color); + if(refElem) { + refElem = refElem.cloneNode(true); + } else { + refElem = $("#" + type + "_color defs *")[0]; + } + + opts = { alpha: opac }; + opts[refElem.tagName] = refElem; + } + else if (color.indexOf("#") === 0) { + opts = { + alpha: opac, + solidColor: color.substr(1) + }; + } + else { + opts = { + alpha: opac, + solidColor: 'none' + }; + } + return new $.jGraduate.Paint(opts); + }; + return { name: "eyedropper", svgicons: "extensions/eyedropper-icon.xml", @@ -101,6 +130,12 @@ svgEditor.addExtension("eyedropper", function(S) { if (currentStyle.strokeLinecap) change(opts.selectedElements[0], "stroke-linecap", currentStyle.strokeLinecap); if (currentStyle.strokeLinejoin) change(opts.selectedElements[0], "stroke-linejoin", currentStyle.strokeLinejoin); + var fill = getPaint(currentStyle.fillPaint, currentStyle.fillOpacity*100, "fill") + var stroke = getPaint(currentStyle.strokePaint, currentStyle.strokeOpacity*100, "stroke") + + svgCanvas.setPaint("fill", fill) + svgCanvas.setPaint("stroke", stroke) + addToHistory(new ChangeElementCommand(target, changes)); } } diff --git a/method-draw/svg-editor.js b/method-draw/svg-editor.js index f4bee92..9402b62 100644 --- a/method-draw/svg-editor.js +++ b/method-draw/svg-editor.js @@ -1402,10 +1402,10 @@ cur_shape = svgCanvas.addSvgElementFromJson({ "element": "rect", "attr": { - "x": 0, - "y": 0, - "width": res.w, - "height": res.h, + "x": -1, + "y": -1, + "width": res.w+2, + "height": res.h+2, "stroke": "none", "id": "canvas_background", "opacity": 1, diff --git a/method-draw/svgcanvas.js b/method-draw/svgcanvas.js index ee8f992..292b51b 100644 --- a/method-draw/svgcanvas.js +++ b/method-draw/svgcanvas.js @@ -6711,8 +6711,8 @@ this.setResolution = function(x, y) { if (background) { background.setAttribute("x", -1) background.setAttribute("y", -1) - background.setAttribute("width", x+1) - background.setAttribute("height", y+1) + background.setAttribute("width", x+2) + background.setAttribute("height", y+2) } call("changed", [svgcontent]); } @@ -7025,7 +7025,6 @@ this.setPaint = function(type, paint) { // make a copy var p = new $.jGraduate.Paint(paint); this.setPaintOpacity(type, p.alpha/100, true); - // now set the current paint object cur_properties[type + '_paint'] = p; switch ( p.type ) { @@ -7037,7 +7036,7 @@ this.setPaint = function(type, paint) { else { this.setColor(type, "none"); var selector = (type == "fill") ? "#fill_color rect" : "#stroke_color rect" - document.querySelector(selector).setAttribute('fill', 'transparent'); + document.querySelector(selector).setAttribute('fill', 'none'); } break; case "linearGradient": diff --git a/method-draw/svgedit.compiled.js b/method-draw/svgedit.compiled.js index fc985e7..6c597d5 100644 --- a/method-draw/svgedit.compiled.js +++ b/method-draw/svgedit.compiled.js @@ -335,13 +335,13 @@ this.setUiStrings=function(g){$.extend(Cb,g.notification)};this.setConfig=functi g}else{k=d.createElementNS(c,"title");k.textContent=g;$(h).prepend(k);v.addSubCommand(new Na(k))}else{v.addSubCommand(new Sa(k[0],k.nextSibling,h));k.remove()}Ia(v)};this.getDocumentTitle=function(){return b.getTitle(l)};this.setDocumentTitle=function(g){for(var h=l.childNodes,k=false,v="",s=new Oa("Change Image Title"),E=0;E0)if(k)Wb(g,h,v);else{db(g,h,v);K("changed",v)}};var vb=function(){var g=l.getElementsByTagNameNS(c,"defs");if(g.length> 0)g=g[0];else{g=d.createElementNS(c,"defs");l.firstChild?l.insertBefore(g,l.firstChild.nextSibling):l.appendChild(g)}return g},kc=this.setGradient=function(g){if(!(!ib[g+"_paint"]||ib[g+"_paint"].type=="solidColor")){var h=b[g+"Grad"],k=jc(h),v=vb();if(k)h=k;else{h=v.appendChild(d.importNode(h,true));h.id=na()}b.setColor(g,"url(#"+h.id+")");if(g=="canvas")(g=document.getElementById("canvas_background"))&&g.setAttribute("fill","url(#"+h.id+")")}},jc=function(g){var h=vb();h=$(h).find("linearGradient, radialGradient"); for(var k=h.length,v=["r","cx","cy","fx","fy"];k--;){var s=h[k];if(g.tagName=="linearGradient"){if(g.getAttribute("x1")!=s.getAttribute("x1")||g.getAttribute("y1")!=s.getAttribute("y1")||g.getAttribute("x2")!=s.getAttribute("x2")||g.getAttribute("y2")!=s.getAttribute("y2"))continue}else{var E=$(g).attr(v),z=$(s).attr(v),t=false;$.each(v,function(G,P){if(E[P]!=z[P])t=true});if(t)continue}var C=g.getElementsByTagNameNS(c,"stop"),F=s.getElementsByTagNameNS(c,"stop");if(C.length==F.length){for(var B= C.length;B--;){var D=C[B],H=F[B];if(D.getAttribute("offset")!=H.getAttribute("offset")||D.getAttribute("stop-opacity")!=H.getAttribute("stop-opacity")||D.getAttribute("stop-color")!=H.getAttribute("stop-color"))break}if(B==-1)return s}}return null};this.setPaint=function(g,h){var k=new $.jGraduate.Paint(h);this.setPaintOpacity(g,k.alpha/100,true);ib[g+"_paint"]=k;switch(k.type){case "solidColor":if(k.solidColor!="none"&&k.solidColor!="#none")this.setColor(g,"#"+k.solidColor);else{this.setColor(g, -"none");document.querySelector(g=="fill"?"#fill_color rect":"#stroke_color rect").setAttribute("fill","transparent")}break;case "linearGradient":case "radialGradient":b[g+"Grad"]=k[k.type];kc(g)}};this.getStrokeWidth=function(){return ib.stroke_width};this.setStrokeWidth=function(g){if(g==0&&["line","path"].indexOf(Ma)>=0)b.setStrokeWidth(1);else{ib.stroke_width=g;for(var h=[],k=J.length;k--;){var v=J[k];if(v)v.tagName=="g"?svgedit.utilities.walkTree(v,function(s){s.nodeName!="g"&&h.push(s)}):h.push(v)}if(h.length> +"none");document.querySelector(g=="fill"?"#fill_color rect":"#stroke_color rect").setAttribute("fill","none")}break;case "linearGradient":case "radialGradient":b[g+"Grad"]=k[k.type];kc(g)}};this.getStrokeWidth=function(){return ib.stroke_width};this.setStrokeWidth=function(g){if(g==0&&["line","path"].indexOf(Ma)>=0)b.setStrokeWidth(1);else{ib.stroke_width=g;for(var h=[],k=J.length;k--;){var v=J[k];if(v)v.tagName=="g"?svgedit.utilities.walkTree(v,function(s){s.nodeName!="g"&&h.push(s)}):h.push(v)}if(h.length> 0){db("stroke-width",g,h);K("changed",J)}}};this.setStrokeAttr=function(g,h){M[g.replace("-","_")]=h;for(var k=[],v=J.length;v--;){var s=J[v];if(s)s.tagName=="g"?svgedit.utilities.walkTree(s,function(E){E.nodeName!="g"&&k.push(E)}):k.push(s)}if(k.length>0){db(g,h,k);K("changed",J)}};this.getStyle=function(){return M};this.getOpacity=function(){return M.opacity};this.setOpacity=function(g){M.opacity=g;db("opacity",g)};this.getFillOpacity=function(){return M.fill_opacity};this.getStrokeOpacity=function(){return M.stroke_opacity}; this.setPaintOpacity=function(g,h,k){M[g+"_opacity"]=h;k?Wb(g+"-opacity",h):db(g+"-opacity",h)};this.getBlur=function(g){var h=0;if(g)if(g.getAttribute("filter"))if(g=la(g.id+"_blur"))h=g.firstChild.getAttribute("stdDeviation");return h};(function(){function g(){var s=b.undoMgr.finishUndoableChange();h.addSubCommand(s);Ia(h);k=h=null}var h=null,k=null,v=false;b.setBlurNoUndo=function(s){if(k)if(s===0){Wb("filter","");v=true}else{var E=J[0];v&&Wb("filter","url(#"+E.id+"_blur)");if(svgedit.browser.isWebkit()){E.removeAttribute("filter"); E.setAttribute("filter","url(#"+E.id+"_blur)")}Wb("stdDeviation",s,[k.firstChild]);b.setBlurOffsets(k,s)}else b.setBlur(s)};b.setBlurOffsets=function(s,E){if(E>3)oa(s,{x:"-50%",y:"-50%",width:"200%",height:"200%"},100);else if(!svgedit.browser.isWebkit()){s.removeAttribute("x");s.removeAttribute("y");s.removeAttribute("width");s.removeAttribute("height")}};b.setBlur=function(s,E){if(h)g();else{var z=J[0],t=z.id;k=la(t+"_blur");s-=0;var C=new Oa;if(k){if(s===0)k=null}else{var F=da({element:"feGaussianBlur", @@ -406,7 +406,7 @@ q/2,y:A.y*q+A.height*q/2});f.getMode()=="zoom"&&A.width&&oa();B()}}};a("#cur_con a(this).mouseup(Ca);Ba.key&&a(document).bind("keydown",Ba.key[0]+" shift+"+Ba.key[0],Ca)});if(va)ja.attr("data-curopt",I[va].sel);else ja.attr("data-curopt")||ja.attr("data-curopt",I[0].sel);var ya,Da=a(X).position();a(A).css({left:Da.left+34,top:Da.top+77});ja.mousedown(function(Ca){a("#tools_shapelib").is(":visible")&&xa(X,false);if(ja.hasClass("disabled"))return false;var Ba=a(A),tb=Da.left+34,Ta=Ba.width()*-1,ia=Ba.data("shown_popop")?200:0;ya=setTimeout(function(){ja.data("isLibrary")?Ba.css("left", tb).show():Ba.css("left",Ta).show().animate({left:tb},150);Ba.data("shown_popop",true)},ia);Ca.preventDefault()}).mouseup(function(){clearTimeout(ya);var Ca=a(this).attr("data-curopt");if(ja.data("isLibrary")&&a(X.replace("_show","")).is(":visible"))xa(X,true);else xa(X)&&Ca in Ia&&Ia[Ca]()})});Kb()},Ga=function(q,A){return a("
",{"class":"tools_flyout",id:q}).appendTo("#svg_editor").append(A)},Cb=function(){a(".tools_flyout").each(function(){var q=a("#"+this.id+"_show"),A=q.offset();q=q.outerWidth(); a(this).css({left:(A.left+q)*S,top:A.top})})},Kb=function(){a(".tools_flyout").each(function(){var q=a("#"+this.id+"_show");if(!q.data("isLibrary")){var A=[];a(this).children().each(function(){A.push(this.title)});q[0].title=A.join(" / ")}})},nb,ab=function(q,A,I){var R=null;if(q.indexOf("url(#")===0){q=(q=f.getRefElem(q))?q.cloneNode(true):a("#"+I+"_color defs *")[0];R={alpha:A};R[q.tagName]=q}else R=q.indexOf("#")===0?{alpha:A,solidColor:q.substr(1)}:{alpha:A,solidColor:"none"};return new a.jGraduate.Paint(R)}, -Ya=f.getResolution();if(d.baseUnit!=="px"){Ya.w=svgedit.units.convertUnit(Ya.w)+d.baseUnit;Ya.h=svgedit.units.convertUnit(Ya.h)+d.baseUnit}a(".canvas_width").val(Ya.w);a(".canvas_height").val(Ya.h);a("#docprops_button").on("click",function(){H()});var La=function(q){f.createLayer("background");cur_shape=f.addSvgElementFromJson({element:"rect",attr:{x:0,y:0,width:Ya.w,height:Ya.h,stroke:"none",id:"canvas_background",opacity:1,fill:q||a.pref("bkgd_color"),style:"pointer-events:none"}});f.setCurrentLayer("Layer 1"); +Ya=f.getResolution();if(d.baseUnit!=="px"){Ya.w=svgedit.units.convertUnit(Ya.w)+d.baseUnit;Ya.h=svgedit.units.convertUnit(Ya.h)+d.baseUnit}a(".canvas_width").val(Ya.w);a(".canvas_height").val(Ya.h);a("#docprops_button").on("click",function(){H()});var La=function(q){f.createLayer("background");cur_shape=f.addSvgElementFromJson({element:"rect",attr:{x:-1,y:-1,width:Ya.w+2,height:Ya.h+2,stroke:"none",id:"canvas_background",opacity:1,fill:q||a.pref("bkgd_color"),style:"pointer-events:none"}});f.setCurrentLayer("Layer 1"); f.setCurrentLayerPosition("1")};document.getElementById("canvas_background")?document.getElementById("canvas_background").getAttribute("fill"):La();if(a.pref("bkgd_color"))p(a.pref("bkgd_color"),a.pref("bkgd_url"));else a.pref("bkgd_url")&&p(o.bkgd_color,a.pref("bkgd_url"));var Ea=c.setImageURL=function(q){q||(q=ea);f.setImageURL(q);a("#image_url").val(q);if(q.indexOf("data:")===0){a("#image_url").hide();a("#change_image_url").show()}else{f.embedImage(q,function(A){A?a("#url_notice").hide():a("#url_notice").show(); ea=q});a("#image_url").show();a("#change_image_url").hide()}},qb=function(q){var A=Math.min(Math.max(12+q.value.length*6,50),300);a(q).width(A)},Ja=function(){var q=Z;if(q!=null&&!q.parentNode)q=null;var A=f.getCurrentDrawing().getCurrentLayerName(),I=f.getMode(),R=d.baseUnit!=="px"?d.baseUnit:null,X=I=="pathedit",ja=a("#cmenu_canvas li");a("#selected_panel, #multiselected_panel, #g_panel, #path_panel, #rect_panel, #canvas_panel, #circle_panel,\t\t\t\t\t#ellipse_panel, #line_panel, #text_panel, #image_panel, #container_panel, #use_panel, #a_panel").hide(); a(".menu_item","#edit_menu").addClass("disabled");a(".menu_item","#object_menu").addClass("disabled");!q&&!Aa&&a("#canvas_panel").show();if(q!=null){var va=q.nodeName,ya=f.getRotationAngle(q);a("#angle").val(Math.round(ya));ya=f.getBlur(q);a("#blur").val(ya);a("#blur_slider").slider("option","value",ya);f.addedNew&&va==="image"&&f.getHref(q).indexOf("data:")!==0&&L();if(!X&&I!="pathedit"){a("#selected_panel").show();a(".action_selected").removeClass("disabled");if(["line","circle","ellipse"].indexOf(va)>=