function After_load() { var kol = 0; canvas.forEachObject(function(obj){ var transformMatrix1 = [1,0,0,1,0,0]; var str_x; var str_y; var tr_y; var tx_sg = obj.toSVG(); if ((tx_sg.indexOf('transform="translate')>=0) && (tx_sg.indexOf('<g ')>=0)) { obj.setOriginX('left'); obj.set('lockScalingX','false'); obj.set('lockScalingY','false'); } var transformMatrix2 = obj.get('transformMatrix'); var strokeWidth1 = obj.getStrokeWidth(); var m_x = obj.getLeft(); var m_y = obj.getTop(); var calcTransformMatrix2 = obj.calcTransformMatrix(); transformMatrix1[1] = transformMatrix2[1]; transformMatrix1[2] = transformMatrix2[2]; if (!((tx_sg.indexOf('transform="translate')>=0) && (tx_sg.indexOf('<g ')>=0))) { obj.setTransformMatrix(transformMatrix1); } obj.setTop(transformMatrix2[5]+m_y*transformMatrix2[3]);*/ if (tx_sg.indexOf('<line x1="0"')>=0){ obj.setLeft(transformMatrix2[4]+(m_x)*transformMatrix2[0]-(strokeWidth1/2)*transformMatrix2[0]);//(m_x-0.5)*transformMatrix2[0] obj.setTop(transformMatrix2[5]+(m_y)*transformMatrix2[3]-(strokeWidth1/2)*transformMatrix2[3]); //(m_y-0.5)*transformMatrix2[3] } else if ((tx_sg.indexOf('<rect ')>=0) || (tx_sg.indexOf('<polygon ')>=0) || (tx_sg.indexOf('<line x1="-')>=0)|| (tx_sg.indexOf('<circle cx=')>=0)) { obj.setLeft(transformMatrix2[4]+(m_x)*transformMatrix2[0]-(strokeWidth1/2)*transformMatrix2[0]);//(m_x-0.5)*transformMatrix2[0] obj.setTop(transformMatrix2[5]+(m_y)*transformMatrix2[3]-(strokeWidth1/2)*transformMatrix2[3]); //(m_y-0.5)*transformMatrix2[3] } else if (tx_sg.indexOf('<path ')>=0) { obj.setLeft(transformMatrix2[4]+(m_x-strokeWidth1/2)*transformMatrix2[0]); obj.setTop(transformMatrix2[5]+(m_y-strokeWidth1/2)*transformMatrix2[3]); } else if ((tx_sg.indexOf('transform="translate')>=0) && (tx_sg.indexOf('<g ')>=0))//if (tx_sg.indexOf('<g transform="translate')>=0) { var poz2 = tx_sg.indexOf("</tspan>"); var poz1 = tx_sg.indexOf("<tspan "); if ((poz2>0) && (poz1>0)) { var poz3 = tx_sg.indexOf(">",poz1+1); if (poz3>0){ var str = tx_sg.substring(poz3+1,poz2); } }// if ((poz2>0) && (poz1>0)) tx_sg = obj.toSVG(); poz2 = tx_sg.indexOf("</tspan>"); poz1 = tx_sg.indexOf("<tspan "); if ((poz2>0) && (poz1>0)) { var poz3 = tx_sg.indexOf('x="',poz1+1); if (poz3>0){ var poz4 = tx_sg.indexOf('"',poz3+4); str_x = tx_sg.substring(poz3+3,poz4); } poz3 = tx_sg.indexOf('y="',poz1+1); if (poz3>0){ var poz4 = tx_sg.indexOf('"',poz3+4); str_y = tx_sg.substring(poz3+3,poz4); } }// if ((poz2>0) && (poz1>0)) poz1 = tx_sg.indexOf('transform="translate('); if (poz1>0) { poz2 = tx_sg.indexOf(" ",poz1+21); var poz3 = tx_sg.indexOf(')',poz2+1); tr_y = tx_sg.substring(poz2,poz3); } m_x = obj.getLeft(); m_y = obj.getTop(); transformMatrix2 = obj.get('transformMatrix'); obj.setTransformMatrix(transformMatrix1); obj.setTop(transformMatrix2[5]-parseFloat(tr_y)-parseFloat(str_y)-strokeWidth1*0.58); obj.setLeft(transformMatrix2[4] + parseFloat(str_x) - (strokeWidth1/2) ); } else { obj.setLeft(transformMatrix2[4]+(m_x)*transformMatrix2[0]-(strokeWidth1/2)*transformMatrix2[0]);//(m_x-0.5)*transformMatrix2[0] obj.setTop(transformMatrix2[5]+(m_y)*transformMatrix2[3]-(strokeWidth1/2)*transformMatrix2[3]); //(m_y-0.5)*transformMatrix2[3] } obj.setScaleX(transformMatrix2[0]); obj.setScaleY(transformMatrix2[3]); obj.set('transparentCorners','true'); obj.setCoords(); kol = kol + 1; }); if (kol === 0) { $.post("After_load", kol); } else { Is_After_load = true; } };
setTimeout(function() { if (!Is_After_load){ After_load(); } }, 5000);
$.post
and toSVG
you can do the following things: function Post_sheme() { $.post("save.php", canvas.toSVG()); };
ARequestInfo.UnparsedParams
.$.post("new.php?"+$("input[name=namenewsvg]").val(), Buff_clipb);
$("input[name=namenewsvg]").val()
is the name of the SVG image. var tx = canvas.getActiveGroup().toSVG(); tx = '<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">' +tx+ '</svg>'; $.post("copy.php", tx);
Clipboard.AsText := ARequestInfo.UnparsedParams;
{{val._}}
. Those. text binding is carried out through the text
content.__on
. To bind an element that displays a disabled state, you need to select it, in the drop-down list, select __off
. Arrows on the keyboard move the elements so that one is under the other. function setIDObj() { var activeObject = canvas.getActiveObject(); if (activeObject) { activeObject.set({ id : $("input[name=nameobj]").val() }); var tx_sg = activeObject.toSVG(); var poz2 = tx_sg.indexOf("</tspan>"); var poz1 = tx_sg.indexOf("<tspan "); if ((poz2>0) && (poz1>0)) { var ttx = $("input[name=nameobj]").val(); if (ttx.indexOf("{{")<=0) { ttx = "{{val."+ttx+"}}"; } activeObject.set({ text: ttx }); canvas.renderAll(); } } };
Source: https://habr.com/ru/post/325640/
All Articles