//https://www.nan.fyi/svg-paths/bezier-curves //https://ru.freepik.com/vectors/%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BD%D0%B0%D1%8F-%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%BD%D0%B0%D1%8F-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BA%D0%B0/2#uuid=1037c29f-1473-4cd0-80a4-e839d337832b function _e(t){console.log(t)}; class AddresObject{ svg; id; canvas; ctx; gridStep = 1; fields = { base:{ foreground : '.template-foreground', background : '.template-background' }, data:{ street:'#text-streettype', adress:'#text-adress', dom:'#text-dom', prevdom:'#text-prev-dom', nextdom:'#text-next-dom' }, helpers:{ street:'#streettype', adress:'#adress', dom:'#dom', prevdom:'#prev-dom', nextdom:'#next-dom' }, texts:{ street:false, adress:false, dom:false, prevdom:false, nextdom:false } }; baseId(key){ return (key)?this.fields.base[key]:this.fields.base; } dataId(key){ return (key)?this.fields.data[key]:this.fields.data; } helperId(key){ return (key)?this.fields.helpers[key]:this.fields.helpers; } constructor (svg){ this.svg = svg; this.id = svg.getAttribute('id'); var texts = this.svg.querySelectorAll('text'); for(let i=0;i/g, ''); //value = (value).replaceAll(/[^\w\s!?\/\-\.\,]/g,'', ''); var node = this.getNode(this.dataId(key)); if(!node)return false; var tpath = node.querySelector('textPath'); if (tpath) tpath.innerHTML = value; else node.innerHTML = value; } getText(key){ var node = this.getNode(this.dataId(key)); var tpath = node.querySelector('textPath'); if (tpath) return tpath.innerHTML; else return node.innerHTML; } setTextSpace(key,value){ var node = this.getNode(this.dataId(key)); if (value<0) value = 0; node.style['letter-spacing'] = value+'px'; node.setAttribute('dx', (value/2)+'px'); } setFont(font){ this.svg.dataset['font'] = font; for(var key in this.dataId()){ var text = this.getNode(this.dataId(key)); if(text)text.setAttribute('font-family',font); } } getFont(){ var text = this.getNode(this.dataId('adress')); if(text)return text.getAttribute('font-family');else return undefined; } setKey(target,key,val){ var node = this.getNode(target); if(!node)return false; node.setAttribute(key,val) } setFillColor(target,color='blue'){ this.setKey(target,'fill', color); } setBgColor(color){ this.setFillColor(this.baseId('background'),color); } setForeColor(color){ this.setFillColor(this.baseId('foreground'),color); } layerColor(layer, color){ if (!(layer == 'background' || layer == 'foreground')){ _e('Error: incorrect layer name'); return; } this.setFillColor(this.baseId(layer),color); var texts = this.svg.querySelectorAll('text'); for(let i=0;ihelper_b.width){ fontsize -= this.gridStep; text.setAttribute('font-size',fontsize); }else done=true; if( 3 > fontsize){ done=true; console.error('min '+fontsize+'px'); } }; }else{ if(text_b.width>helper_b.width){ kw = parseFloat(helper_b.width/text_b.width); fontsize = parseInt(fontsize*kw); } text.setAttribute('font-size',fontsize); } } resizeTextAll(){ for(var key in this.dataId()){ this.resizeText(key); } } } //end CLASS AddresObject